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,39 @@
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
+ * Watches for clicks outside of specified elements and triggers a callback when they occur.
8
+ *
9
+ * @param config - Configuration object.
10
+ * @param config.elements - Elements to monitor.
11
+ * @param config.callback - Function to call when click outside occurs.
12
+ * @returns Cleanup function to remove the listener.
13
+ */
14
+ export function createOutsideClickWatcher( { elements, callback } ) {
15
+ // Convert single element to array for consistent handling.
16
+ if ( !Array.isArray( elements ) ) {
17
+ elements = [ elements ];
18
+ }
19
+
20
+ // Handler function for click event.
21
+ const handleClick = event => {
22
+ // Check if click was outside all monitored elements.
23
+ const isOutside = !elements.some( element =>
24
+ element === event.target || element.contains( event.target )
25
+ );
26
+
27
+ if ( isOutside ) {
28
+ callback( event );
29
+ }
30
+ };
31
+
32
+ // Attach the event listener.
33
+ document.addEventListener( 'click', handleClick );
34
+
35
+ // Return cleanup function.
36
+ return () => {
37
+ document.removeEventListener( 'click', handleClick );
38
+ };
39
+ }
@@ -0,0 +1,55 @@
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
+ * Creates a cubic bezier easing function with the given control points.
8
+ *
9
+ * @param x1 - First control point X coordinate (0-1)
10
+ * @param y1 - First control point Y coordinate (0-1)
11
+ * @param x2 - Second control point X coordinate (0-1)
12
+ * @param y2 - Second control point Y coordinate (0-1)
13
+ * @returns A function that takes a value t (0-1) and returns the interpolated value
14
+ */
15
+ export function createCubicBezier( x1, y1, x2, y2 ) {
16
+ return function( t ) {
17
+ // Implementation of cubic bezier calculation
18
+ const cx = 3 * x1;
19
+ const bx = 3 * ( x2 - x1 ) - cx;
20
+ const ax = 1 - cx - bx;
21
+
22
+ const cy = 3 * y1;
23
+ const by = 3 * ( y2 - y1 ) - cy;
24
+ const ay = 1 - cy - by;
25
+
26
+ const sampleCurveX = t => ( ( ax * t + bx ) * t + cx ) * t;
27
+ const sampleCurveY = t => ( ( ay * t + by ) * t + cy ) * t;
28
+
29
+ let t2 = t;
30
+
31
+ // Newton-Raphson iteration to solve for t given x
32
+ for ( let i = 0; i < 8; i++ ) {
33
+ const x = sampleCurveX( t2 ) - t;
34
+ if ( Math.abs( x ) < 0.001 ) {
35
+ break;
36
+ }
37
+
38
+ const d = ( 3 * ax * t2 + 2 * bx ) * t2 + cx;
39
+ if ( Math.abs( d ) < 0.0001 ) {
40
+ break;
41
+ }
42
+
43
+ t2 = t2 - x / d;
44
+ }
45
+
46
+ return sampleCurveY( t2 );
47
+ };
48
+ }
49
+
50
+ /**
51
+ * Common easing functions derived from CSS `cubic-bezier()` timing functions.
52
+ */
53
+ export const easings = {
54
+ cubicOut: createCubicBezier( 0.215, 0.61, 0.355, 1 )
55
+ };
@@ -0,0 +1,21 @@
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 const Hours = {
7
+ to: {
8
+ milliseconds: num => num * 3600000
9
+ }
10
+ };
11
+
12
+ export const Days = {
13
+ to: {
14
+ milliseconds: num => num * 86400000
15
+ }
16
+ };
17
+ export const Weeks = {
18
+ to: {
19
+ milliseconds: num => num * 604800000
20
+ }
21
+ };
@@ -0,0 +1,23 @@
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
+ * Decodes common HTML entities in a string.
8
+ *
9
+ * @param text - Text that may contain HTML entities
10
+ * @returns Text with HTML entities replaced with their corresponding characters
11
+ */
12
+ export function decodeHtmlEntities( text ) {
13
+ return text
14
+ .replace( /&nbsp;/g, ' ' )
15
+ .replace( /&amp;/g, '&' )
16
+ .replace( /&lt;/g, '<' )
17
+ .replace( /&gt;/g, '>' )
18
+ .replace( /&quot;/g, '"' )
19
+ .replace( /&apos;/g, '\'' )
20
+ .replace( /&mdash;/g, '—' )
21
+ .replace( /&ndash;/g, '–' )
22
+ .replace( /&hellip;/g, '…' );
23
+ };
@@ -0,0 +1,59 @@
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
+ const ON_ESCAPE_CALLBACK_STACK = new Set();
7
+ let globalEscapeHandler = null;
8
+
9
+ /**
10
+ * Executes a callback when the Escape key is pressed.
11
+ *
12
+ * This function follows the UI layering pattern where pressing Escape
13
+ * only closes the topmost layer (like modals, dropdowns, or overlays).
14
+ * The most recently added callback is considered to be associated with
15
+ * the topmost UI layer and will be the only one executed.
16
+ *
17
+ * @param callback - The function to execute on Escape key press when it's the most recent addition.
18
+ * @returns A function that removes the event listener when called.
19
+ */
20
+ export function onEscapeKeyPress( callback ) {
21
+ if ( typeof callback !== 'function' ) {
22
+ throw new Error( 'Callback must be a function' );
23
+ }
24
+
25
+ // Global escape key handler (defined once)
26
+ if ( !globalEscapeHandler ) {
27
+ globalEscapeHandler = event => {
28
+ if ( event.key === 'Escape' || event.keyCode === 27 ) {
29
+ // Get the latest callback from the stack (if any)
30
+ const latestCallback = Array.from( ON_ESCAPE_CALLBACK_STACK ).pop();
31
+
32
+ if ( latestCallback ) {
33
+ latestCallback();
34
+
35
+ // Remove the executed callback
36
+ ON_ESCAPE_CALLBACK_STACK.delete( latestCallback );
37
+ }
38
+ }
39
+ };
40
+
41
+ document.addEventListener( 'keydown', globalEscapeHandler );
42
+ }
43
+
44
+ // Add the callback to the stack
45
+ ON_ESCAPE_CALLBACK_STACK.add( callback );
46
+
47
+ function unmount() {
48
+ ON_ESCAPE_CALLBACK_STACK.delete( callback );
49
+
50
+ // If stack is empty, remove the global handler
51
+ if ( ON_ESCAPE_CALLBACK_STACK.size === 0 && globalEscapeHandler ) {
52
+ document.removeEventListener( 'keydown', globalEscapeHandler );
53
+ globalEscapeHandler = null;
54
+ }
55
+ }
56
+
57
+ // Return a function to remove the callback if needed
58
+ return unmount;
59
+ }
@@ -0,0 +1,25 @@
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
+ * Fetches a stylesheet from the given URL and returns its content.
8
+ *
9
+ * @param url The URL of the stylesheet to fetch.
10
+ * @returns A promise that resolves with the stylesheet content.
11
+ */
12
+ export async function fetchStylesheet( url ) {
13
+ try {
14
+ const response = await fetch( url );
15
+
16
+ if ( !response.ok ) {
17
+ throw new Error( `Failed to fetch stylesheet: ${ response.status } ${ response.statusText }` );
18
+ }
19
+
20
+ return await response.text();
21
+ } catch ( error ) {
22
+ console.error( `Error fetching stylesheet from ${ url }:`, error );
23
+ throw error;
24
+ }
25
+ }
@@ -0,0 +1,85 @@
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 const PROGRAMMING_LANGUAGES = [
7
+ 'angular-html',
8
+ 'angular-ts',
9
+ 'astro',
10
+ 'bash',
11
+ 'blade',
12
+ 'c',
13
+ 'coffee',
14
+ 'coffeescript',
15
+ 'cpp',
16
+ 'c++',
17
+ 'css',
18
+ 'diff',
19
+ 'glsl',
20
+ 'graphql',
21
+ 'gql',
22
+ 'haml',
23
+ 'handlebars',
24
+ 'hbs',
25
+ 'html',
26
+ 'html-derivative',
27
+ 'http',
28
+ 'imba',
29
+ 'jade',
30
+ 'java',
31
+ 'javascript',
32
+ 'jinja',
33
+ 'jison',
34
+ 'jl',
35
+ 'js',
36
+ 'json',
37
+ 'json5',
38
+ 'jsonc',
39
+ 'jsonl',
40
+ 'jsx',
41
+ 'julia',
42
+ 'less',
43
+ 'lit',
44
+ 'markdown',
45
+ 'marko',
46
+ 'md',
47
+ 'mdc',
48
+ 'mdx',
49
+ 'php',
50
+ 'plain',
51
+ 'postcss',
52
+ 'py',
53
+ 'python',
54
+ 'pug',
55
+ 'r',
56
+ 'regex',
57
+ 'regexp',
58
+ 'sass',
59
+ 'scss',
60
+ 'sh',
61
+ 'shell',
62
+ 'shellscript',
63
+ 'sql',
64
+ 'styl',
65
+ 'stylus',
66
+ 'svelte',
67
+ 'text',
68
+ 'ts',
69
+ 'ts-tags',
70
+ 'tsx',
71
+ 'typescript',
72
+ 'vue',
73
+ 'vue-html',
74
+ 'wasm',
75
+ 'wgsl',
76
+ 'wit',
77
+ 'xml',
78
+ 'yaml',
79
+ 'yml',
80
+ 'zsh'
81
+ ];
82
+
83
+ export function findCodeLang( codeElement ) {
84
+ return Array.from( codeElement.classList ).find( className => PROGRAMMING_LANGUAGES.includes( className ) );
85
+ }
@@ -0,0 +1,50 @@
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 { isFocusable } from './is-focusable';
7
+ import { timeout } from './timeout';
8
+
9
+ /**
10
+ * Focuses the first interactive/focusable element within a container.
11
+ * If the container itself is focusable, it will be focused.
12
+ * Otherwise, the first focusable child element will be focused.
13
+ *
14
+ * @param container - The DOM element to search within
15
+ * @param [options] - Configuration options
16
+ * @param [options.includeContainer=true] - Whether to include the container element itself as a focus candidate
17
+ * @param [options.selector='a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])'] - Selector for focusable elements
18
+ * @returns The element that was focused, or null if no focusable element was found
19
+ */
20
+ export async function focusFirstInteractive( container, options = {} ) {
21
+ const {
22
+ includeContainer = true,
23
+ selector = 'a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])'
24
+ } = options;
25
+
26
+ // Find the first focusable element in the container
27
+ const focusableElements = container.querySelectorAll( selector );
28
+
29
+ if ( focusableElements.length > 0 ) {
30
+ return focusAndWait( focusableElements[ 0 ] );
31
+ }
32
+
33
+ // Check if the container itself is focusable
34
+ if ( includeContainer && isFocusable( container ) ) {
35
+ return focusAndWait( container );
36
+ }
37
+
38
+ return null;
39
+ }
40
+
41
+ /**
42
+ * Let's wait short period of the time to make the browser apply focus.
43
+ */
44
+ async function focusAndWait( element ) {
45
+ element.focus();
46
+
47
+ await timeout( 20 );
48
+
49
+ return element;
50
+ }
@@ -0,0 +1,181 @@
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
+ * Formats the HTML output for better readability.
8
+ */
9
+ export function formatHtml( input ) {
10
+ // Decode HTML entities before formatting.
11
+ input = decodeHtmlEntities( input );
12
+
13
+ // A list of block-like elements around which the new lines should be inserted, and within which
14
+ // the indentation of their children should be increased.
15
+ // The list is partially based on https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements that contains
16
+ // a full list of HTML block-level elements.
17
+ // A void element is an element that cannot have any child - https://html.spec.whatwg.org/multipage/syntax.html#void-elements.
18
+ // Note that <pre> element is not listed on this list to avoid breaking whitespace formatting.
19
+ // Note that <br> element is not listed and handled separately so no additional white spaces are injected.
20
+ const elementsToFormat = [
21
+ { name: 'address', isVoid: false },
22
+ { name: 'article', isVoid: false },
23
+ { name: 'aside', isVoid: false },
24
+ { name: 'blockquote', isVoid: false },
25
+ { name: 'details', isVoid: false },
26
+ { name: 'dialog', isVoid: false },
27
+ { name: 'dd', isVoid: false },
28
+ { name: 'div', isVoid: false },
29
+ { name: 'dl', isVoid: false },
30
+ { name: 'dt', isVoid: false },
31
+ { name: 'fieldset', isVoid: false },
32
+ { name: 'figcaption', isVoid: false },
33
+ { name: 'figure', isVoid: false },
34
+ { name: 'footer', isVoid: false },
35
+ { name: 'form', isVoid: false },
36
+ { name: 'h1', isVoid: false },
37
+ { name: 'h2', isVoid: false },
38
+ { name: 'h3', isVoid: false },
39
+ { name: 'h4', isVoid: false },
40
+ { name: 'h5', isVoid: false },
41
+ { name: 'h6', isVoid: false },
42
+ { name: 'header', isVoid: false },
43
+ { name: 'hgroup', isVoid: false },
44
+ { name: 'hr', isVoid: true },
45
+ { name: 'li', isVoid: false },
46
+ { name: 'main', isVoid: false },
47
+ { name: 'nav', isVoid: false },
48
+ { name: 'ol', isVoid: false },
49
+ { name: 'p', isVoid: false },
50
+ { name: 'section', isVoid: false },
51
+ { name: 'table', isVoid: false },
52
+ { name: 'tbody', isVoid: false },
53
+ { name: 'td', isVoid: false },
54
+ { name: 'th', isVoid: false },
55
+ { name: 'thead', isVoid: false },
56
+ { name: 'tr', isVoid: false },
57
+ { name: 'ul', isVoid: false }
58
+ ];
59
+
60
+ const elementNamesToFormat = elementsToFormat.map( element => element.name ).join( '|' );
61
+
62
+ // It is not the fastest way to format the HTML markup but the performance should be good enough.
63
+ const lines = input
64
+ // Add new line before and after `<tag>` and `</tag>`.
65
+ // It may separate individual elements with two new lines, but this will be fixed below.
66
+ .replace( new RegExp( `</?(${ elementNamesToFormat })( .*?)?>`, 'g' ), '\n$&\n' )
67
+ // Keep `<br>`s at the end of line to avoid adding additional whitespaces before `<br>`.
68
+ .replace( /<br[^>]*>/g, '$&\n' )
69
+ // Divide input string into lines, which start with either an opening tag, a closing tag, or just a text.
70
+ .split( '\n' );
71
+
72
+ let indentCount = 0;
73
+ let isPreformattedLine = false;
74
+
75
+ return lines
76
+ .filter( line => line.length )
77
+ .map( line => {
78
+ isPreformattedLine = isPreformattedBlockLine( line, isPreformattedLine );
79
+
80
+ if ( isNonVoidOpeningTag( line, elementsToFormat ) ) {
81
+ return indentLine( line, indentCount++ );
82
+ }
83
+
84
+ if ( isClosingTag( line, elementsToFormat ) ) {
85
+ return indentLine( line, --indentCount );
86
+ }
87
+
88
+ if ( isPreformattedLine === 'middle' || isPreformattedLine === 'last' ) {
89
+ return line;
90
+ }
91
+
92
+ return indentLine( line, indentCount );
93
+ } )
94
+ .join( '\n' );
95
+ }
96
+
97
+ /**
98
+ * Decodes HTML entities to their character representations.
99
+ *
100
+ * @param html HTML string with entities.
101
+ * @returns HTML string with decoded entities.
102
+ */
103
+ function decodeHtmlEntities( html ) {
104
+ const entities = {
105
+ '&quot;': '\'',
106
+ '&amp;': '&',
107
+ '&lt;': '<',
108
+ '&gt;': '>',
109
+ '&nbsp;': ' ',
110
+ '&apos;': '\'',
111
+ '&#39;': '\'',
112
+ '&#x2F;': '/',
113
+ '&#x27;': '\'',
114
+ '&#x60;': '`'
115
+ };
116
+
117
+ return html.replace( /&quot;|&amp;|&lt;|&gt;|&nbsp;|&apos;|&#39;|&#x2F;|&#x27;|&#x60;/g,
118
+ match => entities[ match ] );
119
+ }
120
+
121
+ /**
122
+ * Checks, if an argument is an opening tag of a non-void element to be formatted.
123
+ *
124
+ * @param line String to check.
125
+ * @param elementsToFormat Elements to be formatted.
126
+ */
127
+ function isNonVoidOpeningTag( line, elementsToFormat ) {
128
+ return elementsToFormat.some( element => {
129
+ if ( element.isVoid ) {
130
+ return false;
131
+ }
132
+
133
+ if ( !new RegExp( `<${ element.name }( .*?)?>` ).test( line ) ) {
134
+ return false;
135
+ }
136
+
137
+ return true;
138
+ } );
139
+ }
140
+
141
+ /**
142
+ * Checks, if an argument is a closing tag.
143
+ *
144
+ * @param line String to check.
145
+ * @param elementsToFormat Elements to be formatted.
146
+ */
147
+ function isClosingTag( line, elementsToFormat ) {
148
+ return elementsToFormat.some( element => {
149
+ return new RegExp( `</${ element.name }>` ).test( line );
150
+ } );
151
+ }
152
+
153
+ /**
154
+ * Indents a line by a specified number of characters.
155
+ *
156
+ * @param line Line to indent.
157
+ * @param indentCount Number of characters to use for indentation.
158
+ * @param indentChar Indentation character(s). 4 spaces by default.
159
+ */
160
+ function indentLine( line, indentCount, indentChar = ' ' ) {
161
+ // More about Math.max() here in https://github.com/ckeditor/ckeditor5/issues/10698.
162
+ return `${ indentChar.repeat( Math.max( 0, indentCount ) ) }${ line }`;
163
+ }
164
+
165
+ /**
166
+ * Checks whether a line belongs to a preformatted (`<pre>`) block.
167
+ *
168
+ * @param line Line to check.
169
+ * @param isPreviousLinePreFormatted Information on whether the previous line was preformatted (and how).
170
+ */
171
+ function isPreformattedBlockLine( line, isPreviousLinePreFormatted ) {
172
+ if ( new RegExp( '<pre( .*?)?>' ).test( line ) ) {
173
+ return 'first';
174
+ } else if ( new RegExp( '</pre>' ).test( line ) ) {
175
+ return 'last';
176
+ } else if ( isPreviousLinePreFormatted === 'first' || isPreviousLinePreFormatted === 'middle' ) {
177
+ return 'middle';
178
+ } else {
179
+ return false;
180
+ }
181
+ }
@@ -0,0 +1,34 @@
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
+ * Checks if an element is scrollable.
8
+ */
9
+ export function getAllScrollableParents( element, includeWindow = false ) {
10
+ const scrollableParents = [];
11
+
12
+ while ( element && element !== document.body ) {
13
+ if ( isElementScrollable( element ) ) {
14
+ scrollableParents.push( element );
15
+ }
16
+
17
+ element = element.parentNode;
18
+ }
19
+
20
+ if ( includeWindow ) {
21
+ scrollableParents.push( window );
22
+ }
23
+
24
+ return scrollableParents;
25
+ }
26
+
27
+ /**
28
+ * Checks if an element is scrollable.
29
+ */
30
+ export function isElementScrollable( element ) {
31
+ const overflowY = window.getComputedStyle( element ).overflowY;
32
+
33
+ return overflowY === 'auto' || overflowY === 'scroll';
34
+ }
@@ -0,0 +1,26 @@
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
+ * Get all ancestors of an element until the first match of a given selector.
8
+ *
9
+ * @param el - The DOM element.
10
+ * @param selector - A CSS selector to stop at. If the element matches this selector, it will not be included in the result.
11
+ * @returns {HTMLElement[]} An array of ancestor elements, until the first match of the selector.
12
+ */
13
+ export const getParentsUntil = ( el, selector ) => {
14
+ const parents = [];
15
+ let _el = el.parentNode;
16
+
17
+ while ( _el && typeof _el.matches === 'function' ) {
18
+ parents.unshift( _el );
19
+ if ( _el.matches( selector ) ) {
20
+ return parents;
21
+ } else {
22
+ _el = _el.parentNode;
23
+ }
24
+ }
25
+ return [];
26
+ };
@@ -0,0 +1,18 @@
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 { codeToHtml } from 'shiki';
7
+
8
+ export async function highlightCode( codeString, lang ) {
9
+ const highlightedHTML = await codeToHtml( codeString.trim(), {
10
+ lang,
11
+ theme: 'github-light'
12
+ } );
13
+
14
+ const highlightedHTMLWithTabsInsteadOfSpaces = highlightedHTML.replaceAll( / {4}/g, ' ' );
15
+ const highlightedHTMLWithClasses = highlightedHTMLWithTabsInsteadOfSpaces.replaceAll( 'shiki', `shiki ${ lang }` );
16
+
17
+ return highlightedHTMLWithClasses;
18
+ }
@@ -0,0 +1,69 @@
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
+ * Creates a proxy handler for HTML element creation with a fluent API.
8
+ */
9
+ function createHtmlBuilder() {
10
+ const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
11
+ const SVG_ELEMENTS = [ 'svg', 'use', 'title', 'path', 'rect', 'circle', 'g', 'polygon' ];
12
+
13
+ const handler = {
14
+ get( _, tag ) {
15
+ return ( attributes = {}, ...children ) => {
16
+ if ( children ) {
17
+ children = children.flat().filter( Boolean );
18
+ }
19
+
20
+ // If the first argument is a string or DOM element, treat it as a child
21
+ if ( typeof attributes === 'string' || attributes instanceof Node ) {
22
+ children.unshift( attributes );
23
+ attributes = {};
24
+ }
25
+
26
+ // Create the element - use SVG namespace for SVG elements
27
+ const isSvgElement = SVG_ELEMENTS.includes( tag );
28
+ const element = isSvgElement ?
29
+ document.createElementNS( SVG_NAMESPACE, tag ) :
30
+ document.createElement( tag );
31
+
32
+ // Set attributes
33
+ for ( const [ key, value ] of Object.entries( attributes ) ) {
34
+ if ( value === true ) {
35
+ element.setAttribute( key, '' );
36
+ } else if ( value !== false && value !== null && value !== undefined ) {
37
+ element.setAttribute( key, value );
38
+ }
39
+ }
40
+
41
+ // Add children
42
+ for ( const child of children ) {
43
+ if ( child !== null && child !== undefined ) {
44
+ if ( typeof child === 'string' ) {
45
+ element.appendChild( document.createTextNode( child ) );
46
+ } else if ( child instanceof Node ) {
47
+ element.appendChild( child );
48
+ }
49
+ }
50
+ }
51
+
52
+ return element;
53
+ };
54
+ }
55
+ };
56
+
57
+ return new Proxy( {}, handler );
58
+ }
59
+
60
+ /**
61
+ * A proxy for creating HTML elements with a fluent API.
62
+ *
63
+ * @example
64
+ * // Create a div with class 'container' and id 'main'
65
+ * const div = html.div({ class: 'container', id: 'main' },
66
+ * html.span('Hello World')
67
+ * );
68
+ */
69
+ export const html = createHtmlBuilder();