element-book 22.2.2 → 23.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 +65 -5
- package/dist/data/book-entry/base-book-entry.d.ts +7 -2
- package/dist/data/book-entry/book-entry-type.d.ts +12 -2
- package/dist/data/book-entry/book-entry-type.js +11 -6
- package/dist/data/book-entry/book-entry.d.ts +14 -4
- package/dist/data/book-entry/book-entry.js +7 -2
- package/dist/data/book-entry/book-page/book-page-controls.d.ts +62 -10
- package/dist/data/book-entry/book-page/book-page-controls.js +38 -16
- package/dist/data/book-entry/book-page/book-page.d.ts +29 -8
- package/dist/data/book-entry/book-page/book-page.js +1 -0
- package/dist/data/book-entry/book-page/controls-wrapper.d.ts +24 -4
- package/dist/data/book-entry/book-page/controls-wrapper.js +18 -3
- package/dist/data/book-entry/book-page/define-book-page.d.ts +44 -12
- package/dist/data/book-entry/book-page/define-book-page.js +19 -12
- package/dist/data/book-entry/book-root.d.ts +8 -3
- package/dist/data/book-entry/url-breadcrumbs.d.ts +17 -1
- package/dist/data/book-entry/url-breadcrumbs.js +16 -0
- package/dist/data/book-entry/verify-book-entry.d.ts +3 -6
- package/dist/data/book-entry/verify-book-entry.js +7 -7
- package/dist/data/book-tree/book-tree-node.d.ts +26 -7
- package/dist/data/book-tree/book-tree-node.js +5 -0
- package/dist/data/book-tree/book-tree.d.ts +7 -7
- package/dist/data/book-tree/book-tree.js +16 -15
- package/dist/data/book-tree/search-nodes.d.ts +1 -1
- package/dist/data/book-tree/search-nodes.js +4 -4
- package/dist/data/book-tree/tree-cache.d.ts +2 -2
- package/dist/index.d.ts +18 -10
- package/dist/index.js +18 -10
- package/dist/routing/book-router.d.ts +1 -1
- package/dist/routing/book-router.js +3 -3
- package/dist/routing/book-routing.d.ts +25 -0
- package/dist/routing/book-routing.js +15 -0
- package/dist/ui/color-theme/color-theme.d.ts +33 -13
- package/dist/ui/color-theme/color-theme.js +14 -5
- package/dist/ui/color-theme/create-color-theme.d.ts +23 -3
- package/dist/ui/color-theme/create-color-theme.js +15 -0
- package/dist/ui/elements/book-breadcrumbs.element.d.ts +3 -3
- package/dist/ui/elements/book-breadcrumbs.element.js +4 -4
- package/dist/ui/elements/book-nav/book-nav-filter.d.ts +1 -1
- package/dist/ui/elements/book-nav/book-nav-filter.js +6 -10
- package/dist/ui/elements/book-nav/book-nav.element.d.ts +3 -3
- package/dist/ui/elements/book-nav/book-nav.element.js +13 -13
- package/dist/ui/elements/common/book-error.element.d.ts +1 -1
- package/dist/ui/elements/common/book-error.element.js +4 -6
- package/dist/ui/elements/common/book-route-link.element.d.ts +3 -3
- package/dist/ui/elements/common/book-route-link.element.js +3 -3
- package/dist/ui/elements/define-book-element.d.ts +1 -1
- package/dist/ui/elements/element-book-app/element-book-app-slots.d.ts +13 -0
- package/dist/ui/elements/element-book-app/element-book-app-slots.js +13 -0
- package/dist/ui/elements/element-book-app/element-book-app.element.d.ts +22 -11
- package/dist/ui/elements/element-book-app/element-book-app.element.js +42 -36
- package/dist/ui/elements/element-book-app/element-book-config.d.ts +26 -16
- package/dist/ui/elements/element-book-app/get-current-nodes.d.ts +2 -2
- package/dist/ui/elements/element-book-app/get-current-nodes.js +3 -8
- package/dist/ui/elements/element-book-app/global-values.d.ts +5 -0
- package/dist/ui/elements/entry-display/book-breadcrumbs-bar.element.d.ts +3 -3
- package/dist/ui/elements/entry-display/book-breadcrumbs-bar.element.js +8 -8
- package/dist/ui/elements/entry-display/book-entry-description.element.d.ts +1 -1
- package/dist/ui/elements/entry-display/book-entry-description.element.js +3 -3
- package/dist/ui/elements/entry-display/book-page/book-page-controls.element.d.ts +6 -6
- package/dist/ui/elements/entry-display/book-page/book-page-controls.element.js +14 -14
- package/dist/ui/elements/entry-display/book-page/book-page-wrapper.element.d.ts +6 -6
- package/dist/ui/elements/entry-display/book-page/book-page-wrapper.element.js +13 -11
- package/dist/ui/elements/entry-display/element-example/book-element-example-controls.element.d.ts +5 -5
- package/dist/ui/elements/entry-display/element-example/book-element-example-controls.element.js +5 -5
- package/dist/ui/elements/entry-display/element-example/book-element-example-viewer.element.d.ts +5 -5
- package/dist/ui/elements/entry-display/element-example/book-element-example-viewer.element.js +13 -9
- package/dist/ui/elements/entry-display/element-example/book-element-example-wrapper.element.d.ts +6 -6
- package/dist/ui/elements/entry-display/element-example/book-element-example-wrapper.element.js +5 -5
- package/dist/ui/elements/entry-display/entry-display/book-entry-display.element.d.ts +9 -9
- package/dist/ui/elements/entry-display/entry-display/book-entry-display.element.js +6 -6
- package/dist/ui/elements/entry-display/entry-display/create-node-templates.d.ts +5 -5
- package/dist/ui/elements/entry-display/entry-display/create-node-templates.js +16 -16
- package/dist/ui/events/change-route.event.d.ts +1 -1
- package/dist/util/fuzzy-search.js +3 -2
- package/dist/util/type.d.ts +7 -0
- package/package.json +31 -29
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { check } from '@augment-vir/assert';
|
|
2
|
+
import { extractEventTarget } from '@augment-vir/web';
|
|
2
3
|
import { css, defineElementEvent, html, listen, renderIf } from 'element-vir';
|
|
3
|
-
import { isRunTimeType } from 'run-time-assertions';
|
|
4
4
|
import { Options24Icon, ViraIcon, ViraInput } from 'vira';
|
|
5
|
-
import {
|
|
6
|
-
import { colorThemeCssVars } from '../../../color-theme/color-theme';
|
|
7
|
-
import { defineBookElement } from '../../define-book-element';
|
|
5
|
+
import { BookPageControlType, isControlInitType, } from '../../../../data/book-entry/book-page/book-page-controls.js';
|
|
6
|
+
import { colorThemeCssVars } from '../../../color-theme/color-theme.js';
|
|
7
|
+
import { defineBookElement } from '../../define-book-element.js';
|
|
8
8
|
export const BookPageControls = defineBookElement()({
|
|
9
9
|
tagName: 'book-page-controls',
|
|
10
10
|
events: {
|
|
@@ -53,16 +53,16 @@ export const BookPageControls = defineBookElement()({
|
|
|
53
53
|
margin-left: -32px;
|
|
54
54
|
}
|
|
55
55
|
`,
|
|
56
|
-
|
|
56
|
+
render({ inputs, dispatch, events }) {
|
|
57
57
|
if (!Object.entries(inputs.config).length) {
|
|
58
58
|
return '';
|
|
59
59
|
}
|
|
60
60
|
return Object.entries(inputs.config).map(([controlName, controlInit,], index) => {
|
|
61
|
-
if (controlInit.controlType ===
|
|
61
|
+
if (controlInit.controlType === BookPageControlType.Hidden) {
|
|
62
62
|
return '';
|
|
63
63
|
}
|
|
64
64
|
const controlInputTemplate = createControlInput(inputs.currentValues[controlName], controlInit, (newValue) => {
|
|
65
|
-
const fullUrlBreadcrumbs =
|
|
65
|
+
const fullUrlBreadcrumbs = check.isArray(inputs.fullUrlBreadcrumbs)
|
|
66
66
|
? inputs.fullUrlBreadcrumbs
|
|
67
67
|
: inputs.fullUrlBreadcrumbs[controlName];
|
|
68
68
|
if (!fullUrlBreadcrumbs) {
|
|
@@ -93,10 +93,10 @@ export const BookPageControls = defineBookElement()({
|
|
|
93
93
|
},
|
|
94
94
|
});
|
|
95
95
|
function createControlInput(value, controlInit, valueChange) {
|
|
96
|
-
if (isControlInitType(controlInit,
|
|
96
|
+
if (isControlInitType(controlInit, BookPageControlType.Hidden)) {
|
|
97
97
|
return '';
|
|
98
98
|
}
|
|
99
|
-
else if (isControlInitType(controlInit,
|
|
99
|
+
else if (isControlInitType(controlInit, BookPageControlType.Checkbox)) {
|
|
100
100
|
return html `
|
|
101
101
|
<input
|
|
102
102
|
type="checkbox"
|
|
@@ -108,7 +108,7 @@ function createControlInput(value, controlInit, valueChange) {
|
|
|
108
108
|
/>
|
|
109
109
|
`;
|
|
110
110
|
}
|
|
111
|
-
else if (isControlInitType(controlInit,
|
|
111
|
+
else if (isControlInitType(controlInit, BookPageControlType.Color)) {
|
|
112
112
|
return html `
|
|
113
113
|
<input
|
|
114
114
|
type="color"
|
|
@@ -120,7 +120,7 @@ function createControlInput(value, controlInit, valueChange) {
|
|
|
120
120
|
/>
|
|
121
121
|
`;
|
|
122
122
|
}
|
|
123
|
-
else if (isControlInitType(controlInit,
|
|
123
|
+
else if (isControlInitType(controlInit, BookPageControlType.Text)) {
|
|
124
124
|
return html `
|
|
125
125
|
<${ViraInput.assign({
|
|
126
126
|
value: String(value),
|
|
@@ -133,7 +133,7 @@ function createControlInput(value, controlInit, valueChange) {
|
|
|
133
133
|
></${ViraInput}>
|
|
134
134
|
`;
|
|
135
135
|
}
|
|
136
|
-
else if (isControlInitType(controlInit,
|
|
136
|
+
else if (isControlInitType(controlInit, BookPageControlType.Number)) {
|
|
137
137
|
return html `
|
|
138
138
|
<input
|
|
139
139
|
type="number"
|
|
@@ -145,7 +145,7 @@ function createControlInput(value, controlInit, valueChange) {
|
|
|
145
145
|
/>
|
|
146
146
|
`;
|
|
147
147
|
}
|
|
148
|
-
else if (isControlInitType(controlInit,
|
|
148
|
+
else if (isControlInitType(controlInit, BookPageControlType.Dropdown)) {
|
|
149
149
|
return html `
|
|
150
150
|
<select
|
|
151
151
|
.value=${value}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ControlsWrapper } from '../../../../data/book-entry/book-page/controls-wrapper';
|
|
3
|
-
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node';
|
|
4
|
-
import { BookRouter } from '../../../../routing/book-router';
|
|
1
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
2
|
+
import { ControlsWrapper } from '../../../../data/book-entry/book-page/controls-wrapper.js';
|
|
3
|
+
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node.js';
|
|
4
|
+
import { BookRouter } from '../../../../routing/book-router.js';
|
|
5
5
|
export declare const BookPageWrapper: import("element-vir").DeclarativeElementDefinition<"book-page-wrapper", {
|
|
6
6
|
isTopLevel: boolean;
|
|
7
|
-
pageNode: BookTreeNode<
|
|
7
|
+
pageNode: BookTreeNode<BookEntryType.Page>;
|
|
8
8
|
router: BookRouter | undefined;
|
|
9
9
|
controls: ControlsWrapper;
|
|
10
|
-
}, {}, {},
|
|
10
|
+
}, {}, {}, "book-page-wrapper-", "book-page-wrapper-", readonly []>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { combineErrors } from '@augment-vir/common';
|
|
2
2
|
import { css, html } from 'element-vir';
|
|
3
|
-
import { traverseControls, } from '../../../../data/book-entry/book-page/controls-wrapper';
|
|
4
|
-
import { BookMainRoute } from '../../../../routing/book-routing';
|
|
5
|
-
import { BookError } from '../../common/book-error.element';
|
|
6
|
-
import { BookRouteLink } from '../../common/book-route-link.element';
|
|
7
|
-
import { defineBookElement } from '../../define-book-element';
|
|
8
|
-
import { BookEntryDescription } from '../book-entry-description.element';
|
|
9
|
-
import { BookPageControls } from './book-page-controls.element';
|
|
3
|
+
import { traverseControls, } from '../../../../data/book-entry/book-page/controls-wrapper.js';
|
|
4
|
+
import { BookMainRoute } from '../../../../routing/book-routing.js';
|
|
5
|
+
import { BookError } from '../../common/book-error.element.js';
|
|
6
|
+
import { BookRouteLink } from '../../common/book-route-link.element.js';
|
|
7
|
+
import { defineBookElement } from '../../define-book-element.js';
|
|
8
|
+
import { BookEntryDescription } from '../book-entry-description.element.js';
|
|
9
|
+
import { BookPageControls } from './book-page-controls.element.js';
|
|
10
10
|
export const BookPageWrapper = defineBookElement()({
|
|
11
11
|
tagName: 'book-page-wrapper',
|
|
12
12
|
styles: css `
|
|
@@ -34,7 +34,7 @@ export const BookPageWrapper = defineBookElement()({
|
|
|
34
34
|
display: inline-block;
|
|
35
35
|
}
|
|
36
36
|
`,
|
|
37
|
-
|
|
37
|
+
render({ inputs }) {
|
|
38
38
|
const titleTemplate = inputs.isTopLevel
|
|
39
39
|
? html `
|
|
40
40
|
<h2 class="header-with-icon">${inputs.pageNode.entry.title}</h2>
|
|
@@ -46,7 +46,9 @@ export const BookPageWrapper = defineBookElement()({
|
|
|
46
46
|
BookMainRoute.Book,
|
|
47
47
|
...inputs.pageNode.fullUrlBreadcrumbs,
|
|
48
48
|
];
|
|
49
|
-
const error =
|
|
49
|
+
const error = inputs.pageNode.entry.errors.length
|
|
50
|
+
? combineErrors(inputs.pageNode.entry.errors)
|
|
51
|
+
: undefined;
|
|
50
52
|
if (error) {
|
|
51
53
|
console.error(error);
|
|
52
54
|
}
|
|
@@ -63,13 +65,13 @@ export const BookPageWrapper = defineBookElement()({
|
|
|
63
65
|
})}>
|
|
64
66
|
${titleTemplate}
|
|
65
67
|
</${BookRouteLink}>
|
|
66
|
-
${
|
|
68
|
+
${error
|
|
67
69
|
? html `
|
|
68
70
|
<${BookError.assign({ message: error.message })}></${BookError}>
|
|
69
71
|
`
|
|
70
72
|
: html `
|
|
71
73
|
<${BookEntryDescription.assign({
|
|
72
|
-
descriptionParagraphs: inputs.pageNode.entry.descriptionParagraphs
|
|
74
|
+
descriptionParagraphs: inputs.pageNode.entry.descriptionParagraphs,
|
|
73
75
|
})}></${BookEntryDescription}>
|
|
74
76
|
<${BookPageControls.assign({
|
|
75
77
|
config: inputs.pageNode.entry.controls,
|
package/dist/ui/elements/entry-display/element-example/book-element-example-controls.element.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node';
|
|
3
|
-
import { BookRouter } from '../../../../routing/book-router';
|
|
1
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
2
|
+
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node.js';
|
|
3
|
+
import { BookRouter } from '../../../../routing/book-router.js';
|
|
4
4
|
export declare const BookElementExampleControls: import("element-vir").DeclarativeElementDefinition<"book-element-example-controls", {
|
|
5
|
-
elementExampleNode: BookTreeNode<
|
|
5
|
+
elementExampleNode: BookTreeNode<BookEntryType.ElementExample>;
|
|
6
6
|
router: BookRouter | undefined;
|
|
7
|
-
}, {}, {},
|
|
7
|
+
}, {}, {}, "book-element-example-controls-", "book-element-example-controls-", readonly []>;
|
package/dist/ui/elements/entry-display/element-example/book-element-example-controls.element.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { css, html } from 'element-vir';
|
|
2
|
-
import { BookMainRoute } from '../../../../routing/book-routing';
|
|
3
|
-
import { colorThemeCssVars } from '../../../color-theme/color-theme';
|
|
4
|
-
import { BookRouteLink } from '../../common/book-route-link.element';
|
|
5
|
-
import { defineBookElement } from '../../define-book-element';
|
|
2
|
+
import { BookMainRoute } from '../../../../routing/book-routing.js';
|
|
3
|
+
import { colorThemeCssVars } from '../../../color-theme/color-theme.js';
|
|
4
|
+
import { BookRouteLink } from '../../common/book-route-link.element.js';
|
|
5
|
+
import { defineBookElement } from '../../define-book-element.js';
|
|
6
6
|
export const BookElementExampleControls = defineBookElement()({
|
|
7
7
|
tagName: 'book-element-example-controls',
|
|
8
8
|
styles: css `
|
|
@@ -13,7 +13,7 @@ export const BookElementExampleControls = defineBookElement()({
|
|
|
13
13
|
padding: 0 8px 4px;
|
|
14
14
|
}
|
|
15
15
|
`,
|
|
16
|
-
|
|
16
|
+
render({ inputs }) {
|
|
17
17
|
const linkPaths = [
|
|
18
18
|
BookMainRoute.Book,
|
|
19
19
|
...inputs.elementExampleNode.fullUrlBreadcrumbs,
|
package/dist/ui/elements/entry-display/element-example/book-element-example-viewer.element.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BookPageControlsValues } from '../../../../data/book-entry/book-page/book-page-controls';
|
|
3
|
-
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node';
|
|
1
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
2
|
+
import { BookPageControlsValues } from '../../../../data/book-entry/book-page/book-page-controls.js';
|
|
3
|
+
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node.js';
|
|
4
4
|
export declare const BookElementExampleViewer: import("element-vir").DeclarativeElementDefinition<"book-element-example-viewer", {
|
|
5
|
-
elementExampleNode: BookTreeNode<
|
|
5
|
+
elementExampleNode: BookTreeNode<BookEntryType.ElementExample>;
|
|
6
6
|
currentPageControls: BookPageControlsValues;
|
|
7
|
-
}, any, {},
|
|
7
|
+
}, any, {}, "book-element-example-viewer-", "book-element-example-viewer-", readonly []>;
|
package/dist/ui/elements/entry-display/element-example/book-element-example-viewer.element.js
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { combineErrors, extractErrorMessage } from '@augment-vir/common';
|
|
2
2
|
import { html, renderIf } from 'element-vir';
|
|
3
|
-
import { unsetInternalState } from '../../../../data/unset';
|
|
4
|
-
import { BookError } from '../../common/book-error.element';
|
|
5
|
-
import { defineBookElement } from '../../define-book-element';
|
|
3
|
+
import { unsetInternalState } from '../../../../data/unset.js';
|
|
4
|
+
import { BookError } from '../../common/book-error.element.js';
|
|
5
|
+
import { defineBookElement } from '../../define-book-element.js';
|
|
6
6
|
export const BookElementExampleViewer = defineBookElement()({
|
|
7
7
|
tagName: 'book-element-example-viewer',
|
|
8
8
|
stateInitStatic: {
|
|
9
9
|
isUnset: unsetInternalState,
|
|
10
10
|
},
|
|
11
|
-
|
|
11
|
+
render({ state, inputs, updateState }) {
|
|
12
12
|
try {
|
|
13
13
|
if (inputs.elementExampleNode.entry.errors.length) {
|
|
14
14
|
throw combineErrors(inputs.elementExampleNode.entry.errors);
|
|
15
15
|
}
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
if (
|
|
17
|
+
/** This is a check to make sure the input entry _does_ match the expected type. */
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
19
|
+
!inputs.elementExampleNode.entry.render ||
|
|
20
|
+
typeof inputs.elementExampleNode.entry.render === 'string') {
|
|
21
|
+
throw new Error(`Failed to render example '${inputs.elementExampleNode.entry.title}': render is not a function`);
|
|
19
22
|
}
|
|
20
23
|
if (state.isUnset === unsetInternalState) {
|
|
21
24
|
updateState({
|
|
@@ -23,13 +26,13 @@ export const BookElementExampleViewer = defineBookElement()({
|
|
|
23
26
|
...inputs.elementExampleNode.entry.stateInitStatic,
|
|
24
27
|
});
|
|
25
28
|
}
|
|
26
|
-
const output = inputs.elementExampleNode.entry.
|
|
29
|
+
const output = inputs.elementExampleNode.entry.render({
|
|
27
30
|
state,
|
|
28
31
|
updateState,
|
|
29
32
|
controls: inputs.currentPageControls,
|
|
30
33
|
});
|
|
31
34
|
if (output instanceof Promise) {
|
|
32
|
-
throw new
|
|
35
|
+
throw new TypeError('render output cannot be a promise');
|
|
33
36
|
}
|
|
34
37
|
return html `
|
|
35
38
|
${renderIf(!!inputs.elementExampleNode.entry.styles, html `
|
|
@@ -41,6 +44,7 @@ export const BookElementExampleViewer = defineBookElement()({
|
|
|
41
44
|
`;
|
|
42
45
|
}
|
|
43
46
|
catch (error) {
|
|
47
|
+
console.error('ERROR HERE', extractErrorMessage(error));
|
|
44
48
|
console.error(error);
|
|
45
49
|
return html `
|
|
46
50
|
<${BookError.assign({
|
package/dist/ui/elements/entry-display/element-example/book-element-example-wrapper.element.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BookPageControlsValues } from '../../../../data/book-entry/book-page/book-page-controls';
|
|
3
|
-
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node';
|
|
4
|
-
import { BookRouter } from '../../../../routing/book-router';
|
|
1
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
2
|
+
import { BookPageControlsValues } from '../../../../data/book-entry/book-page/book-page-controls.js';
|
|
3
|
+
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node.js';
|
|
4
|
+
import { BookRouter } from '../../../../routing/book-router.js';
|
|
5
5
|
export declare const BookElementExampleWrapper: import("element-vir").DeclarativeElementDefinition<"book-element-example-wrapper", {
|
|
6
|
-
elementExampleNode: BookTreeNode<
|
|
6
|
+
elementExampleNode: BookTreeNode<BookEntryType.ElementExample>;
|
|
7
7
|
currentPageControls: BookPageControlsValues;
|
|
8
8
|
router: BookRouter | undefined;
|
|
9
|
-
}, {}, {},
|
|
9
|
+
}, {}, {}, "book-element-example-wrapper-", "book-element-example-wrapper-", readonly []>;
|
package/dist/ui/elements/entry-display/element-example/book-element-example-wrapper.element.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { omitObjectKeys } from '@augment-vir/common';
|
|
2
2
|
import { css, html } from 'element-vir';
|
|
3
|
-
import { colorThemeCssVars } from '../../../color-theme/color-theme';
|
|
4
|
-
import { defineBookElement } from '../../define-book-element';
|
|
5
|
-
import { BookElementExampleControls } from './book-element-example-controls.element';
|
|
6
|
-
import { BookElementExampleViewer } from './book-element-example-viewer.element';
|
|
3
|
+
import { colorThemeCssVars } from '../../../color-theme/color-theme.js';
|
|
4
|
+
import { defineBookElement } from '../../define-book-element.js';
|
|
5
|
+
import { BookElementExampleControls } from './book-element-example-controls.element.js';
|
|
6
|
+
import { BookElementExampleViewer } from './book-element-example-viewer.element.js';
|
|
7
7
|
export const BookElementExampleWrapper = defineBookElement()({
|
|
8
8
|
tagName: 'book-element-example-wrapper',
|
|
9
9
|
styles: css `
|
|
@@ -40,7 +40,7 @@ export const BookElementExampleWrapper = defineBookElement()({
|
|
|
40
40
|
color: ${colorThemeCssVars['element-book-accent-icon-color'].value};
|
|
41
41
|
}
|
|
42
42
|
`,
|
|
43
|
-
|
|
43
|
+
render({ inputs }) {
|
|
44
44
|
return html `
|
|
45
45
|
<div class="individual-example-wrapper">
|
|
46
46
|
<${BookElementExampleControls.assign(omitObjectKeys(inputs, ['currentPageControls']))}></${BookElementExampleControls}>
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ControlsWrapper } from '../../../../data/book-entry/book-page/controls-wrapper';
|
|
3
|
-
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node';
|
|
4
|
-
import { BookRouter } from '../../../../routing/book-router';
|
|
5
|
-
import { BookFullRoute } from '../../../../routing/book-routing';
|
|
1
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
2
|
+
import { ControlsWrapper } from '../../../../data/book-entry/book-page/controls-wrapper.js';
|
|
3
|
+
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node.js';
|
|
4
|
+
import { BookRouter } from '../../../../routing/book-router.js';
|
|
5
|
+
import { BookFullRoute } from '../../../../routing/book-routing.js';
|
|
6
6
|
export declare const BookEntryDisplay: import("element-vir").DeclarativeElementDefinition<"book-entry-display", {
|
|
7
7
|
controls: ControlsWrapper;
|
|
8
8
|
currentNodes: ReadonlyArray<BookTreeNode>;
|
|
9
9
|
currentRoute: Readonly<BookFullRoute>;
|
|
10
10
|
debug: boolean;
|
|
11
|
-
originalTree: Readonly<BookTreeNode<
|
|
11
|
+
originalTree: Readonly<BookTreeNode<BookEntryType.Root>>;
|
|
12
12
|
router: BookRouter | undefined;
|
|
13
13
|
showLoading: boolean;
|
|
14
14
|
}, {
|
|
15
|
-
lastElement:
|
|
15
|
+
lastElement: undefined | Element;
|
|
16
16
|
}, {
|
|
17
|
-
loadingRender: import("element-vir").
|
|
18
|
-
},
|
|
17
|
+
loadingRender: import("element-vir").DefineEvent<boolean>;
|
|
18
|
+
}, "book-entry-display-", "book-entry-display-", readonly []>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { css, defineElementEvent, html, onDomCreated, renderIf } from 'element-vir';
|
|
2
2
|
import { LoaderAnimated24Icon, ViraIcon, viraAnimationDurations } from 'vira';
|
|
3
|
-
import { extractSearchQuery } from '../../../../routing/book-routing';
|
|
4
|
-
import { defineBookElement } from '../../define-book-element';
|
|
5
|
-
import { ElementBookSlotName } from '../../element-book-app/element-book-app-slots';
|
|
6
|
-
import { BookBreadcrumbsBar } from '../book-breadcrumbs-bar.element';
|
|
7
|
-
import { createNodeTemplates } from './create-node-templates';
|
|
3
|
+
import { extractSearchQuery } from '../../../../routing/book-routing.js';
|
|
4
|
+
import { defineBookElement } from '../../define-book-element.js';
|
|
5
|
+
import { ElementBookSlotName } from '../../element-book-app/element-book-app-slots.js';
|
|
6
|
+
import { BookBreadcrumbsBar } from '../book-breadcrumbs-bar.element.js';
|
|
7
|
+
import { createNodeTemplates } from './create-node-templates.js';
|
|
8
8
|
export const BookEntryDisplay = defineBookElement()({
|
|
9
9
|
tagName: 'book-entry-display',
|
|
10
10
|
styles: css `
|
|
@@ -70,7 +70,7 @@ export const BookEntryDisplay = defineBookElement()({
|
|
|
70
70
|
stateInitStatic: {
|
|
71
71
|
lastElement: undefined,
|
|
72
72
|
},
|
|
73
|
-
|
|
73
|
+
render: ({ inputs, dispatch, events, state, updateState }) => {
|
|
74
74
|
const currentSearch = extractSearchQuery(inputs.currentRoute.paths);
|
|
75
75
|
const entryTemplates = createNodeTemplates({
|
|
76
76
|
currentNodes: inputs.currentNodes,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { HtmlInterpolation } from 'element-vir';
|
|
2
|
-
import {
|
|
3
|
-
import { ControlsWrapper } from '../../../../data/book-entry/book-page/controls-wrapper';
|
|
4
|
-
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node';
|
|
5
|
-
import { BookRouter } from '../../../../routing/book-router';
|
|
2
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
3
|
+
import { ControlsWrapper } from '../../../../data/book-entry/book-page/controls-wrapper.js';
|
|
4
|
+
import { BookTreeNode } from '../../../../data/book-tree/book-tree-node.js';
|
|
5
|
+
import { BookRouter } from '../../../../routing/book-router.js';
|
|
6
6
|
export declare function createNodeTemplates({ currentNodes, isTopLevel, router, isSearching, controls, originalTree, }: {
|
|
7
7
|
currentNodes: ReadonlyArray<BookTreeNode>;
|
|
8
8
|
isTopLevel: boolean;
|
|
9
9
|
router: BookRouter | undefined;
|
|
10
10
|
isSearching: boolean;
|
|
11
11
|
controls: ControlsWrapper;
|
|
12
|
-
originalTree: Readonly<BookTreeNode<
|
|
12
|
+
originalTree: Readonly<BookTreeNode<BookEntryType.Root>>;
|
|
13
13
|
}): HtmlInterpolation[];
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { check } from '@augment-vir/assert';
|
|
2
|
+
import { mapObjectValues } from '@augment-vir/common';
|
|
2
3
|
import { html, nothing, repeat } from 'element-vir';
|
|
3
|
-
import {
|
|
4
|
-
import { traverseControls, } from '../../../../data/book-entry/book-page/controls-wrapper';
|
|
5
|
-
import { isBookTreeNode, traverseToImmediateParent } from '../../../../data/book-tree/book-tree';
|
|
6
|
-
import { BookError } from '../../common/book-error.element';
|
|
7
|
-
import { BookPageControls } from '../book-page/book-page-controls.element';
|
|
8
|
-
import { BookPageWrapper } from '../book-page/book-page-wrapper.element';
|
|
9
|
-
import { BookElementExampleWrapper } from '../element-example/book-element-example-wrapper.element';
|
|
4
|
+
import { BookEntryType } from '../../../../data/book-entry/book-entry-type.js';
|
|
5
|
+
import { traverseControls, } from '../../../../data/book-entry/book-page/controls-wrapper.js';
|
|
6
|
+
import { isBookTreeNode, traverseToImmediateParent } from '../../../../data/book-tree/book-tree.js';
|
|
7
|
+
import { BookError } from '../../common/book-error.element.js';
|
|
8
|
+
import { BookPageControls } from '../book-page/book-page-controls.element.js';
|
|
9
|
+
import { BookPageWrapper } from '../book-page/book-page-wrapper.element.js';
|
|
10
|
+
import { BookElementExampleWrapper } from '../element-example/book-element-example-wrapper.element.js';
|
|
10
11
|
function getFlattenedControlsFromHiddenParents(currentNodes, currentControls, currentNode, originalTree) {
|
|
11
12
|
const parent = traverseToImmediateParent(currentNode, originalTree);
|
|
12
13
|
const allControls = [];
|
|
@@ -16,8 +17,7 @@ function getFlattenedControlsFromHiddenParents(currentNodes, currentControls, cu
|
|
|
16
17
|
allControls.push(parentControls);
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
|
-
if (isBookTreeNode(currentNode,
|
|
20
|
-
!currentNodes.includes(currentNode)) {
|
|
20
|
+
if (isBookTreeNode(currentNode, BookEntryType.Page) && !currentNodes.includes(currentNode)) {
|
|
21
21
|
const currentEntryControls = traverseControls(currentControls, currentNode.fullUrlBreadcrumbs);
|
|
22
22
|
allControls.push({
|
|
23
23
|
config: currentNode.entry.controls,
|
|
@@ -52,12 +52,12 @@ export function createNodeTemplates({ currentNodes, isTopLevel, router, isSearch
|
|
|
52
52
|
`,
|
|
53
53
|
];
|
|
54
54
|
}
|
|
55
|
-
const hiddenAncestorControls = isLengthAtLeast(currentNodes, 1)
|
|
55
|
+
const hiddenAncestorControls = check.isLengthAtLeast(currentNodes, 1)
|
|
56
56
|
? getFlattenedControlsFromHiddenParents(currentNodes, controls, currentNodes[0], originalTree)
|
|
57
57
|
: undefined;
|
|
58
58
|
const hiddenAncestorControlsTemplate = hiddenAncestorControls &&
|
|
59
59
|
Object.values(hiddenAncestorControls.config).length &&
|
|
60
|
-
isLengthAtLeast(currentNodes, 1)
|
|
60
|
+
check.isLengthAtLeast(currentNodes, 1)
|
|
61
61
|
? html `
|
|
62
62
|
<${BookPageControls.assign({
|
|
63
63
|
config: hiddenAncestorControls.config,
|
|
@@ -66,8 +66,8 @@ export function createNodeTemplates({ currentNodes, isTopLevel, router, isSearch
|
|
|
66
66
|
})}></${BookPageControls}>
|
|
67
67
|
`
|
|
68
68
|
: nothing;
|
|
69
|
-
const templates = repeat(currentNodes, (node) => node.fullUrlBreadcrumbs.join('>'), (currentNode
|
|
70
|
-
if (isBookTreeNode(currentNode,
|
|
69
|
+
const templates = repeat(currentNodes, (node) => node.fullUrlBreadcrumbs.join('>'), (currentNode) => {
|
|
70
|
+
if (isBookTreeNode(currentNode, BookEntryType.Page)) {
|
|
71
71
|
return html `
|
|
72
72
|
<${BookPageWrapper.assign({
|
|
73
73
|
isTopLevel,
|
|
@@ -79,7 +79,7 @@ export function createNodeTemplates({ currentNodes, isTopLevel, router, isSearch
|
|
|
79
79
|
></${BookPageWrapper}>
|
|
80
80
|
`;
|
|
81
81
|
}
|
|
82
|
-
else if (isBookTreeNode(currentNode,
|
|
82
|
+
else if (isBookTreeNode(currentNode, BookEntryType.ElementExample)) {
|
|
83
83
|
const controlsForElementExample = traverseControls(controls, currentNode.fullUrlBreadcrumbs.slice(0, -1));
|
|
84
84
|
return html `
|
|
85
85
|
<${BookElementExampleWrapper.assign({
|
|
@@ -91,7 +91,7 @@ export function createNodeTemplates({ currentNodes, isTopLevel, router, isSearch
|
|
|
91
91
|
></${BookElementExampleWrapper}>
|
|
92
92
|
`;
|
|
93
93
|
}
|
|
94
|
-
else if (isBookTreeNode(currentNode,
|
|
94
|
+
else if (isBookTreeNode(currentNode, BookEntryType.Root)) {
|
|
95
95
|
return nothing;
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ChangeRouteEvent: import("element-vir").DefinedTypedEvent<"element-book-change-route", Partial<Required<Readonly<import("spa-router-vir").FullRoute<import("../../routing/book-routing").ValidBookPaths, undefined, undefined>>>>>;
|
|
1
|
+
export declare const ChangeRouteEvent: import("element-vir").DefinedTypedEvent<"element-book-change-route", Partial<Required<Readonly<import("spa-router-vir").FullRoute<import("../../routing/book-routing.js").ValidBookPaths, undefined, undefined>>>>>;
|
|
@@ -41,10 +41,11 @@ searchIn, }) {
|
|
|
41
41
|
}
|
|
42
42
|
const lowercaseSearchIn = searchIn.toLowerCase();
|
|
43
43
|
const lowercaseSearchQuery = searchQuery.toLowerCase();
|
|
44
|
+
// eslint-disable-next-line sonarjs/no-labels
|
|
44
45
|
outer: for (let i = 0, j = 0; i < searchQueryLength; i++) {
|
|
45
|
-
const charCode = lowercaseSearchQuery.
|
|
46
|
+
const charCode = lowercaseSearchQuery.codePointAt(i);
|
|
46
47
|
while (j < searchInLength) {
|
|
47
|
-
if (lowercaseSearchIn.
|
|
48
|
+
if (lowercaseSearchIn.codePointAt(j++) === charCode) {
|
|
48
49
|
continue outer;
|
|
49
50
|
}
|
|
50
51
|
}
|
package/dist/util/type.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines a nested type.
|
|
3
|
+
*
|
|
4
|
+
* @category Internal
|
|
5
|
+
*/
|
|
1
6
|
export type NestedType<SubType> = {
|
|
2
7
|
[prop: PropertyKey]: SubType | NestedType<SubType>;
|
|
3
8
|
};
|
|
4
9
|
/**
|
|
5
10
|
* The TypeScript compiler is hard-coded to prevent recursion deeper than 50, so this helps us make
|
|
6
11
|
* sure we stay below that limit.
|
|
12
|
+
*
|
|
13
|
+
* @category Internal
|
|
7
14
|
*/
|
|
8
15
|
export type InfiniteRecursionLimiter = [
|
|
9
16
|
30,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "element-book",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "23.0.0",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"book",
|
|
6
6
|
"design system",
|
|
@@ -20,54 +20,56 @@
|
|
|
20
20
|
},
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
23
|
-
"url": "https://github.com/electrovir/element-vir"
|
|
23
|
+
"url": "git+https://github.com/electrovir/element-vir.git"
|
|
24
24
|
},
|
|
25
25
|
"license": "(MIT or CC0 1.0)",
|
|
26
26
|
"author": {
|
|
27
27
|
"name": "electrovir",
|
|
28
28
|
"url": "https://github.com/electrovir"
|
|
29
29
|
},
|
|
30
|
+
"type": "module",
|
|
30
31
|
"main": "dist/index.js",
|
|
31
32
|
"module": "dist/index.js",
|
|
32
33
|
"types": "dist/index.d.ts",
|
|
33
34
|
"scripts": {
|
|
34
|
-
"
|
|
35
|
-
"compile": "rm -rf dist && tsc -b -f --pretty",
|
|
35
|
+
"compile": "virmator compile",
|
|
36
36
|
"docs": "virmator docs",
|
|
37
|
-
"start": "
|
|
38
|
-
"test": "virmator test
|
|
39
|
-
"test:
|
|
40
|
-
"test:
|
|
41
|
-
"test:watch": "web-test-runner --color --watch --config configs/web-test-runner.config.mjs"
|
|
37
|
+
"start": "virmator frontend",
|
|
38
|
+
"test": "virmator test web",
|
|
39
|
+
"test:coverage": "npm run test coverage",
|
|
40
|
+
"test:docs": "virmator docs check"
|
|
42
41
|
},
|
|
43
42
|
"dependencies": {
|
|
44
|
-
"@augment-vir/
|
|
45
|
-
"@augment-vir/common": "^
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
43
|
+
"@augment-vir/assert": "^30.3.0",
|
|
44
|
+
"@augment-vir/common": "^30.3.0",
|
|
45
|
+
"@augment-vir/web": "^30.3.0",
|
|
46
|
+
"colorjs.io": "0.5.2",
|
|
47
|
+
"lit-css-vars": "^3.0.10",
|
|
48
|
+
"spa-router-vir": "^4.0.4",
|
|
49
|
+
"typed-event-target": "^4.0.0",
|
|
50
|
+
"vira": "^23.0.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@augment-vir/
|
|
54
|
-
"@open-wc/testing": "^4.0.0",
|
|
55
|
-
"@types/chai": "^4.3.16",
|
|
56
|
-
"@types/mocha": "^10.0.6",
|
|
53
|
+
"@augment-vir/test": "^30.3.0",
|
|
57
54
|
"@web/dev-server-esbuild": "^1.0.2",
|
|
58
|
-
"@web/test-runner": "^0.
|
|
55
|
+
"@web/test-runner": "^0.19.0",
|
|
59
56
|
"@web/test-runner-commands": "^0.9.0",
|
|
60
57
|
"@web/test-runner-playwright": "^0.11.0",
|
|
61
|
-
"@web/test-runner-visual-regression": "^0.
|
|
62
|
-
"element-vir": "
|
|
63
|
-
"istanbul-smart-text-reporter": "^1.1.
|
|
64
|
-
"markdown-code-example-inserter": "^
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"typescript": "5.4.5"
|
|
58
|
+
"@web/test-runner-visual-regression": "^0.10.0",
|
|
59
|
+
"element-vir": "^23.0.0",
|
|
60
|
+
"istanbul-smart-text-reporter": "^1.1.5",
|
|
61
|
+
"markdown-code-example-inserter": "^3.0.0",
|
|
62
|
+
"type-fest": "^4.26.1",
|
|
63
|
+
"typedoc": "^0.26.10",
|
|
64
|
+
"typescript": "5.6.3"
|
|
69
65
|
},
|
|
70
66
|
"peerDependencies": {
|
|
71
67
|
"element-vir": ">=17"
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=22"
|
|
71
|
+
},
|
|
72
|
+
"publishConfig": {
|
|
73
|
+
"access": "public"
|
|
72
74
|
}
|
|
73
75
|
}
|