element-book 6.0.2 → 7.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.
- package/README.md +5 -5
- package/dist/data/book-entry/base-book-entry.d.ts +20 -0
- package/dist/data/book-entry/book-element-example/book-element-example.d.ts +32 -0
- package/dist/data/book-entry/book-entry-type.d.ts +9 -0
- package/dist/data/book-entry/book-entry-type.js +9 -0
- package/dist/data/book-entry/book-entry.d.ts +8 -0
- package/dist/data/book-entry/book-entry.js +4 -0
- package/dist/data/book-entry/book-page/book-page-controls.d.ts +41 -0
- package/dist/data/book-entry/book-page/book-page-controls.js +49 -0
- package/dist/data/book-entry/book-page/book-page.d.ts +12 -0
- package/dist/data/book-entry/book-page/book-page.js +1 -0
- package/dist/data/book-entry/book-page/current-controls.d.ts +12 -0
- package/dist/data/book-entry/book-page/current-controls.js +62 -0
- package/dist/data/book-entry/book-page/define-book-page.d.ts +17 -0
- package/dist/data/book-entry/book-page/define-book-page.js +34 -0
- package/dist/data/book-entry/book-root.d.ts +7 -0
- package/dist/data/book-entry/book-root.js +1 -0
- package/dist/data/book-entry/url-breadcrumbs.d.ts +7 -0
- package/dist/data/book-entry/url-breadcrumbs.js +24 -0
- package/dist/data/book-entry/verify-book-entry.d.ts +6 -0
- package/dist/data/book-entry/verify-book-entry.js +18 -0
- package/dist/data/book-tree/book-tree-node.d.ts +27 -0
- package/dist/data/book-tree/book-tree-node.js +1 -0
- package/dist/data/book-tree/book-tree.d.ts +16 -0
- package/dist/data/book-tree/book-tree.js +148 -0
- package/dist/data/book-tree/search-nodes.d.ts +5 -0
- package/dist/data/book-tree/search-nodes.js +56 -0
- package/dist/data/book-tree/tree-cache.d.ts +4 -0
- package/dist/data/book-tree/tree-cache.js +8 -0
- package/dist/index.d.ts +5 -6
- package/dist/index.js +5 -6
- package/dist/routing/book-routing.d.ts +10 -0
- package/dist/routing/book-routing.js +18 -0
- package/dist/routing/create-book-router.d.ts +2 -0
- package/dist/routing/{create-element-book-router.js → create-book-router.js} +8 -8
- package/dist/ui/elements/book-breadcrumbs.element.d.ts +5 -0
- package/dist/ui/elements/{element-book-breadcrumbs.element.js → book-breadcrumbs.element.js} +9 -9
- package/dist/ui/elements/book-nav.element.d.ts +7 -0
- package/dist/ui/elements/book-nav.element.js +114 -0
- package/dist/ui/elements/common/book-error.element.d.ts +3 -0
- package/dist/ui/elements/common/book-error.element.js +27 -0
- package/dist/ui/elements/common/book-route-link.element.d.ts +5 -0
- package/dist/ui/elements/common/{element-book-route-link.element.js → book-route-link.element.js} +5 -5
- package/dist/ui/elements/define-book-element.d.ts +2 -2
- package/dist/ui/elements/define-book-element.js +1 -1
- package/dist/ui/elements/element-book-app/element-book-app-slots.d.ts +2 -2
- package/dist/ui/elements/element-book-app/element-book-app-slots.js +2 -2
- package/dist/ui/elements/element-book-app/element-book-app.element.d.ts +7 -2
- package/dist/ui/elements/element-book-app/element-book-app.element.js +76 -29
- package/dist/ui/elements/element-book-app/element-book-config.d.ts +4 -2
- package/dist/ui/elements/element-book-app/get-current-nodes.d.ts +3 -0
- package/dist/ui/elements/element-book-app/get-current-nodes.js +23 -0
- package/dist/ui/elements/entry-display/book-breadcrumbs-bar.element.d.ts +6 -0
- package/dist/ui/elements/entry-display/book-breadcrumbs-bar.element.js +65 -0
- package/dist/ui/elements/entry-display/book-entry-description.element.d.ts +3 -0
- package/dist/ui/elements/entry-display/book-entry-description.element.js +34 -0
- package/dist/ui/elements/entry-display/book-entry-display.element.d.ts +12 -0
- package/dist/ui/elements/entry-display/book-entry-display.element.js +173 -0
- package/dist/ui/elements/entry-display/book-page/book-page-controls.element.d.ts +17 -0
- package/dist/ui/elements/entry-display/book-page/book-page-controls.element.js +147 -0
- package/dist/ui/elements/entry-display/book-page/book-page-wrapper.element.d.ts +10 -0
- package/dist/ui/elements/entry-display/book-page/book-page-wrapper.element.js +92 -0
- package/dist/ui/elements/entry-display/element-example/book-element-example-controls.element.d.ts +7 -0
- package/dist/ui/elements/entry-display/element-example/book-element-example-controls.element.js +36 -0
- package/dist/ui/elements/entry-display/element-example/book-element-example-viewer.element.d.ts +9 -0
- package/dist/ui/elements/entry-display/element-example/book-element-example-viewer.element.js +57 -0
- package/dist/ui/elements/entry-display/element-example/book-element-example-wrapper.element.d.ts +9 -0
- package/dist/ui/elements/entry-display/element-example/book-element-example-wrapper.element.js +49 -0
- package/dist/ui/events/change-route.event.d.ts +1 -1
- package/dist/util/type.d.ts +40 -0
- package/dist/util/type.js +1 -0
- package/package.json +15 -11
- package/dist/data/element-book-entry/element-book-chapter/element-book-chapter.d.ts +0 -22
- package/dist/data/element-book-entry/element-book-chapter/element-book-chapter.js +0 -16
- package/dist/data/element-book-entry/element-book-entry-type.d.ts +0 -8
- package/dist/data/element-book-entry/element-book-entry-type.js +0 -9
- package/dist/data/element-book-entry/element-book-entry.d.ts +0 -14
- package/dist/data/element-book-entry/element-book-entry.js +0 -22
- package/dist/data/element-book-entry/element-book-page/element-book-page-controls/element-book-page-control-type.d.ts +0 -13
- package/dist/data/element-book-entry/element-book-page/element-book-page-controls/element-book-page-control-type.js +0 -7
- package/dist/data/element-book-entry/element-book-page/element-book-page-controls/element-book-page-control.d.ts +0 -13
- package/dist/data/element-book-entry/element-book-page/element-book-page-controls/element-book-page-control.js +0 -4
- package/dist/data/element-book-entry/element-book-page/element-book-page-example.d.ts +0 -22
- package/dist/data/element-book-entry/element-book-page/element-book-page.d.ts +0 -23
- package/dist/data/element-book-entry/element-book-page/element-book-page.js +0 -41
- package/dist/data/element-book-entry/entry-tree/entry-tree-search.d.ts +0 -8
- package/dist/data/element-book-entry/entry-tree/entry-tree-search.js +0 -66
- package/dist/data/element-book-entry/entry-tree/entry-tree.d.ts +0 -18
- package/dist/data/element-book-entry/entry-tree/entry-tree.js +0 -87
- package/dist/data/element-book-entry/entry-tree/tree-cache.d.ts +0 -5
- package/dist/data/element-book-entry/entry-tree/tree-cache.js +0 -8
- package/dist/data/element-book-entry/entry-tree/walk-entry-tree.d.ts +0 -8
- package/dist/data/element-book-entry/entry-tree/walk-entry-tree.js +0 -85
- package/dist/routing/create-element-book-router.d.ts +0 -2
- package/dist/routing/element-book-routing.d.ts +0 -10
- package/dist/routing/element-book-routing.js +0 -18
- package/dist/ui/elements/common/element-book-route-link.element.d.ts +0 -5
- package/dist/ui/elements/element-book-app/get-current-entry.d.ts +0 -4
- package/dist/ui/elements/element-book-app/get-current-entry.js +0 -17
- package/dist/ui/elements/element-book-breadcrumbs.element.d.ts +0 -5
- package/dist/ui/elements/element-book-nav.element.d.ts +0 -7
- package/dist/ui/elements/element-book-nav.element.js +0 -129
- package/dist/ui/elements/entry-display/element-book-entry-display.element.d.ts +0 -8
- package/dist/ui/elements/entry-display/element-book-entry-display.element.js +0 -279
- package/dist/ui/elements/entry-display/element-book-example-controls.element.d.ts +0 -4
- package/dist/ui/elements/entry-display/element-book-example-controls.element.js +0 -26
- package/dist/ui/elements/entry-display/element-book-example-viewer.element.d.ts +0 -6
- package/dist/ui/elements/entry-display/element-book-example-viewer.element.js +0 -43
- package/dist/ui/elements/entry-display/element-book-page-controls.element.d.ts +0 -11
- package/dist/ui/elements/entry-display/element-book-page-controls.element.js +0 -65
- package/dist/ui/elements/entry-display/element-book-page-examples.element.d.ts +0 -7
- package/dist/ui/elements/entry-display/element-book-page-examples.element.js +0 -102
- package/dist/ui/icons/element-16.icon.d.ts +0 -1
- package/dist/ui/icons/element-16.icon.js +0 -18
- package/dist/ui/icons/element-24.icon.d.ts +0 -1
- package/dist/ui/icons/element-24.icon.js +0 -18
- package/dist/utilities/type.d.ts +0 -3
- /package/dist/data/{element-book-entry/element-book-page/element-book-page-example.js → book-entry/base-book-entry.js} +0 -0
- /package/dist/{utilities/type.js → data/book-entry/book-element-example/book-element-example.js} +0 -0
- /package/dist/{utilities/search.d.ts → util/fuzzy-search.d.ts} +0 -0
- /package/dist/{utilities/search.js → util/fuzzy-search.js} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { randomString } from '@augment-vir/browser';
|
|
2
|
+
import { isRuntimeTypeOf } from '@augment-vir/common';
|
|
3
|
+
import { fuzzySearch } from '../../util/fuzzy-search';
|
|
4
|
+
const searchJoin = randomString(32);
|
|
5
|
+
function createBreadcrumbsSearchKey(breadcrumbs) {
|
|
6
|
+
return breadcrumbs.join(searchJoin);
|
|
7
|
+
}
|
|
8
|
+
function getFullTreeKeysToInclude(breadcrumbs) {
|
|
9
|
+
if (!breadcrumbs.length) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
const currentKey = createBreadcrumbsSearchKey(breadcrumbs);
|
|
13
|
+
const ancestorKeys = getFullTreeKeysToInclude(breadcrumbs.slice(0, -1));
|
|
14
|
+
return [
|
|
15
|
+
currentKey,
|
|
16
|
+
...ancestorKeys,
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
const errorQueries = [
|
|
20
|
+
'error',
|
|
21
|
+
'errors',
|
|
22
|
+
];
|
|
23
|
+
function isSearchingForErrors(searchQuery) {
|
|
24
|
+
return errorQueries.includes(searchQuery);
|
|
25
|
+
}
|
|
26
|
+
export function searchFlattenedNodes({ flattenedNodes, searchQuery, }) {
|
|
27
|
+
const includeInSearchResults = {};
|
|
28
|
+
flattenedNodes.forEach((treeNode) => {
|
|
29
|
+
const matchesErrors = treeNode.entry.errors.length && isSearchingForErrors(searchQuery);
|
|
30
|
+
const shouldInclude = fuzzySearch({
|
|
31
|
+
searchIn: [
|
|
32
|
+
treeNode.entry.title,
|
|
33
|
+
...treeNode.entry.descriptionParagraphs,
|
|
34
|
+
]
|
|
35
|
+
.join(' ')
|
|
36
|
+
.toLowerCase(),
|
|
37
|
+
searchQuery: searchQuery.toLowerCase(),
|
|
38
|
+
}) || matchesErrors;
|
|
39
|
+
if (shouldInclude) {
|
|
40
|
+
const keysToInclude = getFullTreeKeysToInclude(treeNode.fullUrlBreadcrumbs);
|
|
41
|
+
keysToInclude.forEach((keyToInclude) => (includeInSearchResults[keyToInclude] = true));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const currentNodeKey = createBreadcrumbsSearchKey(treeNode.fullUrlBreadcrumbs);
|
|
45
|
+
includeInSearchResults[currentNodeKey] = false;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return flattenedNodes.filter((treeNode) => {
|
|
49
|
+
const inSearchResultsKey = createBreadcrumbsSearchKey(treeNode.fullUrlBreadcrumbs);
|
|
50
|
+
const shouldInclude = includeInSearchResults[inSearchResultsKey];
|
|
51
|
+
if (!isRuntimeTypeOf(shouldInclude, 'boolean')) {
|
|
52
|
+
throw new Error(`Failed to find '${treeNode.fullUrlBreadcrumbs.join(' > ')}' in includeInSearchResults.`);
|
|
53
|
+
}
|
|
54
|
+
return shouldInclude;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BookEntry } from '../book-entry/book-entry';
|
|
2
|
+
import { BookTree } from './book-tree-node';
|
|
3
|
+
export declare function getTreeFromCache(entries: ReadonlyArray<BookEntry>): BookTree | undefined;
|
|
4
|
+
export declare function addTreeToCache(entries: ReadonlyArray<BookEntry>, tree: BookTree): void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { getOrSetFromMap } from '@augment-vir/common';
|
|
2
|
+
const treeCache = new Map();
|
|
3
|
+
export function getTreeFromCache(entries) {
|
|
4
|
+
return treeCache.get(entries);
|
|
5
|
+
}
|
|
6
|
+
export function addTreeToCache(entries, tree) {
|
|
7
|
+
getOrSetFromMap(treeCache, entries, () => tree);
|
|
8
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export * from './data/
|
|
2
|
-
export * from './data/
|
|
3
|
-
export * from './data/
|
|
4
|
-
export * from './data/
|
|
5
|
-
export * from './data/
|
|
6
|
-
export * from './data/element-book-entry/element-book-page/element-book-page-example';
|
|
1
|
+
export * from './data/book-entry/book-element-example/book-element-example';
|
|
2
|
+
export * from './data/book-entry/book-page/book-page';
|
|
3
|
+
export * from './data/book-entry/book-page/book-page-controls';
|
|
4
|
+
export * from './data/book-entry/book-page/define-book-page';
|
|
5
|
+
export * from './data/book-entry/url-breadcrumbs';
|
|
7
6
|
export * from './ui/elements/element-book-app/element-book-app-slots';
|
|
8
7
|
export * from './ui/elements/element-book-app/element-book-app.element';
|
|
9
8
|
export * from './ui/elements/element-book-app/element-book-config';
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export * from './data/
|
|
2
|
-
export * from './data/
|
|
3
|
-
export * from './data/
|
|
4
|
-
export * from './data/
|
|
5
|
-
export * from './data/
|
|
6
|
-
export * from './data/element-book-entry/element-book-page/element-book-page-example';
|
|
1
|
+
export * from './data/book-entry/book-element-example/book-element-example';
|
|
2
|
+
export * from './data/book-entry/book-page/book-page';
|
|
3
|
+
export * from './data/book-entry/book-page/book-page-controls';
|
|
4
|
+
export * from './data/book-entry/book-page/define-book-page';
|
|
5
|
+
export * from './data/book-entry/url-breadcrumbs';
|
|
7
6
|
export * from './ui/elements/element-book-app/element-book-app-slots';
|
|
8
7
|
export * from './ui/elements/element-book-app/element-book-app.element';
|
|
9
8
|
export * from './ui/elements/element-book-app/element-book-config';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FullRoute, SpaRouter } from 'spa-router-vir';
|
|
2
|
+
export declare enum BookMainRoute {
|
|
3
|
+
Search = "search",
|
|
4
|
+
Book = "book"
|
|
5
|
+
}
|
|
6
|
+
export type ValidBookPaths = [BookMainRoute.Search, string] | [BookMainRoute.Book, ...string[]];
|
|
7
|
+
export type BookFullRoute = Required<Readonly<FullRoute<ValidBookPaths, undefined | Record<string, string>, undefined>>>;
|
|
8
|
+
export declare function extractSearchQuery(paths: Readonly<ValidBookPaths>): string;
|
|
9
|
+
export declare const defaultBookFullRoute: Readonly<BookFullRoute>;
|
|
10
|
+
export type BookRouter = BookFullRoute extends FullRoute<infer Paths, infer Search, infer Hash> ? Readonly<SpaRouter<Paths, Search, Hash>> : never;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export var BookMainRoute;
|
|
2
|
+
(function (BookMainRoute) {
|
|
3
|
+
BookMainRoute["Search"] = "search";
|
|
4
|
+
BookMainRoute["Book"] = "book";
|
|
5
|
+
})(BookMainRoute || (BookMainRoute = {}));
|
|
6
|
+
export function extractSearchQuery(paths) {
|
|
7
|
+
if (paths[0] === BookMainRoute.Book) {
|
|
8
|
+
return '';
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return paths[1] ? decodeURIComponent(paths[1]) : '';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const defaultBookFullRoute = {
|
|
15
|
+
hash: undefined,
|
|
16
|
+
paths: [BookMainRoute.Book],
|
|
17
|
+
search: undefined,
|
|
18
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isEnumValue } from '@augment-vir/common';
|
|
2
2
|
import { createSpaRouter } from 'spa-router-vir';
|
|
3
|
-
import {
|
|
4
|
-
export function
|
|
3
|
+
import { BookMainRoute, defaultBookFullRoute } from './book-routing';
|
|
4
|
+
export function createBookRouter(baseRoute) {
|
|
5
5
|
return createSpaRouter({
|
|
6
6
|
routeBase: baseRoute,
|
|
7
7
|
routeSanitizer(rawRoute) {
|
|
@@ -16,19 +16,19 @@ export function createElementBookRouter(baseRoute) {
|
|
|
16
16
|
}
|
|
17
17
|
function sanitizePaths(paths) {
|
|
18
18
|
const firstPath = paths[0];
|
|
19
|
-
if (!isEnumValue(firstPath,
|
|
20
|
-
return
|
|
19
|
+
if (!isEnumValue(firstPath, BookMainRoute)) {
|
|
20
|
+
return defaultBookFullRoute.paths;
|
|
21
21
|
}
|
|
22
|
-
else if (firstPath ===
|
|
22
|
+
else if (firstPath === BookMainRoute.Book) {
|
|
23
23
|
return [
|
|
24
|
-
|
|
24
|
+
BookMainRoute.Book,
|
|
25
25
|
...paths.slice(1),
|
|
26
26
|
];
|
|
27
27
|
}
|
|
28
|
-
else if (firstPath ===
|
|
28
|
+
else if (firstPath === BookMainRoute.Search) {
|
|
29
29
|
if (!paths[1]) {
|
|
30
30
|
return [
|
|
31
|
-
|
|
31
|
+
BookMainRoute.Book,
|
|
32
32
|
...paths.slice(1),
|
|
33
33
|
];
|
|
34
34
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BookFullRoute, BookRouter } from '../../routing/book-routing';
|
|
2
|
+
export declare const BookBreadcrumbs: import("element-vir").DeclarativeElementDefinition<"book-breadcrumbs", {
|
|
3
|
+
currentRoute: Readonly<BookFullRoute>;
|
|
4
|
+
router: BookRouter;
|
|
5
|
+
}, {}, {}, `book-breadcrumbs-${string}`, `book-breadcrumbs-${string}`, import("lit-html").HTMLTemplateResult | import("lit-html").HTMLTemplateResult[]>;
|
package/dist/ui/elements/{element-book-breadcrumbs.element.js → book-breadcrumbs.element.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { assign, css, html } from 'element-vir';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export const
|
|
6
|
-
tagName: '
|
|
2
|
+
import { BookMainRoute } from '../../routing/book-routing';
|
|
3
|
+
import { BookRouteLink } from './common/book-route-link.element';
|
|
4
|
+
import { defineBookElement } from './define-book-element';
|
|
5
|
+
export const BookBreadcrumbs = defineBookElement()({
|
|
6
|
+
tagName: 'book-breadcrumbs',
|
|
7
7
|
styles: css `
|
|
8
8
|
:host {
|
|
9
9
|
display: flex;
|
|
@@ -30,13 +30,13 @@ export const ElementBookBreadcrumbs = defineElementBookElement()({
|
|
|
30
30
|
<span class="spacer">></span>
|
|
31
31
|
`;
|
|
32
32
|
return html `
|
|
33
|
-
<${
|
|
34
|
-
${assign(
|
|
33
|
+
<${BookRouteLink}
|
|
34
|
+
${assign(BookRouteLink, {
|
|
35
35
|
route: {
|
|
36
36
|
hash: undefined,
|
|
37
37
|
search: undefined,
|
|
38
38
|
paths: [
|
|
39
|
-
|
|
39
|
+
BookMainRoute.Book,
|
|
40
40
|
...fullPathSoFar,
|
|
41
41
|
],
|
|
42
42
|
},
|
|
@@ -44,7 +44,7 @@ export const ElementBookBreadcrumbs = defineElementBookElement()({
|
|
|
44
44
|
})}
|
|
45
45
|
>
|
|
46
46
|
${currentPath}
|
|
47
|
-
</${
|
|
47
|
+
</${BookRouteLink}>
|
|
48
48
|
${spacer}
|
|
49
49
|
`;
|
|
50
50
|
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BookTreeNode } from '../../data/book-tree/book-tree-node';
|
|
2
|
+
import { BookRouter } from '../../routing/book-routing';
|
|
3
|
+
export declare const BookNav: import("element-vir").DeclarativeElementDefinition<"book-nav", {
|
|
4
|
+
flattenedNodes: ReadonlyArray<Readonly<BookTreeNode>>;
|
|
5
|
+
selectedPath: ReadonlyArray<string> | undefined;
|
|
6
|
+
router: BookRouter | undefined;
|
|
7
|
+
}, {}, {}, `book-nav-${string}`, "book-nav-internal-indent", import("lit-html").HTMLTemplateResult>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { areJsonEqual } from '@augment-vir/common';
|
|
2
|
+
import { assign, classMap, css, html, renderIf } from 'element-vir';
|
|
3
|
+
import { Element16Icon, ViraIcon } from 'vira';
|
|
4
|
+
import { BookEntryTypeEnum } from '../../data/book-entry/book-entry-type';
|
|
5
|
+
import { isBookTreeNode } from '../../data/book-tree/book-tree';
|
|
6
|
+
import { BookMainRoute } from '../../routing/book-routing';
|
|
7
|
+
import { colorThemeCssVars } from '../color-theme/color-theme';
|
|
8
|
+
import { BookRouteLink } from './common/book-route-link.element';
|
|
9
|
+
import { defineBookElement } from './define-book-element';
|
|
10
|
+
import { ElementBookSlotName } from './element-book-app/element-book-app-slots';
|
|
11
|
+
export const BookNav = defineBookElement()({
|
|
12
|
+
tagName: 'book-nav',
|
|
13
|
+
cssVars: {
|
|
14
|
+
'book-nav-internal-indent': '0',
|
|
15
|
+
},
|
|
16
|
+
styles: ({ cssVars }) => css `
|
|
17
|
+
:host {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
padding: 16px 0;
|
|
21
|
+
background-color: ${colorThemeCssVars['element-book-page-background-faint-level-2-color'].value};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.title-row:hover {
|
|
25
|
+
background-color: ${colorThemeCssVars['element-book-nav-hover-background-color'].value};
|
|
26
|
+
color: ${colorThemeCssVars['element-book-nav-hover-foreground-color'].value};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.title-row:active {
|
|
30
|
+
background-color: ${colorThemeCssVars['element-book-nav-active-background-color']
|
|
31
|
+
.value};
|
|
32
|
+
color: ${colorThemeCssVars['element-book-nav-active-foreground-color'].value};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.title-row {
|
|
36
|
+
display: block;
|
|
37
|
+
${BookRouteLink.cssVars['book-route-link-anchor-padding']
|
|
38
|
+
.name}: 1px 24px 1px calc(calc(16px * ${cssVars['book-nav-internal-indent']
|
|
39
|
+
.value}) + 8px);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
ul {
|
|
43
|
+
list-style: none;
|
|
44
|
+
padding: 0;
|
|
45
|
+
margin: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.selected,
|
|
49
|
+
.selected:hover {
|
|
50
|
+
background-color: ${colorThemeCssVars['element-book-nav-selected-background-color']
|
|
51
|
+
.value};
|
|
52
|
+
color: ${colorThemeCssVars['element-book-nav-selected-foreground-color'].value};
|
|
53
|
+
pointer-events: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.title-text {
|
|
57
|
+
white-space: nowrap;
|
|
58
|
+
padding: 1px 0;
|
|
59
|
+
text-overflow: ellipsis;
|
|
60
|
+
display: flex;
|
|
61
|
+
gap: 8px;
|
|
62
|
+
align-items: center;
|
|
63
|
+
font-size: 16px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
${ViraIcon} {
|
|
67
|
+
display: inline-flex;
|
|
68
|
+
color: ${colorThemeCssVars['element-book-accent-icon-color'].value};
|
|
69
|
+
}
|
|
70
|
+
`,
|
|
71
|
+
renderCallback({ inputs }) {
|
|
72
|
+
const navTreeTemplates = inputs.flattenedNodes.map((treeNode) => {
|
|
73
|
+
const liStyle = css `
|
|
74
|
+
--book-nav-internal-indent: ${treeNode.fullUrlBreadcrumbs.length};
|
|
75
|
+
`;
|
|
76
|
+
return html `
|
|
77
|
+
<li style=${liStyle}>
|
|
78
|
+
<${BookRouteLink}
|
|
79
|
+
${assign(BookRouteLink, {
|
|
80
|
+
router: inputs.router,
|
|
81
|
+
route: {
|
|
82
|
+
paths: [
|
|
83
|
+
BookMainRoute.Book,
|
|
84
|
+
...treeNode.fullUrlBreadcrumbs,
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
})}
|
|
88
|
+
class=${classMap({
|
|
89
|
+
'title-row': true,
|
|
90
|
+
selected: inputs.selectedPath
|
|
91
|
+
? areJsonEqual(inputs.selectedPath, treeNode.fullUrlBreadcrumbs)
|
|
92
|
+
: false,
|
|
93
|
+
})}
|
|
94
|
+
>
|
|
95
|
+
<div class="title-text">
|
|
96
|
+
${renderIf(isBookTreeNode(treeNode, BookEntryTypeEnum.ElementExample), html `
|
|
97
|
+
<${ViraIcon}
|
|
98
|
+
${assign(ViraIcon, { icon: Element16Icon })}
|
|
99
|
+
></${ViraIcon}>
|
|
100
|
+
`)}
|
|
101
|
+
${treeNode.entry.title}
|
|
102
|
+
</div>
|
|
103
|
+
</${BookRouteLink}>
|
|
104
|
+
</li>
|
|
105
|
+
`;
|
|
106
|
+
});
|
|
107
|
+
return html `
|
|
108
|
+
<slot name=${ElementBookSlotName.NavHeader}></slot>
|
|
109
|
+
<ul>
|
|
110
|
+
${navTreeTemplates}
|
|
111
|
+
</ul>
|
|
112
|
+
`;
|
|
113
|
+
},
|
|
114
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isRuntimeTypeOf } from '@augment-vir/common';
|
|
2
|
+
import { css, html } from 'element-vir';
|
|
3
|
+
import { defineBookElement } from '../define-book-element';
|
|
4
|
+
export const BookError = defineBookElement()({
|
|
5
|
+
tagName: 'book-error',
|
|
6
|
+
styles: css `
|
|
7
|
+
:host {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
color: red;
|
|
11
|
+
font-weight: bold;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
p {
|
|
15
|
+
margin: 0;
|
|
16
|
+
padding: 0;
|
|
17
|
+
}
|
|
18
|
+
`,
|
|
19
|
+
renderCallback({ inputs }) {
|
|
20
|
+
const paragraphs = isRuntimeTypeOf(inputs.message, 'array')
|
|
21
|
+
? inputs.message
|
|
22
|
+
: [inputs.message];
|
|
23
|
+
return paragraphs.map((paragraph) => html `
|
|
24
|
+
<p>${paragraph}</p>
|
|
25
|
+
`);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BookFullRoute, BookRouter } from '../../../routing/book-routing';
|
|
2
|
+
export declare const BookRouteLink: import("element-vir").DeclarativeElementDefinition<"book-route-link", {
|
|
3
|
+
route: Partial<BookFullRoute>;
|
|
4
|
+
router: BookRouter | undefined;
|
|
5
|
+
}, {}, {}, `book-route-link-${string}`, "book-route-link-anchor-padding", import("lit-html").HTMLTemplateResult>;
|
package/dist/ui/elements/common/{element-book-route-link.element.js → book-route-link.element.js}
RENAMED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { css, html, listen } from 'element-vir';
|
|
2
2
|
import { shouldMouseEventTriggerRoutes } from 'spa-router-vir';
|
|
3
3
|
import { ChangeRouteEvent } from '../../events/change-route.event';
|
|
4
|
-
import {
|
|
5
|
-
export const
|
|
6
|
-
tagName: '
|
|
4
|
+
import { defineBookElement } from '../define-book-element';
|
|
5
|
+
export const BookRouteLink = defineBookElement()({
|
|
6
|
+
tagName: 'book-route-link',
|
|
7
7
|
cssVars: {
|
|
8
|
-
'
|
|
8
|
+
'book-route-link-anchor-padding': '',
|
|
9
9
|
},
|
|
10
10
|
styles: ({ cssVars }) => css `
|
|
11
11
|
a {
|
|
12
12
|
box-sizing: border-box;
|
|
13
13
|
display: block;
|
|
14
|
-
padding: ${cssVars['
|
|
14
|
+
padding: ${cssVars['book-route-link-anchor-padding'].value};
|
|
15
15
|
text-decoration: inherit;
|
|
16
16
|
color: inherit;
|
|
17
17
|
height: 100%;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type BookTagName = `
|
|
2
|
-
export declare const
|
|
1
|
+
export type BookTagName = `book-${string}`;
|
|
2
|
+
export declare const defineBookElement: <InputsGeneric extends {}>() => <TagName extends `book-${string}`, StateInit extends {}, EventsInit extends {}, HostClassKeys extends `${TagName}-${string}`, CssVarKeys extends `${TagName}-${string}`, RenderOutput extends any>(inputs: import("element-vir").DeclarativeElementInit<TagName, InputsGeneric, StateInit, EventsInit, HostClassKeys, CssVarKeys, RenderOutput>) => import("element-vir").DeclarativeElementDefinition<TagName, InputsGeneric, StateInit, EventsInit, HostClassKeys, CssVarKeys, RenderOutput>, defineBookElementNoInputs: <TagName_1 extends `book-${string}`, Inputs extends {}, StateInit_1 extends {}, EventsInit_1 extends {}, HostClassKeys_1 extends `${TagName_1}-${string}`, CssVarKeys_1 extends `${TagName_1}-${string}`, RenderOutput_1 extends any>(inputs: import("element-vir").DeclarativeElementInit<TagName_1, Inputs, StateInit_1, EventsInit_1, HostClassKeys_1, CssVarKeys_1, RenderOutput_1>) => import("element-vir").DeclarativeElementDefinition<TagName_1, Inputs, StateInit_1, EventsInit_1, HostClassKeys_1, CssVarKeys_1, RenderOutput_1>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { wrapDefineElement } from 'element-vir';
|
|
2
|
-
export const { defineElement:
|
|
2
|
+
export const { defineElement: defineBookElement, defineElementNoInputs: defineBookElementNoInputs } = wrapDefineElement();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export var ElementBookSlotName;
|
|
2
2
|
(function (ElementBookSlotName) {
|
|
3
|
-
ElementBookSlotName["Footer"] = "
|
|
4
|
-
ElementBookSlotName["NavHeader"] = "
|
|
3
|
+
ElementBookSlotName["Footer"] = "book-footer";
|
|
4
|
+
ElementBookSlotName["NavHeader"] = "book-nav-header";
|
|
5
5
|
})(ElementBookSlotName || (ElementBookSlotName = {}));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CurrentControls } from '../../../data/book-entry/book-page/current-controls';
|
|
1
2
|
import { ColorTheme } from '../../color-theme/color-theme';
|
|
2
3
|
import { ThemeConfig } from '../../color-theme/create-color-theme';
|
|
3
4
|
import { ElementBookConfig } from './element-book-config';
|
|
@@ -6,9 +7,13 @@ type ColorThemeState = {
|
|
|
6
7
|
theme: ColorTheme;
|
|
7
8
|
};
|
|
8
9
|
export declare const ElementBookApp: import("element-vir").DeclarativeElementDefinition<"element-book-app", ElementBookConfig, {
|
|
9
|
-
currentRoute: Readonly<Required<Readonly<import("spa-router-vir").FullRoute<import("../../../routing/
|
|
10
|
-
router: Readonly<import("spa-router-vir").SpaRouter<import("../../../routing/
|
|
10
|
+
currentRoute: Readonly<Required<Readonly<import("spa-router-vir").FullRoute<import("../../../routing/book-routing").ValidBookPaths, Record<string, string> | undefined, undefined>>>>;
|
|
11
|
+
router: Readonly<import("spa-router-vir").SpaRouter<import("../../../routing/book-routing").ValidBookPaths, Record<string, string> | undefined, undefined>> | undefined;
|
|
11
12
|
colors: ColorThemeState;
|
|
13
|
+
treeBasedCurrentControls: {
|
|
14
|
+
trigger: ElementBookConfig['entries'];
|
|
15
|
+
currentControls: CurrentControls;
|
|
16
|
+
} | undefined;
|
|
12
17
|
}, {
|
|
13
18
|
pathUpdate: import("element-vir").DefinedTypedEventNameDefinition<readonly string[]>;
|
|
14
19
|
}, "element-book-app-", "element-book-app-", import("lit-html").HTMLTemplateResult>;
|