umberto 7.0.1 → 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 (555) hide show
  1. package/CHANGELOG.md +20 -1792
  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/create-sitemap-index.js +12 -5
  71. package/src/tasks/get-extra-files.js +1 -1
  72. package/src/tasks/get-project-config.js +1 -1
  73. package/src/tasks/overwrite-api-guides.js +1 -1
  74. package/themes/umberto/layout/gloria/404.pug +25 -16
  75. package/themes/umberto/layout/gloria/_api-docs/_header/_style.scss +31 -0
  76. package/themes/umberto/layout/gloria/_api-docs/_header/index.pug +50 -0
  77. package/themes/umberto/layout/gloria/_api-docs/_mixin/_api-see-source.pug +1 -4
  78. package/themes/umberto/layout/gloria/_api-docs/_mixin/_api-tree-item.pug +34 -26
  79. package/themes/umberto/layout/gloria/_api-docs/_mixin/_class-item.pug +20 -13
  80. package/themes/umberto/layout/gloria/_api-docs/_mixin/_dev-names.pug +1 -1
  81. package/themes/umberto/layout/gloria/_api-docs/_mixin/_error.pug +10 -5
  82. package/themes/umberto/layout/gloria/_api-docs/_mixin/_hierarchy-list.pug +1 -1
  83. package/themes/umberto/layout/gloria/_api-docs/_mixin/_link-or-text.pug +1 -1
  84. package/themes/umberto/layout/gloria/_api-docs/_mixin/_method.pug +45 -39
  85. package/themes/umberto/layout/gloria/_api-docs/_mixin/_property.pug +26 -20
  86. package/themes/umberto/layout/gloria/_api-docs/_mixin/_related.pug +1 -1
  87. package/themes/umberto/layout/gloria/_api-docs/_mixin/_toc-list-item.pug +11 -0
  88. package/themes/umberto/layout/gloria/_api-docs/_partial/api-subheader.pug +0 -11
  89. package/themes/umberto/layout/gloria/_api-docs/_partial/api-toc.pug +33 -0
  90. package/themes/umberto/layout/gloria/_api-docs/_partial/classes.pug +5 -4
  91. package/themes/umberto/layout/gloria/_api-docs/_partial/config-options.pug +5 -4
  92. package/themes/umberto/layout/gloria/_api-docs/_partial/constants.pug +1 -1
  93. package/themes/umberto/layout/gloria/_api-docs/_partial/description.pug +2 -2
  94. package/themes/umberto/layout/gloria/_api-docs/_partial/events.pug +5 -4
  95. package/themes/umberto/layout/gloria/_api-docs/_partial/functions.pug +5 -4
  96. package/themes/umberto/layout/gloria/_api-docs/_partial/interfaces.pug +1 -1
  97. package/themes/umberto/layout/gloria/_api-docs/_partial/methods.pug +14 -13
  98. package/themes/umberto/layout/gloria/_api-docs/_partial/namespaces.pug +1 -1
  99. package/themes/umberto/layout/gloria/_api-docs/_partial/navtree.pug +4 -11
  100. package/themes/umberto/layout/gloria/_api-docs/_partial/properties.pug +14 -13
  101. package/themes/umberto/layout/gloria/_api-docs/_partial/type-parameters.pug +15 -12
  102. package/themes/umberto/layout/gloria/_api-docs/_partial/typedefs.pug +5 -4
  103. package/themes/umberto/layout/gloria/_api-docs/_subheader/_style.scss +5 -0
  104. package/themes/umberto/layout/gloria/_api-docs/_subheader/index.pug +10 -0
  105. package/themes/umberto/layout/gloria/_api-docs/_toc/_style.scss +227 -0
  106. package/themes/umberto/layout/gloria/_api-docs/_toc/index.pug +11 -0
  107. package/themes/umberto/layout/gloria/_api-docs/api-base.pug +24 -24
  108. package/themes/umberto/layout/gloria/_api-docs/class.pug +4 -4
  109. package/themes/umberto/layout/gloria/_api-docs/errors.pug +3 -3
  110. package/themes/umberto/layout/gloria/_api-docs/index.pug +3 -0
  111. package/themes/umberto/layout/gloria/_api-docs/interface.pug +4 -4
  112. package/themes/umberto/layout/gloria/_api-docs/mixin.pug +4 -4
  113. package/themes/umberto/layout/gloria/_api-docs/module.pug +4 -4
  114. package/themes/umberto/layout/gloria/_api-docs/namespace.pug +4 -4
  115. package/themes/umberto/layout/gloria/_api-docs/typedef.pug +22 -22
  116. package/themes/umberto/layout/gloria/_components/badge/_style.scss +27 -0
  117. package/themes/umberto/layout/gloria/_components/badge/index.pug +30 -0
  118. package/themes/umberto/layout/gloria/_components/banner/_style.scss +133 -0
  119. package/themes/umberto/layout/gloria/_components/banner/index.pug +3 -0
  120. package/themes/umberto/layout/gloria/_components/button/_style.scss +183 -0
  121. package/themes/umberto/layout/gloria/_components/button/index.pug +140 -0
  122. package/themes/umberto/layout/gloria/_components/callout/_style.scss +56 -0
  123. package/themes/umberto/layout/gloria/_components/callout/index.pug +87 -0
  124. package/themes/umberto/layout/gloria/_components/card/_style.scss +101 -0
  125. package/themes/umberto/layout/gloria/_components/card/index.pug +131 -0
  126. package/themes/umberto/layout/gloria/_components/card-learn-more-links/_style.scss +9 -0
  127. package/themes/umberto/layout/gloria/_components/card-learn-more-links/index.pug +56 -0
  128. package/themes/umberto/layout/gloria/_components/checkbox/_style.scss +117 -0
  129. package/themes/umberto/layout/gloria/_components/checkbox/index.pug +35 -0
  130. package/themes/umberto/layout/gloria/_components/cke5-code-switcher/index.pug +39 -0
  131. package/themes/umberto/layout/gloria/_components/code-block/_style.scss +111 -0
  132. package/themes/umberto/layout/gloria/_components/code-block/index.pug +67 -0
  133. package/themes/umberto/layout/gloria/_components/code-switcher/_style.scss +41 -0
  134. package/themes/umberto/layout/gloria/_components/code-switcher/index.pug +31 -0
  135. package/themes/umberto/layout/gloria/_components/columns/_style.scss +54 -0
  136. package/themes/umberto/layout/gloria/_components/columns/index.pug +30 -0
  137. package/themes/umberto/layout/gloria/_components/divider/_style.scss +6 -0
  138. package/themes/umberto/layout/gloria/_components/divider/index.pug +13 -0
  139. package/themes/umberto/layout/gloria/_components/dropdown/_style.scss +88 -0
  140. package/themes/umberto/layout/gloria/_components/dropdown/index.pug +77 -0
  141. package/themes/umberto/layout/gloria/_components/fake-devtools/_style.scss +233 -0
  142. package/themes/umberto/layout/gloria/_components/fake-devtools/index.pug +27 -0
  143. package/themes/umberto/layout/gloria/_components/heading-badge/index.pug +17 -0
  144. package/themes/umberto/layout/gloria/_components/heading-link/_style.scss +47 -0
  145. package/themes/umberto/layout/gloria/_components/heading-link/index.pug +26 -0
  146. package/themes/umberto/layout/gloria/_components/icon/_style.scss +12 -0
  147. package/themes/umberto/layout/gloria/_components/icon/index.pug +75 -0
  148. package/themes/umberto/layout/gloria/_components/icon-message/_style.scss +13 -0
  149. package/themes/umberto/layout/gloria/_components/icon-message/index.pug +17 -0
  150. package/themes/umberto/layout/gloria/_components/iframe/_style.scss +10 -0
  151. package/themes/umberto/layout/gloria/_components/iframe/index.pug +22 -0
  152. package/themes/umberto/layout/gloria/_components/img/index.pug +17 -0
  153. package/themes/umberto/layout/gloria/_components/index.pug +31 -0
  154. package/themes/umberto/layout/gloria/_components/input/_style.scss +82 -0
  155. package/themes/umberto/layout/gloria/_components/input/index.pug +34 -0
  156. package/themes/umberto/layout/gloria/_components/json-ld/index.pug +3 -0
  157. package/themes/umberto/layout/gloria/_components/keyboard-shortcut/_style.scss +49 -0
  158. package/themes/umberto/layout/gloria/_components/keyboard-shortcut/index.pug +23 -0
  159. package/themes/umberto/layout/gloria/_components/menu-dropdown/_style.scss +27 -0
  160. package/themes/umberto/layout/gloria/_components/menu-dropdown/index.pug +40 -0
  161. package/themes/umberto/layout/gloria/_components/mobile-overlay/_style.scss +70 -0
  162. package/themes/umberto/layout/gloria/_components/mobile-overlay/index.pug +37 -0
  163. package/themes/umberto/layout/gloria/_components/nav-tree/_style.scss +104 -0
  164. package/themes/umberto/layout/gloria/_components/nav-tree/index.pug +6 -0
  165. package/themes/umberto/layout/gloria/_components/nav-tree/nav-tree-item.pug +23 -0
  166. package/themes/umberto/layout/gloria/{_mixin → _components/nav-tree}/nav-tree-level.pug +31 -11
  167. package/themes/umberto/layout/gloria/_components/skeleton/_style.scss +22 -0
  168. package/themes/umberto/layout/gloria/_components/skeleton/index.pug +16 -0
  169. package/themes/umberto/layout/gloria/_components/spacer/_style.scss +9 -0
  170. package/themes/umberto/layout/gloria/_components/spacer/index.pug +19 -0
  171. package/themes/umberto/layout/gloria/_components/svg/index.pug +70 -0
  172. package/themes/umberto/layout/gloria/_components/tabs/_style.scss +80 -0
  173. package/themes/umberto/layout/gloria/_components/tabs/index.pug +81 -0
  174. package/themes/umberto/layout/gloria/_components/tag/_style.scss +79 -0
  175. package/themes/umberto/layout/gloria/_components/tag/index.pug +17 -0
  176. package/themes/umberto/layout/gloria/_components/tooltip-popover/_style.scss +194 -0
  177. package/themes/umberto/layout/gloria/_components/tooltip-popover/index.pug +38 -0
  178. package/themes/umberto/layout/gloria/_head/head-preloads.pug +32 -0
  179. package/themes/umberto/layout/gloria/{_partial → _head}/head.pug +8 -4
  180. package/themes/umberto/layout/gloria/_head/index.pug +1 -0
  181. package/themes/umberto/layout/gloria/_modules/algolia-search/_style.scss +202 -0
  182. package/themes/umberto/layout/gloria/_modules/algolia-search/_third-party.scss +1 -0
  183. package/themes/umberto/layout/gloria/_modules/algolia-search/index.pug +38 -0
  184. package/themes/umberto/layout/gloria/_modules/breadcrumbs/_style.scss +68 -0
  185. package/themes/umberto/layout/gloria/_modules/breadcrumbs/index.pug +18 -0
  186. package/themes/umberto/layout/gloria/_modules/footer/_style.scss +40 -0
  187. package/themes/umberto/layout/gloria/_modules/footer/index.pug +87 -0
  188. package/themes/umberto/layout/gloria/_modules/header/_style.scss +181 -0
  189. package/themes/umberto/layout/gloria/_modules/header/index.pug +70 -0
  190. package/themes/umberto/layout/gloria/_modules/header/nav-link.pug +19 -0
  191. package/themes/umberto/layout/gloria/_modules/header/nav-links.pug +11 -0
  192. package/themes/umberto/layout/gloria/_modules/header/nav-project-select-dropdown.pug +16 -0
  193. package/themes/umberto/layout/gloria/_modules/header/nav-suffix-links.pug +20 -0
  194. package/themes/umberto/layout/gloria/_modules/header-bar/_style.scss +56 -0
  195. package/themes/umberto/layout/gloria/_modules/header-bar/index.pug +40 -0
  196. package/themes/umberto/layout/gloria/_modules/header-legacy-warning/index.pug +11 -0
  197. package/themes/umberto/layout/gloria/_modules/header-nightly-info/index.pug +20 -0
  198. package/themes/umberto/layout/gloria/_modules/header-promobar/index.pug +18 -0
  199. package/themes/umberto/layout/gloria/_modules/index.pug +14 -0
  200. package/themes/umberto/layout/gloria/_modules/main/_style.scss +54 -0
  201. package/themes/umberto/layout/gloria/_modules/main/index.pug +10 -0
  202. package/themes/umberto/layout/gloria/_modules/mobile-nav/_style.scss +106 -0
  203. package/themes/umberto/layout/gloria/_modules/mobile-nav/index.pug +121 -0
  204. package/themes/umberto/layout/gloria/_modules/mobile-nav/slide-parts.pug +67 -0
  205. package/themes/umberto/layout/gloria/_modules/not-found/_style.scss +38 -0
  206. package/themes/umberto/layout/gloria/_modules/not-found/index.pug +16 -0
  207. package/themes/umberto/layout/gloria/_modules/sidebar/_style.scss +147 -0
  208. package/themes/umberto/layout/gloria/_modules/sidebar/index.pug +24 -0
  209. package/themes/umberto/layout/gloria/_modules/sidebar-api/_style.scss +2 -0
  210. package/themes/umberto/layout/gloria/_modules/sidebar-api/index.pug +6 -0
  211. package/themes/umberto/layout/gloria/_modules/toc/_style.scss +201 -0
  212. package/themes/umberto/layout/gloria/_modules/toc/index.pug +10 -0
  213. package/themes/umberto/layout/gloria/_trackers/google-tag-manager.pug +14 -0
  214. package/themes/umberto/layout/gloria/_trackers/index.pug +2 -0
  215. package/themes/umberto/layout/gloria/api.pug +43 -20
  216. package/themes/umberto/layout/gloria/base.pug +23 -32
  217. package/themes/umberto/layout/gloria/index.pug +19 -13
  218. package/themes/umberto/layout/gloria/page.pug +30 -11
  219. package/themes/umberto/layout/gloria/sdk.pug +1 -1
  220. package/themes/umberto/layout/gloria/theme.pug +304 -0
  221. package/themes/umberto/layout/umberto/404.pug +0 -1
  222. package/themes/umberto/layout/umberto/_partial/report-issue-widget.pug +0 -3
  223. package/themes/umberto/source/gloria/assets/_fonts/Menlo/Menlo-Regular.ttf +0 -0
  224. package/themes/umberto/source/gloria/assets/_fonts/Menlo/Menlo-Regular.woff +0 -0
  225. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-Italic-VariableFont_wght.ttf +0 -0
  226. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-Italic-VariableFont_wght.woff2 +0 -0
  227. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-VariableFont_wght.ttf +0 -0
  228. package/themes/umberto/source/gloria/assets/_fonts/Mulish/Mulish-VariableFont_wght.woff2 +0 -0
  229. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Black.ttf +0 -0
  230. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-BlackItalic.ttf +0 -0
  231. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Bold.ttf +0 -0
  232. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-BoldItalic.ttf +0 -0
  233. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraBold.ttf +0 -0
  234. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraBoldItalic.ttf +0 -0
  235. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraLight.ttf +0 -0
  236. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-ExtraLightItalic.ttf +0 -0
  237. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Italic.ttf +0 -0
  238. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Light.ttf +0 -0
  239. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-LightItalic.ttf +0 -0
  240. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Medium.ttf +0 -0
  241. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-MediumItalic.ttf +0 -0
  242. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-Regular.ttf +0 -0
  243. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-SemiBold.ttf +0 -0
  244. package/themes/umberto/source/gloria/assets/_fonts/Mulish/static/Mulish-SemiBoldItalic.ttf +0 -0
  245. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-Italic-VariableFont_wght.ttf +0 -0
  246. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-Italic-VariableFont_wght.woff2 +0 -0
  247. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-VariableFont_wght.ttf +0 -0
  248. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/PublicSans-VariableFont_wght.woff2 +0 -0
  249. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Black.ttf +0 -0
  250. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-BlackItalic.ttf +0 -0
  251. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Bold.ttf +0 -0
  252. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-BoldItalic.ttf +0 -0
  253. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraBold.ttf +0 -0
  254. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraBoldItalic.ttf +0 -0
  255. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraLight.ttf +0 -0
  256. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ExtraLightItalic.ttf +0 -0
  257. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Italic.ttf +0 -0
  258. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Light.ttf +0 -0
  259. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-LightItalic.ttf +0 -0
  260. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Medium.ttf +0 -0
  261. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-MediumItalic.ttf +0 -0
  262. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Regular.ttf +0 -0
  263. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-SemiBold.ttf +0 -0
  264. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-SemiBoldItalic.ttf +0 -0
  265. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-Thin.ttf +0 -0
  266. package/themes/umberto/source/gloria/assets/_fonts/Public_Sans/static/PublicSans-ThinItalic.ttf +0 -0
  267. package/themes/umberto/source/gloria/assets/_img/404-billboard.svg +181 -0
  268. package/themes/umberto/source/gloria/assets/_img/ckeditor-logo.svg +15 -0
  269. package/themes/umberto/source/gloria/assets/_img/hex-bg-2.svg +10 -0
  270. package/themes/umberto/source/gloria/assets/_img/hex-bg.svg +10 -0
  271. package/themes/umberto/source/gloria/assets/_img/icons/api-class.svg +10 -0
  272. package/themes/umberto/source/gloria/assets/_img/icons/api-folder.svg +3 -0
  273. package/themes/umberto/source/gloria/assets/_img/icons/api-interface.svg +3 -0
  274. package/themes/umberto/source/gloria/assets/_img/icons/api-module.svg +3 -0
  275. package/themes/umberto/source/gloria/assets/_img/icons/api-package.svg +4 -0
  276. package/themes/umberto/source/gloria/assets/_img/icons/api-typedef.svg +3 -0
  277. package/themes/umberto/source/gloria/assets/_img/icons/bulb.svg +3 -0
  278. package/themes/umberto/source/gloria/assets/_img/icons/check-circle.svg +4 -0
  279. package/themes/umberto/source/gloria/assets/_img/icons/check.svg +3 -0
  280. package/themes/umberto/source/gloria/assets/_img/icons/chevron-down.svg +3 -0
  281. package/themes/umberto/source/gloria/assets/_img/icons/chevron-right.svg +3 -0
  282. package/themes/umberto/source/gloria/assets/_img/icons/close-circle.svg +4 -0
  283. package/themes/umberto/source/gloria/assets/_img/icons/close.svg +3 -0
  284. package/themes/umberto/source/gloria/assets/_img/icons/copy.svg +10 -0
  285. package/themes/umberto/source/gloria/assets/_img/icons/dislike.svg +3 -0
  286. package/themes/umberto/source/gloria/assets/_img/icons/download.svg +3 -0
  287. package/themes/umberto/source/gloria/assets/_img/icons/edit.svg +3 -0
  288. package/themes/umberto/source/gloria/assets/_img/icons/exclamation-circle.svg +4 -0
  289. package/themes/umberto/source/gloria/assets/_img/icons/experiment.svg +3 -0
  290. package/themes/umberto/source/gloria/assets/_img/icons/export.svg +4 -0
  291. package/themes/umberto/source/gloria/assets/_img/icons/eye.svg +3 -0
  292. package/themes/umberto/source/gloria/assets/_img/icons/filter.svg +3 -0
  293. package/themes/umberto/source/gloria/assets/_img/icons/github.svg +10 -0
  294. package/themes/umberto/source/gloria/assets/_img/icons/info-circle.svg +4 -0
  295. package/themes/umberto/source/gloria/assets/_img/icons/like.svg +3 -0
  296. package/themes/umberto/source/gloria/assets/_img/icons/link.svg +3 -0
  297. package/themes/umberto/source/gloria/assets/_img/icons/lock.svg +3 -0
  298. package/themes/umberto/source/gloria/assets/_img/icons/menu-fold.svg +3 -0
  299. package/themes/umberto/source/gloria/assets/_img/icons/menu-list.svg +3 -0
  300. package/themes/umberto/source/gloria/assets/_img/icons/menu.svg +3 -0
  301. package/themes/umberto/source/gloria/assets/_img/icons/more.svg +3 -0
  302. package/themes/umberto/source/gloria/assets/_img/icons/notification.svg +3 -0
  303. package/themes/umberto/source/gloria/assets/_img/icons/number.svg +3 -0
  304. package/themes/umberto/source/gloria/assets/_img/icons/premium.svg +3 -0
  305. package/themes/umberto/source/gloria/assets/_img/icons/right.svg +3 -0
  306. package/themes/umberto/source/gloria/assets/_img/icons/search.svg +3 -0
  307. package/themes/umberto/source/gloria/assets/_img/icons/status.svg +3 -0
  308. package/themes/umberto/source/gloria/assets/_img/icons/trash.svg +3 -0
  309. package/themes/umberto/source/gloria/assets/_img/icons/unordered-list.svg +5 -0
  310. package/themes/umberto/source/gloria/assets/_img/icons/warning.svg +10 -0
  311. package/themes/umberto/src/gloria/css/_fonts.scss +51 -0
  312. package/themes/umberto/src/gloria/css/_layers.scss +1 -0
  313. package/themes/umberto/src/gloria/css/_normalize.scss +118 -0
  314. package/themes/umberto/src/gloria/css/a11y/_focusable.scss +7 -0
  315. package/themes/umberto/src/gloria/css/a11y/_index.scss +4 -0
  316. package/themes/umberto/src/gloria/css/a11y/_mixins.scss +32 -0
  317. package/themes/umberto/src/gloria/css/a11y/_reduce-motion.scss +9 -0
  318. package/themes/umberto/src/gloria/css/a11y/_screen-reader.scss +15 -0
  319. package/themes/umberto/src/gloria/css/base/_buttons.scss +13 -0
  320. package/themes/umberto/src/gloria/css/base/_descriptions-list.scss +33 -0
  321. package/themes/umberto/src/gloria/css/base/_details.scss +7 -0
  322. package/themes/umberto/src/gloria/css/base/_headings.scss +111 -0
  323. package/themes/umberto/src/gloria/css/base/_iframes.scss +7 -0
  324. package/themes/umberto/src/gloria/css/base/_index.scss +12 -0
  325. package/themes/umberto/src/gloria/css/base/_inline-code.scss +15 -0
  326. package/themes/umberto/src/gloria/css/base/_links.scss +30 -0
  327. package/themes/umberto/src/gloria/css/base/_lists.scss +58 -0
  328. package/themes/umberto/src/gloria/css/base/_mixins.scss +3 -0
  329. package/themes/umberto/src/gloria/css/base/_paragraphs.scss +15 -0
  330. package/themes/umberto/src/gloria/css/base/_tables.scss +68 -0
  331. package/themes/umberto/src/gloria/css/base/_typography.scss +62 -0
  332. package/themes/umberto/src/gloria/css/components/_api-collapsing-list.scss +148 -0
  333. package/themes/umberto/src/gloria/css/components/_api-filter-dropdown.scss +17 -0
  334. package/themes/umberto/src/gloria/css/components/_api-item-heading.scss +58 -0
  335. package/themes/umberto/src/gloria/css/components/_api-tree.scss +202 -0
  336. package/themes/umberto/src/gloria/css/components/_hierarchy-list.scss +35 -0
  337. package/themes/umberto/src/gloria/css/components/_image-zoom.scss +13 -0
  338. package/themes/umberto/src/gloria/css/components/_index.scss +55 -0
  339. package/themes/umberto/src/gloria/css/components/_notification.scss +36 -0
  340. package/themes/umberto/src/gloria/css/components/_utils.scss +5 -0
  341. package/themes/umberto/src/gloria/css/doc/_details.scss +11 -0
  342. package/themes/umberto/src/gloria/css/doc/_editor-icons.scss +21 -0
  343. package/themes/umberto/src/gloria/css/doc/_images.scss +9 -0
  344. package/themes/umberto/src/gloria/css/doc/_index.scss +5 -0
  345. package/themes/umberto/src/gloria/css/doc/_snippets.scss +126 -0
  346. package/themes/umberto/src/gloria/css/doc/_typography.scss +5 -0
  347. package/themes/umberto/src/gloria/css/layout/_base.scss +27 -0
  348. package/themes/umberto/src/gloria/css/layout/_breakpoints.scss +88 -0
  349. package/themes/umberto/src/gloria/css/layout/_container.scss +38 -0
  350. package/themes/umberto/src/gloria/css/layout/_index.scss +6 -0
  351. package/themes/umberto/src/gloria/css/layout/_layout.scss +64 -0
  352. package/themes/umberto/src/gloria/css/layout/_mixins.scss +34 -0
  353. package/themes/umberto/src/gloria/css/layout/_zindex.scss +12 -0
  354. package/themes/umberto/src/gloria/css/modules/_index.scss +29 -0
  355. package/themes/umberto/src/gloria/css/modules/_utils.scss +7 -0
  356. package/themes/umberto/src/gloria/css/styles.scss +11 -117
  357. package/themes/umberto/src/gloria/css/theme/_light.scss +344 -0
  358. package/themes/umberto/src/gloria/css/utilities/_animation.scss +32 -0
  359. package/themes/umberto/src/gloria/css/utilities/_colors.scss +14 -0
  360. package/themes/umberto/src/gloria/css/utilities/_display.scss +13 -0
  361. package/themes/umberto/src/gloria/css/utilities/_flex.scss +33 -0
  362. package/themes/umberto/src/gloria/css/utilities/_gap.scss +8 -0
  363. package/themes/umberto/src/gloria/css/utilities/_index.scss +11 -0
  364. package/themes/umberto/src/gloria/css/utilities/_radius.scss +21 -0
  365. package/themes/umberto/src/gloria/css/utilities/_rotation.scss +8 -0
  366. package/themes/umberto/src/gloria/css/utilities/_shadows.scss +13 -0
  367. package/themes/umberto/src/gloria/css/utilities/_spacing.scss +96 -0
  368. package/themes/umberto/src/gloria/css/utilities/_stop-scrolling.scss +9 -0
  369. package/themes/umberto/src/gloria/css/utilities/_text.scss +42 -0
  370. package/themes/umberto/src/gloria/js/app.js +92 -54
  371. package/themes/umberto/src/gloria/js/components/api-nav-tree.js +171 -0
  372. package/themes/umberto/src/gloria/js/components/api-toggle.js +92 -0
  373. package/themes/umberto/src/gloria/js/components/base-component.js +41 -0
  374. package/themes/umberto/src/gloria/js/components/breadcrumbs.js +115 -0
  375. package/themes/umberto/src/gloria/js/components/code-block.js +226 -0
  376. package/themes/umberto/src/gloria/js/components/code-switcher.js +177 -0
  377. package/themes/umberto/src/gloria/js/components/dropdown.js +516 -0
  378. package/themes/umberto/src/gloria/js/components/expandable.js +79 -0
  379. package/themes/umberto/src/gloria/js/components/fake-devtools.js +722 -0
  380. package/themes/umberto/src/gloria/js/components/hash-link.js +60 -0
  381. package/themes/umberto/src/gloria/js/components/heading-link.js +135 -0
  382. package/themes/umberto/src/gloria/js/components/iframe.js +158 -0
  383. package/themes/umberto/src/gloria/js/{_imageModal.js → components/image-zoom.js} +1 -1
  384. package/themes/umberto/src/gloria/js/components/mobile-overlay.js +315 -0
  385. package/themes/umberto/src/gloria/js/components/nav-tree.js +164 -0
  386. package/themes/umberto/src/gloria/js/components/tabs.js +284 -0
  387. package/themes/umberto/src/gloria/js/components/tooltip-popover.js +576 -0
  388. package/themes/umberto/src/gloria/js/helpers/after-dom-ready.js +16 -0
  389. package/themes/umberto/src/gloria/js/helpers/animate-element.js +78 -0
  390. package/themes/umberto/src/gloria/js/helpers/body-scroll.js +22 -0
  391. package/themes/umberto/src/gloria/js/helpers/clamp.js +16 -0
  392. package/themes/umberto/src/gloria/js/helpers/classnames.js +64 -0
  393. package/themes/umberto/src/gloria/js/helpers/copy-to-clipboard.js +19 -0
  394. package/themes/umberto/src/gloria/js/helpers/create-anchor-positioning-watcher.js +46 -0
  395. package/themes/umberto/src/gloria/js/helpers/create-cleanup-registry.js +88 -0
  396. package/themes/umberto/src/gloria/js/helpers/create-hover-manager.js +93 -0
  397. package/themes/umberto/src/gloria/js/helpers/create-keyboard-blur-watcher.js +90 -0
  398. package/themes/umberto/src/gloria/js/helpers/create-keyboard-focus-cycler.js +251 -0
  399. package/themes/umberto/src/gloria/js/helpers/create-mutation-observer.js +49 -0
  400. package/themes/umberto/src/gloria/js/helpers/create-outside-click-watcher.js +39 -0
  401. package/themes/umberto/src/gloria/js/helpers/cubic-bezier.js +55 -0
  402. package/themes/umberto/src/gloria/js/helpers/date-time.js +21 -0
  403. package/themes/umberto/src/gloria/js/helpers/decode-html-entities.js +23 -0
  404. package/themes/umberto/src/gloria/js/helpers/escape-handler.js +59 -0
  405. package/themes/umberto/src/gloria/js/helpers/fetch-stylesheet.js +25 -0
  406. package/themes/umberto/src/gloria/js/helpers/find-code-lang.js +85 -0
  407. package/themes/umberto/src/gloria/js/helpers/focus-first-interactive.js +50 -0
  408. package/themes/umberto/src/gloria/js/helpers/format-html.js +181 -0
  409. package/themes/umberto/src/gloria/js/helpers/get-all-scrollable-parents.js +34 -0
  410. package/themes/umberto/src/gloria/js/helpers/get-parents-until.js +26 -0
  411. package/themes/umberto/src/gloria/js/helpers/highlight-code.js +18 -0
  412. package/themes/umberto/src/gloria/js/helpers/html-builder.js +69 -0
  413. package/themes/umberto/src/gloria/js/helpers/identity.js +8 -0
  414. package/themes/umberto/src/gloria/js/helpers/inject-resource-preload.js +51 -0
  415. package/themes/umberto/src/gloria/js/helpers/inject-script.js +79 -0
  416. package/themes/umberto/src/gloria/js/helpers/inject-stylesheet.js +108 -0
  417. package/themes/umberto/src/gloria/js/helpers/is-element-attached.js +28 -0
  418. package/themes/umberto/src/gloria/js/helpers/is-focusable.js +14 -0
  419. package/themes/umberto/src/gloria/js/helpers/is-hidden-element.js +8 -0
  420. package/themes/umberto/src/gloria/js/helpers/is-mobile.js +8 -0
  421. package/themes/umberto/src/gloria/js/helpers/is-unsafe-key.js +14 -0
  422. package/themes/umberto/src/gloria/js/helpers/lerp.js +27 -0
  423. package/themes/umberto/src/gloria/js/helpers/local-storage-helper.js +133 -0
  424. package/themes/umberto/src/gloria/js/helpers/pipe.js +8 -0
  425. package/themes/umberto/src/gloria/js/helpers/prefers-reduced-motion.js +13 -0
  426. package/themes/umberto/src/gloria/js/helpers/random-id.js +51 -0
  427. package/themes/umberto/src/gloria/js/helpers/sanitize-text.js +27 -0
  428. package/themes/umberto/src/gloria/js/helpers/scroll-to-hash.js +31 -0
  429. package/themes/umberto/src/gloria/js/helpers/take-last.js +19 -0
  430. package/themes/umberto/src/gloria/js/helpers/tap.js +11 -0
  431. package/themes/umberto/src/gloria/js/helpers/throttle.js +46 -0
  432. package/themes/umberto/src/gloria/js/helpers/timeout.js +14 -0
  433. package/themes/umberto/src/gloria/js/helpers/toggle-height.js +46 -0
  434. package/themes/umberto/src/gloria/js/helpers/tween.js +100 -0
  435. package/themes/umberto/src/gloria/js/helpers/wrap-around.js +39 -0
  436. package/themes/umberto/src/gloria/js/modules/algolia-search.js +168 -0
  437. package/themes/umberto/src/gloria/js/modules/api-filter.js +184 -0
  438. package/themes/umberto/src/gloria/js/modules/header-bar.js +154 -0
  439. package/themes/umberto/src/gloria/js/modules/header.js +242 -0
  440. package/themes/umberto/src/gloria/js/modules/links-prefetch.js +196 -0
  441. package/themes/umberto/src/gloria/js/modules/mobile-nav.js +327 -0
  442. package/themes/umberto/src/gloria/js/modules/sidebar.js +114 -0
  443. package/themes/umberto/src/gloria/js/modules/table-of-contents-api.js +214 -0
  444. package/themes/umberto/src/gloria/js/modules/table-of-contents.js +287 -0
  445. package/themes/umberto/src/gloria/js/public-api.js +75 -0
  446. package/themes/umberto/src/gloria/js/web-components/svg-icon.js +117 -0
  447. package/themes/umberto/src/umberto/js/_codeswitcherbuttons.js +1 -1
  448. package/themes/umberto/layout/gloria/_api-docs/_mixin/_api-title.pug +0 -17
  449. package/themes/umberto/layout/gloria/_mixin/nav-tree-item.pug +0 -13
  450. package/themes/umberto/layout/gloria/_partial/docsearch.pug +0 -21
  451. package/themes/umberto/layout/gloria/_partial/dropdown.pug +0 -12
  452. package/themes/umberto/layout/gloria/_partial/feedback-widget.pug +0 -20
  453. package/themes/umberto/layout/gloria/_partial/footer.pug +0 -6
  454. package/themes/umberto/layout/gloria/_partial/gh-contribute.pug +0 -8
  455. package/themes/umberto/layout/gloria/_partial/google-tag-manager.pug +0 -18
  456. package/themes/umberto/layout/gloria/_partial/header.pug +0 -64
  457. package/themes/umberto/layout/gloria/_partial/nav-tree.pug +0 -9
  458. package/themes/umberto/layout/gloria/_partial/report-issue-widget.pug +0 -26
  459. package/themes/umberto/layout/gloria/_partial/rwd-breadcrumbs.pug +0 -13
  460. package/themes/umberto/layout/gloria/_partial/search-box.pug +0 -6
  461. package/themes/umberto/layout/gloria/_partial/vwo.pug +0 -11
  462. package/themes/umberto/source/gloria/assets/_img/arrows.svg +0 -1
  463. package/themes/umberto/source/gloria/assets/_img/book.svg +0 -1
  464. package/themes/umberto/source/gloria/assets/_img/box-brown.svg +0 -1
  465. package/themes/umberto/source/gloria/assets/_img/box-orange.svg +0 -1
  466. package/themes/umberto/source/gloria/assets/_img/box-red.svg +0 -1
  467. package/themes/umberto/source/gloria/assets/_img/bulb.svg +0 -1
  468. package/themes/umberto/source/gloria/assets/_img/clipboard.svg +0 -1
  469. package/themes/umberto/source/gloria/assets/_img/cog.svg +0 -1
  470. package/themes/umberto/source/gloria/assets/_img/data.svg +0 -1
  471. package/themes/umberto/source/gloria/assets/_img/documentation.svg +0 -1
  472. package/themes/umberto/source/gloria/assets/_img/download.svg +0 -1
  473. package/themes/umberto/source/gloria/assets/_img/edit.svg +0 -2
  474. package/themes/umberto/source/gloria/assets/_img/exclamation-circle.svg +0 -2
  475. package/themes/umberto/source/gloria/assets/_img/eye.svg +0 -1
  476. package/themes/umberto/source/gloria/assets/_img/filter.svg +0 -1
  477. package/themes/umberto/source/gloria/assets/_img/filtering.svg +0 -1
  478. package/themes/umberto/source/gloria/assets/_img/folder.svg +0 -1
  479. package/themes/umberto/source/gloria/assets/_img/github.svg +0 -6
  480. package/themes/umberto/source/gloria/assets/_img/header-info-configs.svg +0 -1
  481. package/themes/umberto/source/gloria/assets/_img/header-info-events.svg +0 -1
  482. package/themes/umberto/source/gloria/assets/_img/header-info-methods.svg +0 -1
  483. package/themes/umberto/source/gloria/assets/_img/header-info-properties.svg +0 -1
  484. package/themes/umberto/source/gloria/assets/_img/heart.svg +0 -1
  485. package/themes/umberto/source/gloria/assets/_img/info-circle.svg +0 -4
  486. package/themes/umberto/source/gloria/assets/_img/info.svg +0 -1
  487. package/themes/umberto/source/gloria/assets/_img/list-nest.svg +0 -1
  488. package/themes/umberto/source/gloria/assets/_img/loupe.svg +0 -1
  489. package/themes/umberto/source/gloria/assets/_img/menu.svg +0 -4
  490. package/themes/umberto/source/gloria/assets/_img/plug.svg +0 -1
  491. package/themes/umberto/source/gloria/assets/_img/star-in-circle.svg +0 -1
  492. package/themes/umberto/source/gloria/assets/_img/tick.svg +0 -1
  493. package/themes/umberto/source/gloria/assets/_img/triangle-down.svg +0 -1
  494. package/themes/umberto/source/gloria/assets/_img/triangle-right.svg +0 -1
  495. package/themes/umberto/src/gloria/css/_api-content.scss +0 -32
  496. package/themes/umberto/src/gloria/css/_api-info-box.scss +0 -86
  497. package/themes/umberto/src/gloria/css/_api-props-filter.scss +0 -106
  498. package/themes/umberto/src/gloria/css/_api-see-source.scss +0 -35
  499. package/themes/umberto/src/gloria/css/_api-subheader.scss +0 -167
  500. package/themes/umberto/src/gloria/css/_api-tree.scss +0 -121
  501. package/themes/umberto/src/gloria/css/_badge.scss +0 -74
  502. package/themes/umberto/src/gloria/css/_code-switcher.scss +0 -61
  503. package/themes/umberto/src/gloria/css/_collapsinglist.scss +0 -262
  504. package/themes/umberto/src/gloria/css/_content.scss +0 -236
  505. package/themes/umberto/src/gloria/css/_docsearch.scss +0 -109
  506. package/themes/umberto/src/gloria/css/_dropdown.scss +0 -63
  507. package/themes/umberto/src/gloria/css/_editor-icon.scss +0 -26
  508. package/themes/umberto/src/gloria/css/_feedback-widget.scss +0 -11
  509. package/themes/umberto/src/gloria/css/_font-external.scss +0 -8
  510. package/themes/umberto/src/gloria/css/_footer.scss +0 -40
  511. package/themes/umberto/src/gloria/css/_formatted.scss +0 -285
  512. package/themes/umberto/src/gloria/css/_guide-content.scss +0 -37
  513. package/themes/umberto/src/gloria/css/_guide-sdk-tree.scss +0 -14
  514. package/themes/umberto/src/gloria/css/_loading-spinner.scss +0 -33
  515. package/themes/umberto/src/gloria/css/_main.scss +0 -59
  516. package/themes/umberto/src/gloria/css/_navigation.scss +0 -35
  517. package/themes/umberto/src/gloria/css/_notice.scss +0 -116
  518. package/themes/umberto/src/gloria/css/_print.scss +0 -20
  519. package/themes/umberto/src/gloria/css/_prism.scss +0 -223
  520. package/themes/umberto/src/gloria/css/_rwd-breadcrumbs.scss +0 -28
  521. package/themes/umberto/src/gloria/css/_rwd-menu.scss +0 -89
  522. package/themes/umberto/src/gloria/css/_secondary-navigation.scss +0 -152
  523. package/themes/umberto/src/gloria/css/_theme-dark.scss +0 -175
  524. package/themes/umberto/src/gloria/css/_toggler.scss +0 -46
  525. package/themes/umberto/src/gloria/css/_top.scss +0 -350
  526. package/themes/umberto/src/gloria/css/_tree.scss +0 -218
  527. package/themes/umberto/src/gloria/css/_warning-banner.scss +0 -46
  528. package/themes/umberto/src/gloria/css/components/_lightbox.scss +0 -12
  529. package/themes/umberto/src/gloria/css/helpers/_color.scss +0 -49
  530. package/themes/umberto/src/gloria/css/helpers/_font.scss +0 -60
  531. package/themes/umberto/src/gloria/css/helpers/_globals.scss +0 -129
  532. package/themes/umberto/src/gloria/css/helpers/_reset.scss +0 -52
  533. package/themes/umberto/src/gloria/css/helpers/_spacing.scss +0 -21
  534. package/themes/umberto/src/gloria/css/pages/_sdk.scss +0 -111
  535. package/themes/umberto/src/gloria/js/_anchors.js +0 -57
  536. package/themes/umberto/src/gloria/js/_apisearch.js +0 -126
  537. package/themes/umberto/src/gloria/js/_apitree.js +0 -67
  538. package/themes/umberto/src/gloria/js/_attachpermalinklistener.js +0 -50
  539. package/themes/umberto/src/gloria/js/_codeswitcherbuttons.js +0 -146
  540. package/themes/umberto/src/gloria/js/_collapsables.js +0 -135
  541. package/themes/umberto/src/gloria/js/_copymobileapinavigation.js +0 -26
  542. package/themes/umberto/src/gloria/js/_devnames.js +0 -37
  543. package/themes/umberto/src/gloria/js/_dropdowns.js +0 -55
  544. package/themes/umberto/src/gloria/js/_filtering.js +0 -139
  545. package/themes/umberto/src/gloria/js/_pagenavigation.js +0 -93
  546. package/themes/umberto/src/gloria/js/_prism.js +0 -104
  547. package/themes/umberto/src/gloria/js/_rwdmenu.js +0 -15
  548. package/themes/umberto/src/gloria/js/_samplecode.js +0 -23
  549. package/themes/umberto/src/gloria/js/_sidenavigation.js +0 -59
  550. package/themes/umberto/src/gloria/js/_toc.js +0 -93
  551. package/themes/umberto/src/gloria/js/_tooltips.js +0 -39
  552. package/themes/umberto/src/gloria/js/_warningbanner.js +0 -18
  553. package/themes/umberto/src/gloria/js/vendor/prism.js +0 -45
  554. /package/themes/umberto/layout/gloria/_api-docs/_partial/{api-info-box.pug → api-hierarchy.pug} +0 -0
  555. /package/themes/umberto/layout/gloria/{_partial → _trackers}/google-analytics.pug +0 -0
@@ -0,0 +1,722 @@
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 { html } from '../helpers/html-builder';
8
+ import { cx } from '../helpers/classnames';
9
+ import { takeLast } from '../helpers/take-last';
10
+
11
+ /**
12
+ * Component for simulating browser devtools console.
13
+ * Provides an API for logging messages with different severity levels.
14
+ */
15
+ export class FakeDevtools extends BaseComponent {
16
+ /**
17
+ * Attaches the FakeDevtools component to all matching elements on the page.
18
+ * It initializes the component for each element.
19
+ * This method should be called when the DOM is fully loaded.
20
+ */
21
+ static attach() {
22
+ const fakeDevtools = document.querySelectorAll( '.c-fake-devtools' );
23
+
24
+ for ( const fakeDevtool of fakeDevtools ) {
25
+ fakeDevtool.fakeDevtools = new FakeDevtools( fakeDevtool ).init();
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Creates the FakeDevtools component.
31
+ *
32
+ * @param element - The element containing the fake devtools.
33
+ */
34
+ constructor( element ) {
35
+ super( {
36
+ logs: []
37
+ } );
38
+
39
+ this.elements = {
40
+ root: element,
41
+ logs: element.querySelector( '.c-fake-devtools__logs' )
42
+ };
43
+
44
+ this.config = {
45
+ maxLogs: parseInt( element.dataset.maxLogs, 10 ) || 100
46
+ };
47
+ }
48
+
49
+ /**
50
+ * Initializes the component by setting up the console view.
51
+ */
52
+ init() {
53
+ this.render();
54
+ return this;
55
+ }
56
+
57
+ /**
58
+ * Clears the console logs.
59
+ */
60
+ clear() {
61
+ this.setState( {
62
+ logs: []
63
+ } );
64
+ }
65
+
66
+ /**
67
+ * Returns loggers for different severity levels.
68
+ */
69
+ get loggers() {
70
+ return {
71
+ info: this._logInfo.bind( this ),
72
+ warning: this._logWarning.bind( this ),
73
+ error: this._logError.bind( this )
74
+ };
75
+ }
76
+
77
+ /**
78
+ * Logs an info message to the console.
79
+ *
80
+ * @param args - Arguments to log.
81
+ */
82
+ _logInfo( ...args ) {
83
+ this._addLogEntry( 'info', args );
84
+ }
85
+
86
+ /**
87
+ * Logs a warning message to the console.
88
+ *
89
+ * @param args - Arguments to log.
90
+ */
91
+ _logWarning( ...args ) {
92
+ this._addLogEntry( 'warning', args );
93
+ }
94
+
95
+ /**
96
+ * Logs an error message to the console.
97
+ *
98
+ * @param args - Arguments to log.
99
+ */
100
+ _logError( ...args ) {
101
+ this._addLogEntry( 'error', args );
102
+ }
103
+
104
+ /**
105
+ * Adds a log entry to the console.
106
+ *
107
+ * @param type - The type of log (info, warning, error).
108
+ * @param args - The arguments to log.
109
+ * @private
110
+ */
111
+ _addLogEntry( type, args ) {
112
+ const logEntry = html.div( {
113
+ class: cx( 'c-fake-devtools__log', `c-fake-devtools__log--${ type }` )
114
+ } );
115
+
116
+ // Add icon based on message type
117
+ const iconName = ( () => {
118
+ switch ( type ) {
119
+ case 'info':
120
+ return 'info-circle';
121
+ case 'warning':
122
+ return 'warning';
123
+ default:
124
+ return 'exclamation-circle';
125
+ }
126
+ } )();
127
+
128
+ const iconElement = html[ 'svg-icon' ]( {
129
+ icon: iconName,
130
+ 'aria-hidden': 'true',
131
+ class: 'c-fake-devtools__log-icon'
132
+ } );
133
+
134
+ logEntry.appendChild( iconElement );
135
+
136
+ // Create content wrapper for the log message
137
+ const contentWrapper = html.div( {
138
+ class: 'c-fake-devtools__log-content'
139
+ } );
140
+
141
+ logEntry.appendChild( contentWrapper );
142
+
143
+ // Find the last text-based argument index
144
+ const lastTextArgIndex = this._findLastTextArgIndex( args );
145
+
146
+ let currentArgIndex = 0;
147
+ while ( currentArgIndex < args.length ) {
148
+ const currentArg = args[ currentArgIndex ];
149
+ const isLastTextArg = currentArgIndex === lastTextArgIndex;
150
+
151
+ if ( typeof currentArg === 'string' && currentArg.includes( '%c' ) ) {
152
+ const consumedStylesCount = this._processFormattedLogArgument(
153
+ contentWrapper,
154
+ currentArg,
155
+ args,
156
+ currentArgIndex + 1,
157
+ isLastTextArg
158
+ );
159
+
160
+ currentArgIndex += 1 + consumedStylesCount;
161
+ } else {
162
+ if ( typeof currentArg === 'object' && currentArg !== null ) {
163
+ const objectViewer = html[ 'object-viewer' ]( {} );
164
+ objectViewer.data = currentArg;
165
+ contentWrapper.appendChild( objectViewer );
166
+ } else {
167
+ this._appendArgument( contentWrapper, currentArg, isLastTextArg );
168
+ }
169
+
170
+ currentArgIndex++;
171
+ }
172
+
173
+ if ( currentArgIndex < args.length ) {
174
+ contentWrapper.appendChild( document.createTextNode( ' ' ) );
175
+ }
176
+ }
177
+
178
+ const newLogs = [
179
+ ...this.state.logs,
180
+ { type, content: logEntry }
181
+ ];
182
+
183
+ this.setState( {
184
+ logs: takeLast( this.config.maxLogs, newLogs )
185
+ } );
186
+ }
187
+
188
+ /**
189
+ * Finds the index of the last text-based argument in the args array.
190
+ *
191
+ * @param args - Arguments array to search.
192
+ * @returns The index of the last text-based argument, or -1 if none found.
193
+ * @private
194
+ */
195
+ _findLastTextArgIndex( args ) {
196
+ for ( let i = args.length - 1; i >= 0; i-- ) {
197
+ const arg = args[ i ];
198
+ if ( typeof arg === 'string' || ( typeof arg !== 'object' || arg === null ) ) {
199
+ return i;
200
+ }
201
+ }
202
+ return -1;
203
+ }
204
+
205
+ /**
206
+ * Processes a log argument that is a format string (contains %c).
207
+ * Appends styled segments to the logEntry.
208
+ *
209
+ * @param logEntry - The parent element for the log.
210
+ * @param formatString - The string containing %c specifiers.
211
+ * @param allArgs - All arguments passed to the logger.
212
+ * @param styleSearchStartIndex - The index in allArgs from which to start looking for style strings.
213
+ * @param isLastTextArg - Whether this is the last text-based argument.
214
+ * @returns The number of style arguments consumed.
215
+ * @private
216
+ */
217
+ _processFormattedLogArgument( logEntry, formatString, allArgs, styleSearchStartIndex, isLastTextArg = false ) {
218
+ const collectedStyleArgs = [];
219
+ let styleArgsConsumedCount = 0;
220
+ const cSpecifierCount = ( formatString.match( /%c/g ) || [] ).length;
221
+
222
+ for ( let i = 0; i < cSpecifierCount; i++ ) {
223
+ const potentialStyleArgIndex = styleSearchStartIndex + styleArgsConsumedCount;
224
+ if ( potentialStyleArgIndex < allArgs.length && typeof allArgs[ potentialStyleArgIndex ] === 'string' ) {
225
+ collectedStyleArgs.push( allArgs[ potentialStyleArgIndex ] );
226
+ styleArgsConsumedCount++;
227
+ } else {
228
+ collectedStyleArgs.push( '' ); // Default to empty style
229
+ }
230
+ }
231
+
232
+ const parts = formatString.split( '%c' );
233
+
234
+ // Append the first part (text before the first %c) if it exists.
235
+ // This part is unstyled.
236
+ if ( parts[ 0 ] ) {
237
+ this._appendFormattedText( logEntry, parts[ 0 ], false );
238
+ }
239
+
240
+ // Iterate over the remaining parts, which are the segments to be styled.
241
+ // parts[1] gets style collectedStyleArgs[0]
242
+ // parts[2] gets style collectedStyleArgs[1]
243
+ // ...
244
+ for ( let i = 1; i < parts.length; i++ ) {
245
+ const segmentText = parts[ i ];
246
+ // The style for parts[i] is collectedStyleArgs[i-1]
247
+ const styleString = _createStyleString( collectedStyleArgs, i - 1 );
248
+ const isLastSegment = i === parts.length - 1;
249
+
250
+ // Only create a span if there's text or a style to apply.
251
+ // An empty segment with a style will result in an empty styled span.
252
+ if ( segmentText || styleString ) {
253
+ const span = html.span();
254
+
255
+ if ( segmentText ) {
256
+ this._appendFormattedText( span, segmentText, isLastTextArg && isLastSegment );
257
+ }
258
+
259
+ if ( styleString ) {
260
+ span.setAttribute( 'style', styleString );
261
+ }
262
+
263
+ logEntry.appendChild( span );
264
+ }
265
+ }
266
+ return styleArgsConsumedCount;
267
+ }
268
+
269
+ /**
270
+ * Helper method to append formatted text with newlines support
271
+ *
272
+ * @param container - Element to append text to
273
+ * @param text - Text to format and append
274
+ * @param allowTruncation - Whether to allow text truncation
275
+ * @private
276
+ */
277
+ _appendFormattedText( container, text, allowTruncation = false ) {
278
+ if ( !text ) {
279
+ return;
280
+ }
281
+
282
+ if ( allowTruncation ) {
283
+ this._appendTextWithTruncation( container, text );
284
+ } else {
285
+ // Split text by newlines
286
+ const lines = text.split( '\n' );
287
+
288
+ lines.forEach( ( line, index ) => {
289
+ if ( index > 0 ) {
290
+ container.appendChild( html.br() );
291
+ }
292
+ container.appendChild( document.createTextNode( line ) );
293
+ } );
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Helper method to append an argument to the log
299
+ * Handles URLs and plain text with newlines
300
+ *
301
+ * @param container - Element to append to
302
+ * @param arg - Argument to append
303
+ * @param allowTruncation - Whether to allow text truncation
304
+ * @private
305
+ */
306
+ _appendArgument( container, arg, allowTruncation = false ) {
307
+ const text = String( arg );
308
+
309
+ // Check if text contains URLs
310
+ if ( typeof arg === 'string' && ( arg.includes( 'http://' ) || arg.includes( 'https://' ) ) ) {
311
+ // URL pattern matching both http:// and https://
312
+ // The regex includes a capturing group, so split() will include the delimiters (URLs) in the result array.
313
+ const urlRegex = /(https?:\/\/[^\s]+)/g;
314
+ const segments = text.split( urlRegex );
315
+
316
+ segments.forEach( ( segment, index ) => {
317
+ if ( segment && segment.length > 0 ) {
318
+ // Test if the current segment is a URL.
319
+ if ( segment.match( urlRegex ) ) {
320
+ const link = html.a( {
321
+ href: segment,
322
+ target: '_blank',
323
+ rel: 'noopener noreferrer',
324
+ class: cx( 'c-fake-devtools__link', 'b-link' ),
325
+ tabindex: '-1'
326
+ }, segment );
327
+
328
+ container.appendChild( link );
329
+ } else {
330
+ // Only allow truncation on the last segment if this is the last text arg
331
+ const isLastSegment = index === segments.length - 1;
332
+ this._appendTextWithTruncation( container, segment, allowTruncation && isLastSegment );
333
+ }
334
+ }
335
+ } );
336
+ } else {
337
+ // For text without URLs, just handle newlines and truncation
338
+ this._appendTextWithTruncation( container, text, allowTruncation );
339
+ }
340
+ }
341
+
342
+ /**
343
+ * Helper method to append text with truncation support
344
+ *
345
+ * @param container - Element to append text to
346
+ * @param text - Text to format and append
347
+ * @param allowTruncation - Whether to allow text truncation
348
+ * @private
349
+ */
350
+ _appendTextWithTruncation( container, text, allowTruncation = false ) {
351
+ if ( !text ) {
352
+ return;
353
+ }
354
+
355
+ // Check if text is long enough to warrant truncation (considering newlines)
356
+ const maxTextLength = 300;
357
+
358
+ if ( allowTruncation && ( text.length > maxTextLength || text.split( '\n' ).length > 3 ) ) {
359
+ const truncator = html[ 'log-text-truncator' ]( {
360
+ 'max-length': maxTextLength
361
+ } );
362
+
363
+ truncator.text = text;
364
+
365
+ container.appendChild( truncator );
366
+ } else {
367
+ // For shorter text, use the existing method
368
+ const textNode = html.span();
369
+ this._appendFormattedText( textNode, text, false );
370
+ container.appendChild( textNode );
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Renders the component based on the current state.
376
+ */
377
+ render() {
378
+ if ( !this.elements.logs ) {
379
+ return;
380
+ }
381
+
382
+ this.elements.logs.innerHTML = '';
383
+
384
+ // Sort logs: 'info' logs first, then others maintain their relative order.
385
+ const sortedLogs = [ ...this.state.logs ].sort( ( a, b ) => {
386
+ if ( a.type === 'info' && b.type !== 'info' ) {
387
+ return -1;
388
+ }
389
+
390
+ if ( a.type !== 'info' && b.type === 'info' ) {
391
+ return 1;
392
+ }
393
+
394
+ return 0;
395
+ } );
396
+
397
+ sortedLogs.forEach( log => {
398
+ this.elements.logs.appendChild( log.content );
399
+ } );
400
+ }
401
+ }
402
+
403
+ /**
404
+ * Log text truncator component for handling long text content
405
+ */
406
+ class LogTextTruncator extends HTMLElement {
407
+ static get observedAttributes() {
408
+ return [ 'max-length' ];
409
+ }
410
+
411
+ constructor() {
412
+ super();
413
+ this._originalText = '';
414
+ this._maxLength = 200;
415
+ this._isExpanded = false;
416
+ }
417
+
418
+ connectedCallback() {
419
+ this.render();
420
+ }
421
+
422
+ attributeChangedCallback( name, oldValue, newValue ) {
423
+ if ( name === 'max-length' ) {
424
+ this._maxLength = parseInt( newValue, 10 ) || 200;
425
+ this.render();
426
+ }
427
+ }
428
+
429
+ set text( value ) {
430
+ this._originalText = String( value );
431
+ this._isExpanded = false;
432
+
433
+ if ( this.isConnected ) {
434
+ this.render();
435
+ }
436
+ }
437
+
438
+ get text() {
439
+ return this._originalText;
440
+ }
441
+
442
+ render() {
443
+ this.innerHTML = '';
444
+
445
+ if ( this._originalText.length <= this._maxLength ) {
446
+ this.appendChild( document.createTextNode( this._originalText ) );
447
+ return;
448
+ }
449
+
450
+ const container = html.span( { class: 'c-log-text-truncator' } );
451
+
452
+ if ( this._isExpanded ) {
453
+ container.appendChild( document.createTextNode( this._originalText ) );
454
+
455
+ const collapseButton = html.button( {
456
+ class: 'b-reset-button c-log-text-truncator__expand-button',
457
+ type: 'button'
458
+ }, ' Show less' );
459
+
460
+ collapseButton.addEventListener( 'click', () => {
461
+ this._isExpanded = false;
462
+ this.render();
463
+ } );
464
+
465
+ container.appendChild( collapseButton );
466
+ } else {
467
+ const truncatedText = this._originalText.substring( 0, this._maxLength );
468
+
469
+ container.appendChild( document.createTextNode( truncatedText ) );
470
+ container.appendChild( document.createTextNode( '…' ) );
471
+
472
+ const expandButton = html.button( {
473
+ class: 'b-reset-button c-log-text-truncator__expand-button',
474
+ type: 'button'
475
+ }, ' Show more' );
476
+
477
+ expandButton.addEventListener( 'click', () => {
478
+ this._isExpanded = true;
479
+ this.render();
480
+ } );
481
+
482
+ container.appendChild( expandButton );
483
+ }
484
+
485
+ this.appendChild( container );
486
+ }
487
+ }
488
+
489
+ customElements.define( 'log-text-truncator', LogTextTruncator );
490
+
491
+ /**
492
+ * Object viewer component for displaying object structure similar to browser console
493
+ */
494
+ class ObjectViewer extends HTMLElement {
495
+ static get observedAttributes() {
496
+ return [ 'auto-expand' ];
497
+ }
498
+
499
+ constructor() {
500
+ super();
501
+ this._data = null;
502
+ this.autoExpand = false;
503
+ }
504
+
505
+ connectedCallback() {
506
+ if ( this._data ) {
507
+ this.render();
508
+ }
509
+ }
510
+
511
+ attributeChangedCallback( name, oldValue, newValue ) {
512
+ if ( name === 'auto-expand' ) {
513
+ this.autoExpand = newValue !== null;
514
+ if ( this._data ) {
515
+ this.render();
516
+ }
517
+ }
518
+ }
519
+
520
+ set data( value ) {
521
+ this._data = value;
522
+ if ( this.isConnected ) {
523
+ this.render();
524
+ }
525
+ }
526
+
527
+ get data() {
528
+ return this._data;
529
+ }
530
+
531
+ render() {
532
+ this.innerHTML = '';
533
+
534
+ const container = html.div( { class: 'c-object-viewer' } );
535
+ this.renderObjectViewer( container, this._data, this.autoExpand );
536
+ this.appendChild( container );
537
+ }
538
+
539
+ renderObjectViewer( container, data, initialExpanded = false ) {
540
+ if ( typeof data !== 'object' || data === null ) {
541
+ container.appendChild( this.formatPrimitiveValue( data ) );
542
+ return;
543
+ }
544
+
545
+ const isArray = Array.isArray( data );
546
+ const objectPreview = html.div( { class: 'c-object-viewer__item' } );
547
+
548
+ // Create toggle and preview elements
549
+ const toggleBtn = html.span( {
550
+ class: initialExpanded ? 'c-object-viewer__toggle c-object-viewer__toggle--expanded' : 'c-object-viewer__toggle'
551
+ } );
552
+
553
+ objectPreview.appendChild( toggleBtn );
554
+
555
+ // Create the preview content
556
+ objectPreview.appendChild( this.createObjectPreview( data, isArray ) );
557
+ container.appendChild( objectPreview );
558
+
559
+ // Create expanded view
560
+ const expandedView = html.div( {
561
+ class: initialExpanded ? 'c-object-viewer__content' : 'c-object-viewer__content c-object-viewer__content--hidden'
562
+ } );
563
+
564
+ // Add properties to expanded view
565
+ this.addPropertiesToExpandedView( expandedView, data, isArray );
566
+ container.appendChild( expandedView );
567
+
568
+ // Add toggle functionality
569
+ this.setupToggleBehavior( toggleBtn, objectPreview, expandedView );
570
+ }
571
+
572
+ createObjectPreview( data, isArray ) {
573
+ let previewContent = '';
574
+
575
+ if ( isArray ) {
576
+ previewContent = html.span( { class: 'c-object-viewer__preview' },
577
+ 'Array ',
578
+ html.span( { class: 'c-object-viewer__array-bracket' }, '[' ),
579
+ data.length > 0 ? ` ${ data.length } ` : ' ',
580
+ html.span( { class: 'c-object-viewer__array-bracket' }, ']' )
581
+ );
582
+ } else {
583
+ const keys = Object.keys( data );
584
+ const keyElements = [];
585
+
586
+ if ( keys.length > 0 ) {
587
+ keys.slice( 0, 3 ).forEach( key => {
588
+ keyElements.push( html.span( { class: 'c-object-viewer__key' }, key ) );
589
+ keyElements.push( ', ' );
590
+ } );
591
+
592
+ // Remove the last comma
593
+ if ( keyElements.length > 0 ) {
594
+ keyElements.pop();
595
+ }
596
+
597
+ if ( keys.length > 3 ) {
598
+ keyElements.push( ', …' );
599
+ }
600
+ }
601
+
602
+ previewContent = html.span( { class: 'c-object-viewer__preview' },
603
+ html.span( { class: 'c-object-viewer__brace' }, '{' ),
604
+ ...keyElements,
605
+ html.span( { class: 'c-object-viewer__brace' }, '}' )
606
+ );
607
+ }
608
+
609
+ return previewContent;
610
+ }
611
+
612
+ addPropertiesToExpandedView( expandedView, data, isArray ) {
613
+ if ( isArray ) {
614
+ data.forEach( ( item, index ) => {
615
+ expandedView.appendChild(
616
+ this.createPropertyElement( index, item )
617
+ );
618
+ } );
619
+ } else {
620
+ Object.entries( data ).forEach( ( [ key, value ] ) => {
621
+ expandedView.appendChild(
622
+ this.createPropertyElement( key, value )
623
+ );
624
+ } );
625
+ }
626
+ }
627
+
628
+ createPropertyElement( key, value ) {
629
+ const property = html.div( { class: 'c-object-viewer__property' } );
630
+ const keySpan = html.span( { class: 'c-object-viewer__key' }, `${ key }` );
631
+ property.appendChild( keySpan );
632
+
633
+ if ( typeof value === 'object' && value !== null ) {
634
+ this.renderObjectViewer( property, value, false );
635
+ } else {
636
+ property.appendChild( this.formatPrimitiveValue( value ) );
637
+ }
638
+
639
+ return property;
640
+ }
641
+
642
+ formatPrimitiveValue( value ) {
643
+ let className = '';
644
+ let textContent = '';
645
+
646
+ switch ( typeof value ) {
647
+ case 'string':
648
+ className = 'c-object-viewer__string';
649
+ textContent = `"${ value }"`;
650
+ break;
651
+
652
+ case 'number':
653
+ className = 'c-object-viewer__number';
654
+ textContent = String( value );
655
+ break;
656
+
657
+ case 'boolean':
658
+ className = 'c-object-viewer__boolean';
659
+ textContent = String( value );
660
+ break;
661
+
662
+ case 'function':
663
+ className = 'c-object-viewer__function';
664
+ textContent = 'function()';
665
+ break;
666
+
667
+ case 'undefined':
668
+ className = 'c-object-viewer__undefined';
669
+ textContent = 'undefined';
670
+ break;
671
+
672
+ case 'object':
673
+ if ( value instanceof Date ) {
674
+ className = 'c-object-viewer__date';
675
+ textContent = value.toString();
676
+ } else if ( value === null ) {
677
+ className = 'c-object-viewer__null';
678
+ textContent = 'null';
679
+ } else {
680
+ className = 'c-object-viewer__preview';
681
+ textContent = String( value );
682
+ }
683
+ break;
684
+ default:
685
+ className = 'c-object-viewer__preview';
686
+ textContent = String( value );
687
+ }
688
+
689
+ return html.span( { class: className }, textContent );
690
+ }
691
+
692
+ setupToggleBehavior( toggleBtn, objectPreview, expandedView ) {
693
+ const toggleExpansion = () => {
694
+ toggleBtn.classList.toggle( 'c-object-viewer__toggle--expanded' );
695
+ expandedView.classList.toggle( 'c-object-viewer__content--hidden' );
696
+ };
697
+
698
+ toggleBtn.addEventListener( 'click', e => {
699
+ e.stopPropagation();
700
+ toggleExpansion();
701
+ } );
702
+
703
+ objectPreview.addEventListener( 'click', toggleExpansion );
704
+ }
705
+ }
706
+
707
+ customElements.define( 'object-viewer', ObjectViewer );
708
+
709
+ /**
710
+ * Creates a style string from an array of style arguments at a given index.
711
+ *
712
+ * @param styleArgs - Array of style strings.
713
+ * @param index - Index of the style to use.
714
+ * @returns The style string or an empty string if not applicable.
715
+ * @private
716
+ */
717
+ function _createStyleString( styleArgs, index ) {
718
+ if ( index < styleArgs.length && styleArgs[ index ] ) {
719
+ return styleArgs[ index ];
720
+ }
721
+ return '';
722
+ }