@brillout/docpress 0.5.40 → 0.6.1

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 (146) hide show
  1. package/+config.ts +17 -0
  2. package/MobileHeader.tsx +68 -0
  3. package/PageLayout.css +42 -0
  4. package/PageLayout.tsx +39 -0
  5. package/algolia/DocSearch.css +34 -0
  6. package/algolia/DocSearch.ts +62 -0
  7. package/autoScrollNav.ts +36 -0
  8. package/components/CodeBlockTransformer.css +9 -0
  9. package/components/CodeBlockTransformer.tsx +18 -0
  10. package/components/Comment.tsx +7 -0
  11. package/components/Consulting.tsx +47 -0
  12. package/components/Contributors.tsx +113 -0
  13. package/components/EditPageNote.tsx +18 -0
  14. package/components/FeatureList/FeatureList.client.ts +66 -0
  15. package/{dist/components/features → components/FeatureList}/FeatureList.css +10 -2
  16. package/components/FeatureList/FeatureList.tsx +114 -0
  17. package/components/HorizontalLine.tsx +20 -0
  18. package/components/ImportMeta.tsx +11 -0
  19. package/components/Link.tsx +144 -0
  20. package/components/Note.css +54 -0
  21. package/components/Note.tsx +78 -0
  22. package/components/P.css +8 -0
  23. package/components/P.tsx +8 -0
  24. package/components/ReadingRecommendation.tsx +56 -0
  25. package/components/RepoLink.tsx +24 -0
  26. package/components/Sponsors/label.draft.svg +108 -0
  27. package/components/Sponsors.tsx +218 -0
  28. package/components/Supporters.tsx +136 -0
  29. package/components/index.ts +14 -0
  30. package/config/getConfig.ts +18 -0
  31. package/config/resolveConfig/resolveHeading.ts +0 -0
  32. package/config/resolvePageContext.ts +186 -0
  33. package/css/button.css +7 -0
  34. package/css/code/block.css +36 -0
  35. package/css/code/inline.css +27 -0
  36. package/css/code.css +20 -0
  37. package/css/colorize-on-hover.css +29 -0
  38. package/css/font.css +25 -0
  39. package/css/heading.css +45 -0
  40. package/css/index.css +12 -0
  41. package/css/link.css +17 -0
  42. package/css/reset.css +12 -0
  43. package/css/table.css +14 -0
  44. package/css/tooltip.css +11 -0
  45. package/data/maintainersList.tsx +92 -0
  46. package/data/sponsorsList.ts +147 -0
  47. package/dist/+config.d.ts +19 -0
  48. package/dist/+config.js +15 -0
  49. package/dist/markdownHeadingsVitePlugin.d.ts +13 -0
  50. package/dist/markdownHeadingsVitePlugin.js +170 -0
  51. package/dist/utils/assert.d.ts +6 -0
  52. package/dist/utils/assert.js +48 -0
  53. package/dist/utils/determineSectionUrlHash.d.ts +4 -0
  54. package/dist/utils/determineSectionUrlHash.js +38 -0
  55. package/dist/vite.config.d.ts +3 -0
  56. package/dist/vite.config.js +32 -0
  57. package/index.ts +4 -0
  58. package/installSectionUrlHashs.ts +60 -0
  59. package/markdownHeadingsVitePlugin.ts +150 -0
  60. package/navigation/Navigation-highlight.css +41 -0
  61. package/navigation/Navigation-items.css +119 -0
  62. package/navigation/Navigation-layout.css +127 -0
  63. package/navigation/Navigation.client.ts +43 -0
  64. package/navigation/Navigation.css +3 -0
  65. package/navigation/Navigation.tsx +211 -0
  66. package/navigation/NavigationHeader.tsx +111 -0
  67. package/navigation/navigation-fullscreen/NavigationFullscreenButton.css +32 -0
  68. package/navigation/navigation-fullscreen/NavigationFullscreenButton.tsx +44 -0
  69. package/navigation/navigation-fullscreen/initNavigationFullscreen.ts +116 -0
  70. package/package.json +38 -53
  71. package/parseEmojis.ts +35 -0
  72. package/parseTitle.ts +139 -0
  73. package/renderer/client.ts +4 -0
  74. package/renderer/onRenderHtml.tsx +69 -0
  75. package/renderer/usePageContext.tsx +25 -0
  76. package/tsconfig.config.json +7 -0
  77. package/tsconfig.json +15 -0
  78. package/types/Config.ts +46 -0
  79. package/types/Heading.ts +49 -0
  80. package/utils/Emoji/Emoji.ts +224 -0
  81. package/utils/Emoji/assets.ts +9 -0
  82. package/utils/Emoji/index.ts +1 -0
  83. package/utils/Emoji/mountain.svg +1 -0
  84. package/utils/assert.ts +51 -0
  85. package/utils/client.ts +2 -0
  86. package/utils/determineSectionUrlHash.ts +44 -0
  87. package/utils/filesystemPathHandling.ts +42 -0
  88. package/utils/filter.ts +12 -0
  89. package/utils/isBrowser.ts +5 -0
  90. package/utils/jsxToTextContent.ts +11 -0
  91. package/utils/objectAssign.ts +9 -0
  92. package/utils/server.ts +7 -0
  93. package/vite.config.ts +36 -0
  94. package/bin.js +0 -3
  95. package/dist/chunk-2ZTPUQGS.js +0 -58
  96. package/dist/chunk-3QC7HYIF.js +0 -7
  97. package/dist/chunk-MGOI4AFO.js +0 -165
  98. package/dist/chunk-NVJING6T.js +0 -91
  99. package/dist/chunk-QWL3MA4E.js +0 -171
  100. package/dist/chunk-UN23G34B.js +0 -157
  101. package/dist/cli/index.d.ts +0 -1
  102. package/dist/cli/index.js +0 -34
  103. package/dist/components/features/FeatureList.d.ts +0 -13
  104. package/dist/components/features/FeatureList.js +0 -7
  105. package/dist/components/features/initFeatureList.d.ts +0 -3
  106. package/dist/components/features/initFeatureList.js +0 -59
  107. package/dist/devServer-JKH6U5PF.js +0 -36
  108. package/dist/index.css +0 -120
  109. package/dist/index.d.ts +0 -221
  110. package/dist/index.js +0 -947
  111. package/dist/renderer/_default.page.client.css +0 -318
  112. package/dist/renderer/_default.page.client.d.ts +0 -1
  113. package/dist/renderer/_default.page.client.js +0 -218
  114. package/dist/renderer/_default.page.server.css +0 -310
  115. package/dist/renderer/_default.page.server.d.ts +0 -22
  116. package/dist/renderer/_default.page.server.js +0 -665
  117. package/readme.md +0 -5
  118. /package/{dist/chevron-R2IYJD62.svg → components/FeatureList/chevron.svg} +0 -0
  119. /package/{dist/label-MP75CTIA.svg → components/Sponsors/label.svg} +0 -0
  120. /package/{dist/medalBronze-CO4CTUR4.svg → components/Sponsors/medalBronze.svg} +0 -0
  121. /package/{dist/medalGold-UP6A73FL.svg → components/Sponsors/medalGold.svg} +0 -0
  122. /package/{dist/medalSilver-FAPGGOBN.svg → components/Sponsors/medalSilver.svg} +0 -0
  123. /package/{dist/Inter-Var-IOAEQULN.ttf → css/Inter-Var.ttf} +0 -0
  124. /package/{dist/alignable-B4QZV4X7.svg → data/sponsorsList/companyLogos/alignable.svg} +0 -0
  125. /package/{dist/bluefin-JQABZFGV.svg → data/sponsorsList/companyLogos/bluefin.svg} +0 -0
  126. /package/{dist/burdaforward-EUGURYZY.png → data/sponsorsList/companyLogos/burdaforward.png} +0 -0
  127. /package/{dist/contra-WLZBOPBV.svg → data/sponsorsList/companyLogos/contra.svg} +0 -0
  128. /package/{dist/ecosia-OYRLTR5T.svg → data/sponsorsList/companyLogos/ecosia.svg} +0 -0
  129. /package/{dist/inlang-GFRWND6X.png → data/sponsorsList/companyLogos/inlang.png} +0 -0
  130. /package/{dist/optimizers-SFEZF3NW.svg → data/sponsorsList/companyLogos/optimizers.svg} +0 -0
  131. /package/{dist/sourcegraph-YR2HADLS.svg → data/sponsorsList/companyLogos/sourcegraph.svg} +0 -0
  132. /package/{dist/changelog-IPI5F42D.svg → icons/changelog.svg} +0 -0
  133. /package/{dist/discord-JD33TUSF.svg → icons/discord.svg} +0 -0
  134. /package/{dist/github-P5ZSKN2N.svg → icons/github.svg} +0 -0
  135. /package/{dist/heart-OINVKOXO.svg → icons/heart.svg} +0 -0
  136. /package/{dist/languages-KXPKJFQL.svg → icons/languages.svg} +0 -0
  137. /package/{dist/people-72KKQHU4.svg → icons/people.svg} +0 -0
  138. /package/{dist/twitter-I7DXDN3J.svg → icons/twitter.svg} +0 -0
  139. /package/{dist/chevron-K3WPYLOP.svg → navigation/navigation-fullscreen/chevron.svg} +0 -0
  140. /package/{dist/close-IQXTDOHV.svg → navigation/navigation-fullscreen/close.svg} +0 -0
  141. /package/{dist/compass-2RWQU3E4.svg → utils/Emoji/compass.svg} +0 -0
  142. /package/{dist/engine-6Q6VSCVA.png → utils/Emoji/engine.png} +0 -0
  143. /package/{dist/mechanical-arm-TR7IQQMG.svg → utils/Emoji/mechanical-arm.svg} +0 -0
  144. /package/{dist/road-fork-3WZLW3HB.svg → utils/Emoji/road-fork.svg} +0 -0
  145. /package/{dist/shield-CU45RG5C.svg → utils/Emoji/shield.svg} +0 -0
  146. /package/{dist/typescript-ALIPKLRM.svg → utils/Emoji/typescript.svg} +0 -0
@@ -1,318 +0,0 @@
1
- @import "balloon-css";
2
-
3
- /* src/css/reset.css */
4
- * {
5
- box-sizing: border-box;
6
- }
7
- body {
8
- margin: 0;
9
- }
10
- iframe {
11
- max-width: 100%;
12
- }
13
-
14
- /* src/css/colorize-on-hover.css */
15
- .colorize-on-hover,
16
- .colorize-on-hover [class^=decolorize-],
17
- .colorize-on-hover [class*=" decolorize-"] {
18
- transition: filter 0.3s ease-in-out;
19
- }
20
- .colorize-on-hover:hover,
21
- .colorize-on-hover:hover [class^=decolorize-],
22
- .colorize-on-hover:hover [class*=" decolorize-"] {
23
- filter: grayscale(0) opacity(1) !important;
24
- }
25
- .decolorize-7 {
26
- filter: grayscale(1) opacity(0.7);
27
- }
28
- .decolorize-6 {
29
- filter: grayscale(1) opacity(0.6);
30
- }
31
- .decolorize-5 {
32
- filter: grayscale(1) opacity(0.5);
33
- }
34
- .decolorize-4 {
35
- filter: grayscale(1) opacity(0.4);
36
- }
37
-
38
- /* src/css/heading.css */
39
- .doc-page h2,
40
- .doc-page h3 {
41
- margin-bottom: 16px;
42
- }
43
- .doc-page h2 {
44
- margin-top: 50px;
45
- }
46
- .doc-page h3 {
47
- margin-top: 40px;
48
- }
49
- .doc-page h1 + h2,
50
- .doc-page h1 + h3,
51
- .doc-page h2 + h3 {
52
- margin-top: 0;
53
- }
54
- .doc-page h4 {
55
- margin-top: 32px;
56
- margin-bottom: 16px;
57
- }
58
- .doc-page h5 {
59
- font-size: 0.94em;
60
- color: #777;
61
- margin-bottom: 10px;
62
- }
63
- .doc-page h2[id],
64
- .doc-page h3[id] {
65
- cursor: pointer;
66
- position: relative;
67
- padding-left: 26px;
68
- margin-left: -26px;
69
- }
70
- .doc-page h2[id]:hover::before,
71
- .doc-page h3[id]:hover::before {
72
- content: "#";
73
- position: absolute;
74
- left: calc(-1 * (0.75em - 26px));
75
- color: #aaa;
76
- }
77
-
78
- /* src/css/button.css */
79
- button,
80
- a.button {
81
- background-color: #fafafa;
82
- border: 1px solid #aaa;
83
- border-radius: 5px;
84
- cursor: pointer;
85
- }
86
-
87
- /* src/css/link.css */
88
- a {
89
- color: #4747ff;
90
- text-decoration: none;
91
- }
92
- a > button {
93
- color: var(--color-text);
94
- }
95
-
96
- /* src/css/font.css */
97
- body {
98
- font-family: "Inter";
99
- }
100
- button {
101
- font-family: inherit;
102
- }
103
- body {
104
- --color-text: #323d48;
105
- color: var(--color-text);
106
- line-height: 1.5;
107
- }
108
- @font-face {
109
- font-family: "Inter";
110
- font-weight: 100 900;
111
- font-stretch: 75% 125%;
112
- font-style: oblique 0deg 12deg;
113
- src: url(../Inter-Var-IOAEQULN.ttf) format("truetype-variations");
114
- }
115
- em,
116
- i {
117
- font-variation-settings: "slnt" -10;
118
- font-style: normal;
119
- }
120
-
121
- /* src/css/code/inline.css */
122
- code {
123
- padding: 2px 5px;
124
- }
125
- code {
126
- display: inline-block;
127
- }
128
- @media screen and (max-width: 500px) {
129
- code {
130
- word-break: break-word;
131
- display: inline;
132
- }
133
- }
134
- .inline-code-break code {
135
- display: inline;
136
- word-break: break-word;
137
- }
138
- code.long {
139
- word-break: break-word;
140
- display: inline;
141
- }
142
-
143
- /* src/css/code/block.css */
144
- pre > code {
145
- padding: 16px !important;
146
- }
147
- @media screen and (max-width: 900px) {
148
- pre > code {
149
- font-size: 0.7em;
150
- }
151
- }
152
- pre {
153
- display: grid;
154
- }
155
- pre > code {
156
- padding-right: 0px !important;
157
- overflow-x: auto;
158
- }
159
- @media screen and (max-width: 1139px) {
160
- pre > code {
161
- font-size: 0.95em;
162
- }
163
- }
164
- @media screen and (max-width: 1040px) {
165
- pre > code {
166
- font-size: 0.8em;
167
- }
168
- }
169
- @media screen and (max-width: 940px) {
170
- pre > code {
171
- font-size: 0.7em;
172
- }
173
- }
174
- pre > code {
175
- display: reset;
176
- word-break: reset;
177
- }
178
-
179
- /* src/css/code.css */
180
- code {
181
- background-color: rgba(0, 0, 0, 0.043137255);
182
- border-radius: 4px;
183
- }
184
- code {
185
- font-size: 1.1em;
186
- }
187
- pre > code {
188
- font-size: 1em;
189
- }
190
-
191
- /* src/css/table.css */
192
- table th {
193
- background-color: #f7f7f7;
194
- }
195
- table {
196
- border-collapse: collapse;
197
- }
198
- table td,
199
- table th {
200
- padding: 8px;
201
- border: 1px solid #ccc;
202
- }
203
- table th {
204
- text-align: left;
205
- }
206
-
207
- /* src/css/tooltip.css */
208
- :root {
209
- --balloon-color: #444;
210
- --balloon-move: 2px;
211
- --balloon-font-size: 14px;
212
- --balloon-border-radius: 5px;
213
- }
214
- [aria-label][data-balloon-pos]:after {
215
- font-family: "Inter";
216
- }
217
-
218
- /* src/algolia/DocSearch.css */
219
- .DocSearch-Button-Keys {
220
- margin-left: 6px !important;
221
- }
222
- .DocSearch-Search-Icon {
223
- margin-right: 0 !important;
224
- }
225
- .DocSearch-Button-Placeholder {
226
- padding-right: 6px !important;
227
- }
228
- #docsearch-desktop {
229
- max-width: 110px !important;
230
- }
231
- #docsearch-desktop .DocSearch-Button-Placeholder,
232
- #docsearch-desktop .DocSearch-Button-Keys {
233
- display: none;
234
- }
235
- #docsearch-desktop .DocSearch-Button {
236
- background: transparent !important;
237
- padding: 0 !important;
238
- position: relative;
239
- top: -1px;
240
- outline: none !important;
241
- border: none !important;
242
- box-shadow: none !important;
243
- }
244
- #docsearch-desktop .DocSearch-Search-Icon {
245
- height: 21px !important;
246
- width: 21px !important;
247
- }
248
- #docsearch-desktop .DocSearch-Button {
249
- margin-right: 3px !important;
250
- margin-left: 1px !important;
251
- }
252
-
253
- /* src/components/Note.css */
254
- blockquote {
255
- --color:
256
- 0,
257
- 0,
258
- 0;
259
- --color-strengh-bg: 0.7;
260
- --color-strengh-border: 1.5;
261
- border-left: 8px solid rgba(var(--color), calc(0.06 * var(--color-strengh-border)));
262
- background-color: rgba(var(--color), calc(0.03 * var(--color-strengh-bg)));
263
- margin-left: 0;
264
- margin-right: 0;
265
- padding: 4px 16px;
266
- }
267
- blockquote.note-color-red {
268
- --color-strengh-bg: 1.7;
269
- --color-strengh-border: 6;
270
- --color:
271
- 190,
272
- 25,
273
- 49;
274
- }
275
- blockquote.note-color-yellow {
276
- --color-strengh-bg: 4;
277
- --color-strengh-border: 8;
278
- --color:
279
- 255,
280
- 204,
281
- 50;
282
- }
283
- .blockquote-content {
284
- display: inline;
285
- }
286
- blockquote.custom-icon > .blockquote-content > :first-child {
287
- display: inline;
288
- }
289
- blockquote.type-construction img[src^="https://twemoji."] {
290
- margin-right: 2px;
291
- }
292
- blockquote.type-warning img[src^="https://twemoji."] {
293
- position: relative;
294
- top: -1px;
295
- margin-right: 2px;
296
- }
297
- blockquote.type-danger img[src^="https://twemoji."] {
298
- margin-right: 2px;
299
- }
300
- blockquote > p:first-child::before,
301
- blockquote > div.paragraph:first-child::before {
302
- font-family: emoji;
303
- content: "\2139\fe0f";
304
- margin-right: 7px;
305
- }
306
-
307
- /* src/components/CodeBlockTransformer.css */
308
- .with-line-break_white-space code,
309
- .with-line-break_break-word code {
310
- white-space: break-spaces;
311
- padding-right: 16px !important;
312
- }
313
- .with-line-break_break-word code {
314
- word-wrap: break-word;
315
- word-break: break-all;
316
- }
317
-
318
- /* src/css/index.css */
@@ -1,218 +0,0 @@
1
- import {
2
- assert
3
- } from "../chunk-2ZTPUQGS.js";
4
- import "../chunk-3QC7HYIF.js";
5
-
6
- // src/autoScrollNav.ts
7
- autoScrollNav();
8
- function autoScrollNav() {
9
- const navigationEl = document.getElementById("navigation-content-main");
10
- assert(navigationEl);
11
- const href = window.location.pathname;
12
- const navLinks = Array.from(navigationEl.querySelectorAll(`a[href="${href}"]`));
13
- assert(navLinks.length <= 1, { navLinks, href });
14
- const navLink = navLinks[0];
15
- if (!navLink)
16
- return;
17
- const scrollTopOriginal = document.documentElement.scrollTop;
18
- navLink.scrollIntoView({
19
- behavior: "instant",
20
- block: "center",
21
- inline: "start"
22
- });
23
- document.documentElement.scrollTop = scrollTopOriginal;
24
- }
25
-
26
- // src/installSectionUrlHashs.ts
27
- installSectionUrlHashs();
28
- function installSectionUrlHashs() {
29
- const pageContainer = document.querySelector(".doc-page #page-container");
30
- if (!pageContainer) {
31
- assert(window.location.pathname === "/");
32
- return;
33
- }
34
- const headings = [...Array.from(document.querySelectorAll("h2")), ...Array.from(document.querySelectorAll("h3"))];
35
- headings.forEach((heading) => {
36
- if (!heading.id)
37
- return;
38
- const urlHash = "#" + heading.id;
39
- assertNavLink(urlHash, heading);
40
- heading.onclick = () => {
41
- window.location.hash = urlHash;
42
- jumpToSection();
43
- };
44
- });
45
- }
46
- function assertNavLink(urlHash, heading) {
47
- const navigationEl = getNavigationEl();
48
- {
49
- const parentNavLinkMatch = Array.from(navigationEl.querySelectorAll(`a[href="${window.location.pathname}"]`));
50
- assert(parentNavLinkMatch.length === 1);
51
- }
52
- {
53
- const navLinks = Array.from(navigationEl.querySelectorAll(`a[href="${urlHash}"]`));
54
- const { tagName } = heading;
55
- assert(tagName.startsWith("H"));
56
- const lengthExpected = tagName === "H2" ? 1 : 0;
57
- assert(navLinks.length === lengthExpected, { urlHash });
58
- }
59
- }
60
- function jumpToSection() {
61
- const { hash } = window.location;
62
- if (hash === "" || hash === "#") {
63
- return;
64
- }
65
- assert(hash.startsWith("#"));
66
- const target = document.getElementById(hash.slice(1));
67
- if (!target) {
68
- return;
69
- }
70
- target.scrollIntoView();
71
- }
72
- function getNavigationEl() {
73
- const elems = Array.from(document.querySelectorAll("#navigation-container"));
74
- assert(elems.length === 1);
75
- const navigationEl = elems[0];
76
- return navigationEl;
77
- }
78
-
79
- // src/navigation/navigation-fullscreen/initNavigationFullscreen.ts
80
- var scrollPositionBeforeToggle = 0;
81
- function initNavigationFullscreen() {
82
- updateColumnWidth();
83
- window.addEventListener("resize", updateColumnWidth, { passive: true });
84
- document.getElementById("navigation-fullscreen-button").onclick = toggleNavExpend;
85
- document.getElementById("navigation-fullscreen-close").onclick = toggleNavExpend;
86
- document.addEventListener(
87
- "keydown",
88
- (ev) => {
89
- if (document.body.classList.contains("DocSearch--active"))
90
- return;
91
- if (ev.key === "Escape")
92
- toggleNavExpend();
93
- },
94
- false
95
- );
96
- }
97
- function toggleNavExpend() {
98
- const navContainer = document.getElementById("navigation-container");
99
- const scrollPos = navContainer.scrollTop;
100
- document.documentElement.classList.toggle("navigation-fullscreen");
101
- if (scrollPositionBeforeToggle !== void 0) {
102
- navContainer.scrollTop = scrollPositionBeforeToggle;
103
- }
104
- scrollPositionBeforeToggle = scrollPos;
105
- }
106
- function updateColumnWidth() {
107
- const navMinWidth = 299;
108
- const navH1Groups = Array.from(document.querySelectorAll("#navigation-content-main .nav-h1-group"));
109
- const numberOfColumnsMax = navH1Groups.length;
110
- const widthAvailable = getViewportWidth();
111
- const numberOfColumns = Math.max(1, Math.min(numberOfColumnsMax, Math.floor(widthAvailable / navMinWidth)));
112
- let columns = navH1Groups.map((navH1Group) => {
113
- const column = [
114
- {
115
- element: navH1Group,
116
- elementHeight: navH1Group.children.length
117
- }
118
- ];
119
- return column;
120
- });
121
- mergeColumns(columns, numberOfColumns);
122
- const navContent = document.getElementById("navigation-content-main");
123
- Array.from(navContent.children).forEach((child) => {
124
- assert(child.className === "nav-column");
125
- });
126
- navContent.innerHTML = "";
127
- columns.forEach((column) => {
128
- const columnEl = document.createElement("div");
129
- columnEl.className = "nav-column";
130
- column.forEach(({ element }) => {
131
- columnEl.appendChild(element);
132
- });
133
- navContent.appendChild(columnEl);
134
- });
135
- const navItemMaxWidth = 350;
136
- navContent.style.maxWidth = `${numberOfColumns * navItemMaxWidth}px`;
137
- }
138
- function getViewportWidth() {
139
- return document.documentElement.clientWidth;
140
- }
141
- function mergeColumns(columns, maxNumberOfColumns) {
142
- assert(columns.length > 0);
143
- assert(maxNumberOfColumns > 0);
144
- if (columns.length <= maxNumberOfColumns) {
145
- return columns;
146
- }
147
- let mergeCandidate = {
148
- i: -1,
149
- mergeHeight: Infinity
150
- };
151
- for (let i = 0; i <= columns.length - 2; i++) {
152
- const column1 = columns[i + 0];
153
- const column2 = columns[i + 1];
154
- const column1Height = sum(column1.map((c) => c.elementHeight));
155
- const column2Height = sum(column2.map((c) => c.elementHeight));
156
- const mergeHeight = column1Height + column2Height;
157
- if (mergeCandidate.mergeHeight > mergeHeight) {
158
- mergeCandidate = {
159
- i,
160
- mergeHeight
161
- };
162
- }
163
- }
164
- {
165
- const { i } = mergeCandidate;
166
- assert(-1 < i && i < columns.length - 1, { i, columnsLength: columns.length, maxNumberOfColumns });
167
- columns[i] = [...columns[i], ...columns[i + 1]];
168
- columns.splice(i + 1, 1);
169
- }
170
- mergeColumns(columns, maxNumberOfColumns);
171
- }
172
- function sum(arr) {
173
- let total = 0;
174
- arr.forEach((n) => total += n);
175
- return total;
176
- }
177
-
178
- // src/navigation/Navigation.client.ts
179
- activateNavigationMask();
180
- activateMenuToggle();
181
- initNavigationFullscreen();
182
- autoHideNavigationOverlayOnLinkClick();
183
- navHeaderRightClickInterceptor();
184
- function activateMenuToggle() {
185
- const menuToggle = document.getElementById("menu-toggle");
186
- menuToggle.onclick = navigationOverlayToggle;
187
- }
188
- function activateNavigationMask() {
189
- const navigationMask = document.getElementById("navigation-mask");
190
- navigationMask.onclick = navigationOverlayToggle;
191
- }
192
- function autoHideNavigationOverlayOnLinkClick() {
193
- document.addEventListener("click", (ev) => {
194
- const el = ev.target;
195
- if (!el || !("classList" in el))
196
- return;
197
- if (!el.classList.contains("nav-item"))
198
- return;
199
- navigationOverlayHide();
200
- });
201
- }
202
- function navigationOverlayToggle() {
203
- document.body.classList.toggle("show-menu");
204
- }
205
- function navigationOverlayHide() {
206
- document.body.classList.remove("show-menu");
207
- }
208
- function navHeaderRightClickInterceptor() {
209
- const navHeader = document.getElementById("navigation-header");
210
- if (!navHeader.classList.contains("press-kit"))
211
- return;
212
- if (window.location.pathname === "/press")
213
- return;
214
- navHeader.oncontextmenu = (ev) => {
215
- ev.preventDefault();
216
- window.location.href = "/press";
217
- };
218
- }