@nil-/doc 0.2.25 → 0.2.27
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/CHANGELOG.md +12 -0
- package/components/Layout.svelte +4 -6
- package/components/block/Block.svelte +11 -7
- package/components/block/Controls.svelte +2 -1
- package/components/block/Params.svelte +14 -12
- package/components/block/Template.svelte +7 -17
- package/components/block/controls/Component.svelte +0 -3
- package/components/block/controls/Number.svelte +3 -2
- package/components/block/controls/Object.svelte +3 -2
- package/components/block/controls/Range.svelte +3 -2
- package/components/block/controls/Select.svelte +3 -2
- package/components/block/controls/Switch.svelte +3 -2
- package/components/block/controls/Text.svelte +3 -2
- package/components/block/controls/Tuple.svelte +3 -2
- package/components/etc/Container.svelte +11 -13
- package/components/navigation/Nav.svelte +57 -41
- package/components/navigation/Node.svelte +9 -8
- package/package.json +7 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @nil-/doc
|
|
2
2
|
|
|
3
|
+
## 0.2.27
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [doc] fix fira code css import ([#35](https://github.com/njaldea/mono/pull/35))
|
|
8
|
+
|
|
9
|
+
## 0.2.26
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [doc] removed fallback page in documentation ([#30](https://github.com/njaldea/mono/pull/30))
|
|
14
|
+
|
|
3
15
|
## 0.2.25
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/components/Layout.svelte
CHANGED
|
@@ -14,10 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/* reset block */
|
|
17
|
-
@
|
|
18
|
-
font-family: "Fira Code";
|
|
19
|
-
src: url("https://fonts.googleapis.com/css?family=Fira Code");
|
|
20
|
-
}
|
|
17
|
+
@import url("https://fonts.googleapis.com/css?family=Fira%20Code");
|
|
21
18
|
|
|
22
19
|
.reset {
|
|
23
20
|
width: 100%;
|
|
@@ -58,11 +55,12 @@ export let data;
|
|
|
58
55
|
export let current = null;
|
|
59
56
|
export let sorter = null;
|
|
60
57
|
export let renamer = null;
|
|
61
|
-
export let theme =
|
|
58
|
+
export let theme = void 0;
|
|
62
59
|
const r = inRoot();
|
|
63
60
|
const parentTheme = getTheme();
|
|
64
61
|
const isDark = initTheme();
|
|
65
|
-
$:
|
|
62
|
+
$:
|
|
63
|
+
$isDark = evalTheme(parentTheme ? $parentTheme : true, theme);
|
|
66
64
|
</script>
|
|
67
65
|
<div class="layout" class:reset={r} class:dark={$isDark}>
|
|
68
66
|
<Container offset={250} padding={250} vertical secondary>
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
/* reset block */
|
|
9
|
-
@
|
|
10
|
-
font-family: "Fira Code";
|
|
11
|
-
src: url("https://fonts.googleapis.com/css?family=Fira Code");
|
|
12
|
-
}
|
|
9
|
+
@import url("https://fonts.googleapis.com/css?family=Fira%20Code");
|
|
13
10
|
|
|
14
11
|
.reset {
|
|
15
12
|
width: 100%;
|
|
@@ -30,7 +27,13 @@
|
|
|
30
27
|
}
|
|
31
28
|
</style>
|
|
32
29
|
|
|
33
|
-
<script>import {
|
|
30
|
+
<script>import {
|
|
31
|
+
initParams,
|
|
32
|
+
initCurrent,
|
|
33
|
+
initDefaults,
|
|
34
|
+
initControls,
|
|
35
|
+
initControlsState
|
|
36
|
+
} from "./context";
|
|
34
37
|
import { inRoot, getTheme, initTheme, evalTheme } from "../context";
|
|
35
38
|
initParams();
|
|
36
39
|
initCurrent();
|
|
@@ -38,10 +41,11 @@ initDefaults();
|
|
|
38
41
|
initControls();
|
|
39
42
|
initControlsState();
|
|
40
43
|
const r = inRoot();
|
|
41
|
-
export let theme =
|
|
44
|
+
export let theme = void 0;
|
|
42
45
|
const parentTheme = getTheme();
|
|
43
46
|
const isDark = initTheme();
|
|
44
|
-
$:
|
|
47
|
+
$:
|
|
48
|
+
$isDark = evalTheme(parentTheme ? $parentTheme : false, theme);
|
|
45
49
|
</script>
|
|
46
50
|
<div class:reset={r} class:dark={$isDark}>
|
|
47
51
|
<slot />
|
|
@@ -2,21 +2,23 @@
|
|
|
2
2
|
<script>import { onMount } from "svelte";
|
|
3
3
|
import { getParams, getDefaults } from "./context";
|
|
4
4
|
import { resolve } from "./utils";
|
|
5
|
-
export let tag =
|
|
5
|
+
export let tag = void 0;
|
|
6
6
|
export let props = {};
|
|
7
7
|
const defaults = getDefaults();
|
|
8
8
|
const params = getParams();
|
|
9
|
-
onMount(
|
|
9
|
+
onMount(
|
|
10
|
+
() => defaults.subscribe((d) => {
|
|
10
11
|
if (d != null) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
params.update((p) => [
|
|
13
|
+
...p,
|
|
14
|
+
{
|
|
15
|
+
id: p.length,
|
|
16
|
+
tag: tag ?? `${p.length}`,
|
|
17
|
+
values: resolve(d, props),
|
|
18
|
+
defaults: resolve(d, props)
|
|
19
|
+
}
|
|
20
|
+
]);
|
|
20
21
|
}
|
|
21
|
-
})
|
|
22
|
+
})
|
|
23
|
+
);
|
|
22
24
|
</script>
|
|
@@ -78,29 +78,19 @@ const controls = getControls();
|
|
|
78
78
|
const controlsState = getControlsState();
|
|
79
79
|
const defaultsStore = getDefaults();
|
|
80
80
|
const isDark = getTheme();
|
|
81
|
-
export let defaults =
|
|
81
|
+
export let defaults = void 0;
|
|
82
82
|
export let noreset = false;
|
|
83
83
|
export let columns = false;
|
|
84
84
|
function reset() {
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
$params = [];
|
|
86
|
+
$defaultsStore = defaults;
|
|
87
87
|
}
|
|
88
|
-
$:
|
|
88
|
+
$:
|
|
89
|
+
$defaultsStore, reset();
|
|
89
90
|
let hovered = null;
|
|
90
|
-
/**
|
|
91
|
-
* This flag is to rerender the whole slot component.
|
|
92
|
-
* If the control is disabled, we use the default value provided from the defaults field.
|
|
93
|
-
* If the value of a prop is undefined, we will have to forward this value to the slot.
|
|
94
|
-
* Problem is, if the slot component has a default value set, it is only
|
|
95
|
-
* evaluated during component creation, not in subsequent updates.
|
|
96
|
-
*
|
|
97
|
-
* The solution is to rerender the whole slot whenever there is an control update.
|
|
98
|
-
*
|
|
99
|
-
* Similar case to: https://github.com/sveltejs/svelte/issues/4442
|
|
100
|
-
*/
|
|
101
91
|
let key = false;
|
|
102
|
-
beforeUpdate(() =>
|
|
103
|
-
const resolveArgs =
|
|
92
|
+
beforeUpdate(() => key = !key);
|
|
93
|
+
const resolveArgs = resolve;
|
|
104
94
|
</script>
|
|
105
95
|
<div class="template" class:columns>
|
|
106
96
|
{#each $params as param (param.id)}
|
|
@@ -6,9 +6,6 @@ import Switch from "./Switch.svelte";
|
|
|
6
6
|
import Select from "./Select.svelte";
|
|
7
7
|
import Tuple from "./Tuple.svelte";
|
|
8
8
|
import Object from "./Object.svelte";
|
|
9
|
-
// by use, info type is mapped to the value type
|
|
10
|
-
// unfortunately i can't use typescript in the markup part of svelte
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
9
|
export let value;
|
|
13
10
|
export let info;
|
|
14
11
|
export let depth;
|
|
@@ -5,8 +5,9 @@ export let info;
|
|
|
5
5
|
export let depth;
|
|
6
6
|
export let disabled = false;
|
|
7
7
|
let ivalue = value ?? getDefault(info);
|
|
8
|
-
let enabled = value !==
|
|
9
|
-
$:
|
|
8
|
+
let enabled = value !== void 0;
|
|
9
|
+
$:
|
|
10
|
+
value = enabled && !disabled ? ivalue : void 0;
|
|
10
11
|
</script>
|
|
11
12
|
<div>
|
|
12
13
|
<div style:padding-left={`${depth}px`}>- {info.name}</div>
|
|
@@ -7,8 +7,9 @@ export let info;
|
|
|
7
7
|
export let depth;
|
|
8
8
|
export let disabled = false;
|
|
9
9
|
let ivalue = value ?? getObjectDefaults(info);
|
|
10
|
-
let enabled = value !==
|
|
11
|
-
$:
|
|
10
|
+
let enabled = value !== void 0;
|
|
11
|
+
$:
|
|
12
|
+
value = !disabled && enabled ? ivalue : void 0;
|
|
12
13
|
</script>
|
|
13
14
|
<Header name={info.name} bind:checked={enabled} {depth} {disabled} />
|
|
14
15
|
{#if enabled && !disabled}
|
|
@@ -38,8 +38,9 @@ export let info;
|
|
|
38
38
|
export let depth;
|
|
39
39
|
export let disabled = false;
|
|
40
40
|
let ivalue = value ?? getDefault(info);
|
|
41
|
-
let enabled = value !==
|
|
42
|
-
$:
|
|
41
|
+
let enabled = value !== void 0;
|
|
42
|
+
$:
|
|
43
|
+
value = enabled && !disabled ? ivalue : void 0;
|
|
43
44
|
</script>
|
|
44
45
|
<div>
|
|
45
46
|
<div style:padding-left={`${depth}px`}>- {info.name}</div>
|
|
@@ -5,8 +5,9 @@ export let info;
|
|
|
5
5
|
export let depth;
|
|
6
6
|
export let disabled = false;
|
|
7
7
|
let ivalue = value ?? getDefault(info);
|
|
8
|
-
let enabled = value !==
|
|
9
|
-
$:
|
|
8
|
+
let enabled = value !== void 0;
|
|
9
|
+
$:
|
|
10
|
+
value = enabled && !disabled ? ivalue : void 0;
|
|
10
11
|
</script>
|
|
11
12
|
<div>
|
|
12
13
|
<div style:padding-left={`${depth}px`}>- {info.name}</div>
|
|
@@ -5,8 +5,9 @@ export let info;
|
|
|
5
5
|
export let depth;
|
|
6
6
|
export let disabled = false;
|
|
7
7
|
let ivalue = value ?? getDefault(info);
|
|
8
|
-
let enabled = value !==
|
|
9
|
-
$:
|
|
8
|
+
let enabled = value !== void 0;
|
|
9
|
+
$:
|
|
10
|
+
value = enabled && !disabled ? ivalue : void 0;
|
|
10
11
|
</script>
|
|
11
12
|
<div>
|
|
12
13
|
<div style:padding-left={`${depth}px`}>- {info.name}</div>
|
|
@@ -5,8 +5,9 @@ export let info;
|
|
|
5
5
|
export let depth;
|
|
6
6
|
export let disabled = false;
|
|
7
7
|
let ivalue = value ?? getDefault(info);
|
|
8
|
-
let ienabled = value !==
|
|
9
|
-
$:
|
|
8
|
+
let ienabled = value !== void 0;
|
|
9
|
+
$:
|
|
10
|
+
value = ienabled && !disabled ? ivalue : void 0;
|
|
10
11
|
</script>
|
|
11
12
|
<div>
|
|
12
13
|
<div style:padding-left={`${depth}px`}>- {info.name}</div>
|
|
@@ -7,8 +7,9 @@ export let info;
|
|
|
7
7
|
export let depth;
|
|
8
8
|
export let disabled = false;
|
|
9
9
|
let ivalue = value ?? getTupleDefaults(info);
|
|
10
|
-
let enabled = value !==
|
|
11
|
-
$:
|
|
10
|
+
let enabled = value !== void 0;
|
|
11
|
+
$:
|
|
12
|
+
value = !disabled && enabled ? ivalue : void 0;
|
|
12
13
|
</script>
|
|
13
14
|
<Header name={info.name} bind:checked={enabled} {depth} {disabled} />
|
|
14
15
|
{#if enabled && !disabled}
|
|
@@ -72,29 +72,27 @@
|
|
|
72
72
|
import { createDraggable } from "./action";
|
|
73
73
|
import { getTheme } from "../context";
|
|
74
74
|
const isDark = getTheme();
|
|
75
|
-
// orientation of the layout
|
|
76
75
|
export let vertical = false;
|
|
77
|
-
// initial value where the divider is located
|
|
78
76
|
export let offset = 0;
|
|
79
|
-
// when secondary is enabled, main focus will be the secondary slot
|
|
80
|
-
// collapsing will hide the primary slot
|
|
81
77
|
export let secondary = false;
|
|
82
|
-
// min distance of divider to the edges
|
|
83
78
|
export let padding = 0;
|
|
84
79
|
let width;
|
|
85
80
|
let height;
|
|
86
81
|
let collapse = false;
|
|
87
82
|
const { position, draggable } = createDraggable(offset);
|
|
88
83
|
function update(w, h, limit, value) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
if (w == null || h == null || collapse) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const span = vertical ? w : h;
|
|
88
|
+
offset = Math.max(Math.min(value, span - limit), limit);
|
|
94
89
|
}
|
|
95
|
-
$:
|
|
96
|
-
|
|
97
|
-
$:
|
|
90
|
+
$:
|
|
91
|
+
update(width, height, padding, $position);
|
|
92
|
+
$:
|
|
93
|
+
offsetpx = collapse ? "10px" : `${offset}px`;
|
|
94
|
+
$:
|
|
95
|
+
style = !secondary ? `auto 0px ${offsetpx}` : `${offsetpx} 0px auto`;
|
|
98
96
|
const moving = writable(false);
|
|
99
97
|
</script>
|
|
100
98
|
<div
|
|
@@ -18,43 +18,53 @@
|
|
|
18
18
|
height: 20px;
|
|
19
19
|
width: 100%;
|
|
20
20
|
}
|
|
21
|
+
|
|
22
|
+
* {
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
padding: 0px;
|
|
25
|
+
margin: 0px;
|
|
26
|
+
}
|
|
21
27
|
</style>
|
|
22
28
|
|
|
23
29
|
<script context="module">function apply(paths, init, pre, next, post) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
}
|
|
30
|
+
const retval = {};
|
|
31
|
+
for (const path of paths) {
|
|
32
|
+
const parts = path.split("/");
|
|
33
|
+
if (parts.length <= 1) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
let t = retval;
|
|
37
|
+
for (let i = 1; i < parts.length; ++i) {
|
|
38
|
+
const part = parts[i];
|
|
39
|
+
if (t[part] == null) {
|
|
40
|
+
t[part] = init();
|
|
41
|
+
}
|
|
42
|
+
if (i !== parts.length - 1) {
|
|
43
|
+
t[part] = pre(t[part], path);
|
|
44
|
+
}
|
|
45
|
+
if (i !== parts.length - 1) {
|
|
46
|
+
t = next(t[part]);
|
|
47
|
+
} else if (post) {
|
|
48
|
+
post(t[part], path);
|
|
49
|
+
}
|
|
46
50
|
}
|
|
47
|
-
|
|
51
|
+
}
|
|
52
|
+
return retval;
|
|
48
53
|
}
|
|
49
54
|
function filt(path, filter, renamer) {
|
|
50
|
-
|
|
55
|
+
return path.includes(filter) || path.split("/").map(renamer).join("/").includes(filter);
|
|
51
56
|
}
|
|
52
57
|
function populate(filter, info, renamer) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
})
|
|
58
|
+
return apply(
|
|
59
|
+
filter.length > 0 ? info.filter((path) => filt(path, filter, renamer)) : info,
|
|
60
|
+
() => ({ url: null, sub: {} }),
|
|
61
|
+
(t) => t,
|
|
62
|
+
(t) => t.sub,
|
|
63
|
+
(t, p) => {
|
|
64
|
+
t.url = p;
|
|
65
|
+
}
|
|
66
|
+
);
|
|
56
67
|
}
|
|
57
|
-
export {};
|
|
58
68
|
</script>
|
|
59
69
|
<script>import Tree from "./Tree.svelte";
|
|
60
70
|
export let info;
|
|
@@ -62,21 +72,27 @@ export let selected;
|
|
|
62
72
|
export let sorter;
|
|
63
73
|
export let renamer;
|
|
64
74
|
let filter = "";
|
|
65
|
-
let states = apply(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
let states = apply(
|
|
76
|
+
info,
|
|
77
|
+
() => ({ expanded: false, sub: {} }),
|
|
78
|
+
(t, path) => ({ expanded: t.expanded || selected === path, sub: t.sub }),
|
|
79
|
+
(t) => t.sub
|
|
80
|
+
);
|
|
81
|
+
function update(selected2) {
|
|
82
|
+
if (!info.includes(selected2)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
let node = states;
|
|
86
|
+
const paths = selected2.split("/").slice(1);
|
|
87
|
+
for (const [i, p] of paths.entries()) {
|
|
88
|
+
if (i < paths.length - 1) {
|
|
89
|
+
node[p].expanded = true;
|
|
77
90
|
}
|
|
91
|
+
node = node[p].sub;
|
|
92
|
+
}
|
|
78
93
|
}
|
|
79
|
-
$:
|
|
94
|
+
$:
|
|
95
|
+
update(selected);
|
|
80
96
|
</script>
|
|
81
97
|
<div class="nav">
|
|
82
98
|
<div class="logo"><slot /></div>
|
|
@@ -54,15 +54,16 @@ export let states;
|
|
|
54
54
|
export let sorter;
|
|
55
55
|
export let renamer;
|
|
56
56
|
const dispatch = createEventDispatcher();
|
|
57
|
-
$:
|
|
58
|
-
|
|
57
|
+
$:
|
|
58
|
+
style = `padding-left: ${10 + depth * 10}px;`;
|
|
59
|
+
$:
|
|
60
|
+
has_children = Object.keys(value.sub).length > 0;
|
|
59
61
|
function click(link) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
62
|
+
if (link != null && selected !== link) {
|
|
63
|
+
dispatch("navigate", link);
|
|
64
|
+
} else if (has_children) {
|
|
65
|
+
states.expanded = !states.expanded;
|
|
66
|
+
}
|
|
66
67
|
}
|
|
67
68
|
</script>
|
|
68
69
|
<div class="wrapper">
|
package/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nil-/doc",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.27",
|
|
4
4
|
"author": {
|
|
5
5
|
"email": "njaldea@gmail.com",
|
|
6
6
|
"name": "Neil Aldea"
|
|
7
7
|
},
|
|
8
|
-
"
|
|
9
|
-
"svelte": "^3.55.0"
|
|
10
|
-
},
|
|
8
|
+
"license": "ISC",
|
|
11
9
|
"devDependencies": {
|
|
12
10
|
"@sveltejs/adapter-vercel": "^1.0.0",
|
|
13
11
|
"@sveltejs/kit": "^1.0.1",
|
|
@@ -15,12 +13,13 @@
|
|
|
15
13
|
"mdsvex": "^0.10.6",
|
|
16
14
|
"svelte-check": "^2.10.2",
|
|
17
15
|
"svelte-markdown": "^0.2.3",
|
|
18
|
-
"svelte-preprocess": "^4.10.7",
|
|
19
16
|
"tslib": "^2.4.1",
|
|
20
17
|
"typescript": "^4.9.4",
|
|
21
|
-
"vite": "^4.0.
|
|
18
|
+
"vite": "^4.0.2"
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"svelte": "^3.55.0"
|
|
22
22
|
},
|
|
23
|
-
"type": "module",
|
|
24
23
|
"publishConfig": {
|
|
25
24
|
"linkDirectory": true
|
|
26
25
|
},
|
|
@@ -29,7 +28,7 @@
|
|
|
29
28
|
"documentation",
|
|
30
29
|
"component"
|
|
31
30
|
],
|
|
32
|
-
"
|
|
31
|
+
"type": "module",
|
|
33
32
|
"exports": {
|
|
34
33
|
"./package.json": "./package.json",
|
|
35
34
|
".": "./index.js",
|