@nil-/doc 0.3.3 → 1.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/components/block/Block.svelte +3 -7
- package/components/block/Block.svelte.d.ts +5 -5
- package/components/block/Controls.svelte +1 -1
- package/components/block/Controls.svelte.d.ts +1 -1
- package/components/block/Instance.svelte +10 -14
- package/components/block/Instance.svelte.d.ts +1 -1
- package/components/block/Params.svelte +3 -3
- package/components/block/Params.svelte.d.ts +1 -1
- package/components/block/Template.svelte +2 -3
- package/components/block/Template.svelte.d.ts +2 -2
- package/components/block/controls/Controls.svelte +4 -4
- package/components/block/controls/Styler.svelte +1 -1
- package/components/block/controls/props/Color.svelte +3 -2
- package/components/block/controls/props/Component.svelte +27 -31
- package/components/block/controls/props/Object.svelte +1 -1
- package/components/block/controls/props/Tuple.svelte +1 -1
- package/components/block/controls/props/misc/GroupHeader.svelte +1 -1
- package/components/block/controls/props/misc/Name.svelte +2 -2
- package/components/block/controls/props/misc/Toggle.svelte +1 -0
- package/components/block/controls/types.d.ts +1 -1
- package/components/block/icons/Button.svelte +1 -1
- package/components/block/icons/ControlView.svelte +1 -1
- package/components/block/icons/Position.svelte +2 -2
- package/components/context.d.ts +1 -1
- package/components/layout/Container.svelte +11 -5
- package/components/layout/DocLayout.svelte +34 -0
- package/components/layout/DocLayout.svelte.d.ts +38 -0
- package/components/layout/Layout.svelte +4 -14
- package/components/layout/Layout.svelte.d.ts +3 -3
- package/components/layout/ThemeToggle.svelte +17 -0
- package/components/layout/ThemeToggle.svelte.d.ts +17 -0
- package/components/layout/icons/Icon.svelte +1 -1
- package/components/layout/icons/Theme.svelte +1 -3
- package/components/layout/icons/Theme.svelte.d.ts +1 -2
- package/components/navigation/Nav.svelte +1 -1
- package/components/navigation/Nav.svelte.d.ts +1 -1
- package/components/navigation/Node.svelte +2 -1
- package/components/navigation/Node.svelte.d.ts +1 -1
- package/components/navigation/Tree.svelte.d.ts +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +5 -7
- package/sveltekit/index.d.ts +0 -37
- package/sveltekit/index.js +0 -51
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
<script>import { initParams, initDefaults, initControls, initOrientation } from "./context";
|
|
2
2
|
import Base from "../Base.svelte";
|
|
3
|
-
import { getTheme
|
|
3
|
+
import { getTheme } from "../context";
|
|
4
4
|
initParams();
|
|
5
5
|
initDefaults();
|
|
6
6
|
initControls();
|
|
7
7
|
const columns = initOrientation();
|
|
8
|
-
|
|
9
|
-
const parentTheme = getTheme();
|
|
10
|
-
const dark = initTheme();
|
|
11
|
-
$:
|
|
12
|
-
$dark = theme === void 0 ? $parentTheme : "dark" === theme;
|
|
8
|
+
const dark = getTheme();
|
|
13
9
|
</script>
|
|
14
10
|
|
|
15
11
|
<!--
|
|
16
|
-
@
|
|
12
|
+
@component3-Block
|
|
17
13
|
See [documentation](https://mono-doc.vercel.app/3-Components/2-Block) for more details.
|
|
18
14
|
-->
|
|
19
15
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
import { type Theme } from "../context";
|
|
3
2
|
declare const __propDef: {
|
|
4
|
-
props:
|
|
5
|
-
theme?: Theme;
|
|
6
|
-
};
|
|
3
|
+
props: Record<string, never>;
|
|
7
4
|
events: {
|
|
8
5
|
[evt: string]: CustomEvent<any>;
|
|
9
6
|
};
|
|
@@ -14,7 +11,10 @@ declare const __propDef: {
|
|
|
14
11
|
export type BlockProps = typeof __propDef.props;
|
|
15
12
|
export type BlockEvents = typeof __propDef.events;
|
|
16
13
|
export type BlockSlots = typeof __propDef.slots;
|
|
17
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* 3-Block
|
|
16
|
+
* See [documentation](https://mono-doc.vercel.app/3-Components/2-Block) for more details.
|
|
17
|
+
*/
|
|
18
18
|
export default class Block extends SvelteComponentTyped<BlockProps, BlockEvents, BlockSlots> {
|
|
19
19
|
}
|
|
20
20
|
export {};
|
|
@@ -13,7 +13,7 @@ declare const __propDef: {
|
|
|
13
13
|
export type ControlsProps = typeof __propDef.props;
|
|
14
14
|
export type ControlsEvents = typeof __propDef.events;
|
|
15
15
|
export type ControlsSlots = typeof __propDef.slots;
|
|
16
|
-
/** See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
16
|
+
/** See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/2-Controls) for more details. */
|
|
17
17
|
export default class Controls extends SvelteComponentTyped<ControlsProps, ControlsEvents, ControlsSlots> {
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -9,7 +9,6 @@ export let defaults = void 0;
|
|
|
9
9
|
export let noreset = false;
|
|
10
10
|
let key = false;
|
|
11
11
|
beforeUpdate(() => key = !key);
|
|
12
|
-
const resolveArgs = resolve;
|
|
13
12
|
const values = writable({ props: {}, events: [] });
|
|
14
13
|
const updateBound = (d) => $values.props = resolve(d ?? {}, {});
|
|
15
14
|
$:
|
|
@@ -31,14 +30,14 @@ const populate = (ext) => {
|
|
|
31
30
|
const obj = {};
|
|
32
31
|
const stringify = (detail) => {
|
|
33
32
|
if (detail) {
|
|
34
|
-
if (typeof detail
|
|
33
|
+
if ("string" === typeof detail) {
|
|
35
34
|
return detail;
|
|
36
35
|
}
|
|
37
36
|
return JSON.stringify(detail);
|
|
38
37
|
}
|
|
39
38
|
return "";
|
|
40
39
|
};
|
|
41
|
-
if (
|
|
40
|
+
if (null != ext) {
|
|
42
41
|
for (const name of ext) {
|
|
43
42
|
obj[name] = (ev) => {
|
|
44
43
|
const detail = stringify(ev.detail);
|
|
@@ -60,34 +59,31 @@ const populate = (ext) => {
|
|
|
60
59
|
}
|
|
61
60
|
return obj;
|
|
62
61
|
};
|
|
62
|
+
$:
|
|
63
|
+
props = resolve(defaults ?? {}, $values.props);
|
|
64
|
+
$:
|
|
65
|
+
events = populate($controls.events);
|
|
63
66
|
</script>
|
|
64
67
|
|
|
65
68
|
<!--
|
|
66
69
|
@component
|
|
67
|
-
See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
70
|
+
See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/1-Content/1-Instance) for more details.
|
|
68
71
|
-->
|
|
69
72
|
|
|
70
73
|
<div
|
|
71
74
|
class="instance"
|
|
72
75
|
class:selected={$vv === values}
|
|
73
76
|
class:controls={$controls.events.length > 0 || $controls.props.length > 0}
|
|
77
|
+
role="none"
|
|
74
78
|
on:click={focus}
|
|
75
79
|
on:keypress={null}
|
|
76
80
|
>
|
|
77
81
|
<div class="content">
|
|
78
82
|
{#if noreset}
|
|
79
|
-
<slot
|
|
80
|
-
props={resolveArgs(defaults ?? {}, $values.props)}
|
|
81
|
-
events={populate($controls.events)}
|
|
82
|
-
{key}
|
|
83
|
-
/>
|
|
83
|
+
<slot {props} {events} {key} />
|
|
84
84
|
{:else}
|
|
85
85
|
{#key key}
|
|
86
|
-
<slot
|
|
87
|
-
props={resolveArgs(defaults ?? {}, $values.props)}
|
|
88
|
-
events={populate($controls.events)}
|
|
89
|
-
{key}
|
|
90
|
-
/>
|
|
86
|
+
<slot {props} {events} {key} />
|
|
91
87
|
{/key}
|
|
92
88
|
{/if}
|
|
93
89
|
</div>
|
|
@@ -18,7 +18,7 @@ declare class __sveltets_Render<PropArgs> {
|
|
|
18
18
|
export type InstanceProps<PropArgs> = ReturnType<__sveltets_Render<PropArgs>['props']>;
|
|
19
19
|
export type InstanceEvents<PropArgs> = ReturnType<__sveltets_Render<PropArgs>['events']>;
|
|
20
20
|
export type InstanceSlots<PropArgs> = ReturnType<__sveltets_Render<PropArgs>['slots']>;
|
|
21
|
-
/** See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
21
|
+
/** See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/1-Content/1-Instance) for more details. */
|
|
22
22
|
export default class Instance<PropArgs> extends SvelteComponentTyped<InstanceProps<PropArgs>, InstanceEvents<PropArgs>, InstanceSlots<PropArgs>> {
|
|
23
23
|
}
|
|
24
24
|
export {};
|
|
@@ -6,8 +6,8 @@ const params = getParams();
|
|
|
6
6
|
const id = $params.length;
|
|
7
7
|
$params.push({
|
|
8
8
|
id,
|
|
9
|
-
tag:
|
|
10
|
-
values:
|
|
9
|
+
tag: `${id}`,
|
|
10
|
+
values: {}
|
|
11
11
|
});
|
|
12
12
|
$:
|
|
13
13
|
$params[id].tag = tag ?? `${id}`;
|
|
@@ -17,5 +17,5 @@ $:
|
|
|
17
17
|
|
|
18
18
|
<!--
|
|
19
19
|
@component
|
|
20
|
-
See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
20
|
+
See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/1-Content/2-Template/1-Params) for more details.
|
|
21
21
|
-->
|
|
@@ -13,7 +13,7 @@ declare const __propDef: {
|
|
|
13
13
|
export type ParamsProps = typeof __propDef.props;
|
|
14
14
|
export type ParamsEvents = typeof __propDef.events;
|
|
15
15
|
export type ParamsSlots = typeof __propDef.slots;
|
|
16
|
-
/** See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
16
|
+
/** See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/1-Content/2-Template/1-Params) for more details. */
|
|
17
17
|
export default class Params extends SvelteComponentTyped<ParamsProps, ParamsEvents, ParamsSlots> {
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -15,12 +15,11 @@ $:
|
|
|
15
15
|
let key = false;
|
|
16
16
|
beforeUpdate(() => key = !key);
|
|
17
17
|
const resolveArgs = resolve;
|
|
18
|
-
const cast = (t) => t;
|
|
19
18
|
</script>
|
|
20
19
|
|
|
21
20
|
<!--
|
|
22
21
|
@component
|
|
23
|
-
See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
22
|
+
See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/1-Content/2-Template) for more details.
|
|
24
23
|
-->
|
|
25
24
|
|
|
26
25
|
{#each $params as param (param.id)}
|
|
@@ -31,6 +30,6 @@ const cast = (t) => t;
|
|
|
31
30
|
let:props
|
|
32
31
|
let:events
|
|
33
32
|
>
|
|
34
|
-
<slot id={param.id} tag={param.tag}
|
|
33
|
+
<slot id={param.id} tag={param.tag} {props} {events} {key} />
|
|
35
34
|
</Instance>
|
|
36
35
|
{/each}
|
|
@@ -12,7 +12,7 @@ declare class __sveltets_Render<Args> {
|
|
|
12
12
|
default: {
|
|
13
13
|
id: number;
|
|
14
14
|
tag: string;
|
|
15
|
-
props:
|
|
15
|
+
props: unknown;
|
|
16
16
|
events: Record<string, (ev: CustomEvent<unknown>) => void>;
|
|
17
17
|
key: boolean;
|
|
18
18
|
};
|
|
@@ -21,7 +21,7 @@ declare class __sveltets_Render<Args> {
|
|
|
21
21
|
export type TemplateProps<Args> = ReturnType<__sveltets_Render<Args>['props']>;
|
|
22
22
|
export type TemplateEvents<Args> = ReturnType<__sveltets_Render<Args>['events']>;
|
|
23
23
|
export type TemplateSlots<Args> = ReturnType<__sveltets_Render<Args>['slots']>;
|
|
24
|
-
/** See [documentation](https://mono-doc.vercel.app/3-Components/
|
|
24
|
+
/** See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/1-Content/2-Template) for more details. */
|
|
25
25
|
export default class Template<Args> extends SvelteComponentTyped<TemplateProps<Args>, TemplateEvents<Args>, TemplateSlots<Args>> {
|
|
26
26
|
}
|
|
27
27
|
export {};
|
|
@@ -45,19 +45,19 @@ const cycleMode = () => {
|
|
|
45
45
|
<ControlView {mode} />
|
|
46
46
|
</Button>
|
|
47
47
|
</div>
|
|
48
|
-
{#if
|
|
48
|
+
{#if "props" === mode}
|
|
49
49
|
<div>Name</div>
|
|
50
50
|
<div>Value</div>
|
|
51
51
|
<div>Use</div>
|
|
52
|
-
{:else if
|
|
52
|
+
{:else if "events" === mode}
|
|
53
53
|
<div>Events</div>
|
|
54
54
|
<div>Detail</div>
|
|
55
55
|
{/if}
|
|
56
56
|
</div>
|
|
57
57
|
{#key $values && $controls}
|
|
58
58
|
{#if cc != null && $cc != null && vv != null && $vv != null}
|
|
59
|
-
<Props infos={$cc.props} visible={
|
|
60
|
-
<Events events={$vv.events} visible={
|
|
59
|
+
<Props infos={$cc.props} visible={"props" === mode} bind:values={$vv.props} />
|
|
60
|
+
<Events events={$vv.events} visible={"events" === mode} />
|
|
61
61
|
{/if}
|
|
62
62
|
{/key}
|
|
63
63
|
</Styler>
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
case "rgb":
|
|
12
12
|
return color.rgbString;
|
|
13
13
|
case "rgba":
|
|
14
|
+
default:
|
|
14
15
|
return color.rgbaString;
|
|
15
16
|
}
|
|
16
17
|
};
|
|
@@ -34,7 +35,7 @@ const action = (d, { format, P }) => {
|
|
|
34
35
|
popup: "left",
|
|
35
36
|
editorFormat: format.substring(0, 3),
|
|
36
37
|
editor: true,
|
|
37
|
-
alpha: format.length
|
|
38
|
+
alpha: 4 === format.length,
|
|
38
39
|
onChange: (color) => {
|
|
39
40
|
ivalue = colorSetter(getFormat(info), color);
|
|
40
41
|
d.style.borderColor = ivalue;
|
|
@@ -44,7 +45,7 @@ const action = (d, { format, P }) => {
|
|
|
44
45
|
return {
|
|
45
46
|
update: (format2) => {
|
|
46
47
|
picker.setOptions({
|
|
47
|
-
alpha: format2.length
|
|
48
|
+
alpha: 4 === format2.length,
|
|
48
49
|
editorFormat: format2.substring(0, 3)
|
|
49
50
|
});
|
|
50
51
|
},
|
|
@@ -15,45 +15,41 @@ export let visible = false;
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
{#if info instanceof Array}
|
|
18
|
-
{
|
|
19
|
-
{#if "object" === type}
|
|
18
|
+
{#if "object" === info[1]}
|
|
20
19
|
<Object {info} bind:value {depth} {disabled} {visible} />
|
|
21
|
-
{:else if "tuple" ===
|
|
20
|
+
{:else if "tuple" === info[1]}
|
|
22
21
|
<Tuple {info} bind:value {depth} {disabled} {visible} />
|
|
23
|
-
{:else if "text" ===
|
|
22
|
+
{:else if "text" === info[1]}
|
|
24
23
|
<Text {info} bind:value {depth} {disabled} {visible} />
|
|
25
|
-
{:else if "color" ===
|
|
24
|
+
{:else if "color" === info[1]}
|
|
26
25
|
<Color {info} bind:value {depth} {disabled} {visible} />
|
|
27
|
-
{:else if "number" ===
|
|
26
|
+
{:else if "number" === info[1]}
|
|
28
27
|
<Number {info} bind:value {depth} {disabled} {visible} />
|
|
29
|
-
{:else if "range" ===
|
|
28
|
+
{:else if "range" === info[1]}
|
|
30
29
|
<Range {info} bind:value {depth} {disabled} {visible} />
|
|
31
|
-
{:else if "select" ===
|
|
30
|
+
{:else if "select" === info[1]}
|
|
32
31
|
<Select {info} bind:value {depth} {disabled} {visible} />
|
|
33
|
-
{:else if "toggle" ===
|
|
32
|
+
{:else if "toggle" === info[1]}
|
|
34
33
|
<Toggle {info} bind:value {depth} {disabled} {visible} />
|
|
35
|
-
{:else if "button" ===
|
|
36
|
-
<Button {info} {visible} />
|
|
37
|
-
{/if}
|
|
38
|
-
{:else}
|
|
39
|
-
{@const type = info.type}
|
|
40
|
-
{#if "object" === type}
|
|
41
|
-
<Object {info} bind:value {depth} {disabled} {visible} />
|
|
42
|
-
{:else if "tuple" === type}
|
|
43
|
-
<Tuple {info} bind:value {depth} {disabled} {visible} />
|
|
44
|
-
{:else if "text" === type}
|
|
45
|
-
<Text {info} bind:value {depth} {disabled} {visible} />
|
|
46
|
-
{:else if "color" === type}
|
|
47
|
-
<Color {info} bind:value {depth} {disabled} {visible} />
|
|
48
|
-
{:else if "number" === type}
|
|
49
|
-
<Number {info} bind:value {depth} {disabled} {visible} />
|
|
50
|
-
{:else if "range" === type}
|
|
51
|
-
<Range {info} bind:value {depth} {disabled} {visible} />
|
|
52
|
-
{:else if "select" === type}
|
|
53
|
-
<Select {info} bind:value {depth} {disabled} {visible} />
|
|
54
|
-
{:else if "toggle" === type}
|
|
55
|
-
<Toggle {info} bind:value {depth} {disabled} {visible} />
|
|
56
|
-
{:else if "button" === type}
|
|
34
|
+
{:else if "button" === info[1]}
|
|
57
35
|
<Button {info} {visible} />
|
|
58
36
|
{/if}
|
|
37
|
+
{:else if "object" === info.type}
|
|
38
|
+
<Object {info} bind:value {depth} {disabled} {visible} />
|
|
39
|
+
{:else if "tuple" === info.type}
|
|
40
|
+
<Tuple {info} bind:value {depth} {disabled} {visible} />
|
|
41
|
+
{:else if "text" === info.type}
|
|
42
|
+
<Text {info} bind:value {depth} {disabled} {visible} />
|
|
43
|
+
{:else if "color" === info.type}
|
|
44
|
+
<Color {info} bind:value {depth} {disabled} {visible} />
|
|
45
|
+
{:else if "number" === info.type}
|
|
46
|
+
<Number {info} bind:value {depth} {disabled} {visible} />
|
|
47
|
+
{:else if "range" === info.type}
|
|
48
|
+
<Range {info} bind:value {depth} {disabled} {visible} />
|
|
49
|
+
{:else if "select" === info.type}
|
|
50
|
+
<Select {info} bind:value {depth} {disabled} {visible} />
|
|
51
|
+
{:else if "toggle" === info.type}
|
|
52
|
+
<Toggle {info} bind:value {depth} {disabled} {visible} />
|
|
53
|
+
{:else if "button" === info.type}
|
|
54
|
+
<Button {info} {visible} />
|
|
59
55
|
{/if}
|
|
@@ -7,7 +7,7 @@ export let info;
|
|
|
7
7
|
export let depth;
|
|
8
8
|
export let disabled = false;
|
|
9
9
|
export let visible = false;
|
|
10
|
-
|
|
10
|
+
const ivalue = value ?? defaulter(info);
|
|
11
11
|
let enabled = value !== void 0;
|
|
12
12
|
let expand = getValues(info).length > 0 ? true : void 0;
|
|
13
13
|
$:
|
|
@@ -7,7 +7,7 @@ export let info;
|
|
|
7
7
|
export let depth;
|
|
8
8
|
export let disabled = false;
|
|
9
9
|
export let visible = false;
|
|
10
|
-
|
|
10
|
+
const ivalue = value ?? defaulter(info);
|
|
11
11
|
let enabled = value !== void 0;
|
|
12
12
|
let expand = getValues(info).length > 0 ? true : void 0;
|
|
13
13
|
$:
|
|
@@ -4,9 +4,9 @@ export let expand = void 0;
|
|
|
4
4
|
</script>
|
|
5
5
|
|
|
6
6
|
<div class="override" style:padding-left={`${depth}rem`} title={name}>
|
|
7
|
-
<div class="icon" class:expand={
|
|
7
|
+
<div class="icon" class:expand={true === expand}>
|
|
8
8
|
<div>
|
|
9
|
-
{
|
|
9
|
+
{undefined === expand ? "-" : ">"}
|
|
10
10
|
</div>
|
|
11
11
|
</div>
|
|
12
12
|
<span>{name}</span>
|
|
@@ -34,7 +34,7 @@ export type PropType<T extends Types> =
|
|
|
34
34
|
]
|
|
35
35
|
: T extends "range" ? [
|
|
36
36
|
[ name: string, type: T, min: number, max: number, step: number ],
|
|
37
|
-
{ name: string; type: T; min: number; max: number
|
|
37
|
+
{ name: string; type: T; min: number; max: number; step: number; }
|
|
38
38
|
]
|
|
39
39
|
: T extends "tuple" ? [
|
|
40
40
|
// eslint-disable-next-line no-use-before-define
|
package/components/context.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ export let vertical = false;
|
|
|
5
5
|
export let offset = 4;
|
|
6
6
|
export let b = false;
|
|
7
7
|
export let persistent = false;
|
|
8
|
-
let width;
|
|
9
|
-
let height;
|
|
8
|
+
let width = null;
|
|
9
|
+
let height = null;
|
|
10
10
|
const { position, draggable } = createDraggable(offset);
|
|
11
11
|
$:
|
|
12
12
|
span = vertical ? width : height;
|
|
@@ -50,6 +50,12 @@ const check = (v, flag, s) => {
|
|
|
50
50
|
return v > min;
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
+
const title = (v, b2) => {
|
|
54
|
+
if (v) {
|
|
55
|
+
return b2 ? "left" : "right";
|
|
56
|
+
}
|
|
57
|
+
return b2 ? "top" : "bottom";
|
|
58
|
+
};
|
|
53
59
|
</script>
|
|
54
60
|
|
|
55
61
|
<div
|
|
@@ -66,14 +72,14 @@ const check = (v, flag, s) => {
|
|
|
66
72
|
>
|
|
67
73
|
{#if width != null && height != null}
|
|
68
74
|
<div style:grid-area="A">
|
|
69
|
-
{#if persistent || check($off, !b, span)}
|
|
75
|
+
{#if persistent || check($off, !b, span ?? 0)}
|
|
70
76
|
<slot name="A" />
|
|
71
77
|
{/if}
|
|
72
78
|
</div>
|
|
73
79
|
<div class="divider">
|
|
74
80
|
<div
|
|
75
81
|
class="overlay"
|
|
76
|
-
title={`Collapse ${vertical
|
|
82
|
+
title={`Collapse ${title(vertical, b)}`}
|
|
77
83
|
use:draggable={{
|
|
78
84
|
reset: () => offset,
|
|
79
85
|
reversed: !b,
|
|
@@ -85,7 +91,7 @@ const check = (v, flag, s) => {
|
|
|
85
91
|
/>
|
|
86
92
|
</div>
|
|
87
93
|
<div style:grid-area="B">
|
|
88
|
-
{#if persistent || check($off, b, span)}
|
|
94
|
+
{#if persistent || check($off, b, span ?? 0)}
|
|
89
95
|
<slot name="B" />
|
|
90
96
|
{/if}
|
|
91
97
|
</div>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script context="module"></script>
|
|
2
|
+
|
|
3
|
+
<script>import Layout from "./Layout.svelte";
|
|
4
|
+
import ThemeToggle from "./ThemeToggle.svelte";
|
|
5
|
+
export let settings;
|
|
6
|
+
export let sorter = void 0;
|
|
7
|
+
export let renamer = void 0;
|
|
8
|
+
let { data, current, theme, offset, panel, navigate } = settings;
|
|
9
|
+
$: {
|
|
10
|
+
data = settings.data;
|
|
11
|
+
current = settings.current;
|
|
12
|
+
theme = settings.theme;
|
|
13
|
+
offset = settings.offset;
|
|
14
|
+
panel = settings.panel;
|
|
15
|
+
navigate = settings.navigate;
|
|
16
|
+
}
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<Layout
|
|
20
|
+
{data}
|
|
21
|
+
{sorter}
|
|
22
|
+
{renamer}
|
|
23
|
+
current={$current}
|
|
24
|
+
bind:theme={$theme}
|
|
25
|
+
bind:offset={$offset}
|
|
26
|
+
bind:panel={$panel}
|
|
27
|
+
on:navigate={navigate}
|
|
28
|
+
>
|
|
29
|
+
<slot slot="title" name="title" />
|
|
30
|
+
<slot slot="title-misc" name="title-misc">
|
|
31
|
+
<ThemeToggle bind:theme={$theme} />
|
|
32
|
+
</slot>
|
|
33
|
+
<slot />
|
|
34
|
+
</Layout>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import type { Readable, Writable } from "svelte/store";
|
|
3
|
+
type Settings = {
|
|
4
|
+
readonly data: readonly string[];
|
|
5
|
+
readonly current: Readable<string | null>;
|
|
6
|
+
readonly offset: Writable<number>;
|
|
7
|
+
readonly theme: Writable<"dark" | "light">;
|
|
8
|
+
readonly panel: Writable<"bottom" | "right">;
|
|
9
|
+
readonly navigate: (e: {
|
|
10
|
+
detail: string;
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
import type { Renamer, Sorter } from "../navigation/types";
|
|
14
|
+
declare const __propDef: {
|
|
15
|
+
props: {
|
|
16
|
+
settings: Settings;
|
|
17
|
+
sorter?: Sorter | undefined;
|
|
18
|
+
renamer?: Renamer | undefined;
|
|
19
|
+
};
|
|
20
|
+
events: {
|
|
21
|
+
[evt: string]: CustomEvent<any>;
|
|
22
|
+
};
|
|
23
|
+
slots: {
|
|
24
|
+
title: {
|
|
25
|
+
slot: string;
|
|
26
|
+
};
|
|
27
|
+
'title-misc': {
|
|
28
|
+
slot: string;
|
|
29
|
+
};
|
|
30
|
+
default: {};
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export type DocLayoutProps = typeof __propDef.props;
|
|
34
|
+
export type DocLayoutEvents = typeof __propDef.events;
|
|
35
|
+
export type DocLayoutSlots = typeof __propDef.slots;
|
|
36
|
+
export default class DocLayout extends SvelteComponentTyped<DocLayoutProps, DocLayoutEvents, DocLayoutSlots> {
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -9,13 +9,12 @@ import Controls from "../block/controls/Controls.svelte";
|
|
|
9
9
|
import Scrollable from "./Scrollable.svelte";
|
|
10
10
|
import VerticalPanel from "./VerticalPanel.svelte";
|
|
11
11
|
import Nav from "../navigation/Nav.svelte";
|
|
12
|
-
import
|
|
12
|
+
import ThemeToggle from "./ThemeToggle.svelte";
|
|
13
13
|
import {
|
|
14
14
|
initControlInfo,
|
|
15
15
|
initControlValue
|
|
16
16
|
} from "../block/context";
|
|
17
17
|
import { getTheme, initTheme } from "../context";
|
|
18
|
-
import ThemeIcon from "./icons/Theme.svelte";
|
|
19
18
|
import { get } from "svelte/store";
|
|
20
19
|
export let data;
|
|
21
20
|
export let current = null;
|
|
@@ -35,7 +34,7 @@ $:
|
|
|
35
34
|
const panelChange = (info) => {
|
|
36
35
|
if (info != null) {
|
|
37
36
|
const i = get(info);
|
|
38
|
-
if (
|
|
37
|
+
if (4 === panelOffset) {
|
|
39
38
|
if (i.props.length > 0) {
|
|
40
39
|
panelOffset = 250;
|
|
41
40
|
mode = "props";
|
|
@@ -50,13 +49,6 @@ const panelChange = (info) => {
|
|
|
50
49
|
};
|
|
51
50
|
$:
|
|
52
51
|
panelChange($activeControl);
|
|
53
|
-
const toggle = () => {
|
|
54
|
-
if (theme !== void 0) {
|
|
55
|
-
theme = $dark ? "light" : "dark";
|
|
56
|
-
} else {
|
|
57
|
-
$dark = !$dark;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
52
|
</script>
|
|
61
53
|
|
|
62
54
|
<!--
|
|
@@ -71,9 +63,7 @@ const toggle = () => {
|
|
|
71
63
|
<slot name="title" />
|
|
72
64
|
</div>
|
|
73
65
|
<slot name="title-misc">
|
|
74
|
-
<
|
|
75
|
-
<ThemeIcon {theme} />
|
|
76
|
-
</Icon>
|
|
66
|
+
<ThemeToggle bind:theme />
|
|
77
67
|
</slot>
|
|
78
68
|
</div>
|
|
79
69
|
<Container bind:offset vertical b>
|
|
@@ -91,7 +81,7 @@ const toggle = () => {
|
|
|
91
81
|
</Scrollable>
|
|
92
82
|
</svelte:fragment>
|
|
93
83
|
<svelte:fragment slot="B">
|
|
94
|
-
<Container vertical={
|
|
84
|
+
<Container vertical={"right" === panel} persistent bind:offset={panelOffset}>
|
|
95
85
|
<svelte:fragment slot="A">
|
|
96
86
|
<Scrollable>
|
|
97
87
|
<Content>
|
|
@@ -3,16 +3,16 @@ import type { Sorter, Renamer } from "../navigation/types";
|
|
|
3
3
|
import { type Theme } from "../context";
|
|
4
4
|
declare const __propDef: {
|
|
5
5
|
props: {
|
|
6
|
-
data: string[];
|
|
6
|
+
data: readonly string[];
|
|
7
7
|
current?: string | null | undefined;
|
|
8
8
|
sorter?: Sorter | null | undefined;
|
|
9
9
|
renamer?: Renamer | null | undefined;
|
|
10
|
-
theme?: Theme;
|
|
10
|
+
theme?: Theme | undefined;
|
|
11
11
|
offset?: number | undefined;
|
|
12
12
|
panel?: "right" | "bottom" | undefined;
|
|
13
13
|
};
|
|
14
14
|
events: {
|
|
15
|
-
navigate: CustomEvent<
|
|
15
|
+
navigate: CustomEvent<string>;
|
|
16
16
|
} & {
|
|
17
17
|
[evt: string]: CustomEvent<any>;
|
|
18
18
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script>import { getTheme } from "../context";
|
|
2
|
+
import Icon from "./icons/Icon.svelte";
|
|
3
|
+
import ThemeIcon from "./icons/Theme.svelte";
|
|
4
|
+
export let theme;
|
|
5
|
+
const dark = getTheme();
|
|
6
|
+
const toggle = () => {
|
|
7
|
+
if (void 0 !== theme) {
|
|
8
|
+
theme = $dark ? "light" : "dark";
|
|
9
|
+
} else {
|
|
10
|
+
$dark = !$dark;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Icon on:click={toggle}>
|
|
16
|
+
<ThemeIcon dark={undefined === theme ? $dark : "dark" === theme} />
|
|
17
|
+
</Icon>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import { type Theme } from "../context";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
theme: Theme | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type ThemeToggleProps = typeof __propDef.props;
|
|
13
|
+
export type ThemeToggleEvents = typeof __propDef.events;
|
|
14
|
+
export type ThemeToggleSlots = typeof __propDef.slots;
|
|
15
|
+
export default class ThemeToggle extends SvelteComponentTyped<ThemeToggleProps, ThemeToggleEvents, ThemeToggleSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
<script context="module">let indexer = 0;
|
|
2
2
|
</script>
|
|
3
3
|
|
|
4
|
-
<script>export let
|
|
4
|
+
<script>export let dark = true;
|
|
5
5
|
const index = indexer++;
|
|
6
|
-
$:
|
|
7
|
-
dark = theme === "dark";
|
|
8
6
|
</script>
|
|
9
7
|
|
|
10
8
|
<svg viewBox="-25 -25 50 50" style:transform={dark ? "rotate(40deg)" : "rotate(180deg)"}>
|
|
@@ -31,6 +31,7 @@ const click = (link) => {
|
|
|
31
31
|
class="header"
|
|
32
32
|
on:click={() => click(value.url)}
|
|
33
33
|
on:keypress={null}
|
|
34
|
+
role="none"
|
|
34
35
|
{style}
|
|
35
36
|
class:selected={selected === value.url}
|
|
36
37
|
class:paged={value.url != null}
|
|
@@ -41,7 +42,7 @@ const click = (link) => {
|
|
|
41
42
|
<span>{renamer(key)}</span>
|
|
42
43
|
</div>
|
|
43
44
|
{#if expand || states.expanded}
|
|
44
|
-
<div class="sub" transition:slide
|
|
45
|
+
<div class="sub" transition:slide>
|
|
45
46
|
{#each sort(value.sub, sorter) as [k, v] (k)}
|
|
46
47
|
<svelte:self
|
|
47
48
|
key={k}
|
package/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { renamer } from "./components/navigation/utils/renamer";
|
|
|
2
2
|
export { sorter } from "./components/navigation/utils/sorter";
|
|
3
3
|
export type { Prop, Event, PropType, Detailed, Flattened, Unionized } from "./components/block/controls/types";
|
|
4
4
|
export { default as Layout } from "./components/layout/Layout.svelte";
|
|
5
|
+
export { default as DocLayout } from "./components/layout/DocLayout.svelte";
|
|
5
6
|
export { default as Instance } from "./components/block/Instance.svelte";
|
|
6
7
|
export { default as Block } from "./components/block/Block.svelte";
|
|
7
8
|
export { default as Template } from "./components/block/Template.svelte";
|
package/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { renamer } from "./components/navigation/utils/renamer";
|
|
2
2
|
export { sorter } from "./components/navigation/utils/sorter";
|
|
3
3
|
export { default as Layout } from "./components/layout/Layout.svelte";
|
|
4
|
+
export { default as DocLayout } from "./components/layout/DocLayout.svelte";
|
|
4
5
|
export { default as Instance } from "./components/block/Instance.svelte";
|
|
5
6
|
export { default as Block } from "./components/block/Block.svelte";
|
|
6
7
|
export { default as Template } from "./components/block/Template.svelte";
|
package/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nil-/doc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"author": {
|
|
5
5
|
"email": "njaldea@gmail.com",
|
|
6
6
|
"name": "Neil Aldea"
|
|
7
7
|
},
|
|
8
8
|
"license": "ISC",
|
|
9
9
|
"peerDependencies": {
|
|
10
|
-
"
|
|
11
|
-
"svelte": "^3.58.0"
|
|
10
|
+
"svelte": "^4.0.3"
|
|
12
11
|
},
|
|
13
12
|
"keywords": [
|
|
14
13
|
"svelte",
|
|
@@ -19,11 +18,10 @@
|
|
|
19
18
|
"exports": {
|
|
20
19
|
"./package.json": "./package.json",
|
|
21
20
|
".": {
|
|
22
|
-
"
|
|
21
|
+
"types": "./index.d.ts",
|
|
23
22
|
"svelte": "./index.js",
|
|
24
|
-
"
|
|
25
|
-
}
|
|
26
|
-
"./sveltekit": "./sveltekit/index.js"
|
|
23
|
+
"default": "./index.js"
|
|
24
|
+
}
|
|
27
25
|
},
|
|
28
26
|
"dependencies": {
|
|
29
27
|
"vanilla-picker": "^2.12.1"
|
package/sveltekit/index.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { type Readable, type Writable } from "svelte/store";
|
|
2
|
-
import type { Theme } from "../components/context";
|
|
3
|
-
type Settings = {
|
|
4
|
-
/**
|
|
5
|
-
* List of routes
|
|
6
|
-
*/
|
|
7
|
-
data: string[];
|
|
8
|
-
/**
|
|
9
|
-
* Current route but removes unneeded group layout in the route
|
|
10
|
-
*/
|
|
11
|
-
current: Readable<string | null>;
|
|
12
|
-
/**
|
|
13
|
-
* Callback to navigate to other pages
|
|
14
|
-
* @param e - event that contains detail about the target url
|
|
15
|
-
*/
|
|
16
|
-
navigate: (e: CustomEvent<string>) => Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* A store that is responsible in keeping the theme in localStorage
|
|
19
|
-
* Default is "dark"
|
|
20
|
-
*/
|
|
21
|
-
theme: Writable<Exclude<Theme, undefined>>;
|
|
22
|
-
/**
|
|
23
|
-
* A store that is responsible in keeping the offset in localStorage
|
|
24
|
-
* offset is the width of the navigation panel.
|
|
25
|
-
* Default is 250px
|
|
26
|
-
*/
|
|
27
|
-
offset: Writable<number>;
|
|
28
|
-
panel: Writable<"bottom" | "right">;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Dedicated helper method to be used for sveltekit
|
|
32
|
-
* @param detail - vite's `import.meta.glob(...)`
|
|
33
|
-
* @param prefix - only use when layout is not in the root route
|
|
34
|
-
* @returns Settings
|
|
35
|
-
*/
|
|
36
|
-
export declare const sveltekit: (detail: Record<string, unknown>, prefix?: string | null) => Settings;
|
|
37
|
-
export {};
|
package/sveltekit/index.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { derived, writable } from "svelte/store";
|
|
2
|
-
import { page } from "$app/stores";
|
|
3
|
-
import { goto } from "$app/navigation";
|
|
4
|
-
import { browser } from "$app/environment";
|
|
5
|
-
const toRoute = (p) => p.substring(1, p.lastIndexOf("/"));
|
|
6
|
-
const routeHasLayoutGroup = /\(.*\)/;
|
|
7
|
-
const collapseLayout = (p) => p
|
|
8
|
-
.split("/")
|
|
9
|
-
.filter((p) => null == routeHasLayoutGroup.exec(p))
|
|
10
|
-
.join("/");
|
|
11
|
-
const isNotRoot = (p) => p !== "/";
|
|
12
|
-
const routeIsDynamic = /.*\[.*\].*/;
|
|
13
|
-
const isRouteDynamic = (p) => null == routeIsDynamic.exec(p);
|
|
14
|
-
/**
|
|
15
|
-
* Dedicated helper method to be used for sveltekit
|
|
16
|
-
* @param detail - vite's `import.meta.glob(...)`
|
|
17
|
-
* @param prefix - only use when layout is not in the root route
|
|
18
|
-
* @returns Settings
|
|
19
|
-
*/
|
|
20
|
-
export const sveltekit = (detail, prefix = null) => {
|
|
21
|
-
const keyTheme = "@nil-/doc/theme";
|
|
22
|
-
const theme = browser && "light" === localStorage.getItem(keyTheme) ? "light" : "dark";
|
|
23
|
-
const keyOffset = "@nil-/doc/offset";
|
|
24
|
-
const offset = browser ? parseFloat(localStorage.getItem(keyOffset) ?? "250") : 250;
|
|
25
|
-
const keyPos = "@nil-/doc/panel";
|
|
26
|
-
const panelPos = browser ? localStorage.getItem(keyPos) ?? "bottom" : "bottom";
|
|
27
|
-
const result = {
|
|
28
|
-
data: Object.keys(detail)
|
|
29
|
-
.map(toRoute)
|
|
30
|
-
.map(collapseLayout)
|
|
31
|
-
.filter(isNotRoot)
|
|
32
|
-
.filter(isRouteDynamic),
|
|
33
|
-
current: derived(page, ($page) => {
|
|
34
|
-
if ($page.route.id) {
|
|
35
|
-
if (prefix) {
|
|
36
|
-
return collapseLayout($page.route.id.substring(prefix.length));
|
|
37
|
-
}
|
|
38
|
-
return collapseLayout($page.route.id);
|
|
39
|
-
}
|
|
40
|
-
return null;
|
|
41
|
-
}),
|
|
42
|
-
navigate: prefix ? (e) => goto(`${prefix}${e.detail}`) : (e) => goto(e.detail),
|
|
43
|
-
theme: writable(theme),
|
|
44
|
-
offset: writable(offset),
|
|
45
|
-
panel: writable(panelPos)
|
|
46
|
-
};
|
|
47
|
-
browser && result.theme.subscribe((v) => localStorage.setItem(keyTheme, v));
|
|
48
|
-
browser && result.offset.subscribe((v) => localStorage.setItem(keyOffset, `${v}`));
|
|
49
|
-
browser && result.panel.subscribe((v) => localStorage.setItem(keyPos, v));
|
|
50
|
-
return result;
|
|
51
|
-
};
|