umberto 7.0.2 → 8.0.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 (554) hide show
  1. package/CHANGELOG.md +20 -1799
  2. package/LICENSE.md +44 -5
  3. package/README.md +194 -9
  4. package/package.json +4 -8
  5. package/scripts/filter/after-post-render/gloria/append-copy-heading-buttons.js +99 -0
  6. package/scripts/filter/after-post-render/gloria/apply-design-doc-classes.js +145 -0
  7. package/scripts/filter/after-post-render/gloria/wrap-table-into-wrappers.js +30 -0
  8. package/scripts/filter/after-post-render/img-linker.js +1 -1
  9. package/scripts/filter/after-post-render/insert-error-codes.js +1 -1
  10. package/scripts/filter/after-post-render/linker.js +1 -1
  11. package/scripts/filter/after-post-render/snippets.js +5 -1
  12. package/scripts/filter/after-render/gloria/inline-svg.js +14 -0
  13. package/scripts/filter/after-render/gloria/spritesheet-svg.js +14 -0
  14. package/scripts/filter/before-post-render/add-project-info-to-page.js +1 -1
  15. package/scripts/filter/before-post-render/code-switcher.js +4 -0
  16. package/scripts/filter/before-post-render/execute-and-insert-function-results.js +3 -1
  17. package/scripts/filter/before-post-render/gloria/add-breadcrumbs-data-to-page.js +269 -0
  18. package/scripts/filter/before-post-render/gloria/prerender-admonitions.js +27 -0
  19. package/scripts/filter/before-post-render/gloria/prerender-xml-pug-components.js +339 -0
  20. package/scripts/filter/before-post-render/gloria/render-post-render-pug-components.js +94 -0
  21. package/scripts/filter/before-post-render/set-layout.js +4 -2
  22. package/scripts/helper/parse-href.js +28 -0
  23. package/scripts/helper/u-capitalize.js +13 -0
  24. package/scripts/helper/u-random-id.js +16 -0
  25. package/scripts/helper/u-remove-indentation.js +13 -0
  26. package/scripts/helper/u-toc.js +2 -63
  27. package/scripts/utils/add-indention.js +16 -0
  28. package/scripts/utils/capitalize.js +17 -0
  29. package/scripts/utils/concat-url-parts.js +19 -0
  30. package/scripts/utils/decode-html-entities.js +25 -0
  31. package/scripts/utils/drop-init-slash.js +14 -0
  32. package/scripts/utils/drop-trailing-slash.js +14 -0
  33. package/scripts/utils/drop-url-protocol.js +10 -0
  34. package/scripts/utils/inline-svg.js +152 -0
  35. package/scripts/utils/measure-call.js +16 -0
  36. package/scripts/utils/parse-href.js +37 -0
  37. package/scripts/utils/parseicontag.js +1 -1
  38. package/scripts/utils/parselinks.js +27 -6
  39. package/scripts/utils/parser-cursor.js +280 -0
  40. package/scripts/utils/pipe.js +17 -0
  41. package/scripts/utils/pug-renderer/create-prerender-pug-template.js +172 -0
  42. package/scripts/utils/pug-renderer/render-pug-component.js +73 -0
  43. package/scripts/utils/pug-to-xml-binding/parser/walk-xml-tree.js +150 -0
  44. package/scripts/utils/pug-to-xml-binding/parser/xml-components-parser.js +414 -0
  45. package/scripts/utils/pug-to-xml-binding/render-xml-pug-components-in-markdown.js +193 -0
  46. package/scripts/utils/pug-to-xml-binding/transform-xml-tree-to-pug.js +144 -0
  47. package/scripts/utils/random-id.js +67 -0
  48. package/scripts/utils/remove-indentation.js +48 -0
  49. package/scripts/utils/spritesheet-svg.js +183 -0
  50. package/scripts/utils/toc.js +71 -0
  51. package/scripts/utils/transform-markdown-admonitions.js +98 -0
  52. package/scripts/utils/uniq-by-last.js +32 -0
  53. package/src/api-builder/api-builder.js +49 -18
  54. package/src/api-builder/classes/description-parser.js +61 -10
  55. package/src/api-builder/classes/doc-data-factory.js +2 -2
  56. package/src/helpers/github-url.js +1 -1
  57. package/src/helpers/templates/scripts/default.js +1 -1
  58. package/src/helpers/templates/scripts/group.js +1 -1
  59. package/src/hexo/filter/project-locals.js +9 -0
  60. package/src/hexo/get-repo-urls.js +1 -1
  61. package/src/hexo/project-globals.js +4 -0
  62. package/src/hexo-manager.js +7 -2
  63. package/src/sdk-builder/sdk-builder.js +4 -4
  64. package/src/tasks/build-api-docs.js +5 -5
  65. package/src/tasks/build-documentation.js +45 -22
  66. package/src/tasks/cache-files.js +2 -2
  67. package/src/tasks/compile-sass.js +12 -0
  68. package/src/tasks/copy-assets.js +4 -0
  69. package/src/tasks/copy-project-icons.js +1 -1
  70. package/src/tasks/get-extra-files.js +1 -1
  71. package/src/tasks/get-project-config.js +1 -1
  72. package/src/tasks/overwrite-api-guides.js +1 -1
  73. package/themes/umberto/layout/gloria/404.pug +25 -16
  74. package/themes/umberto/layout/gloria/_api-docs/_header/_style.scss +31 -0
  75. package/themes/umberto/layout/gloria/_api-docs/_header/index.pug +50 -0
  76. package/themes/umberto/layout/gloria/_api-docs/_mixin/_api-see-source.pug +1 -4
  77. package/themes/umberto/layout/gloria/_api-docs/_mixin/_api-tree-item.pug +34 -26
  78. package/themes/umberto/layout/gloria/_api-docs/_mixin/_class-item.pug +20 -13
  79. package/themes/umberto/layout/gloria/_api-docs/_mixin/_dev-names.pug +1 -1
  80. package/themes/umberto/layout/gloria/_api-docs/_mixin/_error.pug +10 -5
  81. package/themes/umberto/layout/gloria/_api-docs/_mixin/_hierarchy-list.pug +1 -1
  82. package/themes/umberto/layout/gloria/_api-docs/_mixin/_link-or-text.pug +1 -1
  83. package/themes/umberto/layout/gloria/_api-docs/_mixin/_method.pug +45 -39
  84. package/themes/umberto/layout/gloria/_api-docs/_mixin/_property.pug +26 -20
  85. package/themes/umberto/layout/gloria/_api-docs/_mixin/_related.pug +1 -1
  86. package/themes/umberto/layout/gloria/_api-docs/_mixin/_toc-list-item.pug +11 -0
  87. package/themes/umberto/layout/gloria/_api-docs/_partial/api-subheader.pug +0 -11
  88. package/themes/umberto/layout/gloria/_api-docs/_partial/api-toc.pug +33 -0
  89. package/themes/umberto/layout/gloria/_api-docs/_partial/classes.pug +5 -4
  90. package/themes/umberto/layout/gloria/_api-docs/_partial/config-options.pug +5 -4
  91. package/themes/umberto/layout/gloria/_api-docs/_partial/constants.pug +1 -1
  92. package/themes/umberto/layout/gloria/_api-docs/_partial/description.pug +2 -2
  93. package/themes/umberto/layout/gloria/_api-docs/_partial/events.pug +5 -4
  94. package/themes/umberto/layout/gloria/_api-docs/_partial/functions.pug +5 -4
  95. package/themes/umberto/layout/gloria/_api-docs/_partial/interfaces.pug +1 -1
  96. package/themes/umberto/layout/gloria/_api-docs/_partial/methods.pug +14 -13
  97. package/themes/umberto/layout/gloria/_api-docs/_partial/namespaces.pug +1 -1
  98. package/themes/umberto/layout/gloria/_api-docs/_partial/navtree.pug +4 -11
  99. package/themes/umberto/layout/gloria/_api-docs/_partial/properties.pug +14 -13
  100. package/themes/umberto/layout/gloria/_api-docs/_partial/type-parameters.pug +15 -12
  101. package/themes/umberto/layout/gloria/_api-docs/_partial/typedefs.pug +5 -4
  102. package/themes/umberto/layout/gloria/_api-docs/_subheader/_style.scss +5 -0
  103. package/themes/umberto/layout/gloria/_api-docs/_subheader/index.pug +10 -0
  104. package/themes/umberto/layout/gloria/_api-docs/_toc/_style.scss +227 -0
  105. package/themes/umberto/layout/gloria/_api-docs/_toc/index.pug +11 -0
  106. package/themes/umberto/layout/gloria/_api-docs/api-base.pug +24 -24
  107. package/themes/umberto/layout/gloria/_api-docs/class.pug +4 -4
  108. package/themes/umberto/layout/gloria/_api-docs/errors.pug +3 -3
  109. package/themes/umberto/layout/gloria/_api-docs/index.pug +3 -0
  110. package/themes/umberto/layout/gloria/_api-docs/interface.pug +4 -4
  111. package/themes/umberto/layout/gloria/_api-docs/mixin.pug +4 -4
  112. package/themes/umberto/layout/gloria/_api-docs/module.pug +4 -4
  113. package/themes/umberto/layout/gloria/_api-docs/namespace.pug +4 -4
  114. package/themes/umberto/layout/gloria/_api-docs/typedef.pug +22 -22
  115. package/themes/umberto/layout/gloria/_components/badge/_style.scss +27 -0
  116. package/themes/umberto/layout/gloria/_components/badge/index.pug +30 -0
  117. package/themes/umberto/layout/gloria/_components/banner/_style.scss +133 -0
  118. package/themes/umberto/layout/gloria/_components/banner/index.pug +3 -0
  119. package/themes/umberto/layout/gloria/_components/button/_style.scss +183 -0
  120. package/themes/umberto/layout/gloria/_components/button/index.pug +140 -0
  121. package/themes/umberto/layout/gloria/_components/callout/_style.scss +56 -0
  122. package/themes/umberto/layout/gloria/_components/callout/index.pug +87 -0
  123. package/themes/umberto/layout/gloria/_components/card/_style.scss +101 -0
  124. package/themes/umberto/layout/gloria/_components/card/index.pug +131 -0
  125. package/themes/umberto/layout/gloria/_components/card-learn-more-links/_style.scss +9 -0
  126. package/themes/umberto/layout/gloria/_components/card-learn-more-links/index.pug +56 -0
  127. package/themes/umberto/layout/gloria/_components/checkbox/_style.scss +117 -0
  128. package/themes/umberto/layout/gloria/_components/checkbox/index.pug +35 -0
  129. package/themes/umberto/layout/gloria/_components/cke5-code-switcher/index.pug +39 -0
  130. package/themes/umberto/layout/gloria/_components/code-block/_style.scss +111 -0
  131. package/themes/umberto/layout/gloria/_components/code-block/index.pug +67 -0
  132. package/themes/umberto/layout/gloria/_components/code-switcher/_style.scss +41 -0
  133. package/themes/umberto/layout/gloria/_components/code-switcher/index.pug +31 -0
  134. package/themes/umberto/layout/gloria/_components/columns/_style.scss +54 -0
  135. package/themes/umberto/layout/gloria/_components/columns/index.pug +30 -0
  136. package/themes/umberto/layout/gloria/_components/divider/_style.scss +6 -0
  137. package/themes/umberto/layout/gloria/_components/divider/index.pug +13 -0
  138. package/themes/umberto/layout/gloria/_components/dropdown/_style.scss +88 -0
  139. package/themes/umberto/layout/gloria/_components/dropdown/index.pug +77 -0
  140. package/themes/umberto/layout/gloria/_components/fake-devtools/_style.scss +233 -0
  141. package/themes/umberto/layout/gloria/_components/fake-devtools/index.pug +27 -0
  142. package/themes/umberto/layout/gloria/_components/heading-badge/index.pug +17 -0
  143. package/themes/umberto/layout/gloria/_components/heading-link/_style.scss +47 -0
  144. package/themes/umberto/layout/gloria/_components/heading-link/index.pug +26 -0
  145. package/themes/umberto/layout/gloria/_components/icon/_style.scss +12 -0
  146. package/themes/umberto/layout/gloria/_components/icon/index.pug +75 -0
  147. package/themes/umberto/layout/gloria/_components/icon-message/_style.scss +13 -0
  148. package/themes/umberto/layout/gloria/_components/icon-message/index.pug +17 -0
  149. package/themes/umberto/layout/gloria/_components/iframe/_style.scss +10 -0
  150. package/themes/umberto/layout/gloria/_components/iframe/index.pug +22 -0
  151. package/themes/umberto/layout/gloria/_components/img/index.pug +17 -0
  152. package/themes/umberto/layout/gloria/_components/index.pug +31 -0
  153. package/themes/umberto/layout/gloria/_components/input/_style.scss +82 -0
  154. package/themes/umberto/layout/gloria/_components/input/index.pug +34 -0
  155. package/themes/umberto/layout/gloria/_components/json-ld/index.pug +3 -0
  156. package/themes/umberto/layout/gloria/_components/keyboard-shortcut/_style.scss +49 -0
  157. package/themes/umberto/layout/gloria/_components/keyboard-shortcut/index.pug +23 -0
  158. package/themes/umberto/layout/gloria/_components/menu-dropdown/_style.scss +27 -0
  159. package/themes/umberto/layout/gloria/_components/menu-dropdown/index.pug +40 -0
  160. package/themes/umberto/layout/gloria/_components/mobile-overlay/_style.scss +70 -0
  161. package/themes/umberto/layout/gloria/_components/mobile-overlay/index.pug +37 -0
  162. package/themes/umberto/layout/gloria/_components/nav-tree/_style.scss +104 -0
  163. package/themes/umberto/layout/gloria/_components/nav-tree/index.pug +6 -0
  164. package/themes/umberto/layout/gloria/_components/nav-tree/nav-tree-item.pug +23 -0
  165. package/themes/umberto/layout/gloria/{_mixin → _components/nav-tree}/nav-tree-level.pug +31 -11
  166. package/themes/umberto/layout/gloria/_components/skeleton/_style.scss +22 -0
  167. package/themes/umberto/layout/gloria/_components/skeleton/index.pug +16 -0
  168. package/themes/umberto/layout/gloria/_components/spacer/_style.scss +9 -0
  169. package/themes/umberto/layout/gloria/_components/spacer/index.pug +19 -0
  170. package/themes/umberto/layout/gloria/_components/svg/index.pug +70 -0
  171. package/themes/umberto/layout/gloria/_components/tabs/_style.scss +80 -0
  172. package/themes/umberto/layout/gloria/_components/tabs/index.pug +81 -0
  173. package/themes/umberto/layout/gloria/_components/tag/_style.scss +79 -0
  174. package/themes/umberto/layout/gloria/_components/tag/index.pug +17 -0
  175. package/themes/umberto/layout/gloria/_components/tooltip-popover/_style.scss +194 -0
  176. package/themes/umberto/layout/gloria/_components/tooltip-popover/index.pug +38 -0
  177. package/themes/umberto/layout/gloria/_head/head-preloads.pug +32 -0
  178. package/themes/umberto/layout/gloria/{_partial → _head}/head.pug +8 -4
  179. package/themes/umberto/layout/gloria/_head/index.pug +1 -0
  180. package/themes/umberto/layout/gloria/_modules/algolia-search/_style.scss +202 -0
  181. package/themes/umberto/layout/gloria/_modules/algolia-search/_third-party.scss +1 -0
  182. package/themes/umberto/layout/gloria/_modules/algolia-search/index.pug +38 -0
  183. package/themes/umberto/layout/gloria/_modules/breadcrumbs/_style.scss +68 -0
  184. package/themes/umberto/layout/gloria/_modules/breadcrumbs/index.pug +18 -0
  185. package/themes/umberto/layout/gloria/_modules/footer/_style.scss +40 -0
  186. package/themes/umberto/layout/gloria/_modules/footer/index.pug +87 -0
  187. package/themes/umberto/layout/gloria/_modules/header/_style.scss +181 -0
  188. package/themes/umberto/layout/gloria/_modules/header/index.pug +70 -0
  189. package/themes/umberto/layout/gloria/_modules/header/nav-link.pug +19 -0
  190. package/themes/umberto/layout/gloria/_modules/header/nav-links.pug +11 -0
  191. package/themes/umberto/layout/gloria/_modules/header/nav-project-select-dropdown.pug +16 -0
  192. package/themes/umberto/layout/gloria/_modules/header/nav-suffix-links.pug +20 -0
  193. package/themes/umberto/layout/gloria/_modules/header-bar/_style.scss +56 -0
  194. package/themes/umberto/layout/gloria/_modules/header-bar/index.pug +40 -0
  195. package/themes/umberto/layout/gloria/_modules/header-legacy-warning/index.pug +11 -0
  196. package/themes/umberto/layout/gloria/_modules/header-nightly-info/index.pug +20 -0
  197. package/themes/umberto/layout/gloria/_modules/header-promobar/index.pug +18 -0
  198. package/themes/umberto/layout/gloria/_modules/index.pug +14 -0
  199. package/themes/umberto/layout/gloria/_modules/main/_style.scss +54 -0
  200. package/themes/umberto/layout/gloria/_modules/main/index.pug +10 -0
  201. package/themes/umberto/layout/gloria/_modules/mobile-nav/_style.scss +106 -0
  202. package/themes/umberto/layout/gloria/_modules/mobile-nav/index.pug +121 -0
  203. package/themes/umberto/layout/gloria/_modules/mobile-nav/slide-parts.pug +67 -0
  204. package/themes/umberto/layout/gloria/_modules/not-found/_style.scss +38 -0
  205. package/themes/umberto/layout/gloria/_modules/not-found/index.pug +16 -0
  206. package/themes/umberto/layout/gloria/_modules/sidebar/_style.scss +147 -0
  207. package/themes/umberto/layout/gloria/_modules/sidebar/index.pug +24 -0
  208. package/themes/umberto/layout/gloria/_modules/sidebar-api/_style.scss +2 -0
  209. package/themes/umberto/layout/gloria/_modules/sidebar-api/index.pug +6 -0
  210. package/themes/umberto/layout/gloria/_modules/toc/_style.scss +201 -0
  211. package/themes/umberto/layout/gloria/_modules/toc/index.pug +10 -0
  212. package/themes/umberto/layout/gloria/_trackers/google-tag-manager.pug +14 -0
  213. package/themes/umberto/layout/gloria/_trackers/index.pug +2 -0
  214. package/themes/umberto/layout/gloria/api.pug +43 -20
  215. package/themes/umberto/layout/gloria/base.pug +23 -32
  216. package/themes/umberto/layout/gloria/index.pug +19 -13
  217. package/themes/umberto/layout/gloria/page.pug +30 -11
  218. package/themes/umberto/layout/gloria/sdk.pug +1 -1
  219. package/themes/umberto/layout/gloria/theme.pug +304 -0
  220. package/themes/umberto/layout/umberto/404.pug +0 -1
  221. package/themes/umberto/layout/umberto/_partial/report-issue-widget.pug +0 -3
  222. package/themes/umberto/source/gloria/assets/_fonts/Menlo/Menlo-Regular.ttf +0 -0
  223. package/themes/umberto/source/gloria/assets/_fonts/Menlo/Menlo-Regular.woff +0 -0
  224. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-Italic-VariableFont_wght.ttf +0 -0
  225. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-Italic-VariableFont_wght.woff2 +0 -0
  226. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-VariableFont_wght.ttf +0 -0
  227. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-VariableFont_wght.woff2 +0 -0
  228. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Black.ttf +0 -0
  229. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-BlackItalic.ttf +0 -0
  230. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Bold.ttf +0 -0
  231. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-BoldItalic.ttf +0 -0
  232. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraBold.ttf +0 -0
  233. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraBoldItalic.ttf +0 -0
  234. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraLight.ttf +0 -0
  235. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraLightItalic.ttf +0 -0
  236. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Italic.ttf +0 -0
  237. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Light.ttf +0 -0
  238. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-LightItalic.ttf +0 -0
  239. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Medium.ttf +0 -0
  240. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-MediumItalic.ttf +0 -0
  241. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Regular.ttf +0 -0
  242. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-SemiBold.ttf +0 -0
  243. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-SemiBoldItalic.ttf +0 -0
  244. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-Italic-VariableFont_wght.ttf +0 -0
  245. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-Italic-VariableFont_wght.woff2 +0 -0
  246. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-VariableFont_wght.ttf +0 -0
  247. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-VariableFont_wght.woff2 +0 -0
  248. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Black.ttf +0 -0
  249. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-BlackItalic.ttf +0 -0
  250. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Bold.ttf +0 -0
  251. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-BoldItalic.ttf +0 -0
  252. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraBold.ttf +0 -0
  253. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraBoldItalic.ttf +0 -0
  254. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraLight.ttf +0 -0
  255. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraLightItalic.ttf +0 -0
  256. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Italic.ttf +0 -0
  257. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Light.ttf +0 -0
  258. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-LightItalic.ttf +0 -0
  259. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Medium.ttf +0 -0
  260. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-MediumItalic.ttf +0 -0
  261. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Regular.ttf +0 -0
  262. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-SemiBold.ttf +0 -0
  263. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-SemiBoldItalic.ttf +0 -0
  264. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Thin.ttf +0 -0
  265. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ThinItalic.ttf +0 -0
  266. package/themes/umberto/source/gloria/assets/_img/404-billboard.svg +181 -0
  267. package/themes/umberto/source/gloria/assets/_img/ckeditor-logo.svg +15 -0
  268. package/themes/umberto/source/gloria/assets/_img/hex-bg-2.svg +10 -0
  269. package/themes/umberto/source/gloria/assets/_img/hex-bg.svg +10 -0
  270. package/themes/umberto/source/gloria/assets/_img/icons/api-class.svg +10 -0
  271. package/themes/umberto/source/gloria/assets/_img/icons/api-folder.svg +3 -0
  272. package/themes/umberto/source/gloria/assets/_img/icons/api-interface.svg +3 -0
  273. package/themes/umberto/source/gloria/assets/_img/icons/api-module.svg +3 -0
  274. package/themes/umberto/source/gloria/assets/_img/icons/api-package.svg +4 -0
  275. package/themes/umberto/source/gloria/assets/_img/icons/api-typedef.svg +3 -0
  276. package/themes/umberto/source/gloria/assets/_img/icons/bulb.svg +3 -0
  277. package/themes/umberto/source/gloria/assets/_img/icons/check-circle.svg +4 -0
  278. package/themes/umberto/source/gloria/assets/_img/icons/check.svg +3 -0
  279. package/themes/umberto/source/gloria/assets/_img/icons/chevron-down.svg +3 -0
  280. package/themes/umberto/source/gloria/assets/_img/icons/chevron-right.svg +3 -0
  281. package/themes/umberto/source/gloria/assets/_img/icons/close-circle.svg +4 -0
  282. package/themes/umberto/source/gloria/assets/_img/icons/close.svg +3 -0
  283. package/themes/umberto/source/gloria/assets/_img/icons/copy.svg +10 -0
  284. package/themes/umberto/source/gloria/assets/_img/icons/dislike.svg +3 -0
  285. package/themes/umberto/source/gloria/assets/_img/icons/download.svg +3 -0
  286. package/themes/umberto/source/gloria/assets/_img/icons/edit.svg +3 -0
  287. package/themes/umberto/source/gloria/assets/_img/icons/exclamation-circle.svg +4 -0
  288. package/themes/umberto/source/gloria/assets/_img/icons/experiment.svg +3 -0
  289. package/themes/umberto/source/gloria/assets/_img/icons/export.svg +4 -0
  290. package/themes/umberto/source/gloria/assets/_img/icons/eye.svg +3 -0
  291. package/themes/umberto/source/gloria/assets/_img/icons/filter.svg +3 -0
  292. package/themes/umberto/source/gloria/assets/_img/icons/github.svg +10 -0
  293. package/themes/umberto/source/gloria/assets/_img/icons/info-circle.svg +4 -0
  294. package/themes/umberto/source/gloria/assets/_img/icons/like.svg +3 -0
  295. package/themes/umberto/source/gloria/assets/_img/icons/link.svg +3 -0
  296. package/themes/umberto/source/gloria/assets/_img/icons/lock.svg +3 -0
  297. package/themes/umberto/source/gloria/assets/_img/icons/menu-fold.svg +3 -0
  298. package/themes/umberto/source/gloria/assets/_img/icons/menu-list.svg +3 -0
  299. package/themes/umberto/source/gloria/assets/_img/icons/menu.svg +3 -0
  300. package/themes/umberto/source/gloria/assets/_img/icons/more.svg +3 -0
  301. package/themes/umberto/source/gloria/assets/_img/icons/notification.svg +3 -0
  302. package/themes/umberto/source/gloria/assets/_img/icons/number.svg +3 -0
  303. package/themes/umberto/source/gloria/assets/_img/icons/premium.svg +3 -0
  304. package/themes/umberto/source/gloria/assets/_img/icons/right.svg +3 -0
  305. package/themes/umberto/source/gloria/assets/_img/icons/search.svg +3 -0
  306. package/themes/umberto/source/gloria/assets/_img/icons/status.svg +3 -0
  307. package/themes/umberto/source/gloria/assets/_img/icons/trash.svg +3 -0
  308. package/themes/umberto/source/gloria/assets/_img/icons/unordered-list.svg +5 -0
  309. package/themes/umberto/source/gloria/assets/_img/icons/warning.svg +10 -0
  310. package/themes/umberto/src/gloria/css/_fonts.scss +51 -0
  311. package/themes/umberto/src/gloria/css/_layers.scss +1 -0
  312. package/themes/umberto/src/gloria/css/_normalize.scss +118 -0
  313. package/themes/umberto/src/gloria/css/a11y/_focusable.scss +7 -0
  314. package/themes/umberto/src/gloria/css/a11y/_index.scss +4 -0
  315. package/themes/umberto/src/gloria/css/a11y/_mixins.scss +32 -0
  316. package/themes/umberto/src/gloria/css/a11y/_reduce-motion.scss +9 -0
  317. package/themes/umberto/src/gloria/css/a11y/_screen-reader.scss +15 -0
  318. package/themes/umberto/src/gloria/css/base/_buttons.scss +13 -0
  319. package/themes/umberto/src/gloria/css/base/_descriptions-list.scss +33 -0
  320. package/themes/umberto/src/gloria/css/base/_details.scss +7 -0
  321. package/themes/umberto/src/gloria/css/base/_headings.scss +111 -0
  322. package/themes/umberto/src/gloria/css/base/_iframes.scss +7 -0
  323. package/themes/umberto/src/gloria/css/base/_index.scss +12 -0
  324. package/themes/umberto/src/gloria/css/base/_inline-code.scss +15 -0
  325. package/themes/umberto/src/gloria/css/base/_links.scss +30 -0
  326. package/themes/umberto/src/gloria/css/base/_lists.scss +58 -0
  327. package/themes/umberto/src/gloria/css/base/_mixins.scss +3 -0
  328. package/themes/umberto/src/gloria/css/base/_paragraphs.scss +15 -0
  329. package/themes/umberto/src/gloria/css/base/_tables.scss +68 -0
  330. package/themes/umberto/src/gloria/css/base/_typography.scss +62 -0
  331. package/themes/umberto/src/gloria/css/components/_api-collapsing-list.scss +148 -0
  332. package/themes/umberto/src/gloria/css/components/_api-filter-dropdown.scss +17 -0
  333. package/themes/umberto/src/gloria/css/components/_api-item-heading.scss +58 -0
  334. package/themes/umberto/src/gloria/css/components/_api-tree.scss +202 -0
  335. package/themes/umberto/src/gloria/css/components/_hierarchy-list.scss +35 -0
  336. package/themes/umberto/src/gloria/css/components/_image-zoom.scss +13 -0
  337. package/themes/umberto/src/gloria/css/components/_index.scss +55 -0
  338. package/themes/umberto/src/gloria/css/components/_notification.scss +36 -0
  339. package/themes/umberto/src/gloria/css/components/_utils.scss +5 -0
  340. package/themes/umberto/src/gloria/css/doc/_details.scss +11 -0
  341. package/themes/umberto/src/gloria/css/doc/_editor-icons.scss +21 -0
  342. package/themes/umberto/src/gloria/css/doc/_images.scss +9 -0
  343. package/themes/umberto/src/gloria/css/doc/_index.scss +5 -0
  344. package/themes/umberto/src/gloria/css/doc/_snippets.scss +126 -0
  345. package/themes/umberto/src/gloria/css/doc/_typography.scss +5 -0
  346. package/themes/umberto/src/gloria/css/layout/_base.scss +27 -0
  347. package/themes/umberto/src/gloria/css/layout/_breakpoints.scss +88 -0
  348. package/themes/umberto/src/gloria/css/layout/_container.scss +38 -0
  349. package/themes/umberto/src/gloria/css/layout/_index.scss +6 -0
  350. package/themes/umberto/src/gloria/css/layout/_layout.scss +64 -0
  351. package/themes/umberto/src/gloria/css/layout/_mixins.scss +34 -0
  352. package/themes/umberto/src/gloria/css/layout/_zindex.scss +12 -0
  353. package/themes/umberto/src/gloria/css/modules/_index.scss +29 -0
  354. package/themes/umberto/src/gloria/css/modules/_utils.scss +7 -0
  355. package/themes/umberto/src/gloria/css/styles.scss +11 -117
  356. package/themes/umberto/src/gloria/css/theme/_light.scss +344 -0
  357. package/themes/umberto/src/gloria/css/utilities/_animation.scss +32 -0
  358. package/themes/umberto/src/gloria/css/utilities/_colors.scss +14 -0
  359. package/themes/umberto/src/gloria/css/utilities/_display.scss +13 -0
  360. package/themes/umberto/src/gloria/css/utilities/_flex.scss +33 -0
  361. package/themes/umberto/src/gloria/css/utilities/_gap.scss +8 -0
  362. package/themes/umberto/src/gloria/css/utilities/_index.scss +11 -0
  363. package/themes/umberto/src/gloria/css/utilities/_radius.scss +21 -0
  364. package/themes/umberto/src/gloria/css/utilities/_rotation.scss +8 -0
  365. package/themes/umberto/src/gloria/css/utilities/_shadows.scss +13 -0
  366. package/themes/umberto/src/gloria/css/utilities/_spacing.scss +96 -0
  367. package/themes/umberto/src/gloria/css/utilities/_stop-scrolling.scss +9 -0
  368. package/themes/umberto/src/gloria/css/utilities/_text.scss +42 -0
  369. package/themes/umberto/src/gloria/js/app.js +92 -54
  370. package/themes/umberto/src/gloria/js/components/api-nav-tree.js +171 -0
  371. package/themes/umberto/src/gloria/js/components/api-toggle.js +92 -0
  372. package/themes/umberto/src/gloria/js/components/base-component.js +41 -0
  373. package/themes/umberto/src/gloria/js/components/breadcrumbs.js +115 -0
  374. package/themes/umberto/src/gloria/js/components/code-block.js +226 -0
  375. package/themes/umberto/src/gloria/js/components/code-switcher.js +177 -0
  376. package/themes/umberto/src/gloria/js/components/dropdown.js +516 -0
  377. package/themes/umberto/src/gloria/js/components/expandable.js +79 -0
  378. package/themes/umberto/src/gloria/js/components/fake-devtools.js +722 -0
  379. package/themes/umberto/src/gloria/js/components/hash-link.js +60 -0
  380. package/themes/umberto/src/gloria/js/components/heading-link.js +135 -0
  381. package/themes/umberto/src/gloria/js/components/iframe.js +158 -0
  382. package/themes/umberto/src/gloria/js/{_imageModal.js → components/image-zoom.js} +1 -1
  383. package/themes/umberto/src/gloria/js/components/mobile-overlay.js +315 -0
  384. package/themes/umberto/src/gloria/js/components/nav-tree.js +164 -0
  385. package/themes/umberto/src/gloria/js/components/tabs.js +284 -0
  386. package/themes/umberto/src/gloria/js/components/tooltip-popover.js +576 -0
  387. package/themes/umberto/src/gloria/js/helpers/after-dom-ready.js +16 -0
  388. package/themes/umberto/src/gloria/js/helpers/animate-element.js +78 -0
  389. package/themes/umberto/src/gloria/js/helpers/body-scroll.js +22 -0
  390. package/themes/umberto/src/gloria/js/helpers/clamp.js +16 -0
  391. package/themes/umberto/src/gloria/js/helpers/classnames.js +64 -0
  392. package/themes/umberto/src/gloria/js/helpers/copy-to-clipboard.js +19 -0
  393. package/themes/umberto/src/gloria/js/helpers/create-anchor-positioning-watcher.js +46 -0
  394. package/themes/umberto/src/gloria/js/helpers/create-cleanup-registry.js +88 -0
  395. package/themes/umberto/src/gloria/js/helpers/create-hover-manager.js +93 -0
  396. package/themes/umberto/src/gloria/js/helpers/create-keyboard-blur-watcher.js +90 -0
  397. package/themes/umberto/src/gloria/js/helpers/create-keyboard-focus-cycler.js +251 -0
  398. package/themes/umberto/src/gloria/js/helpers/create-mutation-observer.js +49 -0
  399. package/themes/umberto/src/gloria/js/helpers/create-outside-click-watcher.js +39 -0
  400. package/themes/umberto/src/gloria/js/helpers/cubic-bezier.js +55 -0
  401. package/themes/umberto/src/gloria/js/helpers/date-time.js +21 -0
  402. package/themes/umberto/src/gloria/js/helpers/decode-html-entities.js +23 -0
  403. package/themes/umberto/src/gloria/js/helpers/escape-handler.js +59 -0
  404. package/themes/umberto/src/gloria/js/helpers/fetch-stylesheet.js +25 -0
  405. package/themes/umberto/src/gloria/js/helpers/find-code-lang.js +85 -0
  406. package/themes/umberto/src/gloria/js/helpers/focus-first-interactive.js +50 -0
  407. package/themes/umberto/src/gloria/js/helpers/format-html.js +181 -0
  408. package/themes/umberto/src/gloria/js/helpers/get-all-scrollable-parents.js +34 -0
  409. package/themes/umberto/src/gloria/js/helpers/get-parents-until.js +26 -0
  410. package/themes/umberto/src/gloria/js/helpers/highlight-code.js +18 -0
  411. package/themes/umberto/src/gloria/js/helpers/html-builder.js +69 -0
  412. package/themes/umberto/src/gloria/js/helpers/identity.js +8 -0
  413. package/themes/umberto/src/gloria/js/helpers/inject-resource-preload.js +51 -0
  414. package/themes/umberto/src/gloria/js/helpers/inject-script.js +79 -0
  415. package/themes/umberto/src/gloria/js/helpers/inject-stylesheet.js +108 -0
  416. package/themes/umberto/src/gloria/js/helpers/is-element-attached.js +28 -0
  417. package/themes/umberto/src/gloria/js/helpers/is-focusable.js +14 -0
  418. package/themes/umberto/src/gloria/js/helpers/is-hidden-element.js +8 -0
  419. package/themes/umberto/src/gloria/js/helpers/is-mobile.js +8 -0
  420. package/themes/umberto/src/gloria/js/helpers/is-unsafe-key.js +14 -0
  421. package/themes/umberto/src/gloria/js/helpers/lerp.js +27 -0
  422. package/themes/umberto/src/gloria/js/helpers/local-storage-helper.js +133 -0
  423. package/themes/umberto/src/gloria/js/helpers/pipe.js +8 -0
  424. package/themes/umberto/src/gloria/js/helpers/prefers-reduced-motion.js +13 -0
  425. package/themes/umberto/src/gloria/js/helpers/random-id.js +51 -0
  426. package/themes/umberto/src/gloria/js/helpers/sanitize-text.js +27 -0
  427. package/themes/umberto/src/gloria/js/helpers/scroll-to-hash.js +31 -0
  428. package/themes/umberto/src/gloria/js/helpers/take-last.js +19 -0
  429. package/themes/umberto/src/gloria/js/helpers/tap.js +11 -0
  430. package/themes/umberto/src/gloria/js/helpers/throttle.js +46 -0
  431. package/themes/umberto/src/gloria/js/helpers/timeout.js +14 -0
  432. package/themes/umberto/src/gloria/js/helpers/toggle-height.js +46 -0
  433. package/themes/umberto/src/gloria/js/helpers/tween.js +100 -0
  434. package/themes/umberto/src/gloria/js/helpers/wrap-around.js +39 -0
  435. package/themes/umberto/src/gloria/js/modules/algolia-search.js +168 -0
  436. package/themes/umberto/src/gloria/js/modules/api-filter.js +184 -0
  437. package/themes/umberto/src/gloria/js/modules/header-bar.js +154 -0
  438. package/themes/umberto/src/gloria/js/modules/header.js +242 -0
  439. package/themes/umberto/src/gloria/js/modules/links-prefetch.js +196 -0
  440. package/themes/umberto/src/gloria/js/modules/mobile-nav.js +327 -0
  441. package/themes/umberto/src/gloria/js/modules/sidebar.js +114 -0
  442. package/themes/umberto/src/gloria/js/modules/table-of-contents-api.js +214 -0
  443. package/themes/umberto/src/gloria/js/modules/table-of-contents.js +287 -0
  444. package/themes/umberto/src/gloria/js/public-api.js +75 -0
  445. package/themes/umberto/src/gloria/js/web-components/svg-icon.js +117 -0
  446. package/themes/umberto/src/umberto/js/_codeswitcherbuttons.js +1 -1
  447. package/themes/umberto/layout/gloria/_api-docs/_mixin/_api-title.pug +0 -17
  448. package/themes/umberto/layout/gloria/_mixin/nav-tree-item.pug +0 -13
  449. package/themes/umberto/layout/gloria/_partial/docsearch.pug +0 -21
  450. package/themes/umberto/layout/gloria/_partial/dropdown.pug +0 -12
  451. package/themes/umberto/layout/gloria/_partial/feedback-widget.pug +0 -20
  452. package/themes/umberto/layout/gloria/_partial/footer.pug +0 -6
  453. package/themes/umberto/layout/gloria/_partial/gh-contribute.pug +0 -8
  454. package/themes/umberto/layout/gloria/_partial/google-tag-manager.pug +0 -18
  455. package/themes/umberto/layout/gloria/_partial/header.pug +0 -64
  456. package/themes/umberto/layout/gloria/_partial/nav-tree.pug +0 -9
  457. package/themes/umberto/layout/gloria/_partial/report-issue-widget.pug +0 -26
  458. package/themes/umberto/layout/gloria/_partial/rwd-breadcrumbs.pug +0 -13
  459. package/themes/umberto/layout/gloria/_partial/search-box.pug +0 -6
  460. package/themes/umberto/layout/gloria/_partial/vwo.pug +0 -11
  461. package/themes/umberto/source/gloria/assets/_img/arrows.svg +0 -1
  462. package/themes/umberto/source/gloria/assets/_img/book.svg +0 -1
  463. package/themes/umberto/source/gloria/assets/_img/box-brown.svg +0 -1
  464. package/themes/umberto/source/gloria/assets/_img/box-orange.svg +0 -1
  465. package/themes/umberto/source/gloria/assets/_img/box-red.svg +0 -1
  466. package/themes/umberto/source/gloria/assets/_img/bulb.svg +0 -1
  467. package/themes/umberto/source/gloria/assets/_img/clipboard.svg +0 -1
  468. package/themes/umberto/source/gloria/assets/_img/cog.svg +0 -1
  469. package/themes/umberto/source/gloria/assets/_img/data.svg +0 -1
  470. package/themes/umberto/source/gloria/assets/_img/documentation.svg +0 -1
  471. package/themes/umberto/source/gloria/assets/_img/download.svg +0 -1
  472. package/themes/umberto/source/gloria/assets/_img/edit.svg +0 -2
  473. package/themes/umberto/source/gloria/assets/_img/exclamation-circle.svg +0 -2
  474. package/themes/umberto/source/gloria/assets/_img/eye.svg +0 -1
  475. package/themes/umberto/source/gloria/assets/_img/filter.svg +0 -1
  476. package/themes/umberto/source/gloria/assets/_img/filtering.svg +0 -1
  477. package/themes/umberto/source/gloria/assets/_img/folder.svg +0 -1
  478. package/themes/umberto/source/gloria/assets/_img/github.svg +0 -6
  479. package/themes/umberto/source/gloria/assets/_img/header-info-configs.svg +0 -1
  480. package/themes/umberto/source/gloria/assets/_img/header-info-events.svg +0 -1
  481. package/themes/umberto/source/gloria/assets/_img/header-info-methods.svg +0 -1
  482. package/themes/umberto/source/gloria/assets/_img/header-info-properties.svg +0 -1
  483. package/themes/umberto/source/gloria/assets/_img/heart.svg +0 -1
  484. package/themes/umberto/source/gloria/assets/_img/info-circle.svg +0 -4
  485. package/themes/umberto/source/gloria/assets/_img/info.svg +0 -1
  486. package/themes/umberto/source/gloria/assets/_img/list-nest.svg +0 -1
  487. package/themes/umberto/source/gloria/assets/_img/loupe.svg +0 -1
  488. package/themes/umberto/source/gloria/assets/_img/menu.svg +0 -4
  489. package/themes/umberto/source/gloria/assets/_img/plug.svg +0 -1
  490. package/themes/umberto/source/gloria/assets/_img/star-in-circle.svg +0 -1
  491. package/themes/umberto/source/gloria/assets/_img/tick.svg +0 -1
  492. package/themes/umberto/source/gloria/assets/_img/triangle-down.svg +0 -1
  493. package/themes/umberto/source/gloria/assets/_img/triangle-right.svg +0 -1
  494. package/themes/umberto/src/gloria/css/_api-content.scss +0 -32
  495. package/themes/umberto/src/gloria/css/_api-info-box.scss +0 -86
  496. package/themes/umberto/src/gloria/css/_api-props-filter.scss +0 -106
  497. package/themes/umberto/src/gloria/css/_api-see-source.scss +0 -35
  498. package/themes/umberto/src/gloria/css/_api-subheader.scss +0 -167
  499. package/themes/umberto/src/gloria/css/_api-tree.scss +0 -121
  500. package/themes/umberto/src/gloria/css/_badge.scss +0 -74
  501. package/themes/umberto/src/gloria/css/_code-switcher.scss +0 -61
  502. package/themes/umberto/src/gloria/css/_collapsinglist.scss +0 -262
  503. package/themes/umberto/src/gloria/css/_content.scss +0 -236
  504. package/themes/umberto/src/gloria/css/_docsearch.scss +0 -109
  505. package/themes/umberto/src/gloria/css/_dropdown.scss +0 -63
  506. package/themes/umberto/src/gloria/css/_editor-icon.scss +0 -26
  507. package/themes/umberto/src/gloria/css/_feedback-widget.scss +0 -11
  508. package/themes/umberto/src/gloria/css/_font-external.scss +0 -8
  509. package/themes/umberto/src/gloria/css/_footer.scss +0 -40
  510. package/themes/umberto/src/gloria/css/_formatted.scss +0 -285
  511. package/themes/umberto/src/gloria/css/_guide-content.scss +0 -37
  512. package/themes/umberto/src/gloria/css/_guide-sdk-tree.scss +0 -14
  513. package/themes/umberto/src/gloria/css/_loading-spinner.scss +0 -33
  514. package/themes/umberto/src/gloria/css/_main.scss +0 -59
  515. package/themes/umberto/src/gloria/css/_navigation.scss +0 -35
  516. package/themes/umberto/src/gloria/css/_notice.scss +0 -116
  517. package/themes/umberto/src/gloria/css/_print.scss +0 -20
  518. package/themes/umberto/src/gloria/css/_prism.scss +0 -223
  519. package/themes/umberto/src/gloria/css/_rwd-breadcrumbs.scss +0 -28
  520. package/themes/umberto/src/gloria/css/_rwd-menu.scss +0 -89
  521. package/themes/umberto/src/gloria/css/_secondary-navigation.scss +0 -152
  522. package/themes/umberto/src/gloria/css/_theme-dark.scss +0 -175
  523. package/themes/umberto/src/gloria/css/_toggler.scss +0 -46
  524. package/themes/umberto/src/gloria/css/_top.scss +0 -350
  525. package/themes/umberto/src/gloria/css/_tree.scss +0 -218
  526. package/themes/umberto/src/gloria/css/_warning-banner.scss +0 -46
  527. package/themes/umberto/src/gloria/css/components/_lightbox.scss +0 -12
  528. package/themes/umberto/src/gloria/css/helpers/_color.scss +0 -49
  529. package/themes/umberto/src/gloria/css/helpers/_font.scss +0 -60
  530. package/themes/umberto/src/gloria/css/helpers/_globals.scss +0 -129
  531. package/themes/umberto/src/gloria/css/helpers/_reset.scss +0 -52
  532. package/themes/umberto/src/gloria/css/helpers/_spacing.scss +0 -21
  533. package/themes/umberto/src/gloria/css/pages/_sdk.scss +0 -111
  534. package/themes/umberto/src/gloria/js/_anchors.js +0 -57
  535. package/themes/umberto/src/gloria/js/_apisearch.js +0 -126
  536. package/themes/umberto/src/gloria/js/_apitree.js +0 -67
  537. package/themes/umberto/src/gloria/js/_attachpermalinklistener.js +0 -50
  538. package/themes/umberto/src/gloria/js/_codeswitcherbuttons.js +0 -146
  539. package/themes/umberto/src/gloria/js/_collapsables.js +0 -135
  540. package/themes/umberto/src/gloria/js/_copymobileapinavigation.js +0 -26
  541. package/themes/umberto/src/gloria/js/_devnames.js +0 -37
  542. package/themes/umberto/src/gloria/js/_dropdowns.js +0 -55
  543. package/themes/umberto/src/gloria/js/_filtering.js +0 -139
  544. package/themes/umberto/src/gloria/js/_pagenavigation.js +0 -93
  545. package/themes/umberto/src/gloria/js/_prism.js +0 -104
  546. package/themes/umberto/src/gloria/js/_rwdmenu.js +0 -15
  547. package/themes/umberto/src/gloria/js/_samplecode.js +0 -23
  548. package/themes/umberto/src/gloria/js/_sidenavigation.js +0 -59
  549. package/themes/umberto/src/gloria/js/_toc.js +0 -93
  550. package/themes/umberto/src/gloria/js/_tooltips.js +0 -39
  551. package/themes/umberto/src/gloria/js/_warningbanner.js +0 -18
  552. package/themes/umberto/src/gloria/js/vendor/prism.js +0 -45
  553. /package/themes/umberto/layout/gloria/_api-docs/_partial/{api-info-box.pug → api-hierarchy.pug} +0 -0
  554. /package/themes/umberto/layout/gloria/{_partial → _trackers}/google-analytics.pug +0 -0
@@ -0,0 +1,576 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2025, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ import { BaseComponent } from './base-component';
7
+ import { createOutsideClickWatcher } from '../helpers/create-outside-click-watcher';
8
+ import { createHoverManager } from '../helpers/create-hover-manager';
9
+ import { isMobile } from '../helpers/is-mobile';
10
+ import { html } from '../helpers/html-builder';
11
+ import { cx } from '../helpers/classnames';
12
+ import { randomId } from '../helpers/random-id';
13
+ import { createAnchorPositioningWatcher } from '../helpers/create-anchor-positioning-watcher';
14
+ import { createMutationObserver } from '../helpers/create-mutation-observer';
15
+ import { createCleanupRegistry } from '../helpers/create-cleanup-registry';
16
+ import { isElementAttached } from '../helpers/is-element-attached';
17
+ import { afterDomReady } from '../helpers/after-dom-ready';
18
+
19
+ /**
20
+ * Tooltip component.
21
+ * Shows tooltips for elements with aria-describedby attribute that matches tooltip ID.
22
+ */
23
+ export class TooltipPopover extends BaseComponent {
24
+ /**
25
+ * Creates a tooltip component.
26
+ *
27
+ * @param element - The tooltip DOM element.
28
+ * @param config - Configuration options for the tooltip.
29
+ */
30
+ constructor( element, config = {} ) {
31
+ super( {
32
+ isVisible: false
33
+ } );
34
+
35
+ const trigger = config.trigger || document.querySelector(
36
+ [
37
+ `[aria-describedby="${ element.id }"]`,
38
+ `[aria-labelledby="${ element.id }"]`,
39
+ `[data-tooltip-id="${ element.id }"]`
40
+ ].join( ', ' )
41
+ );
42
+
43
+ this.elements = {
44
+ trigger,
45
+ tooltip: element,
46
+ closeButton: element.querySelector( '.js-tooltip-close-button' ),
47
+ arrow: element.querySelector( '.c-tooltip-popover__arrow' )
48
+ };
49
+
50
+ this.config = {
51
+ mode: config.mode || element.getAttribute( 'data-mode' ) || 'hover',
52
+ position: config.position || element.getAttribute( 'data-position' ) || 'bottom',
53
+ disableOnMobile: config.disableOnMobile || element.getAttribute( 'data-disable-on-mobile' ) === 'true',
54
+ hideOnOutsideClick: config.hideOnOutsideClick ?? true,
55
+ destroyOnHide: config.destroyOnHide ?? element.getAttribute( 'data-destroy-on-hide' ) === 'true',
56
+ debounceDelay:
57
+ config.debounceDelay ||
58
+ ( element.hasAttribute( 'data-debounce-delay' ) && Number.parseInt( element.getAttribute( 'data-debounce-delay' ), 10 ) ) ||
59
+ null
60
+ };
61
+
62
+ // Create cleanup registries
63
+ this.visibleStateCleanup = createCleanupRegistry();
64
+ this.triggerCleanup = createCleanupRegistry();
65
+ }
66
+
67
+ /**
68
+ * Attaches tooltip functionality to all elements with js-tooltip class.
69
+ */
70
+ static attach() {
71
+ const tooltips = document.querySelectorAll( '.js-tooltip-popover' );
72
+
73
+ for ( const tooltip of tooltips ) {
74
+ new TooltipPopover( tooltip ).init();
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Initializes the tooltip component.
80
+ */
81
+ init() {
82
+ const { tooltip, trigger, closeButton } = this.elements;
83
+ const { mode, disableOnMobile, hideOnOutsideClick, debounceDelay } = this.config;
84
+
85
+ if ( disableOnMobile && isMobile() ) {
86
+ return;
87
+ }
88
+
89
+ if ( !trigger ) {
90
+ console.warn( 'Tooltip trigger not found. Tooltip will not be initialized.' );
91
+ return;
92
+ }
93
+
94
+ // Add close button event listener if close button exists
95
+ if ( closeButton ) {
96
+ this.triggerCleanup.addEventListener( closeButton, 'click', event => {
97
+ event.stopPropagation();
98
+ event.preventDefault();
99
+ this.hide();
100
+ } );
101
+ }
102
+
103
+ switch ( mode ) {
104
+ case 'click':
105
+ this.triggerCleanup.addEventListener( trigger, 'click', () => {
106
+ if ( hideOnOutsideClick ) {
107
+ const cleanup = createOutsideClickWatcher( {
108
+ elements: [ trigger, tooltip ],
109
+ callback: () => {
110
+ if ( this.state.isVisible ) {
111
+ this.hide();
112
+ }
113
+ }
114
+ } );
115
+
116
+ this.visibleStateCleanup.register( cleanup );
117
+ }
118
+
119
+ this.toggle();
120
+ } );
121
+
122
+ // Asynchronously check if the trigger or its parents are detached.
123
+ // If so, and the tooltip is visible, hide it.
124
+ // Sometimes, framework might remove the trigger element after the click event.
125
+ // It handles such cases gracefully.
126
+ this.triggerCleanup.addEventListener( window, 'mousedown', () => {
127
+ setTimeout( () => {
128
+ isElementAttached( trigger ).then( isDetached => {
129
+ if ( isDetached && this.state.isVisible ) {
130
+ this.hide();
131
+ }
132
+ } );
133
+ }, 300 );
134
+ } );
135
+ break;
136
+
137
+ case 'hover': {
138
+ const manager = createHoverManager( {
139
+ debounceDelay,
140
+ elements: [ trigger, tooltip ],
141
+ onEnter: element => {
142
+ if ( element === trigger ) {
143
+ this.show();
144
+ }
145
+ },
146
+ onLeave: () => {
147
+ this.hide();
148
+ }
149
+ } );
150
+
151
+ this.triggerCleanup.register( manager );
152
+ } break;
153
+
154
+ case 'focus':
155
+ this.triggerCleanup.addEventListeners( trigger, {
156
+ focus: this.show.bind( this ),
157
+ blur: this.hide.bind( this )
158
+ } );
159
+ break;
160
+
161
+ case 'manual':
162
+ /* NOP */
163
+ break;
164
+ }
165
+
166
+ this.render();
167
+ return this;
168
+ }
169
+
170
+ /**
171
+ * Renders the tooltip component based on current state.
172
+ *
173
+ * @param prevState - Previous component state
174
+ * @param state - Current component state
175
+ */
176
+ render( prevState, state = this.state ) {
177
+ const { destroyOnHide } = this.config;
178
+
179
+ this._updateTooltipClasses();
180
+
181
+ if ( !!prevState?.isVisible === !!state.isVisible ) {
182
+ return;
183
+ }
184
+
185
+ if ( state.isVisible ) {
186
+ this._showTooltip();
187
+ } else if ( !state.isVisible ) {
188
+ if ( destroyOnHide ) {
189
+ this.destroy();
190
+ } else {
191
+ this._hideTooltip();
192
+ }
193
+ }
194
+ }
195
+
196
+ /**
197
+ * Destroys the tooltip component, cleaning up all resources.
198
+ * Hides the tooltip, removes event listeners, and removes the tooltip from the DOM.
199
+ */
200
+ destroy() {
201
+ const { tooltip, trigger } = this.elements;
202
+
203
+ // Hide tooltip if it's visible
204
+ this._hideTooltip();
205
+
206
+ // Clean up all callbacks and watchers
207
+ this.visibleStateCleanup.destroy();
208
+ this.triggerCleanup.destroy();
209
+
210
+ // Clean up trigger element
211
+ if ( trigger ) {
212
+ trigger.classList.remove( 'has-tooltip-visible' );
213
+
214
+ // Remove aria attributes we might have added
215
+ if ( trigger.getAttribute( 'aria-describedby' ) === tooltip.id ) {
216
+ trigger.removeAttribute( 'aria-describedby' );
217
+ }
218
+
219
+ if ( trigger.getAttribute( 'aria-labelledby' ) === tooltip.id ) {
220
+ trigger.removeAttribute( 'aria-labelledby' );
221
+ }
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Shows the tooltip.
227
+ */
228
+ show() {
229
+ this.setState( {
230
+ isVisible: true
231
+ } );
232
+ }
233
+
234
+ /**
235
+ * Hides the tooltip.
236
+ */
237
+ hide() {
238
+ this.setState( {
239
+ isVisible: false
240
+ } );
241
+ }
242
+
243
+ /**
244
+ * Toggles the tooltip visibility.
245
+ */
246
+ toggle() {
247
+ if ( this.state.isVisible ) {
248
+ this.hide();
249
+ } else {
250
+ this.show();
251
+ }
252
+ }
253
+
254
+ /**
255
+ * Updates tooltip classes and accessibility attributes.
256
+ *
257
+ * @param state - Current component state
258
+ */
259
+ _updateTooltipClasses() {
260
+ const { tooltip } = this.elements;
261
+ const { position } = this.config;
262
+
263
+ // Remove any existing position classes
264
+ tooltip.classList.remove(
265
+ 'c-tooltip-popover--top',
266
+ 'c-tooltip-popover--top-start',
267
+ 'c-tooltip-popover--bottom',
268
+ 'c-tooltip-popover--bottom-start',
269
+ 'c-tooltip-popover--top-end',
270
+ 'c-tooltip-popover--bottom-end'
271
+ );
272
+
273
+ tooltip.classList.add( `c-tooltip-popover--${ position }` );
274
+ }
275
+
276
+ /**
277
+ * Handles displaying the tooltip.
278
+ */
279
+ _showTooltip() {
280
+ const { tooltip, trigger } = this.elements;
281
+
282
+ tooltip.classList.add( 'is-mounted' );
283
+ document.body.appendChild( tooltip );
284
+
285
+ this._positionTooltip();
286
+
287
+ // Setup scroll listeners to reposition tooltip on scroll
288
+ this._setupPositioningListeners();
289
+
290
+ // Add class to trigger element when tooltip is visible
291
+ trigger.classList.add( 'has-tooltip-visible' );
292
+
293
+ // Recalculate UI to enforce transition
294
+ // eslint-disable-next-line no-void
295
+ void tooltip.offsetWidth;
296
+ tooltip.classList.add( 'is-visible' );
297
+
298
+ // Setup mutation observer to detect content changes
299
+ this.visibleStateCleanup.register( this._setupMutationObserver() );
300
+ }
301
+
302
+ /**
303
+ * Hides the tooltip.
304
+ */
305
+ _hideTooltip() {
306
+ const { tooltip, trigger } = this.elements;
307
+
308
+ if ( !tooltip.classList.contains( 'is-visible' ) ) {
309
+ return;
310
+ }
311
+
312
+ // Start hiding animation first
313
+ tooltip.classList.remove( 'is-visible' );
314
+
315
+ // Remove class from trigger element when tooltip is hidden
316
+ trigger.classList.remove( 'has-tooltip-visible' );
317
+
318
+ // After animation completes, reset styles.
319
+ tooltip.addEventListener( 'transitionend', () => {
320
+ if ( !this.state.isVisible && tooltip.parentNode === document.body ) {
321
+ tooltip.classList.remove( 'is-mounted' );
322
+ tooltip.style.left = '';
323
+ tooltip.style.top = '';
324
+ }
325
+ }, { once: true } );
326
+
327
+ this.visibleStateCleanup.destroy();
328
+ }
329
+
330
+ /**
331
+ * Positions the tooltip relative to the trigger element.
332
+ */
333
+ _positionTooltip() {
334
+ const { tooltip, trigger, arrow } = this.elements;
335
+ const { position } = this.config;
336
+
337
+ const triggerRect = trigger.getBoundingClientRect();
338
+ const tooltipRect = tooltip.getBoundingClientRect();
339
+
340
+ const arrowHeight = arrow.offsetHeight;
341
+ const arrowWidth = arrow.offsetWidth;
342
+
343
+ // Calculate the position
344
+ let top, left;
345
+
346
+ // Calculate trigger center position
347
+ const triggerCenterX = triggerRect.left + ( triggerRect.width / 2 );
348
+ const triggerEndX = triggerRect.right;
349
+
350
+ // Determine horizontal position
351
+ if ( position.endsWith( '-start' ) ) {
352
+ // When using start alignment, calculate how far the arrow should be from the left edge
353
+ // to align with the center of the trigger
354
+ const arrowLeftOffset = triggerCenterX - triggerRect.left - Math.ceil( arrowWidth / 2 );
355
+ left = triggerRect.left;
356
+
357
+ // Position the arrow to align with trigger center
358
+ arrow.style.left = `${ arrowLeftOffset }px`;
359
+ arrow.style.right = 'auto';
360
+ } else if ( position.endsWith( '-end' ) ) {
361
+ // When using end alignment, calculate how far the arrow should be from the right edge
362
+ // to align with the center of the trigger
363
+ const arrowRightOffset = triggerEndX - triggerCenterX - Math.ceil( arrowWidth / 2 );
364
+ left = triggerEndX - tooltipRect.width;
365
+
366
+ // Position the arrow to align with trigger center
367
+ arrow.style.right = `${ arrowRightOffset }px`;
368
+ arrow.style.left = 'auto';
369
+ } else {
370
+ // Center horizontally (default behavior)
371
+ left = triggerCenterX - ( tooltipRect.width / 2 );
372
+
373
+ // Reset arrow position for centered tooltip
374
+ arrow.style.left = '';
375
+ arrow.style.right = '';
376
+ }
377
+
378
+ // Position vertically based on chosen position
379
+ if ( position.startsWith( 'top' ) ) {
380
+ top = triggerRect.top - tooltipRect.height - arrowHeight;
381
+ } else {
382
+ // Default to bottom
383
+ top = triggerRect.bottom + arrowHeight;
384
+ }
385
+
386
+ // Adjust for scroll position
387
+ top += window.scrollY;
388
+ left += window.scrollX;
389
+
390
+ // Prevent tooltip from going off-screen
391
+ if ( left < 0 ) {
392
+ const offset = Math.abs( left );
393
+
394
+ left = 0;
395
+
396
+ if ( !position.endsWith( '-start' ) && !position.endsWith( '-end' ) ) {
397
+ arrow.style.left = `calc(50% - ${ offset }px)`;
398
+ } else if ( position.endsWith( '-end' ) ) {
399
+ const currentRight = parseFloat( arrow.style.right || 0 );
400
+ arrow.style.right = `${ currentRight + offset }px`;
401
+ }
402
+ } else if ( left + tooltipRect.width > window.innerWidth ) {
403
+ const origLeft = left;
404
+ const overflowAmount = ( left + tooltipRect.width ) - window.innerWidth;
405
+
406
+ left = window.innerWidth - tooltipRect.width;
407
+
408
+ if ( !position.endsWith( '-start' ) && !position.endsWith( '-end' ) ) {
409
+ const offset = origLeft - left;
410
+ arrow.style.left = `calc(50% + ${ offset }px)`;
411
+ } else if ( position.endsWith( '-start' ) ) {
412
+ const currentLeft = parseFloat( arrow.style.left || 0 );
413
+ arrow.style.left = `${ currentLeft - overflowAmount }px`;
414
+ }
415
+ }
416
+
417
+ // Apply position
418
+ tooltip.style.top = `${ top }px`;
419
+ tooltip.style.left = `${ left }px`;
420
+ }
421
+
422
+ /**
423
+ * Sets up mutation observer to detect content changes in the tooltip.
424
+ * When content changes, repositions the tooltip to accommodate new content size.
425
+ */
426
+ _setupMutationObserver() {
427
+ const { tooltip } = this.elements;
428
+
429
+ return createMutationObserver( {
430
+ element: tooltip,
431
+ attributeFilter: [],
432
+ callback: () => {
433
+ if ( this.state.isVisible ) {
434
+ this._positionTooltip();
435
+ }
436
+ }
437
+ } );
438
+ }
439
+
440
+ /**
441
+ * Sets up event listeners for scroll and resize events
442
+ * to reposition the tooltip when changes in layout occur.
443
+ */
444
+ _setupPositioningListeners() {
445
+ const positioningCleanup = createAnchorPositioningWatcher( {
446
+ element: this.elements.trigger,
447
+ handler: this._handlePositioningEvent.bind( this )
448
+ } );
449
+
450
+ this.visibleStateCleanup.register( positioningCleanup );
451
+ }
452
+
453
+ /**
454
+ * Handles repositioning the tooltip when a positioning event occurs (scroll or resize).
455
+ */
456
+ _handlePositioningEvent() {
457
+ if ( this.state.isVisible ) {
458
+ this._positionTooltip();
459
+ }
460
+ }
461
+ }
462
+
463
+ /**
464
+ * Creates a tooltip popover for the given trigger element.
465
+ *
466
+ * @param config - Configuration for the tooltip
467
+ * @param config.trigger - The element that will trigger the tooltip
468
+ * @param config.text - The text content of the tooltip
469
+ * @param [config.id] - The ID for the tooltip (auto-generated if not provided)
470
+ * @param [config.mode='hover'] - The trigger mode: 'hover', 'click', or 'focus'
471
+ * @param [config.disableOnMobile=true] - Whether to disable the tooltip on mobile devices
472
+ * @param [config.position='bottom'] - The position of the tooltip: 'top' or 'bottom'
473
+ * @param [config.className] - Additional CSS class(es) for the tooltip
474
+ * @param [config.showAfterMount=false] - Whether to show the tooltip right after mounting
475
+ * @param [config.hideOnOutsideClick=true] - Whether to hide the tooltip when clicking outside
476
+ * @param [config.showCloseButton=false] - Whether to show a close button in the tooltip
477
+ * @param [config.icon] - Optional icon to display on the left side of the tooltip text
478
+ * @returns The created tooltip popover instance
479
+ */
480
+ export function createTooltipPopover( config = {} ) {
481
+ const {
482
+ trigger,
483
+ text,
484
+ id = randomId( 'tooltip' ),
485
+ mode = 'hover',
486
+ disableOnMobile = true,
487
+ position = 'bottom',
488
+ variant = '',
489
+ className = '',
490
+ showAfterMount = false,
491
+ showCloseButton,
492
+ icon,
493
+ debounce = false,
494
+ debounceDelay = 300,
495
+ ...rest
496
+ } = config;
497
+
498
+ // Create the tooltip container
499
+ const tooltip = html.div(
500
+ {
501
+ id,
502
+ class: cx(
503
+ 'c-tooltip-popover', 'js-tooltip-popover',
504
+ className,
505
+ {
506
+ [ `c-tooltip-popover--${ variant }` ]: !!variant,
507
+ 'c-tooltip-popover--closable': showCloseButton,
508
+ 'c-tooltip-popover--with-icon': !!icon
509
+ }
510
+ ),
511
+ role: 'tooltip',
512
+ 'data-position': position,
513
+ 'data-mode': mode,
514
+ 'data-disable-on-mobile': disableOnMobile ? 'true' : 'false',
515
+ 'data-debounce': debounce ? 'true' : 'false',
516
+ 'data-debounce-delay': debounceDelay.toString()
517
+ },
518
+
519
+ icon && html[ 'svg-icon' ](
520
+ {
521
+ icon,
522
+ class: 'c-tooltip-popover__icon'
523
+ }
524
+ ),
525
+
526
+ html.span( { class: 'c-tooltip-popover__text' }, text ),
527
+ html.span( { class: 'c-tooltip-popover__arrow' } ),
528
+
529
+ showCloseButton && html.span(
530
+ {
531
+ class: 'c-tooltip-popover__close-button js-tooltip-close-button',
532
+ role: 'button',
533
+ 'aria-label': 'Close'
534
+ },
535
+ html[ 'svg-icon' ](
536
+ {
537
+ icon: 'close',
538
+ class: 'c-tooltip-popover__close-icon'
539
+ }
540
+ )
541
+ )
542
+ );
543
+
544
+ // Set trigger with aria attribute
545
+ if ( !trigger.hasAttribute( 'aria-labelledby' ) ) {
546
+ trigger.setAttribute( 'aria-labelledby', id );
547
+ } else if ( !trigger.hasAttribute( 'aria-describedby' ) ) {
548
+ trigger.setAttribute( 'aria-describedby', id );
549
+ }
550
+
551
+ // Initialize tooltip
552
+ const popover = new TooltipPopover( tooltip, {
553
+ trigger,
554
+ mode,
555
+ position,
556
+ disableOnMobile,
557
+ showCloseButton,
558
+ debounce,
559
+ debounceDelay,
560
+ ...rest
561
+ } );
562
+
563
+ afterDomReady( () => {
564
+ // Add to document
565
+ document.body.appendChild( tooltip );
566
+
567
+ popover.init();
568
+
569
+ // Show tooltip right after initialization if requested
570
+ if ( showAfterMount ) {
571
+ popover.show();
572
+ }
573
+ } );
574
+
575
+ return popover;
576
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2025, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ export function afterDomReady( callback ) {
7
+ if ( document.readyState === 'loading' ) {
8
+ return new Promise( resolve => {
9
+ document.addEventListener( 'DOMContentLoaded', () => {
10
+ resolve( callback() );
11
+ } );
12
+ } );
13
+ }
14
+
15
+ return callback();
16
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2025, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ import { prefersReducedMotion } from './prefers-reduced-motion';
7
+ import { timeout } from './timeout';
8
+
9
+ /**
10
+ * Animates an element by adding and removing animation state classes.
11
+ * Uses CSS transitions with timeouts instead of animation events.
12
+ * Handles changing the `display` property for elements initially hidden with `display: none`.
13
+ *
14
+ * @param element - The DOM element to animate
15
+ * @param isVisible - Whether the element should be visible (true = enter, false = exit)
16
+ * @param options - Animation options
17
+ * @param [options.onEntering] - Callback when element starts entering
18
+ * @param [options.onEntered] - Callback when element completes entering
19
+ * @param [options.onExiting] - Callback when element starts exiting
20
+ * @param [options.onExited] - Callback when element completes exiting
21
+ * @param [options.duration] - Duration in milliseconds (defaults to 300)
22
+ * @param [options.displayValue='flex'] - The display value to set when showing the element
23
+ * @returns Promise that resolves when animation completes
24
+ */
25
+ export async function animateElement( element, isVisible, options = {} ) {
26
+ // Remove all animation state classes first
27
+ element.classList.remove(
28
+ 'is-anim-entering',
29
+ 'is-anim-entered',
30
+ 'is-anim-exiting',
31
+ 'is-anim-exited'
32
+ );
33
+
34
+ // Default transition duration (in ms)
35
+ let duration = options.duration || 300;
36
+ const displayValue = options.displayValue || 'flex'; // Default display value
37
+
38
+ // Check for reduced motion preference and shorten duration if needed
39
+ if ( prefersReducedMotion() ) {
40
+ duration = Math.min( duration, 10 ); // Significantly reduce animation time to 50ms max
41
+ }
42
+
43
+ if ( isVisible ) {
44
+ element.style.display = displayValue;
45
+
46
+ // Force browser reflow/repaint to apply the display change
47
+ // before adding the animation class. Accessing offsetHeight is a common trick.
48
+ // eslint-disable-next-line no-void
49
+ void element.offsetHeight;
50
+
51
+ // Start entering animation
52
+ element.classList.add( 'is-anim-entering' );
53
+ options.onEntering?.( element );
54
+
55
+ // Wait for transition to complete
56
+ await timeout( duration );
57
+
58
+ // Transition completed
59
+ element.classList.remove( 'is-anim-entering' );
60
+ element.classList.add( 'is-anim-entered' );
61
+ options.onEntered?.( element );
62
+ } else {
63
+ // Start exiting animation
64
+ element.classList.add( 'is-anim-exiting' );
65
+ options.onExiting?.( element );
66
+
67
+ // Wait for transition to complete
68
+ await timeout( duration );
69
+
70
+ // Transition completed
71
+ element.classList.remove( 'is-anim-exiting' );
72
+ element.classList.add( 'is-anim-exited' );
73
+
74
+ // Hide the element after the animation completes
75
+ element.style.display = 'none';
76
+ options.onExited?.( element );
77
+ }
78
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2025, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ /**
7
+ * Function to toggling the ability to scrolling the body.
8
+ *
9
+ * @param config - Configuration object.
10
+ * @param config.shouldBeStopped - If it set to true, the body scrolling will be stopped.
11
+ * Otherwise, the body scrolling will be enabled.
12
+ */
13
+ export function bodyScroll( { shouldBeStopped } ) {
14
+ if ( shouldBeStopped ) {
15
+ document.body.style.top = `-${ window.scrollY }px`;
16
+ document.body.classList.add( 'u-stop-scrolling' );
17
+ } else {
18
+ document.body.classList.remove( 'u-stop-scrolling' );
19
+ window.scrollTo( 0, Math.abs( Number( document.body.style.top.replace( 'px', '' ) ) ) );
20
+ document.body.style.removeProperty( 'top' );
21
+ }
22
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2025, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ /**
7
+ * Constrains a value to be within a specified range.
8
+ *
9
+ * @param min - The lower bound of the range
10
+ * @param max - The upper bound of the range
11
+ * @param value - The value to constrain
12
+ * @returns The constrained value
13
+ */
14
+ export function clamp( min, max, value ) {
15
+ return Math.min( Math.max( min, value ), max );
16
+ }