@brillout/docpress 0.9.7 → 0.10.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 (65) hide show
  1. package/Layout.tsx +102 -40
  2. package/{navigation → MenuModal}/Collapsible.css +7 -0
  3. package/MenuModal/NavigationWithColumnLayout.css +11 -0
  4. package/MenuModal/NavigationWithColumnLayout.tsx +253 -0
  5. package/MenuModal/toggleMenuModal.ts +132 -0
  6. package/MenuModal.tsx +68 -79
  7. package/{navigation/Navigation.css → NavItemComponent.css} +1 -23
  8. package/NavItemComponent.tsx +149 -0
  9. package/components/Note.css +0 -1
  10. package/config/resolveHeadingsData.ts +1 -1
  11. package/css/code/diff.css +10 -5
  12. package/css/code.css +1 -1
  13. package/css/colorize-on-hover.css +6 -7
  14. package/css/heading.css +9 -3
  15. package/css/index.css +1 -0
  16. package/dist/NavItemComponent.d.ts +39 -0
  17. package/dist/NavItemComponent.js +109 -0
  18. package/dist/config/resolveHeadingsData.d.ts +1 -1
  19. package/dist/config/resolvePageContext.d.ts +2 -2
  20. package/dist/renderer/determineNavItemsColumnLayout.d.ts +1 -1
  21. package/dist/renderer/usePageContext.js +4 -3
  22. package/docsearch/SearchLink.tsx +7 -3
  23. package/icons/books.svg +46 -0
  24. package/icons/gear.svg +35 -0
  25. package/icons/index.ts +5 -0
  26. package/icons/magnifying-glass.svg +31 -0
  27. package/icons/seedling.svg +24 -0
  28. package/index.ts +2 -0
  29. package/initKeyBindings.ts +1 -1
  30. package/package.json +1 -1
  31. package/renderer/determineNavItemsColumnLayout.ts +1 -1
  32. package/renderer/initOnNavigation.ts +1 -1
  33. package/renderer/onRenderClient.tsx +1 -1
  34. package/renderer/usePageContext.tsx +4 -3
  35. package/utils/css.ts +0 -6
  36. package/dist/Layout.d.ts +0 -15
  37. package/dist/Layout.js +0 -321
  38. package/dist/MenuModal.d.ts +0 -13
  39. package/dist/MenuModal.js +0 -124
  40. package/dist/NavSecondaryContent.d.ts +0 -6
  41. package/dist/NavSecondaryContent.js +0 -57
  42. package/dist/autoScrollNav.d.ts +0 -3
  43. package/dist/autoScrollNav.js +0 -35
  44. package/dist/components/EditPageNote.d.ts +0 -7
  45. package/dist/components/EditPageNote.js +0 -11
  46. package/dist/docsearch/SearchLink.d.ts +0 -4
  47. package/dist/docsearch/SearchLink.js +0 -25
  48. package/dist/docsearch/toggleDocsearchModal.d.ts +0 -4
  49. package/dist/docsearch/toggleDocsearchModal.js +0 -26
  50. package/dist/navigation/Collapsible.d.ts +0 -10
  51. package/dist/navigation/Collapsible.js +0 -35
  52. package/dist/navigation/Navigation.d.ts +0 -21
  53. package/dist/navigation/Navigation.js +0 -255
  54. package/dist/utils/PassTrough.d.ts +0 -3
  55. package/dist/utils/PassTrough.js +0 -6
  56. package/dist/utils/Style.d.ts +0 -5
  57. package/dist/utils/Style.js +0 -6
  58. package/dist/utils/css.d.ts +0 -1
  59. package/dist/utils/css.js +0 -27
  60. package/dist/utils/getViewportWidth.d.ts +0 -1
  61. package/dist/utils/getViewportWidth.js +0 -4
  62. package/dist/utils/throttle.d.ts +0 -1
  63. package/dist/utils/throttle.js +0 -14
  64. package/navigation/Navigation.tsx +0 -382
  65. /package/{navigation → MenuModal}/Collapsible.tsx +0 -0
package/dist/Layout.js DELETED
@@ -1,321 +0,0 @@
1
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
- return cooked;
4
- };
5
- var __assign = (this && this.__assign) || function () {
6
- __assign = Object.assign || function(t) {
7
- for (var s, i = 1, n = arguments.length; i < n; i++) {
8
- s = arguments[i];
9
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
- t[p] = s[p];
11
- }
12
- return t;
13
- };
14
- return __assign.apply(this, arguments);
15
- };
16
- export { Layout };
17
- export { containerQueryMobileLayout };
18
- export { containerQueryMobileMenu };
19
- export { navLeftWidthMin };
20
- export { navLeftWidthMax };
21
- export { unexpandNav };
22
- import React from 'react';
23
- import { NavigationContent } from './navigation/Navigation';
24
- import { EditPageNote } from './components/EditPageNote';
25
- import { parseTitle } from './parseTitle';
26
- import { usePageContext, usePageContext2 } from './renderer/usePageContext';
27
- import { NavSecondaryContent } from './NavSecondaryContent';
28
- import { closeMenuModalWithDelay, openMenuModal, toggleMenuModal } from './MenuModal';
29
- import { MenuModal } from './MenuModal';
30
- import { autoScrollNav_SSR } from './autoScrollNav';
31
- import { SearchLink } from './docsearch/SearchLink';
32
- import { navigate } from 'vike/client/router';
33
- import { css } from './utils/css';
34
- import { PassThrough } from './utils/PassTrough';
35
- import { Style } from './utils/Style';
36
- import { cls } from './utils/cls';
37
- var blockMargin = 3;
38
- var mainViewPadding = 20;
39
- var mainViewWidthMax = 800;
40
- var navLeftWidthMax = 370;
41
- var navLeftWidthMin = 300;
42
- var mainViewMax = (mainViewWidthMax + mainViewPadding * 2); // 840 = 800 + 20 * 2
43
- var containerQueryMobileMenu = 1000;
44
- var containerQueryMobileLayout = (mainViewMax + navLeftWidthMin); // 1143 = 840 + 300
45
- var containerQueryExtraSpace = (mainViewMax + navLeftWidthMax + blockMargin); // 1213 = 840 + 370 + 3
46
- // Avoid whitespace at the bottom of pages with almost no content
47
- var whitespaceBuster1 = {
48
- minHeight: '100vh',
49
- display: 'flex',
50
- flexDirection: 'column',
51
- };
52
- var whitespaceBuster2 = {
53
- flexGrow: 1,
54
- };
55
- function Layout(_a) {
56
- var _b;
57
- var children = _a.children;
58
- var pageContext = usePageContext();
59
- var isLandingPage = pageContext.isLandingPage;
60
- var content;
61
- if (isLandingPage) {
62
- content = React.createElement(LayoutLandingPage, null, children);
63
- }
64
- else {
65
- content = React.createElement(LayoutDocsPage, null, children);
66
- }
67
- return (React.createElement("div", { style: (_b = {},
68
- _b['--bg-color'] = '#f5f5f7',
69
- _b['--block-margin'] = "".concat(blockMargin, "px"),
70
- _b['--icon-text-padding'] = '8px',
71
- // ['--nav-head-height']: `${isLandingPage ? 70 : 60}px`,
72
- _b['--nav-head-height'] = "60px",
73
- _b) },
74
- React.createElement(MenuModal, { isTopNav: isLandingPage }),
75
- React.createElement("div", { className: isLandingPage ? '' : 'doc-page', style: __assign({
76
- // We don't add `container` to `body` nor `html` beacuse in Firefox it breaks the `position: fixed` of <MenuModal>
77
- // https://stackoverflow.com/questions/74601420/css-container-inline-size-and-fixed-child
78
- container: 'container-viewport / inline-size' }, whitespaceBuster1) },
79
- React.createElement(NavHead, null),
80
- content)));
81
- }
82
- function LayoutDocsPage(_a) {
83
- var children = _a.children;
84
- var pageContext = usePageContext();
85
- var hideNavLeftAlways = pageContext.navItemsDetached && pageContext.navItemsDetached.length <= 1;
86
- return (React.createElement(React.Fragment, null,
87
- React.createElement("style", null, getStyle()),
88
- React.createElement("div", { style: __assign({ display: 'flex' }, whitespaceBuster2) },
89
- React.createElement(NavLeft, null),
90
- React.createElement("div", { id: "nav-left-margin", className: "low-prio-grow", style: { width: 0, maxWidth: 50, background: 'var(--bg-color)' } }),
91
- React.createElement(PageContent, null, children))));
92
- function getStyle() {
93
- var style = css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n@container container-viewport (min-width: ", "px) {\n .low-prio-grow {\n flex-grow: 1;\n }\n #navigation-container {\n width: ", "px !important;\n }\n}"], ["\n@container container-viewport (min-width: ", "px) {\n .low-prio-grow {\n flex-grow: 1;\n }\n #navigation-container {\n width: ", "px !important;\n }\n}"])), containerQueryExtraSpace, navLeftWidthMax);
94
- var navLeftHide = css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n#nav-left, #nav-left-margin {\n display: none;\n}\n.page-wrapper {\n --main-view-padding: 10px !important;\n flex-grow: 1;\n align-items: center;\n}\n.page-content {\n margin: auto;\n}\n#menu-modal {\n position: absolute !important;\n}\n"], ["\n#nav-left, #nav-left-margin {\n display: none;\n}\n.page-wrapper {\n --main-view-padding: 10px !important;\n flex-grow: 1;\n align-items: center;\n}\n.page-content {\n margin: auto;\n}\n#menu-modal {\n position: absolute !important;\n}\n"])));
95
- if (!hideNavLeftAlways) {
96
- navLeftHide = css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n@container container-viewport (max-width: ", "px) {\n ", "\n}\n@container container-viewport (min-width: ", "px) {\n .nav-head-top {\n display: none !important;\n }\n}\n"], ["\n@container container-viewport (max-width: ", "px) {\n ", "\n}\n@container container-viewport (min-width: ", "px) {\n .nav-head-top {\n display: none !important;\n }\n}\n"])), containerQueryMobileLayout - 1, navLeftHide, containerQueryMobileLayout);
97
- }
98
- style += navLeftHide;
99
- return style;
100
- }
101
- }
102
- function LayoutLandingPage(_a) {
103
- var children = _a.children;
104
- return (React.createElement(React.Fragment, null,
105
- React.createElement(PageContent, null, children)));
106
- }
107
- function PageContent(_a) {
108
- var _b;
109
- var children = _a.children;
110
- var pageContext = usePageContext();
111
- var isLandingPage = pageContext.isLandingPage, pageTitle = pageContext.pageTitle;
112
- var pageTitleParsed = pageTitle && parseTitle(pageTitle);
113
- var globalNote = pageContext.config.globalNote;
114
- var ifDocPage = function (style) { return (isLandingPage ? {} : style); };
115
- return (React.createElement("div", { className: "page-wrapper low-prio-grow", style: __assign({
116
- // Avoid overflow, see https://stackoverflow.com/questions/36230944/prevent-flex-items-from-overflowing-a-container/66689926#66689926
117
- minWidth: 0 }, ifDocPage({
118
- backgroundColor: 'var(--bg-color)',
119
- paddingBottom: 50,
120
- })) },
121
- React.createElement("div", { className: "page-content", style: __assign((_b = {}, _b['--main-view-padding'] = "".concat(mainViewPadding, "px"), _b), ifDocPage({
122
- width: "calc(".concat(mainViewWidthMax, "px + 2 * var(--main-view-padding))"),
123
- maxWidth: '100%',
124
- padding: '20px var(--main-view-padding)',
125
- })) },
126
- globalNote,
127
- pageTitleParsed && React.createElement("h1", { id: "".concat(pageContext.urlPathname.replace('/', '')) }, pageTitleParsed),
128
- children,
129
- !isLandingPage && React.createElement(EditPageNote, { pageContext: pageContext }))));
130
- }
131
- function NavLeft() {
132
- var pageContext = usePageContext();
133
- var navItemsAll = pageContext.navItemsAll, navItemsDetached = pageContext.navItemsDetached;
134
- return (React.createElement(React.Fragment, null,
135
- React.createElement("div", { id: "nav-left", className: "link-hover-animation", style: {
136
- flexGrow: 1,
137
- borderRight: 'var(--block-margin) solid white',
138
- zIndex: 1,
139
- } },
140
- React.createElement("div", { style: {
141
- position: 'sticky',
142
- top: 0,
143
- } },
144
- React.createElement(NavHead, { isNavLeft: true }),
145
- React.createElement("div", { style: {
146
- backgroundColor: 'var(--bg-color)',
147
- display: 'flex',
148
- justifyContent: 'flex-end',
149
- } },
150
- React.createElement("div", { id: "navigation-container", style: {
151
- top: 0,
152
- height: "calc(100vh - var(--nav-head-height) - var(--block-margin))",
153
- overflowY: 'auto',
154
- overscrollBehavior: 'contain',
155
- paddingBottom: 40,
156
- minWidth: navLeftWidthMin,
157
- maxWidth: navLeftWidthMax,
158
- width: '100%',
159
- } }, navItemsDetached ? (React.createElement(NavigationContent, { navItems: navItemsDetached })) : (React.createElement(NavigationContent, { navItems: navItemsAll, showOnlyRelevant: true })))))),
160
- React.createElement("script", { dangerouslySetInnerHTML: { __html: autoScrollNav_SSR } })));
161
- }
162
- function NavHead(_a) {
163
- var _b;
164
- var isNavLeft = _a.isNavLeft;
165
- var pageContext = usePageContext();
166
- var pageContext2 = usePageContext2();
167
- var projectName = pageContext.meta.projectName;
168
- var isLandingPage = pageContext.isLandingPage;
169
- var navMaxWidth = pageContext.config.navMaxWidth;
170
- var linkStyle = {
171
- height: '100%',
172
- padding: '0 var(--padding-side)',
173
- justifyContent: 'center',
174
- };
175
- var TopNavigation = pageContext2.config.TopNavigation || PassThrough;
176
- var navSecondaryContent = (React.createElement("div", { className: isNavLeft ? 'show-on-nav-hover add-transition' : 'hide-on-shrink desktop-grow', style: __assign({ padding: 0, display: 'flex', height: '100%' }, (!isNavLeft
177
- ? {}
178
- : {
179
- position: 'absolute',
180
- left: '100%',
181
- top: 0,
182
- paddingLeft: 'var(--block-margin)',
183
- '--padding-side': '20px',
184
- width: mainViewMax, // guaranteed real estate
185
- })) },
186
- React.createElement(TopNavigation, null),
187
- !isNavLeft && React.createElement("div", { className: "desktop-grow" }),
188
- React.createElement(NavSecondaryContent, { style: {
189
- display: 'inline-flex',
190
- fontSize: '1.06em',
191
- padding: '0 var(--padding-side)',
192
- marginLeft: -8,
193
- } })));
194
- return (React.createElement("div", { className: cls(['nav-head-full-width', !isNavLeft && 'nav-head-top', 'link-hover-animation']), style: {
195
- display: 'flex',
196
- justifyContent: isNavLeft ? 'flex-end' : 'center',
197
- backgroundColor: 'var(--bg-color)',
198
- borderBottom: 'var(--block-margin) solid white',
199
- position: 'relative',
200
- } },
201
- isNavLeft && React.createElement(NavHeaderLeftFullWidthBackground, null),
202
- React.createElement("div", { style: {
203
- container: 'container-nav-head / inline-size',
204
- width: '100%',
205
- minWidth: isNavLeft && navLeftWidthMin,
206
- maxWidth: isNavLeft && navLeftWidthMax,
207
- } },
208
- React.createElement("div", { className: "nav-head-content", style: (_b = {
209
- width: '100%',
210
- maxWidth: navMaxWidth,
211
- margin: 'auto',
212
- height: 'var(--nav-head-height)',
213
- fontSize: "min(16.96px, ".concat(isProjectNameShort(projectName) ? '4.8cqw' : '4.5cqw', ")"),
214
- color: '#666'
215
- },
216
- _b['--icon-text-padding'] = 'min(8px, 1.8cqw)',
217
- _b.display = 'flex',
218
- _b.justifyContent = 'center',
219
- _b) },
220
- React.createElement(NavLogo, { className: "mobile-grow-half" }),
221
- !isNavLeft && React.createElement("div", { className: "desktop-grow" }),
222
- React.createElement(SearchLink, { className: "mobile-grow-half", style: linkStyle }),
223
- React.createElement(MenuLink, { className: "mobile-grow-full", style: linkStyle }),
224
- navSecondaryContent)),
225
- getStyle()));
226
- function getStyle() {
227
- var style = css(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n@container container-nav-head (max-width: 550px) {\n .mobile-grow-full {\n flex-grow: 1;\n }\n .mobile-grow-half {\n flex-grow: 0.5;\n }\n .nav-head-content {\n --padding-side: 0px;\n }\n .nav-logo {\n padding-left: 15px;\n margin-left: -10px;\n }\n}\n@container container-nav-head (min-width: 501px) {\n .nav-head-content {\n --padding-side: 35px;\n }\n .nav-logo {\n padding: 0 var(--padding-side);\n }\n}\n@media(max-width: ", "px) {\n .hide-on-shrink {\n display: none !important;\n }\n}\n"], ["\n@container container-nav-head (max-width: 550px) {\n .mobile-grow-full {\n flex-grow: 1;\n }\n .mobile-grow-half {\n flex-grow: 0.5;\n }\n .nav-head-content {\n --padding-side: 0px;\n }\n .nav-logo {\n padding-left: 15px;\n margin-left: -10px;\n }\n}\n@container container-nav-head (min-width: 501px) {\n .nav-head-content {\n --padding-side: 35px;\n }\n .nav-logo {\n padding: 0 var(--padding-side);\n }\n}\n@media(max-width: ", "px) {\n .hide-on-shrink {\n display: none !important;\n }\n}\n"])), containerQueryMobileMenu);
228
- if (navMaxWidth) {
229
- style += css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n@media(min-width: ", "px) {\n .desktop-grow {\n flex-grow: 1;\n }\n .desktop-fade {\n transition: opacity 0.3s ease-in-out !important;\n }\n html:not(.menu-modal-show) .nav-head-top:not(:hover) .desktop-fade {\n transition: opacity 0.3s ease-in-out !important;\n opacity: 0.5;\n }\n}\n"], ["\n@media(min-width: ", "px) {\n .desktop-grow {\n flex-grow: 1;\n }\n .desktop-fade {\n transition: opacity 0.3s ease-in-out !important;\n }\n html:not(.menu-modal-show) .nav-head-top:not(:hover) .desktop-fade {\n transition: opacity 0.3s ease-in-out !important;\n opacity: 0.5;\n }\n}\n"])), containerQueryMobileMenu + 1);
230
- }
231
- if (isLandingPage && !navMaxWidth)
232
- style += css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n@media(min-width: ", "px) {\n .nav-logo {\n display: none !important;\n }\n}\n"], ["\n@media(min-width: ", "px) {\n .nav-logo {\n display: none !important;\n }\n}\n"])), containerQueryMobileMenu + 1);
233
- if (isNavLeft) {
234
- style += css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n\n.show-on-nav-hover {\n opacity: 0;\n transition-property: opacity;\n pointer-events: none;\n}\nhtml:not(.unexpand-nav) :has(.nav-head-full-width:hover) .show-on-nav-hover,\nhtml:not(.unexpand-nav) :has(.show-on-nav-hover:hover) .show-on-nav-hover,\nhtml:not(.unexpand-nav).menu-modal-show .show-on-nav-hover {\n opacity: 1;\n pointer-events: all;\n}\n"], ["\n\n.show-on-nav-hover {\n opacity: 0;\n transition-property: opacity;\n pointer-events: none;\n}\nhtml:not(.unexpand-nav) :has(.nav-head-full-width:hover) .show-on-nav-hover,\nhtml:not(.unexpand-nav) :has(.show-on-nav-hover:hover) .show-on-nav-hover,\nhtml:not(.unexpand-nav).menu-modal-show .show-on-nav-hover {\n opacity: 1;\n pointer-events: all;\n}\n"])));
235
- }
236
- return React.createElement(Style, null, style);
237
- }
238
- }
239
- function unexpandNav() {
240
- document.documentElement.classList.add('unexpand-nav');
241
- // Using setTimeout() because requestAnimationFrame() doesn't delay enough
242
- setTimeout(function () {
243
- document.documentElement.classList.remove('unexpand-nav');
244
- }, 1000);
245
- }
246
- function NavHeaderLeftFullWidthBackground() {
247
- return (React.createElement(React.Fragment, null,
248
- React.createElement("div", { className: "nav-bg show-on-nav-hover add-transition", style: {
249
- height: '100%',
250
- zIndex: -1,
251
- background: 'var(--bg-color)',
252
- position: 'absolute',
253
- left: 0,
254
- top: 0,
255
- boxSizing: 'content-box',
256
- borderBottom: 'var(--block-margin) solid white',
257
- } }),
258
- React.createElement(Style, null,
259
- // (min-width: 0px) => trick to always apply => @container seems to always require a condition
260
- css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n@container container-viewport (min-width: 0px) {\n .nav-bg {\n width: 100cqw;\n }\n}\n"], ["\n@container container-viewport (min-width: 0px) {\n .nav-bg {\n width: 100cqw;\n }\n}\n"]))))));
261
- }
262
- function NavLogo(_a) {
263
- var _b;
264
- var className = _a.className;
265
- var pageContext = usePageContext();
266
- var iconSize = (_b = pageContext.config.navLogoSize) !== null && _b !== void 0 ? _b : 39;
267
- var projectName = pageContext.meta.projectName;
268
- return (React.createElement("a", { className: cls(['nav-logo', className]), style: {
269
- display: 'flex',
270
- alignItems: 'center',
271
- color: 'inherit',
272
- height: '100%',
273
- justifyContent: 'flex-start',
274
- }, href: "/" },
275
- React.createElement("img", { src: pageContext.meta.faviconUrl, height: iconSize, width: iconSize, onContextMenu: function (ev) {
276
- if (!pageContext.config.pressKit)
277
- return; // no /press page
278
- if (window.location.pathname === '/press')
279
- return;
280
- ev.preventDefault();
281
- navigate('/press#logo');
282
- } }),
283
- React.createElement("span", { style: __assign({ marginLeft: "calc(var(--icon-text-padding) + 2px)", fontSize: isProjectNameShort(projectName) ? '1.65em' : '1.3em' }, pageContext.config.navLogoTextStyle) }, projectName)));
284
- }
285
- function isProjectNameShort(projectName) {
286
- return projectName.length <= 4;
287
- }
288
- var onMouseIgnore;
289
- function MenuLink(props) {
290
- return (React.createElement("div", __assign({}, props, { style: __assign({ height: '100%', display: 'flex', alignItems: 'center', cursor: 'default', userSelect: 'none' }, props.style), className: ['colorize-on-hover menu-toggle', props.className].filter(Boolean).join(' '), onClick: function (ev) {
291
- ev.preventDefault();
292
- toggleMenuModal();
293
- }, onMouseOver: function () {
294
- if (onMouseIgnore)
295
- return;
296
- openMenuModal();
297
- }, onMouseLeave: function () {
298
- if (onMouseIgnore)
299
- return;
300
- closeMenuModalWithDelay(100);
301
- }, onTouchStart: function () {
302
- onMouseIgnore = setTimeout(function () {
303
- onMouseIgnore = undefined;
304
- }, 1000);
305
- } }),
306
- React.createElement("span", { className: "text-docs" },
307
- React.createElement(DocsIcon, null),
308
- " Docs"),
309
- React.createElement("span", { className: "text-menu" },
310
- React.createElement(MenuIcon, null),
311
- " Menu"),
312
- React.createElement(Style, null, css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n@media(max-width: ", "px) {\n .text-docs {\n display: none;\n }\n}\n@media(min-width: ", "px) {\n .text-menu {\n display: none;\n }\n}\n"], ["\n@media(max-width: ", "px) {\n .text-docs {\n display: none;\n }\n}\n@media(min-width: ", "px) {\n .text-menu {\n display: none;\n }\n}\n"])), containerQueryMobileMenu, containerQueryMobileMenu + 1))));
313
- }
314
- function DocsIcon() {
315
- return (React.createElement("span", { style: { marginRight: 'calc(var(--icon-text-padding) + 2px)' }, className: "decolorize-6 desktop-fade" }, "\uD83D\uDCDA"));
316
- }
317
- function MenuIcon() {
318
- return (React.createElement("svg", { style: { marginRight: 'calc(var(--icon-text-padding) + 2px)', verticalAlign: 'top', width: '1.3em' }, className: "decolorize-6 desktop-fade", viewBox: "0 0 448 512" },
319
- React.createElement("path", { fill: "currentColor", d: "M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z" })));
320
- }
321
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
@@ -1,13 +0,0 @@
1
- export { MenuModal };
2
- export { toggleMenuModal };
3
- export { openMenuModal };
4
- export { closeMenuModal };
5
- export { closeMenuModalWithDelay };
6
- import React from 'react';
7
- declare function MenuModal({ isTopNav }: {
8
- isTopNav: boolean;
9
- }): React.JSX.Element;
10
- declare function toggleMenuModal(): void;
11
- declare function openMenuModal(): void;
12
- declare function closeMenuModal(): void;
13
- declare function closeMenuModalWithDelay(delay: number): void;
package/dist/MenuModal.js DELETED
@@ -1,124 +0,0 @@
1
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
- return cooked;
4
- };
5
- export { MenuModal };
6
- export { toggleMenuModal };
7
- export { openMenuModal };
8
- export { closeMenuModal };
9
- export { closeMenuModalWithDelay };
10
- import React from 'react';
11
- import { usePageContext } from './renderer/usePageContext';
12
- import { NavigationContent } from './navigation/Navigation';
13
- import { css } from './utils/css';
14
- import { containerQueryMobileLayout, containerQueryMobileMenu } from './Layout';
15
- import { NavSecondaryContent } from './NavSecondaryContent';
16
- import { getViewportWidth } from './utils/getViewportWidth';
17
- import { Style } from './utils/Style';
18
- var closeMenuModalPending;
19
- function MenuModal(_a) {
20
- var isTopNav = _a.isTopNav;
21
- return (React.createElement(React.Fragment, null,
22
- React.createElement(Style, null, getStyle()),
23
- React.createElement("div", { id: "menu-modal", className: "link-hover-animation add-transition", style: {
24
- position: isTopNav ? 'absolute' : 'fixed',
25
- width: '100%',
26
- /* Firefox doesn't support `dvh` yet: https://caniuse.com/?search=dvh
27
- * - Always use `dvh` instead of `vh` once Firefox supports it.
28
- * - We use dvh because of mobile: https://stackoverflow.com/questions/37112218/css3-100vh-not-constant-in-mobile-browser/72245072#72245072
29
- height: 'calc(100dvh - var(--nav-head-height))',
30
- /*/
31
- height: 'calc(100vh - var(--nav-head-height))',
32
- maxHeight: 'calc(100dvh - var(--nav-head-height))',
33
- //*/
34
- top: 'var(--nav-head-height)',
35
- left: 0,
36
- zIndex: 9999,
37
- overflow: 'scroll',
38
- background: '#ededef',
39
- transitionProperty: 'opacity',
40
- // https://github.com/brillout/docpress/issues/23
41
- // https://stackoverflow.com/questions/64514118/css-overscroll-behavior-contain-when-target-element-doesnt-overflow
42
- // https://stackoverflow.com/questions/9538868/prevent-body-from-scrolling-when-a-modal-is-opened
43
- overscrollBehavior: 'none',
44
- }, onMouseOver: openMenuModal, onMouseLeave: closeMenuModal },
45
- React.createElement("div", { style: {
46
- // Place <LinksBottom /> to the bottom
47
- display: 'flex',
48
- flexDirection: 'column',
49
- minHeight: 'calc(100dvh - var(--nav-head-height))',
50
- justifyContent: 'space-between',
51
- // We don't set `container` to parent beacuse of a Chrome bug (showing a blank <MenuModal>)
52
- container: 'container-viewport / inline-size',
53
- } },
54
- React.createElement(Nav, null),
55
- React.createElement(NavSecondary, { className: "show-only-for-mobile" })),
56
- React.createElement(CloseButton, { className: "show-only-for-mobile" }))));
57
- }
58
- function Nav() {
59
- var pageContext = usePageContext();
60
- var navItems = pageContext.navItemsAll;
61
- return React.createElement(NavigationContent, { columnLayout: true, navItems: navItems });
62
- }
63
- function NavSecondary(_a) {
64
- var className = _a.className;
65
- return (React.createElement("div", { className: className, style: {
66
- display: 'flex',
67
- justifyContent: 'center',
68
- marginTop: 20,
69
- } },
70
- React.createElement(NavSecondaryContent, { style: { height: 70 } })));
71
- }
72
- function getStyle() {
73
- return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\nhtml:not(.menu-modal-show) #menu-modal {\n opacity: 0;\n pointer-events: none;\n}\n@container container-viewport (min-width: ", "px) {\n #menu-modal .nav-item-level-3 {\n display: none;\n }\n}\n@media(max-width: ", "px) {\n #menu-modal {\n --nav-head-height: 0px !important;\n }\n}\n@media(min-width: ", "px) {\n .show-only-for-mobile {\n display: none !important;\n }\n}\n"], ["\nhtml:not(.menu-modal-show) #menu-modal {\n opacity: 0;\n pointer-events: none;\n}\n@container container-viewport (min-width: ", "px) {\n #menu-modal .nav-item-level-3 {\n display: none;\n }\n}\n@media(max-width: ", "px) {\n #menu-modal {\n --nav-head-height: 0px !important;\n }\n}\n@media(min-width: ", "px) {\n .show-only-for-mobile {\n display: none !important;\n }\n}\n"])), containerQueryMobileLayout, containerQueryMobileMenu, containerQueryMobileMenu + 1);
74
- }
75
- function CloseButton(_a) {
76
- var className = _a.className;
77
- return (React.createElement("div", { className: className, onClick: toggleMenuModal, style: { position: 'fixed', top: 0, right: 0, zIndex: 10, padding: 11, cursor: 'pointer' }, "aria-label": 'Escape\nCtrl\xa0+\xa0M', "data-label-shift": true },
78
- React.createElement("svg", { width: "48.855", height: "48.855", version: "1.1", viewBox: "0 0 22.901 22.901", xmlns: "http://www.w3.org/2000/svg" },
79
- React.createElement("circle", { cx: "11.45", cy: "11.45", r: "10.607", fill: "#ececec", stroke: "#666", strokeDashoffset: "251.44", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.6875", style: { paintOrder: 'normal' } }),
80
- React.createElement("path", { d: "m7.5904 6.2204 3.86 3.86 3.84-3.84a0.92 0.92 0 0 1 0.66-0.29 1 1 0 0 1 1 1 0.9 0.9 0 0 1-0.27 0.66l-3.89 3.84 3.89 3.89a0.9 0.9 0 0 1 0.27 0.61 1 1 0 0 1-1 1 0.92 0.92 0 0 1-0.69-0.27l-3.81-3.86-3.85 3.85a0.92 0.92 0 0 1-0.65 0.28 1 1 0 0 1-1-1 0.9 0.9 0 0 1 0.27-0.66l3.89-3.84-3.89-3.89a0.9 0.9 0 0 1-0.27-0.61 1 1 0 0 1 1-1c0.24 3e-3 0.47 0.1 0.64 0.27z", fill: "#666", stroke: "#666", strokeWidth: ".11719" }))));
81
- }
82
- function toggleMenuModal() {
83
- document.documentElement.classList.toggle('menu-modal-show');
84
- if (document.documentElement.classList.contains('menu-modal-show') &&
85
- getViewportWidth() < containerQueryMobileLayout) {
86
- autoScroll();
87
- }
88
- }
89
- function autoScroll() {
90
- var nav = document.querySelector('#menu-modal .navigation-content');
91
- var href = window.location.pathname;
92
- var navLinks = Array.from(nav.querySelectorAll("a[href=\"".concat(href, "\"]")));
93
- var navLink = navLinks[0];
94
- if (!navLink)
95
- return;
96
- // None of the following seemes to be working: https://stackoverflow.com/questions/19669786/check-if-element-is-visible-in-dom
97
- if (findCollapsibleEl(navLink).classList.contains('collapsible-collapsed'))
98
- return;
99
- navLink.scrollIntoView({
100
- behavior: 'instant',
101
- block: 'center',
102
- inline: 'start',
103
- });
104
- }
105
- function findCollapsibleEl(navLink) {
106
- var parentEl = navLink;
107
- while (parentEl) {
108
- if (parentEl.classList.contains('collapsible'))
109
- return parentEl;
110
- parentEl = parentEl.parentElement;
111
- }
112
- return null;
113
- }
114
- function openMenuModal() {
115
- clearTimeout(closeMenuModalPending);
116
- document.documentElement.classList.add('menu-modal-show');
117
- }
118
- function closeMenuModal() {
119
- document.documentElement.classList.remove('menu-modal-show');
120
- }
121
- function closeMenuModalWithDelay(delay) {
122
- closeMenuModalPending = setTimeout(closeMenuModal, delay);
123
- }
124
- var templateObject_1;
@@ -1,6 +0,0 @@
1
- export { NavSecondaryContent };
2
- import React from 'react';
3
- import '@docsearch/css';
4
- declare function NavSecondaryContent(props: {
5
- style?: React.CSSProperties;
6
- }): React.JSX.Element;
@@ -1,57 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- export { NavSecondaryContent };
13
- import React from 'react';
14
- import iconGithub from './icons/github.svg';
15
- import iconTwitter from './icons/twitter.svg';
16
- import iconDiscord from './icons/discord.svg';
17
- import iconChangelog from './icons/changelog.svg';
18
- import iconLanguages from './icons/languages.svg';
19
- import { usePageContext } from './renderer/usePageContext';
20
- import '@docsearch/css';
21
- function NavSecondaryContent(props) {
22
- var pageContext = usePageContext();
23
- var _a = pageContext.config, projectInfo = _a.projectInfo, i18n = _a.i18n;
24
- var iconI18n = !i18n ? null : (React.createElement(LinkIcon, { className: "decolorize-4", icon: iconLanguages, href: '/languages', style: { height: 21, position: 'relative', top: 0, left: 0 } }));
25
- return (React.createElement("div", __assign({}, props, { style: __assign({ display: 'flex', alignItems: 'center' }, props.style), className: "desktop-fade" }),
26
- iconI18n,
27
- projectInfo.discordInvite && (React.createElement(LinkIcon, { className: "decolorize-6", icon: iconDiscord, href: projectInfo.discordInvite })),
28
- React.createElement(LinkIcon, { className: "decolorize-4", icon: iconTwitter, href: projectInfo.twitterProfile }),
29
- React.createElement(LinkIcon, { className: "decolorize-4", icon: iconGithub, href: projectInfo.githubRepository }),
30
- React.createElement(ChangelogButton, null)));
31
- }
32
- function ChangelogButton() {
33
- var pageContext = usePageContext();
34
- var projectInfo = pageContext.config.projectInfo;
35
- return (React.createElement("a", { href: "".concat(projectInfo.githubRepository, "/blob/main/CHANGELOG.md"), className: "colorize-on-hover", style: {
36
- display: 'flex',
37
- alignItems: 'center',
38
- padding: '0 5px',
39
- height: '100%',
40
- } },
41
- React.createElement("div", { className: "button", style: {
42
- display: 'flex',
43
- alignItems: 'center',
44
- padding: '2px 10px',
45
- fontSize: '0.97em',
46
- } },
47
- React.createElement("span", { id: "version-number", className: "decolorize-7" },
48
- "v",
49
- projectInfo.projectVersion),
50
- React.createElement("img", { className: "decolorize-6", src: iconChangelog, height: 16, style: { marginLeft: 6 } }))));
51
- }
52
- function LinkIcon(_a) {
53
- var className = _a.className, icon = _a.icon, href = _a.href, style = _a.style;
54
- return (React.createElement(React.Fragment, null,
55
- React.createElement("a", { className: "colorize-on-hover", href: href, style: { padding: 5, display: 'inline-flex', lineHeight: 0, height: '100%', alignItems: 'center' } },
56
- React.createElement("img", { className: className, src: icon, height: "20", style: style }))));
57
- }
@@ -1,3 +0,0 @@
1
- export { autoScrollNav };
2
- export declare const autoScrollNav_SSR: string;
3
- declare function autoScrollNav(): void;
@@ -1,35 +0,0 @@
1
- export { autoScrollNav };
2
- export var autoScrollNav_SSR = "autoScrollNav();".concat(autoScrollNav.toString());
3
- // - We cannot use TypeScript syntax because of autoScrollNav_SSR
4
- // - We have to save & restore `document.documentElement.scrollTop` because scrollIntoView() scrolls the main view. (I don't know why).
5
- // - Failed alternatives:
6
- // - scrollIntoViewIfNeeded() (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoViewIfNeeded) would work (it doesn't scroll the main view) but Firefox doesn't support it.
7
- // - Doesn't work: the scrolling is off by hundreds of px (I guess because this function runs too early while the page is still rendering).
8
- // ```js
9
- // const offset = navLink.offsetTop - (window.innerHeight / 2)
10
- // navigationContainerEl.scrollTop = offset
11
- // ```
12
- // - Doesn't work: scrollIntoView() still scrolls the main view
13
- // ```js
14
- // const overflowOriginal = document.documentElement.style.overflow
15
- // document.documentElement.style.overflow = 'hidden'
16
- // // ...
17
- // document.documentElement.style.overflow = overflowOriginal
18
- // ```
19
- function autoScrollNav() {
20
- var nav = document.querySelector('#nav-left .navigation-content');
21
- if (!nav)
22
- return;
23
- var href = window.location.pathname;
24
- var navLinks = Array.from(nav.querySelectorAll("a[href=\"".concat(href, "\"]")));
25
- var navLink = navLinks[0];
26
- if (!navLink)
27
- return;
28
- var scrollTopOriginal = document.documentElement.scrollTop;
29
- navLink.scrollIntoView({
30
- behavior: 'instant',
31
- block: 'center',
32
- inline: 'start',
33
- });
34
- document.documentElement.scrollTop = scrollTopOriginal;
35
- }
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- export { EditPageNote };
3
- declare function EditPageNote({ pageContext }: {
4
- pageContext: {
5
- urlPathname: string;
6
- };
7
- }): React.JSX.Element;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { RepoLink } from './RepoLink';
3
- export { EditPageNote };
4
- function EditPageNote(_a) {
5
- var pageContext = _a.pageContext;
6
- var text = (React.createElement(React.Fragment, null,
7
- React.createElement("span", { style: { fontFamily: 'emoji' } }, "\u270D"),
8
- " Edit this page"));
9
- return (React.createElement("div", { style: { marginTop: 50 } },
10
- React.createElement(RepoLink, { path: '/docs/pages' + pageContext.urlPathname + '/+Page.mdx', text: text, editMode: true })));
11
- }
@@ -1,4 +0,0 @@
1
- export { SearchLink };
2
- import React from 'react';
3
- type PropsAnchor = React.HTMLProps<HTMLAnchorElement>;
4
- declare function SearchLink(props: PropsAnchor): React.JSX.Element;
@@ -1,25 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- export { SearchLink };
13
- import React from 'react';
14
- import { openDocsearchModal } from './toggleDocsearchModal';
15
- function SearchLink(props) {
16
- return (React.createElement("a", __assign({}, props, { style: __assign({ height: '100%', display: 'flex', alignItems: 'center', cursor: 'pointer' }, props.style), className: ['colorize-on-hover', props.className].filter(Boolean).join(' '), onClick: function (ev) {
17
- ev.preventDefault();
18
- openDocsearchModal();
19
- }, "aria-label": 'Ctrl\xa0+\xa0K' }),
20
- React.createElement(SearchIcon, null),
21
- "Search"));
22
- }
23
- function SearchIcon() {
24
- return (React.createElement("span", { style: { marginRight: 'var(--icon-text-padding)', fontSize: '1.1em' }, className: "decolorize-7 desktop-fade" }, "\uD83D\uDD0D"));
25
- }
@@ -1,4 +0,0 @@
1
- export { closeDocsearchModal };
2
- export { openDocsearchModal };
3
- declare function closeDocsearchModal(): void;
4
- declare function openDocsearchModal(): void;