@diplodoc/components 5.12.2 → 5.13.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.
Files changed (178) hide show
  1. package/README.md +11 -1
  2. package/build/cjs/components/BookmarkButton/BookmarkButton.css.map +1 -1
  3. package/build/cjs/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
  4. package/build/cjs/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
  5. package/build/cjs/components/Contributors/Contributors.css.map +1 -1
  6. package/build/cjs/components/Control/Control.css.map +1 -1
  7. package/build/cjs/components/Controls/Controls.css.map +1 -1
  8. package/build/cjs/components/Controls/Controls.d.ts +1 -0
  9. package/build/cjs/components/Controls/Controls.js +10 -2
  10. package/build/cjs/components/Controls/Controls.js.map +2 -2
  11. package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
  12. package/build/cjs/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
  13. package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
  14. package/build/cjs/components/DocLayout/DocLayout.css.map +1 -1
  15. package/build/cjs/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
  16. package/build/cjs/components/DocPage/DocPage.css.map +1 -1
  17. package/build/cjs/components/DocPage/DocPage.d.ts +6 -1
  18. package/build/cjs/components/DocPage/DocPage.js +16 -7
  19. package/build/cjs/components/DocPage/DocPage.js.map +2 -2
  20. package/build/cjs/components/DocPageTitle/DocPageTitle.css.map +1 -1
  21. package/build/cjs/components/ErrorPage/ErrorPage.css.map +1 -1
  22. package/build/cjs/components/Feedback/Feedback.css +6 -0
  23. package/build/cjs/components/Feedback/Feedback.css.map +3 -3
  24. package/build/cjs/components/Feedback/Feedback.d.ts +5 -0
  25. package/build/cjs/components/Feedback/Feedback.js +70 -5
  26. package/build/cjs/components/Feedback/Feedback.js.map +3 -3
  27. package/build/cjs/components/Feedback/controls/FeedbackControl.d.ts +8 -0
  28. package/build/cjs/components/Feedback/controls/FeedbackControl.js +78 -0
  29. package/build/cjs/components/Feedback/controls/FeedbackControl.js.map +7 -0
  30. package/build/cjs/components/Feedback/controls/{DislikeVariantsPopup.d.ts → FeedbackFormPopup.d.ts} +6 -3
  31. package/build/cjs/components/Feedback/controls/{DislikeVariantsPopup.js → FeedbackFormPopup.js} +27 -18
  32. package/build/cjs/components/Feedback/controls/FeedbackFormPopup.js.map +7 -0
  33. package/build/cjs/components/Gallery/Gallery.css.map +1 -1
  34. package/build/cjs/components/Mark/Mark.css.map +1 -1
  35. package/build/cjs/components/MiniToc/MiniToc.css.map +1 -1
  36. package/build/cjs/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
  37. package/build/cjs/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
  38. package/build/cjs/components/MobileControls/MobileControls.css.map +1 -1
  39. package/build/cjs/components/NeuroExpertModal/NeuroExpertModal.css.map +1 -1
  40. package/build/cjs/components/NeuroExpertModal/NeuroExpertModal.js +7 -1
  41. package/build/cjs/components/NeuroExpertModal/NeuroExpertModal.js.map +2 -2
  42. package/build/cjs/components/Notification/Notification.css.map +1 -1
  43. package/build/cjs/components/Paginator/Paginator.css.map +1 -1
  44. package/build/cjs/components/SearchBar/SearchBar.css.map +1 -1
  45. package/build/cjs/components/SearchItem/SearchItem.css.map +1 -1
  46. package/build/cjs/components/SearchPage/SearchPage.css.map +1 -1
  47. package/build/cjs/components/SearchSuggest/index.css.map +1 -1
  48. package/build/cjs/components/ShareButton/ShareButton.css.map +1 -1
  49. package/build/cjs/components/SubNavigation/SubNavigation.css.map +1 -1
  50. package/build/cjs/components/Subscribe/Subscribe.css.map +1 -1
  51. package/build/cjs/components/Toc/Toc.css.map +1 -1
  52. package/build/cjs/components/TocItem/TocItem.css.map +1 -1
  53. package/build/cjs/components/TocLable/TocLabel.css.map +1 -1
  54. package/build/cjs/components/TocNavPanel/TocNavPanel.css.map +1 -1
  55. package/build/cjs/components/ToggleArrow/ToggleArrow.css.map +1 -1
  56. package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
  57. package/build/cjs/components/Widgets/Widgets.css.map +1 -1
  58. package/build/cjs/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
  59. package/build/cjs/components/navigation/DropdownContent/Column/Column.css.map +1 -1
  60. package/build/cjs/components/navigation/DropdownContent/DropdownContent.css.map +1 -1
  61. package/build/cjs/components/navigation/DropdownContent/Section/Section.css.map +1 -1
  62. package/build/cjs/components/navigation/Label/Label.css.map +1 -1
  63. package/build/cjs/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
  64. package/build/cjs/components/navigation/NavigationDropdown/NavigationDropdown.css.map +1 -1
  65. package/build/cjs/components/navigation/Sidebar/Sidebar.css.map +1 -1
  66. package/build/cjs/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
  67. package/build/cjs/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
  68. package/build/cjs/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
  69. package/build/cjs/contexts/InterfaceContext.d.ts +13 -2
  70. package/build/cjs/contexts/InterfaceContext.js.map +2 -2
  71. package/build/cjs/i18n/index.d.ts +48 -0
  72. package/build/cjs/i18n/index.js +31 -16
  73. package/build/cjs/i18n/index.js.map +2 -2
  74. package/build/cjs/models/index.d.ts +3 -1
  75. package/build/cjs/models/index.js +1 -0
  76. package/build/cjs/models/index.js.map +2 -2
  77. package/build/cjs/shared/libs/analytics/constant.d.ts +2 -0
  78. package/build/cjs/shared/libs/analytics/constant.js +2 -0
  79. package/build/cjs/shared/libs/analytics/constant.js.map +2 -2
  80. package/build/esm/components/BookmarkButton/BookmarkButton.css.map +1 -1
  81. package/build/esm/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
  82. package/build/esm/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
  83. package/build/esm/components/Contributors/Contributors.css.map +1 -1
  84. package/build/esm/components/Control/Control.css.map +1 -1
  85. package/build/esm/components/Controls/Controls.css.map +1 -1
  86. package/build/esm/components/Controls/Controls.d.ts +1 -0
  87. package/build/esm/components/Controls/Controls.js +10 -2
  88. package/build/esm/components/Controls/Controls.js.map +2 -2
  89. package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
  90. package/build/esm/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
  91. package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
  92. package/build/esm/components/DocLayout/DocLayout.css.map +1 -1
  93. package/build/esm/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
  94. package/build/esm/components/DocPage/DocPage.css.map +1 -1
  95. package/build/esm/components/DocPage/DocPage.d.ts +6 -1
  96. package/build/esm/components/DocPage/DocPage.js +17 -8
  97. package/build/esm/components/DocPage/DocPage.js.map +2 -2
  98. package/build/esm/components/DocPageTitle/DocPageTitle.css.map +1 -1
  99. package/build/esm/components/ErrorPage/ErrorPage.css.map +1 -1
  100. package/build/esm/components/Feedback/Feedback.css +6 -0
  101. package/build/esm/components/Feedback/Feedback.css.map +3 -3
  102. package/build/esm/components/Feedback/Feedback.d.ts +5 -0
  103. package/build/esm/components/Feedback/Feedback.js +71 -6
  104. package/build/esm/components/Feedback/Feedback.js.map +2 -2
  105. package/build/esm/components/Feedback/controls/FeedbackControl.d.ts +8 -0
  106. package/build/esm/components/Feedback/controls/FeedbackControl.js +47 -0
  107. package/build/esm/components/Feedback/controls/FeedbackControl.js.map +7 -0
  108. package/build/esm/components/Feedback/controls/{DislikeVariantsPopup.d.ts → FeedbackFormPopup.d.ts} +6 -3
  109. package/build/esm/components/Feedback/controls/{DislikeVariantsPopup.js → FeedbackFormPopup.js} +24 -15
  110. package/build/esm/components/Feedback/controls/FeedbackFormPopup.js.map +7 -0
  111. package/build/esm/components/Gallery/Gallery.css.map +1 -1
  112. package/build/esm/components/Mark/Mark.css.map +1 -1
  113. package/build/esm/components/MiniToc/MiniToc.css.map +1 -1
  114. package/build/esm/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
  115. package/build/esm/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
  116. package/build/esm/components/MobileControls/MobileControls.css.map +1 -1
  117. package/build/esm/components/NeuroExpertModal/NeuroExpertModal.css.map +1 -1
  118. package/build/esm/components/NeuroExpertModal/NeuroExpertModal.js +7 -1
  119. package/build/esm/components/NeuroExpertModal/NeuroExpertModal.js.map +2 -2
  120. package/build/esm/components/Notification/Notification.css.map +1 -1
  121. package/build/esm/components/Paginator/Paginator.css.map +1 -1
  122. package/build/esm/components/SearchBar/SearchBar.css.map +1 -1
  123. package/build/esm/components/SearchItem/SearchItem.css.map +1 -1
  124. package/build/esm/components/SearchPage/SearchPage.css.map +1 -1
  125. package/build/esm/components/SearchSuggest/index.css.map +1 -1
  126. package/build/esm/components/ShareButton/ShareButton.css.map +1 -1
  127. package/build/esm/components/SubNavigation/SubNavigation.css.map +1 -1
  128. package/build/esm/components/Subscribe/Subscribe.css.map +1 -1
  129. package/build/esm/components/Toc/Toc.css.map +1 -1
  130. package/build/esm/components/TocItem/TocItem.css.map +1 -1
  131. package/build/esm/components/TocLable/TocLabel.css.map +1 -1
  132. package/build/esm/components/TocNavPanel/TocNavPanel.css.map +1 -1
  133. package/build/esm/components/ToggleArrow/ToggleArrow.css.map +1 -1
  134. package/build/esm/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
  135. package/build/esm/components/Widgets/Widgets.css.map +1 -1
  136. package/build/esm/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
  137. package/build/esm/components/navigation/DropdownContent/Column/Column.css.map +1 -1
  138. package/build/esm/components/navigation/DropdownContent/DropdownContent.css.map +1 -1
  139. package/build/esm/components/navigation/DropdownContent/Section/Section.css.map +1 -1
  140. package/build/esm/components/navigation/Label/Label.css.map +1 -1
  141. package/build/esm/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
  142. package/build/esm/components/navigation/NavigationDropdown/NavigationDropdown.css.map +1 -1
  143. package/build/esm/components/navigation/Sidebar/Sidebar.css.map +1 -1
  144. package/build/esm/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
  145. package/build/esm/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
  146. package/build/esm/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
  147. package/build/esm/contexts/InterfaceContext.d.ts +13 -2
  148. package/build/esm/contexts/InterfaceContext.js.map +2 -2
  149. package/build/esm/i18n/index.d.ts +48 -0
  150. package/build/esm/i18n/index.js +31 -16
  151. package/build/esm/i18n/index.js.map +2 -2
  152. package/build/esm/models/index.d.ts +3 -1
  153. package/build/esm/models/index.js +1 -0
  154. package/build/esm/models/index.js.map +2 -2
  155. package/build/esm/shared/libs/analytics/constant.d.ts +2 -0
  156. package/build/esm/shared/libs/analytics/constant.js +2 -0
  157. package/build/esm/shared/libs/analytics/constant.js.map +2 -2
  158. package/build/index.css.map +1 -1
  159. package/build/themes/common/index.css.map +1 -1
  160. package/package.json +4 -4
  161. package/src/i18n/ar.json +4 -1
  162. package/src/i18n/bg.json +4 -1
  163. package/src/i18n/cs.json +4 -1
  164. package/src/i18n/el.json +4 -1
  165. package/src/i18n/en.json +4 -1
  166. package/src/i18n/es.json +4 -1
  167. package/src/i18n/et.json +4 -1
  168. package/src/i18n/fr.json +4 -1
  169. package/src/i18n/he.json +4 -1
  170. package/src/i18n/kk.json +4 -1
  171. package/src/i18n/pt.json +4 -1
  172. package/src/i18n/ru.json +4 -1
  173. package/src/i18n/tr.json +4 -1
  174. package/src/i18n/uz.json +4 -1
  175. package/src/i18n/zh-tw.json +4 -1
  176. package/src/i18n/zh.json +4 -1
  177. package/build/cjs/components/Feedback/controls/DislikeVariantsPopup.js.map +0 -7
  178. package/build/esm/components/Feedback/controls/DislikeVariantsPopup.js.map +0 -7
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/ErrorPage/ErrorPage.scss", "../../../../src/components/ErrorPage/%3Cinput css C53Ooe%3E", "../../../../src/styles/mixins.scss"],
3
+ "sources": ["../../../../src/components/ErrorPage/ErrorPage.scss", "../../../../src/components/ErrorPage/%3Cinput css bb8bRv%3E", "../../../../src/styles/mixins.scss"],
4
4
  "sourcesContent": ["@use '../../styles/variables';\n@use '../../styles/mixins';\n\n.ErrorPage {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-top: 70px;\n padding: 0 50px;\n text-align: center;\n\n &__image {\n width: 230px;\n height: 230px;\n margin-bottom: 40px;\n\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center center;\n\n //The images for error page are supposed to be installed via overriding \"background-image\" variable\n &_code {\n &_403 {\n background-image: var(--dc-error-image-403);\n }\n\n &_404 {\n background-image: var(--dc-error-image-404);\n }\n\n &_500 {\n background-image: var(--dc-error-image-500);\n }\n }\n }\n\n &__code {\n margin-bottom: 10px;\n }\n\n &__title {\n @include mixins.heading3();\n\n max-width: 800px;\n margin-bottom: 20px;\n white-space: pre-line;\n }\n\n &__description {\n display: flex;\n flex-direction: column;\n gap: 10px;\n\n max-width: 600px;\n\n &-link {\n width: 100%;\n max-width: 200px;\n }\n }\n\n &__subtext {\n margin-bottom: 12px;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n gap: 4px;\n }\n\n a {\n @include mixins.link();\n }\n\n .mobile & {\n margin-top: 40px;\n padding: 0 20px;\n }\n}\n", ".ErrorPage {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-top: 70px;\n padding: 0 50px;\n text-align: center;\n}\n.ErrorPage__image {\n width: 230px;\n height: 230px;\n margin-bottom: 40px;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center center;\n}\n.ErrorPage__image_code_403 {\n background-image: var(--dc-error-image-403);\n}\n.ErrorPage__image_code_404 {\n background-image: var(--dc-error-image-404);\n}\n.ErrorPage__image_code_500 {\n background-image: var(--dc-error-image-500);\n}\n.ErrorPage__code {\n margin-bottom: 10px;\n}\n.ErrorPage__title {\n font-weight: 500;\n font-size: var(--g-text-header-2-font-size);\n line-height: var(--g-text-header-2-line-height);\n max-width: 800px;\n margin-bottom: 20px;\n white-space: pre-line;\n}\n.ErrorPage__description {\n display: flex;\n flex-direction: column;\n gap: 10px;\n max-width: 600px;\n}\n.ErrorPage__description-link {\n width: 100%;\n max-width: 200px;\n}\n.ErrorPage__subtext {\n margin-bottom: 12px;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n gap: 4px;\n}\n.ErrorPage a {\n color: var(--g-color-text-link);\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--g-focus-border-radius);\n outline: none;\n}\n.utilityfocus .ErrorPage a:focus {\n outline: 2px solid #ffdb4d;\n}\n.ErrorPage a:focus {\n box-shadow: 0 0 0 2px var(--g-color-line-focus);\n outline: 0;\n}\n.ErrorPage a:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.ErrorPage a:hover, .ErrorPage a:active {\n color: var(--g-color-text-link-hover);\n}\n.mobile .ErrorPage {\n margin-top: 40px;\n padding: 0 20px;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0Vycm9yUGFnZSIsInNvdXJjZXMiOlsiRXJyb3JQYWdlLnNjc3MiLCIuLi8uLi9zdHlsZXMvbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7O0FBSUk7RUFDSTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBS1o7RUFDSTs7QUFHSjtFQytDQTtFQW5GQTtFQUNBO0VEc0NJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTtFQUVBOztBQUVBO0VBQ0k7RUFDQTs7QUFJUjtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHSjtFQ2ZBO0VBQ0E7RUFDQTtFQUNBO0VBakNBOztBQUVBO0VBQ0k7O0FBZ0JBO0VBQ0k7RUFDQTs7QUFFSjtFQUNJOztBQWVSO0VBRUk7O0FEUUo7RUFDSTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XG5AdXNlICcuLi8uLi9zdHlsZXMvbWl4aW5zJztcblxuLkVycm9yUGFnZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogNzBweDtcbiAgICBwYWRkaW5nOiAwIDUwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJl9faW1hZ2Uge1xuICAgICAgICB3aWR0aDogMjMwcHg7XG4gICAgICAgIGhlaWdodDogMjMwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG5cbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXG4gICAgICAgIC8vVGhlIGltYWdlcyBmb3IgZXJyb3IgcGFnZSBhcmUgc3VwcG9zZWQgdG8gYmUgaW5zdGFsbGVkIHZpYSBvdmVycmlkaW5nIFwiYmFja2dyb3VuZC1pbWFnZVwiIHZhcmlhYmxlXG4gICAgICAgICZfY29kZSB7XG4gICAgICAgICAgICAmXzQwMyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tZGMtZXJyb3ItaW1hZ2UtNDAzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl80MDQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRjLWVycm9yLWltYWdlLTQwNCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfNTAwIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kYy1lcnJvci1pbWFnZS01MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29kZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgICBAaW5jbHVkZSBtaXhpbnMuaGVhZGluZzMoKTtcblxuICAgICAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG4gICAgfVxuXG4gICAgJl9fZGVzY3JpcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG5cbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcblxuICAgICAgICAmLWxpbmsge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc3VidGV4dCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgICBAaW5jbHVkZSBtaXhpbnMubGluaygpO1xuICAgIH1cblxuICAgIC5tb2JpbGUgJiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd2YXJpYWJsZXMnO1xuXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRvZmZzZXR9IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbn1cblxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZm9jdXNhYmxlKCRvZmZzZXQ6IDAsICRtb2RlOiAnb3V0bGluZScpIHtcbiAgICBAaWYgJG1vZGUgPT0gJ291dGxpbmUnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAkb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRtb2RlID09ICdib3gtc2hhZG93JyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGluaygpIHtcbiAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZy1mb2N1cy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcblxuICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgwLCAnYm94LXNoYWRvdycpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzEoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcyKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcbn1cblxuQG1peGluIGhlYWRpbmczKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xufVxuXG5AbWl4aW4gaGVhZGluZzQoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNigpIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcbn1cblxuQG1peGluIGRlc2t0b3Atb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZ3Jhdml0eS11aS10ZXh0LXNpemVzKCRkZWx0YSkge1xuICAgIC0tZy10ZXh0LWJvZHktMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0OiAjezE4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMi1mb250LXNpemU6ICN7MTVweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0OiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0OiAjezI0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMS1mb250LXNpemU6ICN7OXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jYXB0aW9uLTItZm9udC1zaXplOiAjezExcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZTogI3syMHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemU6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0xLWZvbnQtc2l6ZTogI3syOHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTItZm9udC1zaXplOiAjezMycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMy1mb250LXNpemU6ICN7NDBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS00LWZvbnQtc2l6ZTogI3s0OHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMi1mb250LXNpemU6ICN7MTRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0xLWZvbnQtc2l6ZTogI3sxMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcblxuICAgIC0teWZtLWZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oMjogdmFyKC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgzOiB2YXIoLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDQ6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNTogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg2OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplKTtcbn1cbiJdfQ== */", "@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": ";AAGA,CAAA;AACI,WAAA;AACA,kBAAA;AACA,eAAA;AACA,cAAA;AACA,WAAA,EAAA;AACA,cAAA;ACFJ;ADII,CAAA;AACI,SAAA;AACA,UAAA;AACA,iBAAA;AAEA,mBAAA;AACA,qBAAA;AACA,uBAAA,OAAA;ACHR;ADOY,CAAA;AACI,oBAAA,IAAA;ACLhB;ADQY,CAAA;AACI,oBAAA,IAAA;ACNhB;ADSY,CAAA;AACI,oBAAA,IAAA;ACPhB;ADYI,CAAA;AACI,iBAAA;ACVR;ADaI,CAAA;AE+CA,eAAA;AAnFA,aAAA,IAAA;AACA,eAAA,IAAA;AFsCI,aAAA;AACA,iBAAA;AACA,eAAA;ACVR;ADaI,CAAA;AACI,WAAA;AACA,kBAAA;AACA,OAAA;AAEA,aAAA;ACZR;ADcQ,CAAA;AACI,SAAA;AACA,aAAA;ACZZ;ADgBI,CAAA;AACI,iBAAA;AACA,WAAA;AACA,aAAA;AACA,mBAAA;AACA,eAAA;AACA,OAAA;ACdR;ADiBI,CAnEJ,UAmEI;AEfA,SAAA,IAAA;AACA,2BAAA;AAAA,mBAAA;AACA,UAAA;AACA,iBAAA,IAAA;AAjCA,WAAA;ADmCJ;ACjCI,CAAA,aAAA,CFxBJ,UEwBI,CAAA;AACI,WAAA,IAAA,MAAA;ADmCR;ACnBQ,CFzCR,UEyCQ,CAAA;AACI,cAAA,EAAA,EAAA,EAAA,IAAA,IAAA;AACA,WAAA;ADqBZ;ACnBQ,CF7CR,UE6CQ,CAAA,MAAA,KAAA;AACI,cAAA;ADqBZ;ACNI,CF7DJ,UE6DI,CAAA;AAAA,CF7DJ,UE6DI,CAAA;AAEI,SAAA,IAAA;ADOR;ADCI,CAAA,OAAA,CAvEJ;AAwEQ,cAAA;AACA,WAAA,EAAA;ACCR;",
6
6
  "names": []
@@ -86,7 +86,13 @@
86
86
  gap: 20px;
87
87
  }
88
88
  .dc-feedback__controls_view_wide {
89
+ flex-wrap: wrap;
90
+ justify-content: center;
91
+ }
92
+ .dc-feedback__comment-row {
89
93
  display: flex;
94
+ flex-basis: 100%;
95
+ justify-content: center;
90
96
  }
91
97
  .dc-feedback__control:nth-child(1),
92
98
  .dc-feedback__control:nth-child(2) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/Feedback/Feedback.scss", "../../../../src/components/Feedback/%3Cinput css PXpCoF%3E", "../../../../src/styles/variables.scss", "../../../../src/styles/mixins.scss"],
4
- "sourcesContent": ["@use 'sass:map';\n@use '../../styles/mixins';\n@use '../../styles/variables';\n\n$popupWidth: 320px;\n\n@mixin tooltip-in-center {\n // use sm to cover a larger number of smartphones\n @media screen and (max-width: map.get(variables.$screenBreakpoints, 'sm')) {\n & {\n // stylelint-disable declaration-no-important\n right: 0 !important;\n left: 0 !important;\n margin: auto;\n }\n }\n}\n\n.dc-feedback {\n &__container {\n &_view_wide {\n display: flex;\n align-items: center;\n flex-direction: column;\n width: 100%;\n }\n }\n\n &__container-col {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n\n width: 100%;\n padding: 26px;\n\n border: 1px solid var(--g-color-line-generic);\n border-radius: 8px;\n\n &_view_wide {\n display: flex;\n align-items: center;\n }\n }\n\n &__success-popup {\n left: -20px;\n\n padding: variables.$popupPadding 50px variables.$popupPadding variables.$popupPadding;\n width: $popupWidth;\n\n &_view_wide {\n @include tooltip-in-center();\n }\n }\n\n &__variants-popup {\n padding: variables.$popupPadding;\n width: $popupWidth;\n left: -20px;\n\n &_view_wide {\n @include tooltip-in-center();\n }\n }\n\n &__popup-title {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n padding-bottom: 8px;\n }\n\n &__popup-text {\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n }\n\n &__variants {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n }\n\n &__variant {\n margin-bottom: 8px;\n white-space: normal;\n }\n\n &__variant:last-of-type {\n margin-bottom: 0;\n }\n\n &__variants-actions {\n padding-top: 8px;\n display: flex;\n justify-content: flex-end;\n }\n\n &__variants-action {\n margin-left: 10px;\n }\n\n &__textarea {\n padding: 8px 0;\n }\n\n &__title {\n &_view_wide {\n @include mixins.text-size(subheader-3);\n font-weight: 400;\n }\n }\n\n &__controls {\n display: flex;\n gap: 20px;\n\n &_view_wide {\n display: flex;\n }\n }\n\n &__control {\n &:nth-child(1),\n &:nth-child(2) {\n display: flex;\n align-items: center;\n\n font-size: 17px;\n line-height: 24px;\n font-weight: 400;\n }\n\n &_view_wide {\n margin-right: 24px;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n\n &_view_regular {\n margin-right: 4px;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n}\n", ".dc-feedback__container_view_wide {\n display: flex;\n align-items: center;\n flex-direction: column;\n width: 100%;\n}\n.dc-feedback__container-col {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n width: 100%;\n padding: 26px;\n border: 1px solid var(--g-color-line-generic);\n border-radius: 8px;\n}\n.dc-feedback__container-col_view_wide {\n display: flex;\n align-items: center;\n}\n.dc-feedback__success-popup {\n left: -20px;\n padding: 16px 50px 16px 16px;\n width: 320px;\n}\n@media screen and (max-width: 577px) {\n .dc-feedback__success-popup_view_wide {\n right: 0 !important;\n left: 0 !important;\n margin: auto;\n }\n}\n.dc-feedback__variants-popup {\n padding: 16px;\n width: 320px;\n left: -20px;\n}\n@media screen and (max-width: 577px) {\n .dc-feedback__variants-popup_view_wide {\n right: 0 !important;\n left: 0 !important;\n margin: auto;\n }\n}\n.dc-feedback__popup-title {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n padding-bottom: 8px;\n}\n.dc-feedback__popup-text {\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n}\n.dc-feedback__variants {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n}\n.dc-feedback__variant {\n margin-bottom: 8px;\n white-space: normal;\n}\n.dc-feedback__variant:last-of-type {\n margin-bottom: 0;\n}\n.dc-feedback__variants-actions {\n padding-top: 8px;\n display: flex;\n justify-content: flex-end;\n}\n.dc-feedback__variants-action {\n margin-left: 10px;\n}\n.dc-feedback__textarea {\n padding: 8px 0;\n}\n.dc-feedback__title_view_wide {\n font-size: var(--g-text-subheader-3-font-size);\n line-height: var(--g-text-subheader-3-line-height);\n font-weight: 400;\n}\n.dc-feedback__controls {\n display: flex;\n gap: 20px;\n}\n.dc-feedback__controls_view_wide {\n display: flex;\n}\n.dc-feedback__control:nth-child(1), .dc-feedback__control:nth-child(2) {\n display: flex;\n align-items: center;\n font-size: 17px;\n line-height: 24px;\n font-weight: 400;\n}\n.dc-feedback__control_view_wide {\n margin-right: 24px;\n}\n.dc-feedback__control_view_wide:last-of-type {\n margin-right: 0;\n}\n.dc-feedback__control_view_regular {\n margin-right: 4px;\n}\n.dc-feedback__control_view_regular:last-of-type {\n margin-right: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0ZlZWRiYWNrIiwic291cmNlcyI6WyJGZWVkYmFjay5zY3NzIiwiLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vc3R5bGVzL21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTs7QUFJUjtFQUNJO0VBRUE7RUFDQSxPQS9DSzs7QUFJVDtFQUNJO0lBRUk7SUFDQTtJQUNBOzs7QUE2Q1I7RUFDSSxTQ2pETztFRGtEUCxPQXhESztFQXlETDs7QUFyREo7RUFDSTtJQUVJO0lBQ0E7SUFDQTs7O0FBdURSO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBSUE7RUV6R0o7RUFDQTtFRjBHUTs7QUFJUjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTs7QUFLSjtFQUVJO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7O0FBR0o7RUFDSTs7QUFFQTtFQUNJOztBQUlSO0VBQ0k7O0FBRUE7RUFDSSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uLy4uL3N0eWxlcy9taXhpbnMnO1xuQHVzZSAnLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XG5cbiRwb3B1cFdpZHRoOiAzMjBweDtcblxuQG1peGluIHRvb2x0aXAtaW4tY2VudGVyIHtcbiAgICAvLyB1c2Ugc20gdG8gY292ZXIgYSBsYXJnZXIgbnVtYmVyIG9mIHNtYXJ0cGhvbmVzXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xuICAgICAgICAmIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuICAgICAgICAgICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRjLWZlZWRiYWNrIHtcbiAgICAmX19jb250YWluZXIge1xuICAgICAgICAmX3ZpZXdfd2lkZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRhaW5lci1jb2wge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAyMHB4O1xuXG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAyNnB4O1xuXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWctY29sb3ItbGluZS1nZW5lcmljKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgICAgICZfdmlld193aWRlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc3VjY2Vzcy1wb3B1cCB7XG4gICAgICAgIGxlZnQ6IC0yMHB4O1xuXG4gICAgICAgIHBhZGRpbmc6IHZhcmlhYmxlcy4kcG9wdXBQYWRkaW5nIDUwcHggdmFyaWFibGVzLiRwb3B1cFBhZGRpbmcgdmFyaWFibGVzLiRwb3B1cFBhZGRpbmc7XG4gICAgICAgIHdpZHRoOiAkcG9wdXBXaWR0aDtcblxuICAgICAgICAmX3ZpZXdfd2lkZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0b29sdGlwLWluLWNlbnRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdmFyaWFudHMtcG9wdXAge1xuICAgICAgICBwYWRkaW5nOiB2YXJpYWJsZXMuJHBvcHVwUGFkZGluZztcbiAgICAgICAgd2lkdGg6ICRwb3B1cFdpZHRoO1xuICAgICAgICBsZWZ0OiAtMjBweDtcblxuICAgICAgICAmX3ZpZXdfd2lkZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0b29sdGlwLWluLWNlbnRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fcG9wdXAtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTItZm9udC1zaXplKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xuICAgIH1cblxuICAgICZfX3BvcHVwLXRleHQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1nLXRleHQtYm9keS1zaG9ydC1saW5lLWhlaWdodCk7XG4gICAgfVxuXG4gICAgJl9fdmFyaWFudHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICB9XG5cbiAgICAmX192YXJpYW50IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIH1cblxuICAgICZfX3ZhcmlhbnQ6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAmX192YXJpYW50cy1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAmX192YXJpYW50cy1hY3Rpb24ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG5cbiAgICAmX190ZXh0YXJlYSB7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgIH1cblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgJl92aWV3X3dpZGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWl4aW5zLnRleHQtc2l6ZShzdWJoZWFkZXItMyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udHJvbHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDIwcHg7XG5cbiAgICAgICAgJl92aWV3X3dpZGUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRyb2wge1xuICAgICAgICAmOm50aC1jaGlsZCgxKSxcbiAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfdmlld193aWRlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjRweDtcblxuICAgICAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfdmlld19yZWd1bGFyIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuXG4gICAgICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gU2l6ZXNcbiRoZWFkZXJIZWlnaHQ6IDBweDtcbiRzdWJIZWFkZXJIZWlnaHQ6IDQwcHg7XG4kc3ViTmF2aWdhdGlvbkhlaWdodDogNTJweDtcbiRub3JtYWxPZmZzZXQ6IDIwcHg7XG4kbWluaVRvY09mZnNldDogNTZweDtcbiRibG9ja01hcmdpbkJvdHRvbUxhcmdlOiAyMHB4O1xuJGJsb2NrTWFyZ2luQm90dG9tTWVkaXVtOiAxNXB4O1xuJGhlYWRlck1hcmdpblRvcExhcmdlOiA0MHB4O1xuJGhlYWRlck1hcmdpblRvcE1lZGl1bTogMzJweDtcbiRwb3B1cFBhZGRpbmc6IDE2cHg7XG4kY2VudGVyQmxvY2tNYXhXaWR0aDogNzM2cHg7XG5cbi8vIE5hdmlnYXRpb25cbiR0b01haW5NZW51VmVydGljYWxQYWRkaW5nOiA0cHg7XG4kdG9NYWluTWVudUhvcml6b250YWxQYWRkaW5nOiAxMnB4O1xuJHRvTWFpbk1lbnVIZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tZGMtc3VibmF2aWdhdGlvbi1oZWlnaHQsICRzdWJOYXZpZ2F0aW9uSGVpZ2h0KSAtICN7JHRvTWFpbk1lbnVWZXJ0aWNhbFBhZGRpbmd9IC1cbiAgICAgICAgI3skdG9NYWluTWVudVZlcnRpY2FsUGFkZGluZ31cbik7XG5cbi8vIE1pbmlUb2NcbiRtaW5pVG9jVmVydGljYWxQYWRkaW5nOiAxNnB4O1xuJG1pbmlUb2NUaXRsZUhlaWdodDogMjBweDsgLy8gbGluZS1oZWlnaHQgYm9keS0yXG4kbWluaVRvY1RpdGxlTWFyZ2luOiAxMnB4O1xuJG1vYmlsZU1pbmlUb2NPZmZzZXQ6IDIgKiAkbWluaVRvY1ZlcnRpY2FsUGFkZGluZyArICRtaW5pVG9jVGl0bGVIZWlnaHQgKyAkbWluaVRvY1RpdGxlTWFyZ2luO1xuXG4vLyBNb2JpbGVDb250cm9sc1xuJG1vYmlsZUNvbnRyb2xzSGVpZ2h0OiA0NHB4O1xuJG1vYmlsZUNvbnRyb2xzVG9wUGFkZGluZzogNHB4O1xuJG1vYmlsZUNvbnRyb2xzQm90dG9tUGFkZGluZzogMzRweDtcblxuJHNjcmVlbkJyZWFrcG9pbnRzOiAoXG4gICAgJ3hzJzogMzc1cHgsXG4gICAgJ3NtJzogNTc3cHgsXG4gICAgJ21kJzogNzY5cHgsXG4gICAgJ2xnJzogMTA4MXB4LFxuICAgICd4bCc6IDExODVweCxcbik7XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd2YXJpYWJsZXMnO1xuXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRvZmZzZXR9IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbn1cblxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZm9jdXNhYmxlKCRvZmZzZXQ6IDAsICRtb2RlOiAnb3V0bGluZScpIHtcbiAgICBAaWYgJG1vZGUgPT0gJ291dGxpbmUnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAkb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRtb2RlID09ICdib3gtc2hhZG93JyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGluaygpIHtcbiAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZy1mb2N1cy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcblxuICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgwLCAnYm94LXNoYWRvdycpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzEoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcyKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcbn1cblxuQG1peGluIGhlYWRpbmczKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xufVxuXG5AbWl4aW4gaGVhZGluZzQoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNigpIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcbn1cblxuQG1peGluIGRlc2t0b3Atb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZ3Jhdml0eS11aS10ZXh0LXNpemVzKCRkZWx0YSkge1xuICAgIC0tZy10ZXh0LWJvZHktMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0OiAjezE4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMi1mb250LXNpemU6ICN7MTVweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0OiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0OiAjezI0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMS1mb250LXNpemU6ICN7OXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jYXB0aW9uLTItZm9udC1zaXplOiAjezExcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZTogI3syMHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemU6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0xLWZvbnQtc2l6ZTogI3syOHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTItZm9udC1zaXplOiAjezMycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMy1mb250LXNpemU6ICN7NDBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS00LWZvbnQtc2l6ZTogI3s0OHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMi1mb250LXNpemU6ICN7MTRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0xLWZvbnQtc2l6ZTogI3sxMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcblxuICAgIC0teWZtLWZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oMjogdmFyKC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgzOiB2YXIoLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDQ6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNTogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg2OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplKTtcbn1cbiJdfQ== */", "// Sizes\n$headerHeight: 0px;\n$subHeaderHeight: 40px;\n$subNavigationHeight: 52px;\n$normalOffset: 20px;\n$miniTocOffset: 56px;\n$blockMarginBottomLarge: 20px;\n$blockMarginBottomMedium: 15px;\n$headerMarginTopLarge: 40px;\n$headerMarginTopMedium: 32px;\n$popupPadding: 16px;\n$centerBlockMaxWidth: 736px;\n\n// Navigation\n$toMainMenuVerticalPadding: 4px;\n$toMainMenuHorizontalPadding: 12px;\n$toMainMenuHeight: calc(\n var(--dc-subnavigation-height, $subNavigationHeight) - #{$toMainMenuVerticalPadding} -\n #{$toMainMenuVerticalPadding}\n);\n\n// MiniToc\n$miniTocVerticalPadding: 16px;\n$miniTocTitleHeight: 20px; // line-height body-2\n$miniTocTitleMargin: 12px;\n$mobileMiniTocOffset: 2 * $miniTocVerticalPadding + $miniTocTitleHeight + $miniTocTitleMargin;\n\n// MobileControls\n$mobileControlsHeight: 44px;\n$mobileControlsTopPadding: 4px;\n$mobileControlsBottomPadding: 34px;\n\n$screenBreakpoints: (\n 'xs': 375px,\n 'sm': 577px,\n 'md': 769px,\n 'lg': 1081px,\n 'xl': 1185px,\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"],
5
- "mappings": ";AAoBQ,CAAA;AACI,WAAA;AACA,eAAA;AACA,kBAAA;AACA,SAAA;ACnBZ;ADuBI,CAAA;AACI,WAAA;AACA,mBAAA;AACA,eAAA;AACA,kBAAA;AACA,OAAA;AAEA,SAAA;AACA,WAAA;AAEA,UAAA,IAAA,MAAA,IAAA;AACA,iBAAA;ACvBR;ADyBQ,CAAA;AACI,WAAA;AACA,eAAA;ACvBZ;AD2BI,CAAA;AACI,QAAA;AAEA,WAAA,KAAA,KAAA,KAAA;AACA,SAAA;AC1BR;ADjBI,OAAA,YAAA,WAAA;AACI,GAAA;AAEI,WAAA;AACA,UAAA;AACA,YAAA;ACkBV;AACF;AD0BI,CAAA;AACI,WAAA;AACA,SAAA;AACA,QAAA;ACxBR;AD7BI,OAAA,YAAA,WAAA;AACI,GAAA;AAEI,WAAA;AACA,UAAA;AACA,YAAA;AC8BV;AACF;ADwBI,CAAA;AACI,aAAA,IAAA;AACA,eAAA,IAAA;AACA,kBAAA;ACtBR;ADyBI,CAAA;AACI,aAAA,IAAA;AACA,eAAA,IAAA;ACvBR;AD0BI,CAAA;AACI,WAAA;AACA,kBAAA;AACA,WAAA,IAAA;ACxBR;AD2BI,CAAA;AACI,iBAAA;AACA,eAAA;ACzBR;AD4BI,CALA,oBAKA;AACI,iBAAA;AC1BR;AD6BI,CAAA;AACI,eAAA;AACA,WAAA;AACA,mBAAA;AC3BR;AD8BI,CAAA;AACI,eAAA;AC5BR;AD+BI,CAAA;AACI,WAAA,IAAA;AC7BR;ADiCQ,CAAA;AGzGJ,aAAA,IAAA;AACA,eAAA,IAAA;AH0GQ,eAAA;AC9BZ;ADkCI,CAAA;AACI,WAAA;AACA,OAAA;AChCR;ADkCQ,CAAA;AACI,WAAA;AChCZ;ADqCQ,CAAA,oBAAA;AAAA,CAAA,oBAAA;AAEI,WAAA;AACA,eAAA;AAEA,aAAA;AACA,eAAA;AACA,eAAA;ACrCZ;ADwCQ,CAAA;AACI,gBAAA;ACtCZ;ADwCY,CAHJ,8BAGI;AACI,gBAAA;ACtChB;AD0CQ,CAAA;AACI,gBAAA;ACxCZ;AD0CY,CAHJ,iCAGI;AACI,gBAAA;ACxChB;",
3
+ "sources": ["../../../../src/components/Feedback/Feedback.scss", "../../../../src/components/Feedback/%3Cinput css gAUFYN%3E", "../../../../src/styles/variables.scss", "../../../../src/styles/mixins.scss"],
4
+ "sourcesContent": ["@use 'sass:map';\n@use '../../styles/mixins';\n@use '../../styles/variables';\n\n$popupWidth: 320px;\n\n@mixin tooltip-in-center {\n // use sm to cover a larger number of smartphones\n @media screen and (max-width: map.get(variables.$screenBreakpoints, 'sm')) {\n & {\n // stylelint-disable declaration-no-important\n right: 0 !important;\n left: 0 !important;\n margin: auto;\n }\n }\n}\n\n.dc-feedback {\n &__container {\n &_view_wide {\n display: flex;\n align-items: center;\n flex-direction: column;\n width: 100%;\n }\n }\n\n &__container-col {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n\n width: 100%;\n padding: 26px;\n\n border: 1px solid var(--g-color-line-generic);\n border-radius: 8px;\n\n &_view_wide {\n display: flex;\n align-items: center;\n }\n }\n\n &__success-popup {\n left: -20px;\n\n padding: variables.$popupPadding 50px variables.$popupPadding variables.$popupPadding;\n width: $popupWidth;\n\n &_view_wide {\n @include tooltip-in-center();\n }\n }\n\n &__variants-popup {\n padding: variables.$popupPadding;\n width: $popupWidth;\n left: -20px;\n\n &_view_wide {\n @include tooltip-in-center();\n }\n }\n\n &__popup-title {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n padding-bottom: 8px;\n }\n\n &__popup-text {\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n }\n\n &__variants {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n }\n\n &__variant {\n margin-bottom: 8px;\n white-space: normal;\n }\n\n &__variant:last-of-type {\n margin-bottom: 0;\n }\n\n &__variants-actions {\n padding-top: 8px;\n display: flex;\n justify-content: flex-end;\n }\n\n &__variants-action {\n margin-left: 10px;\n }\n\n &__textarea {\n padding: 8px 0;\n }\n\n &__title {\n &_view_wide {\n @include mixins.text-size(subheader-3);\n font-weight: 400;\n }\n }\n\n &__controls {\n display: flex;\n gap: 20px;\n\n &_view_wide {\n flex-wrap: wrap;\n justify-content: center;\n }\n }\n\n // Wide-only: own full-width row so the button stays content-width and centered\n &__comment-row {\n display: flex;\n flex-basis: 100%;\n justify-content: center;\n }\n\n &__control {\n &:nth-child(1),\n &:nth-child(2) {\n display: flex;\n align-items: center;\n\n font-size: 17px;\n line-height: 24px;\n font-weight: 400;\n }\n\n &_view_wide {\n margin-right: 24px;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n\n &_view_regular {\n margin-right: 4px;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n}\n", ".dc-feedback__container_view_wide {\n display: flex;\n align-items: center;\n flex-direction: column;\n width: 100%;\n}\n.dc-feedback__container-col {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 20px;\n width: 100%;\n padding: 26px;\n border: 1px solid var(--g-color-line-generic);\n border-radius: 8px;\n}\n.dc-feedback__container-col_view_wide {\n display: flex;\n align-items: center;\n}\n.dc-feedback__success-popup {\n left: -20px;\n padding: 16px 50px 16px 16px;\n width: 320px;\n}\n@media screen and (max-width: 577px) {\n .dc-feedback__success-popup_view_wide {\n right: 0 !important;\n left: 0 !important;\n margin: auto;\n }\n}\n.dc-feedback__variants-popup {\n padding: 16px;\n width: 320px;\n left: -20px;\n}\n@media screen and (max-width: 577px) {\n .dc-feedback__variants-popup_view_wide {\n right: 0 !important;\n left: 0 !important;\n margin: auto;\n }\n}\n.dc-feedback__popup-title {\n font-size: var(--g-text-body-2-font-size);\n line-height: var(--g-text-body-2-line-height);\n padding-bottom: 8px;\n}\n.dc-feedback__popup-text {\n font-size: var(--g-text-body-short-font-size);\n line-height: var(--g-text-body-short-line-height);\n}\n.dc-feedback__variants {\n display: flex;\n flex-direction: column;\n padding: 8px 0;\n}\n.dc-feedback__variant {\n margin-bottom: 8px;\n white-space: normal;\n}\n.dc-feedback__variant:last-of-type {\n margin-bottom: 0;\n}\n.dc-feedback__variants-actions {\n padding-top: 8px;\n display: flex;\n justify-content: flex-end;\n}\n.dc-feedback__variants-action {\n margin-left: 10px;\n}\n.dc-feedback__textarea {\n padding: 8px 0;\n}\n.dc-feedback__title_view_wide {\n font-size: var(--g-text-subheader-3-font-size);\n line-height: var(--g-text-subheader-3-line-height);\n font-weight: 400;\n}\n.dc-feedback__controls {\n display: flex;\n gap: 20px;\n}\n.dc-feedback__controls_view_wide {\n flex-wrap: wrap;\n justify-content: center;\n}\n.dc-feedback__comment-row {\n display: flex;\n flex-basis: 100%;\n justify-content: center;\n}\n.dc-feedback__control:nth-child(1), .dc-feedback__control:nth-child(2) {\n display: flex;\n align-items: center;\n font-size: 17px;\n line-height: 24px;\n font-weight: 400;\n}\n.dc-feedback__control_view_wide {\n margin-right: 24px;\n}\n.dc-feedback__control_view_wide:last-of-type {\n margin-right: 0;\n}\n.dc-feedback__control_view_regular {\n margin-right: 4px;\n}\n.dc-feedback__control_view_regular:last-of-type {\n margin-right: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvY29tcG9uZW50cy9jb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0ZlZWRiYWNrIiwic291cmNlcyI6WyJGZWVkYmFjay5zY3NzIiwiLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vc3R5bGVzL21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUlSO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0VBQ0k7RUFDQTs7QUFJUjtFQUNJO0VBRUE7RUFDQSxPQS9DSzs7QUFJVDtFQUNJO0lBRUk7SUFDQTtJQUNBOzs7QUE2Q1I7RUFDSSxTQ2pETztFRGtEUCxPQXhESztFQXlETDs7QUFyREo7RUFDSTtJQUVJO0lBQ0E7SUFDQTs7O0FBdURSO0VBQ0k7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJO0VBQ0E7O0FBR0o7RUFDSTs7QUFHSjtFQUNJO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUdKO0VBQ0k7O0FBSUE7RUV6R0o7RUFDQTtFRjBHUTs7QUFJUjtFQUNJO0VBQ0E7O0FBRUE7RUFDSTtFQUNBOztBQUtSO0VBQ0k7RUFDQTtFQUNBOztBQUlBO0VBRUk7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUFHSjtFQUNJOztBQUVBO0VBQ0k7O0FBSVI7RUFDSTs7QUFFQTtFQUNJIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vc3R5bGVzL21peGlucyc7XG5AdXNlICcuLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcblxuJHBvcHVwV2lkdGg6IDMyMHB4O1xuXG5AbWl4aW4gdG9vbHRpcC1pbi1jZW50ZXIge1xuICAgIC8vIHVzZSBzbSB0byBjb3ZlciBhIGxhcmdlciBudW1iZXIgb2Ygc21hcnRwaG9uZXNcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgICYge1xuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG4gICAgICAgICAgICByaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGMtZmVlZGJhY2sge1xuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgICZfdmlld193aWRlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGFpbmVyLWNvbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDIwcHg7XG5cbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDI2cHg7XG5cbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWdlbmVyaWMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG5cbiAgICAgICAgJl92aWV3X3dpZGUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19zdWNjZXNzLXBvcHVwIHtcbiAgICAgICAgbGVmdDogLTIwcHg7XG5cbiAgICAgICAgcGFkZGluZzogdmFyaWFibGVzLiRwb3B1cFBhZGRpbmcgNTBweCB2YXJpYWJsZXMuJHBvcHVwUGFkZGluZyB2YXJpYWJsZXMuJHBvcHVwUGFkZGluZztcbiAgICAgICAgd2lkdGg6ICRwb3B1cFdpZHRoO1xuXG4gICAgICAgICZfdmlld193aWRlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRvb2x0aXAtaW4tY2VudGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX192YXJpYW50cy1wb3B1cCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcmlhYmxlcy4kcG9wdXBQYWRkaW5nO1xuICAgICAgICB3aWR0aDogJHBvcHVwV2lkdGg7XG4gICAgICAgIGxlZnQ6IC0yMHB4O1xuXG4gICAgICAgICZfdmlld193aWRlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRvb2x0aXAtaW4tY2VudGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19wb3B1cC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gICAgfVxuXG4gICAgJl9fcG9wdXAtdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtcbiAgICB9XG5cbiAgICAmX192YXJpYW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgIH1cblxuICAgICZfX3ZhcmlhbnQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgfVxuXG4gICAgJl9fdmFyaWFudDpsYXN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgICZfX3ZhcmlhbnRzLWFjdGlvbnMge1xuICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgICZfX3ZhcmlhbnRzLWFjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cblxuICAgICZfX3RleHRhcmVhIHtcbiAgICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgICAmX3ZpZXdfd2lkZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtaXhpbnMudGV4dC1zaXplKHN1YmhlYWRlci0zKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250cm9scyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMjBweDtcblxuICAgICAgICAmX3ZpZXdfd2lkZSB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdpZGUtb25seTogb3duIGZ1bGwtd2lkdGggcm93IHNvIHRoZSBidXR0b24gc3RheXMgY29udGVudC13aWR0aCBhbmQgY2VudGVyZWRcbiAgICAmX19jb21tZW50LXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgICZfX2NvbnRyb2wge1xuICAgICAgICAmOm50aC1jaGlsZCgxKSxcbiAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfdmlld193aWRlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjRweDtcblxuICAgICAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfdmlld19yZWd1bGFyIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuXG4gICAgICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gU2l6ZXNcbiRoZWFkZXJIZWlnaHQ6IDBweDtcbiRzdWJIZWFkZXJIZWlnaHQ6IDQwcHg7XG4kc3ViTmF2aWdhdGlvbkhlaWdodDogNTJweDtcbiRub3JtYWxPZmZzZXQ6IDIwcHg7XG4kbWluaVRvY09mZnNldDogNTZweDtcbiRibG9ja01hcmdpbkJvdHRvbUxhcmdlOiAyMHB4O1xuJGJsb2NrTWFyZ2luQm90dG9tTWVkaXVtOiAxNXB4O1xuJGhlYWRlck1hcmdpblRvcExhcmdlOiA0MHB4O1xuJGhlYWRlck1hcmdpblRvcE1lZGl1bTogMzJweDtcbiRwb3B1cFBhZGRpbmc6IDE2cHg7XG4kY2VudGVyQmxvY2tNYXhXaWR0aDogNzM2cHg7XG5cbi8vIE5hdmlnYXRpb25cbiR0b01haW5NZW51VmVydGljYWxQYWRkaW5nOiA0cHg7XG4kdG9NYWluTWVudUhvcml6b250YWxQYWRkaW5nOiAxMnB4O1xuJHRvTWFpbk1lbnVIZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tZGMtc3VibmF2aWdhdGlvbi1oZWlnaHQsICRzdWJOYXZpZ2F0aW9uSGVpZ2h0KSAtICN7JHRvTWFpbk1lbnVWZXJ0aWNhbFBhZGRpbmd9IC1cbiAgICAgICAgI3skdG9NYWluTWVudVZlcnRpY2FsUGFkZGluZ31cbik7XG5cbi8vIE1pbmlUb2NcbiRtaW5pVG9jVmVydGljYWxQYWRkaW5nOiAxNnB4O1xuJG1pbmlUb2NUaXRsZUhlaWdodDogMjBweDsgLy8gbGluZS1oZWlnaHQgYm9keS0yXG4kbWluaVRvY1RpdGxlTWFyZ2luOiAxMnB4O1xuJG1vYmlsZU1pbmlUb2NPZmZzZXQ6IDIgKiAkbWluaVRvY1ZlcnRpY2FsUGFkZGluZyArICRtaW5pVG9jVGl0bGVIZWlnaHQgKyAkbWluaVRvY1RpdGxlTWFyZ2luO1xuXG4vLyBNb2JpbGVDb250cm9sc1xuJG1vYmlsZUNvbnRyb2xzSGVpZ2h0OiA0NHB4O1xuJG1vYmlsZUNvbnRyb2xzVG9wUGFkZGluZzogNHB4O1xuJG1vYmlsZUNvbnRyb2xzQm90dG9tUGFkZGluZzogMzRweDtcblxuJHNjcmVlbkJyZWFrcG9pbnRzOiAoXG4gICAgJ3hzJzogMzc1cHgsXG4gICAgJ3NtJzogNTc3cHgsXG4gICAgJ21kJzogNzY5cHgsXG4gICAgJ2xnJzogMTA4MXB4LFxuICAgICd4bCc6IDExODVweCxcbik7XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd2YXJpYWJsZXMnO1xuXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1nLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcbn1cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7dmFyaWFibGVzLiRoZWFkZXJIZWlnaHR9KSk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRvZmZzZXR9IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3t2YXJpYWJsZXMuJGhlYWRlckhlaWdodH0pKTtcbn1cblxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XG4gICAgfVxufVxuXG5AbWl4aW4gZm9jdXNhYmxlKCRvZmZzZXQ6IDAsICRtb2RlOiAnb3V0bGluZScpIHtcbiAgICBAaWYgJG1vZGUgPT0gJ291dGxpbmUnIHtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tZy1jb2xvci1saW5lLWZvY3VzKTtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAkb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRtb2RlID09ICdib3gtc2hhZG93JyB7XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWctY29sb3ItbGluZS1mb2N1cyk7XG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gbGluaygpIHtcbiAgICBjb2xvcjogdmFyKC0tZy1jb2xvci10ZXh0LWxpbmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZy1mb2N1cy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcblxuICAgIEBpbmNsdWRlIGZvY3VzYWJsZSgwLCAnYm94LXNoYWRvdycpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1nLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XG4gICAgfVxufVxuXG5AbWl4aW4gaGVhZGluZzEoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC5nZXQodmFyaWFibGVzLiRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xuICAgIH1cbn1cblxuQG1peGluIGhlYWRpbmcyKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcbn1cblxuQG1peGluIGhlYWRpbmczKCkge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xufVxuXG5AbWl4aW4gaGVhZGluZzQoKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNSgpIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBoZWFkaW5nNigpIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XG59XG5cbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcbiAgICBmb250LXNpemU6IHZhcigtLWctdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tZy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcbn1cblxuQG1peGluIGRlc2t0b3Atb25seSgpIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLmdldCh2YXJpYWJsZXMuJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIG1vYmlsZS1vbmx5KCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAuZ2V0KHZhcmlhYmxlcy4kc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AbWl4aW4gZ3Jhdml0eS11aS10ZXh0LXNpemVzKCRkZWx0YSkge1xuICAgIC0tZy10ZXh0LWJvZHktMS1mb250LXNpemU6ICN7MTNweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0OiAjezE4cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMi1mb250LXNpemU6ICN7MTVweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0OiAjezIwcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0OiAjezI0cHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNhcHRpb24tMS1mb250LXNpemU6ICN7OXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jYXB0aW9uLTItZm9udC1zaXplOiAjezExcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZTogI3syMHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1oZWFkZXItMi1mb250LXNpemU6ICN7MjRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplOiAjezEzcHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZTogI3sxNXB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemU6ICN7MTdweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS0xLWZvbnQtc2l6ZTogI3syOHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1kaXNwbGF5LTItZm9udC1zaXplOiAjezMycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWRpc3BsYXktMy1mb250LXNpemU6ICN7NDBweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtZGlzcGxheS00LWZvbnQtc2l6ZTogI3s0OHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLTEtZm9udC1zaXplOiAjezEycHggKyAkZGVsdGF9O1xuICAgIC0tZy10ZXh0LWNvZGUtMi1mb250LXNpemU6ICN7MTRweCArICRkZWx0YX07XG4gICAgLS1nLXRleHQtY29kZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0xLWZvbnQtc2l6ZTogI3sxMnB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZTogI3sxNHB4ICsgJGRlbHRhfTtcbiAgICAtLWctdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZTogI3sxNnB4ICsgJGRlbHRhfTtcblxuICAgIC0teWZtLWZvbnQtc2l6ZTogdmFyKC0tZy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtbGluZS1oZWlnaHQ6IHZhcigtLWctdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oMjogdmFyKC0tZy10ZXh0LWhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWgzOiB2YXIoLS1nLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtcbiAgICAtLXlmbS1mb250LXNpemUtaDQ6IHZhcigtLWctdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO1xuICAgIC0teWZtLWZvbnQtc2l6ZS1oNTogdmFyKC0tZy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZSk7XG4gICAgLS15Zm0tZm9udC1zaXplLWg2OiB2YXIoLS1nLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplKTtcbn1cbiJdfQ== */", "// Sizes\n$headerHeight: 0px;\n$subHeaderHeight: 40px;\n$subNavigationHeight: 52px;\n$normalOffset: 20px;\n$miniTocOffset: 56px;\n$blockMarginBottomLarge: 20px;\n$blockMarginBottomMedium: 15px;\n$headerMarginTopLarge: 40px;\n$headerMarginTopMedium: 32px;\n$popupPadding: 16px;\n$centerBlockMaxWidth: 736px;\n\n// Navigation\n$toMainMenuVerticalPadding: 4px;\n$toMainMenuHorizontalPadding: 12px;\n$toMainMenuHeight: calc(\n var(--dc-subnavigation-height, $subNavigationHeight) - #{$toMainMenuVerticalPadding} -\n #{$toMainMenuVerticalPadding}\n);\n\n// MiniToc\n$miniTocVerticalPadding: 16px;\n$miniTocTitleHeight: 20px; // line-height body-2\n$miniTocTitleMargin: 12px;\n$mobileMiniTocOffset: 2 * $miniTocVerticalPadding + $miniTocTitleHeight + $miniTocTitleMargin;\n\n// MobileControls\n$mobileControlsHeight: 44px;\n$mobileControlsTopPadding: 4px;\n$mobileControlsBottomPadding: 34px;\n\n$screenBreakpoints: (\n 'xs': 375px,\n 'sm': 577px,\n 'md': 769px,\n 'lg': 1081px,\n 'xl': 1185px,\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"],
5
+ "mappings": ";AAoBQ,CAAA;AACI,WAAA;AACA,eAAA;AACA,kBAAA;AACA,SAAA;ACnBZ;ADuBI,CAAA;AACI,WAAA;AACA,mBAAA;AACA,eAAA;AACA,kBAAA;AACA,OAAA;AAEA,SAAA;AACA,WAAA;AAEA,UAAA,IAAA,MAAA,IAAA;AACA,iBAAA;ACvBR;ADyBQ,CAAA;AACI,WAAA;AACA,eAAA;ACvBZ;AD2BI,CAAA;AACI,QAAA;AAEA,WAAA,KAAA,KAAA,KAAA;AACA,SAAA;AC1BR;ADjBI,OAAA,YAAA,WAAA;AACI,GAAA;AAEI,WAAA;AACA,UAAA;AACA,YAAA;ACkBV;AACF;AD0BI,CAAA;AACI,WAAA;AACA,SAAA;AACA,QAAA;ACxBR;AD7BI,OAAA,YAAA,WAAA;AACI,GAAA;AAEI,WAAA;AACA,UAAA;AACA,YAAA;AC8BV;AACF;ADwBI,CAAA;AACI,aAAA,IAAA;AACA,eAAA,IAAA;AACA,kBAAA;ACtBR;ADyBI,CAAA;AACI,aAAA,IAAA;AACA,eAAA,IAAA;ACvBR;AD0BI,CAAA;AACI,WAAA;AACA,kBAAA;AACA,WAAA,IAAA;ACxBR;AD2BI,CAAA;AACI,iBAAA;AACA,eAAA;ACzBR;AD4BI,CALA,oBAKA;AACI,iBAAA;AC1BR;AD6BI,CAAA;AACI,eAAA;AACA,WAAA;AACA,mBAAA;AC3BR;AD8BI,CAAA;AACI,eAAA;AC5BR;AD+BI,CAAA;AACI,WAAA,IAAA;AC7BR;ADiCQ,CAAA;AGzGJ,aAAA,IAAA;AACA,eAAA,IAAA;AH0GQ,eAAA;AC9BZ;ADkCI,CAAA;AACI,WAAA;AACA,OAAA;AChCR;ADkCQ,CAAA;AACI,aAAA;AACA,mBAAA;AChCZ;ADqCI,CAAA;AACI,WAAA;AACA,cAAA;AACA,mBAAA;ACnCR;ADuCQ,CAAA,oBAAA;AAAA,CAAA,oBAAA;AAEI,WAAA;AACA,eAAA;AAEA,aAAA;AACA,eAAA;AACA,eAAA;ACvCZ;AD0CQ,CAAA;AACI,gBAAA;ACxCZ;AD0CY,CAHJ,8BAGI;AACI,gBAAA;ACxChB;AD4CQ,CAAA;AACI,gBAAA;AC1CZ;AD4CY,CAHJ,iCAGI;AACI,gBAAA;AC1ChB;",
6
6
  "names": []
7
7
  }
@@ -10,6 +10,11 @@ export interface FeedbackProps {
10
10
  isDisliked?: boolean;
11
11
  onSendFeedback: (data: FeedbackSendData) => void;
12
12
  view?: FeedbackView;
13
+ /**
14
+ * Opt in to the rating-free "leave a comment" entry point.
15
+ * When omitted, falls back to the `feedback-comment` interface flag.
16
+ */
17
+ showComment?: boolean;
13
18
  }
14
19
  declare const Feedback: React.FC<FeedbackProps>;
15
20
  export default Feedback;
@@ -16,13 +16,15 @@ var __spreadValues = (a, b2) => {
16
16
  };
17
17
 
18
18
  // src/components/Feedback/Feedback.tsx
19
- import React, { useCallback, useEffect, useRef, useState } from "react";
19
+ import React, { useCallback, useContext, useEffect, useRef, useState } from "react";
20
20
  import block from "bem-cn-lite";
21
+ import { InterfaceContext } from "../../contexts/InterfaceContext";
21
22
  import { useInterface, usePopupState, useTranslation } from "../../hooks";
22
23
  import { FeedbackType } from "../../models";
23
24
  import { CommonAnalyticsEvent, useAnalytics } from "../../shared/libs/analytics";
24
25
  import DislikeControl from "./controls/DislikeControl";
25
- import DislikeVariantsPopup from "./controls/DislikeVariantsPopup";
26
+ import FeedbackControl from "./controls/FeedbackControl";
27
+ import FeedbackFormPopup from "./controls/FeedbackFormPopup";
26
28
  import LikeControl from "./controls/LikeControl";
27
29
  import SuccessPopup from "./controls/SuccessPopup";
28
30
  import "./Feedback.css";
@@ -54,23 +56,35 @@ var Feedback = (props) => {
54
56
  isLiked = false,
55
57
  isDisliked = false,
56
58
  onSendFeedback,
57
- view = "regular" /* Regular */
59
+ view = "regular" /* Regular */,
60
+ showComment
58
61
  } = props;
59
62
  const analytics = useAnalytics();
60
63
  const likeControlRef = useRef(null);
61
64
  const dislikeControlRef = useRef(null);
65
+ const feedbackControlRef = useRef(null);
62
66
  const [innerState, setInnerState] = useState(getInnerState(isLiked, isDisliked));
63
67
  useEffect(() => {
64
68
  setInnerState(getInnerState(isLiked, isDisliked));
65
69
  }, [isLiked, isDisliked, setInnerState]);
66
70
  const likeSuccessPopup = usePopupState({ autoclose: 3e3 });
67
71
  const dislikeSuccessPopup = usePopupState({ autoclose: 3e3 });
72
+ const commentSuccessPopup = usePopupState({ autoclose: 3e3 });
68
73
  const dislikeVariantsPopup = usePopupState();
74
+ const commentFormPopup = usePopupState();
69
75
  const hideFeedbackPopups = useCallback(() => {
70
76
  likeSuccessPopup.close();
71
77
  dislikeSuccessPopup.close();
78
+ commentSuccessPopup.close();
72
79
  dislikeVariantsPopup.close();
73
- }, [likeSuccessPopup, dislikeSuccessPopup, dislikeVariantsPopup]);
80
+ commentFormPopup.close();
81
+ }, [
82
+ likeSuccessPopup,
83
+ dislikeSuccessPopup,
84
+ commentSuccessPopup,
85
+ dislikeVariantsPopup,
86
+ commentFormPopup
87
+ ]);
74
88
  const onChangeLike = useCallback(() => {
75
89
  const event = view === "regular" /* Regular */ ? CommonAnalyticsEvent.DOCS_ASIDE_LIKE_CLICK : CommonAnalyticsEvent.DOCS_FOOTER_LIKE_CLICK;
76
90
  analytics.track(event);
@@ -104,8 +118,24 @@ var Feedback = (props) => {
104
118
  },
105
119
  [onSendFeedback, setInnerState, dislikeSuccessPopup, hideFeedbackPopups]
106
120
  );
121
+ const onClickFeedback = useCallback(() => {
122
+ const event = view === "regular" /* Regular */ ? CommonAnalyticsEvent.DOCS_ASIDE_FEEDBACK_CLICK : CommonAnalyticsEvent.DOCS_FOOTER_FEEDBACK_CLICK;
123
+ analytics.track(event);
124
+ hideFeedbackPopups();
125
+ commentFormPopup.open();
126
+ }, [view, analytics, hideFeedbackPopups, commentFormPopup]);
127
+ const onSendComment = useCallback(
128
+ (data) => {
129
+ hideFeedbackPopups();
130
+ commentSuccessPopup.open();
131
+ onSendFeedback({ type: FeedbackType.comment, comment: data.comment });
132
+ },
133
+ [onSendFeedback, commentSuccessPopup, hideFeedbackPopups]
134
+ );
107
135
  const isDislikePopupVisible = dislikeSuccessPopup.visible || dislikeVariantsPopup.visible;
108
136
  const isFeedbackHidden = useInterface("feedback");
137
+ const { interface: viewerInterface } = useContext(InterfaceContext);
138
+ const isCommentEnabled = showComment != null ? showComment : (viewerInterface == null ? void 0 : viewerInterface["feedback-comment"]) === true;
109
139
  if (isFeedbackHidden) {
110
140
  return null;
111
141
  }
@@ -127,7 +157,21 @@ var Feedback = (props) => {
127
157
  isDisliked: innerState === FeedbackType.dislike,
128
158
  isPopupVisible: isDislikePopupVisible
129
159
  }
130
- )), likeControlRef.current && /* @__PURE__ */ React.createElement(
160
+ ), isCommentEnabled && (view === "wide" /* Wide */ ? /* @__PURE__ */ React.createElement("div", { className: b("comment-row") }, /* @__PURE__ */ React.createElement(
161
+ FeedbackControl,
162
+ {
163
+ ref: feedbackControlRef,
164
+ view,
165
+ onClick: onClickFeedback
166
+ }
167
+ )) : /* @__PURE__ */ React.createElement(
168
+ FeedbackControl,
169
+ {
170
+ ref: feedbackControlRef,
171
+ view,
172
+ onClick: onClickFeedback
173
+ }
174
+ ))), likeControlRef.current && /* @__PURE__ */ React.createElement(
131
175
  SuccessPopup,
132
176
  {
133
177
  visible: likeSuccessPopup.visible,
@@ -144,14 +188,35 @@ var Feedback = (props) => {
144
188
  onOutsideClick: hideFeedbackPopups
145
189
  }
146
190
  ), dislikeControlRef.current && /* @__PURE__ */ React.createElement(
147
- DislikeVariantsPopup,
191
+ FeedbackFormPopup,
148
192
  {
149
193
  visible: dislikeVariantsPopup.visible,
150
194
  anchor: dislikeControlRef,
151
195
  view,
196
+ titleKey: "dislike-variants-title",
197
+ showVariants: true,
152
198
  onSubmit: onSendDislikeInformation,
153
199
  onOutsideClick: hideFeedbackPopups
154
200
  }
201
+ ), isCommentEnabled && feedbackControlRef.current && /* @__PURE__ */ React.createElement(
202
+ SuccessPopup,
203
+ {
204
+ visible: commentSuccessPopup.visible,
205
+ anchor: feedbackControlRef,
206
+ view,
207
+ onOutsideClick: hideFeedbackPopups
208
+ }
209
+ ), isCommentEnabled && feedbackControlRef.current && /* @__PURE__ */ React.createElement(
210
+ FeedbackFormPopup,
211
+ {
212
+ visible: commentFormPopup.visible,
213
+ anchor: feedbackControlRef,
214
+ view,
215
+ titleKey: "comment-form-title",
216
+ placeholderKey: "comment-form-placeholder",
217
+ onSubmit: onSendComment,
218
+ onOutsideClick: hideFeedbackPopups
219
+ }
155
220
  ));
156
221
  };
157
222
  var Feedback_default = Feedback;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/Feedback/Feedback.tsx"],
4
- "sourcesContent": ["import type {PropsWithChildren} from 'react';\nimport type {FeedbackSendData} from '../../models';\nimport type {FormData} from './controls/DislikeVariantsPopup';\n\nimport React, {useCallback, useEffect, useRef, useState} from 'react';\nimport block from 'bem-cn-lite';\n\nimport {useInterface, usePopupState, useTranslation} from '../../hooks';\nimport {FeedbackType} from '../../models';\nimport {CommonAnalyticsEvent, useAnalytics} from '../../shared/libs/analytics';\n\nimport DislikeControl from './controls/DislikeControl';\nimport DislikeVariantsPopup from './controls/DislikeVariantsPopup';\nimport LikeControl from './controls/LikeControl';\nimport SuccessPopup from './controls/SuccessPopup';\nimport './Feedback.scss';\n\nconst b = block('dc-feedback');\n\nexport enum FeedbackView {\n Wide = 'wide',\n Regular = 'regular',\n}\n\nexport interface FeedbackProps {\n isLiked?: boolean;\n isDisliked?: boolean;\n onSendFeedback: (data: FeedbackSendData) => void;\n view?: FeedbackView;\n}\n\nconst getInnerState = (isLiked: boolean, isDisliked: boolean) => {\n switch (true) {\n case Boolean(isDisliked):\n return FeedbackType.dislike;\n case Boolean(isLiked):\n return FeedbackType.like;\n default:\n return FeedbackType.indeterminate;\n }\n};\n\nconst ControlsLayout: React.FC<PropsWithChildren<{view: FeedbackView}>> = ({view, children}) => {\n const {t} = useTranslation('feedback');\n\n if (view === FeedbackView.Regular) {\n return <React.Fragment>{children}</React.Fragment>;\n }\n\n return (\n <div className={b('container', {view})}>\n <div className={b('container-col', {view})}>\n <h3 className={b('title', {view})}>{t('main-question')}</h3>\n <div className={b('controls', {view})}>{children}</div>\n </div>\n </div>\n );\n};\n\nconst Feedback: React.FC<FeedbackProps> = (props) => {\n const {\n isLiked = false,\n isDisliked = false,\n onSendFeedback,\n view = FeedbackView.Regular,\n } = props;\n const analytics = useAnalytics();\n const likeControlRef = useRef<HTMLButtonElement | null>(null);\n const dislikeControlRef = useRef<HTMLButtonElement | null>(null);\n\n const [innerState, setInnerState] = useState<FeedbackType>(getInnerState(isLiked, isDisliked));\n useEffect(() => {\n setInnerState(getInnerState(isLiked, isDisliked));\n }, [isLiked, isDisliked, setInnerState]);\n\n const likeSuccessPopup = usePopupState({autoclose: 3000});\n const dislikeSuccessPopup = usePopupState({autoclose: 3000});\n const dislikeVariantsPopup = usePopupState();\n\n const hideFeedbackPopups = useCallback(() => {\n likeSuccessPopup.close();\n dislikeSuccessPopup.close();\n dislikeVariantsPopup.close();\n }, [likeSuccessPopup, dislikeSuccessPopup, dislikeVariantsPopup]);\n\n const onChangeLike = useCallback(() => {\n const event =\n view === FeedbackView.Regular\n ? CommonAnalyticsEvent.DOCS_ASIDE_LIKE_CLICK\n : CommonAnalyticsEvent.DOCS_FOOTER_LIKE_CLICK;\n analytics.track(event);\n hideFeedbackPopups();\n\n if (innerState === FeedbackType.like) {\n setInnerState(FeedbackType.indeterminate);\n onSendFeedback({type: FeedbackType.indeterminate});\n } else {\n setInnerState(FeedbackType.like);\n onSendFeedback({type: FeedbackType.like});\n likeSuccessPopup.open();\n }\n }, [view, analytics, hideFeedbackPopups, innerState, onSendFeedback, likeSuccessPopup]);\n\n const onChangeDislike = useCallback(() => {\n const event =\n view === FeedbackView.Regular\n ? CommonAnalyticsEvent.DOCS_ASIDE_DISLIKE_CLICK\n : CommonAnalyticsEvent.DOCS_FOOTER_DISLIKE_CLICK;\n analytics.track(event);\n hideFeedbackPopups();\n\n if (innerState === FeedbackType.dislike) {\n setInnerState(FeedbackType.indeterminate);\n onSendFeedback({type: FeedbackType.indeterminate});\n } else {\n dislikeVariantsPopup.open();\n }\n }, [view, analytics, hideFeedbackPopups, innerState, onSendFeedback, dislikeVariantsPopup]);\n\n const onSendDislikeInformation = useCallback(\n (data: FormData) => {\n hideFeedbackPopups();\n dislikeSuccessPopup.open();\n setInnerState(FeedbackType.dislike);\n onSendFeedback({type: FeedbackType.dislike, ...data});\n },\n [onSendFeedback, setInnerState, dislikeSuccessPopup, hideFeedbackPopups],\n );\n\n const isDislikePopupVisible = dislikeSuccessPopup.visible || dislikeVariantsPopup.visible;\n const isFeedbackHidden = useInterface('feedback');\n\n if (isFeedbackHidden) {\n return null;\n }\n\n return (\n <React.Fragment>\n <ControlsLayout view={view}>\n <LikeControl\n ref={likeControlRef}\n view={view}\n onClick={onChangeLike}\n isLiked={innerState === FeedbackType.like}\n isPopupVisible={likeSuccessPopup.visible}\n />\n <DislikeControl\n ref={dislikeControlRef}\n view={view}\n onClick={onChangeDislike}\n isDisliked={innerState === FeedbackType.dislike}\n isPopupVisible={isDislikePopupVisible}\n />\n </ControlsLayout>\n {likeControlRef.current && (\n <SuccessPopup\n visible={likeSuccessPopup.visible}\n anchor={likeControlRef}\n view={view}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n {dislikeControlRef.current && (\n <SuccessPopup\n visible={dislikeSuccessPopup.visible}\n anchor={dislikeControlRef}\n view={view}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n {dislikeControlRef.current && (\n <DislikeVariantsPopup\n visible={dislikeVariantsPopup.visible}\n anchor={dislikeControlRef}\n view={view}\n onSubmit={onSendDislikeInformation}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport default Feedback;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {PropsWithChildren} from 'react';\nimport type {FeedbackSendData} from '../../models';\nimport type {FormData} from './controls/FeedbackFormPopup';\n\nimport React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport block from 'bem-cn-lite';\n\nimport {InterfaceContext} from '../../contexts/InterfaceContext';\nimport {useInterface, usePopupState, useTranslation} from '../../hooks';\nimport {FeedbackType} from '../../models';\nimport {CommonAnalyticsEvent, useAnalytics} from '../../shared/libs/analytics';\n\nimport DislikeControl from './controls/DislikeControl';\nimport FeedbackControl from './controls/FeedbackControl';\nimport FeedbackFormPopup from './controls/FeedbackFormPopup';\nimport LikeControl from './controls/LikeControl';\nimport SuccessPopup from './controls/SuccessPopup';\nimport './Feedback.scss';\n\nconst b = block('dc-feedback');\n\nexport enum FeedbackView {\n Wide = 'wide',\n Regular = 'regular',\n}\n\nexport interface FeedbackProps {\n isLiked?: boolean;\n isDisliked?: boolean;\n onSendFeedback: (data: FeedbackSendData) => void;\n view?: FeedbackView;\n /**\n * Opt in to the rating-free \"leave a comment\" entry point.\n * When omitted, falls back to the `feedback-comment` interface flag.\n */\n showComment?: boolean;\n}\n\nconst getInnerState = (isLiked: boolean, isDisliked: boolean) => {\n switch (true) {\n case Boolean(isDisliked):\n return FeedbackType.dislike;\n case Boolean(isLiked):\n return FeedbackType.like;\n default:\n return FeedbackType.indeterminate;\n }\n};\n\nconst ControlsLayout: React.FC<PropsWithChildren<{view: FeedbackView}>> = ({view, children}) => {\n const {t} = useTranslation('feedback');\n\n if (view === FeedbackView.Regular) {\n return <React.Fragment>{children}</React.Fragment>;\n }\n\n return (\n <div className={b('container', {view})}>\n <div className={b('container-col', {view})}>\n <h3 className={b('title', {view})}>{t('main-question')}</h3>\n <div className={b('controls', {view})}>{children}</div>\n </div>\n </div>\n );\n};\n\nconst Feedback: React.FC<FeedbackProps> = (props) => {\n const {\n isLiked = false,\n isDisliked = false,\n onSendFeedback,\n view = FeedbackView.Regular,\n showComment,\n } = props;\n const analytics = useAnalytics();\n const likeControlRef = useRef<HTMLButtonElement | null>(null);\n const dislikeControlRef = useRef<HTMLButtonElement | null>(null);\n const feedbackControlRef = useRef<HTMLButtonElement | null>(null);\n\n const [innerState, setInnerState] = useState<FeedbackType>(getInnerState(isLiked, isDisliked));\n useEffect(() => {\n setInnerState(getInnerState(isLiked, isDisliked));\n }, [isLiked, isDisliked, setInnerState]);\n\n const likeSuccessPopup = usePopupState({autoclose: 3000});\n const dislikeSuccessPopup = usePopupState({autoclose: 3000});\n const commentSuccessPopup = usePopupState({autoclose: 3000});\n const dislikeVariantsPopup = usePopupState();\n const commentFormPopup = usePopupState();\n\n const hideFeedbackPopups = useCallback(() => {\n likeSuccessPopup.close();\n dislikeSuccessPopup.close();\n commentSuccessPopup.close();\n dislikeVariantsPopup.close();\n commentFormPopup.close();\n }, [\n likeSuccessPopup,\n dislikeSuccessPopup,\n commentSuccessPopup,\n dislikeVariantsPopup,\n commentFormPopup,\n ]);\n\n const onChangeLike = useCallback(() => {\n const event =\n view === FeedbackView.Regular\n ? CommonAnalyticsEvent.DOCS_ASIDE_LIKE_CLICK\n : CommonAnalyticsEvent.DOCS_FOOTER_LIKE_CLICK;\n analytics.track(event);\n hideFeedbackPopups();\n\n if (innerState === FeedbackType.like) {\n setInnerState(FeedbackType.indeterminate);\n onSendFeedback({type: FeedbackType.indeterminate});\n } else {\n setInnerState(FeedbackType.like);\n onSendFeedback({type: FeedbackType.like});\n likeSuccessPopup.open();\n }\n }, [view, analytics, hideFeedbackPopups, innerState, onSendFeedback, likeSuccessPopup]);\n\n const onChangeDislike = useCallback(() => {\n const event =\n view === FeedbackView.Regular\n ? CommonAnalyticsEvent.DOCS_ASIDE_DISLIKE_CLICK\n : CommonAnalyticsEvent.DOCS_FOOTER_DISLIKE_CLICK;\n analytics.track(event);\n hideFeedbackPopups();\n\n if (innerState === FeedbackType.dislike) {\n setInnerState(FeedbackType.indeterminate);\n onSendFeedback({type: FeedbackType.indeterminate});\n } else {\n dislikeVariantsPopup.open();\n }\n }, [view, analytics, hideFeedbackPopups, innerState, onSendFeedback, dislikeVariantsPopup]);\n\n const onSendDislikeInformation = useCallback(\n (data: FormData) => {\n hideFeedbackPopups();\n dislikeSuccessPopup.open();\n setInnerState(FeedbackType.dislike);\n onSendFeedback({type: FeedbackType.dislike, ...data});\n },\n [onSendFeedback, setInnerState, dislikeSuccessPopup, hideFeedbackPopups],\n );\n\n const onClickFeedback = useCallback(() => {\n const event =\n view === FeedbackView.Regular\n ? CommonAnalyticsEvent.DOCS_ASIDE_FEEDBACK_CLICK\n : CommonAnalyticsEvent.DOCS_FOOTER_FEEDBACK_CLICK;\n analytics.track(event);\n hideFeedbackPopups();\n commentFormPopup.open();\n }, [view, analytics, hideFeedbackPopups, commentFormPopup]);\n\n const onSendComment = useCallback(\n (data: FormData) => {\n hideFeedbackPopups();\n commentSuccessPopup.open();\n onSendFeedback({type: FeedbackType.comment, comment: data.comment});\n },\n [onSendFeedback, commentSuccessPopup, hideFeedbackPopups],\n );\n\n const isDislikePopupVisible = dislikeSuccessPopup.visible || dislikeVariantsPopup.visible;\n const isFeedbackHidden = useInterface('feedback');\n const {interface: viewerInterface} = useContext(InterfaceContext);\n const isCommentEnabled = showComment ?? viewerInterface?.['feedback-comment'] === true;\n\n if (isFeedbackHidden) {\n return null;\n }\n\n return (\n <React.Fragment>\n <ControlsLayout view={view}>\n <LikeControl\n ref={likeControlRef}\n view={view}\n onClick={onChangeLike}\n isLiked={innerState === FeedbackType.like}\n isPopupVisible={likeSuccessPopup.visible}\n />\n <DislikeControl\n ref={dislikeControlRef}\n view={view}\n onClick={onChangeDislike}\n isDisliked={innerState === FeedbackType.dislike}\n isPopupVisible={isDislikePopupVisible}\n />\n {isCommentEnabled &&\n (view === FeedbackView.Wide ? (\n <div className={b('comment-row')}>\n <FeedbackControl\n ref={feedbackControlRef}\n view={view}\n onClick={onClickFeedback}\n />\n </div>\n ) : (\n <FeedbackControl\n ref={feedbackControlRef}\n view={view}\n onClick={onClickFeedback}\n />\n ))}\n </ControlsLayout>\n {likeControlRef.current && (\n <SuccessPopup\n visible={likeSuccessPopup.visible}\n anchor={likeControlRef}\n view={view}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n {dislikeControlRef.current && (\n <SuccessPopup\n visible={dislikeSuccessPopup.visible}\n anchor={dislikeControlRef}\n view={view}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n {dislikeControlRef.current && (\n <FeedbackFormPopup\n visible={dislikeVariantsPopup.visible}\n anchor={dislikeControlRef}\n view={view}\n titleKey=\"dislike-variants-title\"\n showVariants\n onSubmit={onSendDislikeInformation}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n {isCommentEnabled && feedbackControlRef.current && (\n <SuccessPopup\n visible={commentSuccessPopup.visible}\n anchor={feedbackControlRef}\n view={view}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n {isCommentEnabled && feedbackControlRef.current && (\n <FeedbackFormPopup\n visible={commentFormPopup.visible}\n anchor={feedbackControlRef}\n view={view}\n titleKey=\"comment-form-title\"\n placeholderKey=\"comment-form-placeholder\"\n onSubmit={onSendComment}\n onOutsideClick={hideFeedbackPopups}\n />\n )}\n </React.Fragment>\n );\n};\n\nexport default Feedback;\n"],
5
+ "mappings": "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",
6
6
  "names": ["FeedbackView"]
7
7
  }
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { FeedbackView } from '../Feedback';
3
+ type FeedbackControlProps = {
4
+ view: FeedbackView | undefined;
5
+ onClick: () => void;
6
+ };
7
+ declare const FeedbackControl: React.MemoExoticComponent<React.ForwardRefExoticComponent<FeedbackControlProps & React.RefAttributes<HTMLButtonElement>>>;
8
+ export default FeedbackControl;
@@ -0,0 +1,47 @@
1
+ // src/components/Feedback/controls/FeedbackControl.tsx
2
+ import React, { forwardRef, memo, useContext } from "react";
3
+ import { Comment } from "@gravity-ui/icons";
4
+ import { Button } from "@gravity-ui/uikit";
5
+ import block from "bem-cn-lite";
6
+ import { useTranslation } from "../../../hooks";
7
+ import { Control } from "../../Control";
8
+ import { ControlsLayoutContext } from "../../Controls/ControlsLayout";
9
+ import { FeedbackView } from "../Feedback";
10
+ var b = block("dc-feedback");
11
+ var FeedbackControl = memo(
12
+ forwardRef(({ view, onClick }, ref) => {
13
+ const { t } = useTranslation("feedback");
14
+ const { isVerticalView, popupPosition, controlClassName } = useContext(ControlsLayoutContext);
15
+ if (view === FeedbackView.Wide) {
16
+ return /* @__PURE__ */ React.createElement(
17
+ Button,
18
+ {
19
+ view: "flat",
20
+ ref,
21
+ onClick,
22
+ className: b("comment-action", { view })
23
+ },
24
+ /* @__PURE__ */ React.createElement(Button.Icon, null, /* @__PURE__ */ React.createElement(Comment, { width: 20, height: 20 })),
25
+ t("comment-text")
26
+ );
27
+ }
28
+ return /* @__PURE__ */ React.createElement(
29
+ Control,
30
+ {
31
+ onClick,
32
+ className: b("control", { view }, controlClassName),
33
+ isVerticalView,
34
+ tooltipText: t("comment-text"),
35
+ ref,
36
+ icon: Comment,
37
+ popupPosition
38
+ }
39
+ );
40
+ })
41
+ );
42
+ FeedbackControl.displayName = "FeedbackControl";
43
+ var FeedbackControl_default = FeedbackControl;
44
+ export {
45
+ FeedbackControl_default as default
46
+ };
47
+ //# sourceMappingURL=FeedbackControl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/Feedback/controls/FeedbackControl.tsx"],
4
+ "sourcesContent": ["import React, {forwardRef, memo, useContext} from 'react';\nimport {Comment} from '@gravity-ui/icons';\nimport {Button} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {useTranslation} from '../../../hooks';\nimport {Control} from '../../Control';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\ntype FeedbackControlProps = {\n view: FeedbackView | undefined;\n onClick: () => void;\n};\n\nconst b = block('dc-feedback');\n\nconst FeedbackControl = memo(\n forwardRef<HTMLButtonElement, FeedbackControlProps>(({view, onClick}, ref) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView, popupPosition, controlClassName} = useContext(ControlsLayoutContext);\n\n if (view === FeedbackView.Wide) {\n return (\n <Button\n view=\"flat\"\n ref={ref}\n onClick={onClick}\n className={b('comment-action', {view})}\n >\n <Button.Icon>\n <Comment width={20} height={20} />\n </Button.Icon>\n {t('comment-text')}\n </Button>\n );\n }\n\n return (\n <Control\n onClick={onClick}\n className={b('control', {view}, controlClassName)}\n isVerticalView={isVerticalView}\n tooltipText={t('comment-text')}\n ref={ref}\n icon={Comment}\n popupPosition={popupPosition}\n />\n );\n }),\n);\n\nFeedbackControl.displayName = 'FeedbackControl';\n\nexport default FeedbackControl;\n"],
5
+ "mappings": ";AAAA,OAAO,SAAQ,YAAY,MAAM,kBAAiB;AAClD,SAAQ,eAAc;AACtB,SAAQ,cAAa;AACrB,OAAO,WAAW;AAElB,SAAQ,sBAAqB;AAC7B,SAAQ,eAAc;AACtB,SAAQ,6BAA4B;AACpC,SAAQ,oBAAmB;AAO3B,IAAM,IAAI,MAAM,aAAa;AAE7B,IAAM,kBAAkB;AAAA,EACpB,WAAoD,CAAC,EAAC,MAAM,QAAO,GAAG,QAAQ;AAC1E,UAAM,EAAC,EAAC,IAAI,eAAe,UAAU;AACrC,UAAM,EAAC,gBAAgB,eAAe,iBAAgB,IAAI,WAAW,qBAAqB;AAE1F,QAAI,SAAS,aAAa,MAAM;AAC5B,aACI;AAAA,QAAC;AAAA;AAAA,UACG,MAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,WAAW,EAAE,kBAAkB,EAAC,KAAI,CAAC;AAAA;AAAA,QAErC,oCAAC,OAAO,MAAP,MACG,oCAAC,WAAQ,OAAO,IAAI,QAAQ,IAAI,CACpC;AAAA,QACC,EAAE,cAAc;AAAA,MACrB;AAAA,IAER;AAEA,WACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,WAAW,EAAE,WAAW,EAAC,KAAI,GAAG,gBAAgB;AAAA,QAChD;AAAA,QACA,aAAa,EAAE,cAAc;AAAA,QAC7B;AAAA,QACA,MAAM;AAAA,QACN;AAAA;AAAA,IACJ;AAAA,EAER,CAAC;AACL;AAEA,gBAAgB,cAAc;AAE9B,IAAO,0BAAQ;",
6
+ "names": []
7
+ }
@@ -8,12 +8,15 @@ export type FormData = {
8
8
  comment: string;
9
9
  answers: string[];
10
10
  };
11
- type DislikeVariantsPopupProps = {
11
+ type FeedbackFormPopupProps = {
12
12
  view: FeedbackView;
13
13
  visible: boolean;
14
14
  anchor: RefObject<HTMLButtonElement>;
15
+ titleKey: string;
16
+ placeholderKey?: string;
17
+ showVariants?: boolean;
15
18
  onOutsideClick: () => void;
16
19
  onSubmit: (data: FormData) => void;
17
20
  };
18
- declare const DislikeVariantsPopup: React.FC<DislikeVariantsPopupProps>;
19
- export default DislikeVariantsPopup;
21
+ declare const FeedbackFormPopup: React.FC<FeedbackFormPopupProps>;
22
+ export default FeedbackFormPopup;
@@ -18,7 +18,7 @@ var __spreadValues = (a, b2) => {
18
18
  };
19
19
  var __spreadProps = (a, b2) => __defProps(a, __getOwnPropDescs(b2));
20
20
 
21
- // src/components/Feedback/controls/DislikeVariantsPopup.tsx
21
+ // src/components/Feedback/controls/FeedbackFormPopup.tsx
22
22
  import React, {
23
23
  forwardRef,
24
24
  memo,
@@ -36,7 +36,7 @@ import { getPopupPosition } from "../../../utils";
36
36
  import { ControlsLayoutContext } from "../../Controls/ControlsLayout";
37
37
  import { FeedbackView } from "../Feedback";
38
38
  var b = block("dc-feedback");
39
- var DislikeVariantsList = memo(
39
+ var FeedbackVariantsList = memo(
40
40
  forwardRef((_props, ref) => {
41
41
  const { t, i18n } = useTranslation("feedback-variants");
42
42
  const variants = i18n.getResourceBundle(i18n.language, "feedback-variants");
@@ -70,9 +70,9 @@ var DislikeVariantsList = memo(
70
70
  )));
71
71
  })
72
72
  );
73
- DislikeVariantsList.displayName = "DislikeVariantsList";
74
- var DislikeVariantsInput = memo(
75
- forwardRef((_props, ref) => {
73
+ FeedbackVariantsList.displayName = "FeedbackVariantsList";
74
+ var FeedbackCommentInput = memo(
75
+ forwardRef(({ placeholderKey }, ref) => {
76
76
  const { t } = useTranslation("feedback");
77
77
  const [feedbackComment, setFeedbackComment] = useState("");
78
78
  const onChange = useCallback((event) => {
@@ -93,7 +93,7 @@ var DislikeVariantsInput = memo(
93
93
  {
94
94
  size: "m",
95
95
  rows: 6,
96
- placeholder: t("comment-placeholder"),
96
+ placeholder: t(placeholderKey),
97
97
  hasClear: true,
98
98
  value: feedbackComment,
99
99
  onChange
@@ -101,9 +101,18 @@ var DislikeVariantsInput = memo(
101
101
  ));
102
102
  })
103
103
  );
104
- DislikeVariantsInput.displayName = "DislikeVariantsInput";
105
- var DislikeVariantsPopup = memo(
106
- ({ anchor, visible, view, onOutsideClick, onSubmit }) => {
104
+ FeedbackCommentInput.displayName = "FeedbackCommentInput";
105
+ var FeedbackFormPopup = memo(
106
+ ({
107
+ anchor,
108
+ visible,
109
+ view,
110
+ titleKey,
111
+ placeholderKey = "comment-placeholder",
112
+ showVariants = false,
113
+ onOutsideClick,
114
+ onSubmit
115
+ }) => {
107
116
  const { t } = useTranslation("feedback");
108
117
  const { isVerticalView } = useContext(ControlsLayoutContext);
109
118
  const direction = useDirection();
@@ -138,14 +147,14 @@ var DislikeVariantsPopup = memo(
138
147
  placement: position,
139
148
  offset: { mainAxis: 1, crossAxis: 0 }
140
149
  },
141
- /* @__PURE__ */ React.createElement("h3", { className: b("popup-title") }, t("dislike-variants-title")),
142
- /* @__PURE__ */ React.createElement("form", { onSubmit: onFormSubmit }, /* @__PURE__ */ React.createElement(DislikeVariantsList, { ref: feedbackCheckboxes }), /* @__PURE__ */ React.createElement(DislikeVariantsInput, { ref: feedbackComment }), /* @__PURE__ */ React.createElement("div", { className: b("variants-actions") }, /* @__PURE__ */ React.createElement(Button, { view: "action", className: b("variants-action"), type: "submit" }, t("send-action-text"))))
150
+ /* @__PURE__ */ React.createElement("h3", { className: b("popup-title") }, t(titleKey)),
151
+ /* @__PURE__ */ React.createElement("form", { onSubmit: onFormSubmit }, showVariants && /* @__PURE__ */ React.createElement(FeedbackVariantsList, { ref: feedbackCheckboxes }), /* @__PURE__ */ React.createElement(FeedbackCommentInput, { ref: feedbackComment, placeholderKey }), /* @__PURE__ */ React.createElement("div", { className: b("variants-actions") }, /* @__PURE__ */ React.createElement(Button, { view: "action", className: b("variants-action"), type: "submit" }, t("send-action-text"))))
143
152
  );
144
153
  }
145
154
  );
146
- DislikeVariantsPopup.displayName = "FeedbackDislikeVariantsPopup";
147
- var DislikeVariantsPopup_default = DislikeVariantsPopup;
155
+ FeedbackFormPopup.displayName = "FeedbackFormPopup";
156
+ var FeedbackFormPopup_default = FeedbackFormPopup;
148
157
  export {
149
- DislikeVariantsPopup_default as default
158
+ FeedbackFormPopup_default as default
150
159
  };
151
- //# sourceMappingURL=DislikeVariantsPopup.js.map
160
+ //# sourceMappingURL=FeedbackFormPopup.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/Feedback/controls/FeedbackFormPopup.tsx"],
4
+ "sourcesContent": ["import type {RefObject, SyntheticEvent} from 'react';\n\nimport React, {\n forwardRef,\n memo,\n useCallback,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {Button, Checkbox, Popup, TextArea, useDirection} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\n\nimport {PopperPosition, useTranslation} from '../../../hooks';\nimport {getPopupPosition} from '../../../utils';\nimport {ControlsLayoutContext} from '../../Controls/ControlsLayout';\nimport {FeedbackView} from '../Feedback';\n\nexport interface FeedbackCheckboxes {\n [key: string]: boolean;\n}\n\nconst b = block('dc-feedback');\n\nconst FeedbackVariantsList = memo(\n forwardRef<FormPart<string[]>>((_props, ref) => {\n const {t, i18n} = useTranslation('feedback-variants');\n const variants = i18n.getResourceBundle(i18n.language, 'feedback-variants');\n const [checked, setChecked] = useState({} as FeedbackCheckboxes);\n\n useImperativeHandle(ref, () => {\n return {\n data() {\n return Object.keys(checked)\n .filter((key) => Boolean(checked[key]))\n .map((key) => variants[key]);\n },\n\n clean() {\n setChecked({});\n },\n };\n });\n\n if (!Object.keys(variants).length) {\n return null;\n }\n\n return (\n <div className={b('variants')}>\n {Object.keys(variants).map((variant) => (\n <Checkbox\n key={variant}\n className={b('variant')}\n checked={checked[variant]}\n // uikit Checkbox onUpdate reports only the value, not the variant key\n onUpdate={(state) => {\n setChecked({\n ...checked,\n [variant]: state,\n });\n }}\n content={t(variant)}\n />\n ))}\n </div>\n );\n }),\n);\n\nFeedbackVariantsList.displayName = 'FeedbackVariantsList';\n\nconst FeedbackCommentInput = memo(\n forwardRef<FormPart<string>, {placeholderKey: string}>(({placeholderKey}, ref) => {\n const {t} = useTranslation('feedback');\n const [feedbackComment, setFeedbackComment] = useState('');\n const onChange = useCallback((event: SyntheticEvent) => {\n setFeedbackComment((event.target as HTMLTextAreaElement).value);\n }, []);\n\n useImperativeHandle(ref, () => {\n return {\n data() {\n return feedbackComment;\n },\n\n clean() {\n setFeedbackComment('');\n },\n };\n });\n\n return (\n <div className={b('textarea')}>\n <TextArea\n size=\"m\"\n rows={6}\n placeholder={t(placeholderKey)}\n hasClear\n value={feedbackComment}\n onChange={onChange}\n />\n </div>\n );\n }),\n);\n\nFeedbackCommentInput.displayName = 'FeedbackCommentInput';\n\ntype FormPart<T> = {\n data(): T;\n clean(): void;\n};\n\nexport type FormData = {\n comment: string;\n answers: string[];\n};\n\ntype FeedbackFormPopupProps = {\n view: FeedbackView;\n visible: boolean;\n anchor: RefObject<HTMLButtonElement>;\n titleKey: string;\n placeholderKey?: string;\n showVariants?: boolean;\n onOutsideClick: () => void;\n onSubmit: (data: FormData) => void;\n};\n\nconst FeedbackFormPopup: React.FC<FeedbackFormPopupProps> = memo(\n ({\n anchor,\n visible,\n view,\n titleKey,\n placeholderKey = 'comment-placeholder',\n showVariants = false,\n onOutsideClick,\n onSubmit,\n }) => {\n const {t} = useTranslation('feedback');\n const {isVerticalView} = useContext(ControlsLayoutContext);\n const direction = useDirection();\n\n const position = useMemo(() => {\n if (!view || view === FeedbackView.Regular) {\n return getPopupPosition(isVerticalView, direction);\n }\n\n return PopperPosition.RIGHT;\n }, [isVerticalView, view, direction]);\n\n const feedbackComment = useRef<FormPart<string> | null>(null);\n const feedbackCheckboxes = useRef<FormPart<string[]> | null>(null);\n\n const onFormSubmit = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n\n onSubmit({\n comment: feedbackComment.current?.data() || '',\n answers: feedbackCheckboxes.current?.data() || [],\n });\n\n feedbackComment.current?.clean();\n feedbackCheckboxes.current?.clean();\n },\n [onSubmit],\n );\n\n return (\n <Popup\n anchorElement={anchor.current}\n open={visible}\n onOutsideClick={onOutsideClick}\n className={b('variants-popup', {view})}\n placement={position}\n offset={{mainAxis: 1, crossAxis: 0}}\n >\n <h3 className={b('popup-title')}>{t(titleKey)}</h3>\n <form onSubmit={onFormSubmit}>\n {showVariants && <FeedbackVariantsList ref={feedbackCheckboxes} />}\n <FeedbackCommentInput ref={feedbackComment} placeholderKey={placeholderKey} />\n <div className={b('variants-actions')}>\n <Button view=\"action\" className={b('variants-action')} type={'submit'}>\n {t('send-action-text')}\n </Button>\n </div>\n </form>\n </Popup>\n );\n },\n);\n\nFeedbackFormPopup.displayName = 'FeedbackFormPopup';\n\nexport default FeedbackFormPopup;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAEA,OAAO;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAQ,QAAQ,UAAU,OAAO,UAAU,oBAAmB;AAC9D,OAAO,WAAW;AAElB,SAAQ,gBAAgB,sBAAqB;AAC7C,SAAQ,wBAAuB;AAC/B,SAAQ,6BAA4B;AACpC,SAAQ,oBAAmB;AAM3B,IAAM,IAAI,MAAM,aAAa;AAE7B,IAAM,uBAAuB;AAAA,EACzB,WAA+B,CAAC,QAAQ,QAAQ;AAC5C,UAAM,EAAC,GAAG,KAAI,IAAI,eAAe,mBAAmB;AACpD,UAAM,WAAW,KAAK,kBAAkB,KAAK,UAAU,mBAAmB;AAC1E,UAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC,CAAuB;AAE/D,wBAAoB,KAAK,MAAM;AAC3B,aAAO;AAAA,QACH,OAAO;AACH,iBAAO,OAAO,KAAK,OAAO,EACrB,OAAO,CAAC,QAAQ,QAAQ,QAAQ,GAAG,CAAC,CAAC,EACrC,IAAI,CAAC,QAAQ,SAAS,GAAG,CAAC;AAAA,QACnC;AAAA,QAEA,QAAQ;AACJ,qBAAW,CAAC,CAAC;AAAA,QACjB;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,QAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,QAAQ;AAC/B,aAAO;AAAA,IACX;AAEA,WACI,oCAAC,SAAI,WAAW,EAAE,UAAU,KACvB,OAAO,KAAK,QAAQ,EAAE,IAAI,CAAC,YACxB;AAAA,MAAC;AAAA;AAAA,QACG,KAAK;AAAA,QACL,WAAW,EAAE,SAAS;AAAA,QACtB,SAAS,QAAQ,OAAO;AAAA,QAExB,UAAU,CAAC,UAAU;AACjB,qBAAW,iCACJ,UADI;AAAA,YAEP,CAAC,OAAO,GAAG;AAAA,UACf,EAAC;AAAA,QACL;AAAA,QACA,SAAS,EAAE,OAAO;AAAA;AAAA,IACtB,CACH,CACL;AAAA,EAER,CAAC;AACL;AAEA,qBAAqB,cAAc;AAEnC,IAAM,uBAAuB;AAAA,EACzB,WAAuD,CAAC,EAAC,eAAc,GAAG,QAAQ;AAC9E,UAAM,EAAC,EAAC,IAAI,eAAe,UAAU;AACrC,UAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,EAAE;AACzD,UAAM,WAAW,YAAY,CAAC,UAA0B;AACpD,yBAAoB,MAAM,OAA+B,KAAK;AAAA,IAClE,GAAG,CAAC,CAAC;AAEL,wBAAoB,KAAK,MAAM;AAC3B,aAAO;AAAA,QACH,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,QAEA,QAAQ;AACJ,6BAAmB,EAAE;AAAA,QACzB;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,WACI,oCAAC,SAAI,WAAW,EAAE,UAAU,KACxB;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa,EAAE,cAAc;AAAA,QAC7B,UAAQ;AAAA,QACR,OAAO;AAAA,QACP;AAAA;AAAA,IACJ,CACJ;AAAA,EAER,CAAC;AACL;AAEA,qBAAqB,cAAc;AAuBnC,IAAM,oBAAsD;AAAA,EACxD,CAAC;AAAA,IACG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf;AAAA,IACA;AAAA,EACJ,MAAM;AACF,UAAM,EAAC,EAAC,IAAI,eAAe,UAAU;AACrC,UAAM,EAAC,eAAc,IAAI,WAAW,qBAAqB;AACzD,UAAM,YAAY,aAAa;AAE/B,UAAM,WAAW,QAAQ,MAAM;AAC3B,UAAI,CAAC,QAAQ,SAAS,aAAa,SAAS;AACxC,eAAO,iBAAiB,gBAAgB,SAAS;AAAA,MACrD;AAEA,aAAO,eAAe;AAAA,IAC1B,GAAG,CAAC,gBAAgB,MAAM,SAAS,CAAC;AAEpC,UAAM,kBAAkB,OAAgC,IAAI;AAC5D,UAAM,qBAAqB,OAAkC,IAAI;AAEjE,UAAM,eAAe;AAAA,MACjB,CAAC,UAA0B;AA/JvC;AAgKgB,cAAM,eAAe;AAErB,iBAAS;AAAA,UACL,WAAS,qBAAgB,YAAhB,mBAAyB,WAAU;AAAA,UAC5C,WAAS,wBAAmB,YAAnB,mBAA4B,WAAU,CAAC;AAAA,QACpD,CAAC;AAED,8BAAgB,YAAhB,mBAAyB;AACzB,iCAAmB,YAAnB,mBAA4B;AAAA,MAChC;AAAA,MACA,CAAC,QAAQ;AAAA,IACb;AAEA,WACI;AAAA,MAAC;AAAA;AAAA,QACG,eAAe,OAAO;AAAA,QACtB,MAAM;AAAA,QACN;AAAA,QACA,WAAW,EAAE,kBAAkB,EAAC,KAAI,CAAC;AAAA,QACrC,WAAW;AAAA,QACX,QAAQ,EAAC,UAAU,GAAG,WAAW,EAAC;AAAA;AAAA,MAElC,oCAAC,QAAG,WAAW,EAAE,aAAa,KAAI,EAAE,QAAQ,CAAE;AAAA,MAC9C,oCAAC,UAAK,UAAU,gBACX,gBAAgB,oCAAC,wBAAqB,KAAK,oBAAoB,GAChE,oCAAC,wBAAqB,KAAK,iBAAiB,gBAAgC,GAC5E,oCAAC,SAAI,WAAW,EAAE,kBAAkB,KAChC,oCAAC,UAAO,MAAK,UAAS,WAAW,EAAE,iBAAiB,GAAG,MAAM,YACxD,EAAE,kBAAkB,CACzB,CACJ,CACJ;AAAA,IACJ;AAAA,EAER;AACJ;AAEA,kBAAkB,cAAc;AAEhC,IAAO,4BAAQ;",
6
+ "names": []
7
+ }