@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.
Files changed (44) hide show
  1. package/components/block/Block.svelte +3 -7
  2. package/components/block/Block.svelte.d.ts +5 -5
  3. package/components/block/Controls.svelte +1 -1
  4. package/components/block/Controls.svelte.d.ts +1 -1
  5. package/components/block/Instance.svelte +10 -14
  6. package/components/block/Instance.svelte.d.ts +1 -1
  7. package/components/block/Params.svelte +3 -3
  8. package/components/block/Params.svelte.d.ts +1 -1
  9. package/components/block/Template.svelte +2 -3
  10. package/components/block/Template.svelte.d.ts +2 -2
  11. package/components/block/controls/Controls.svelte +4 -4
  12. package/components/block/controls/Styler.svelte +1 -1
  13. package/components/block/controls/props/Color.svelte +3 -2
  14. package/components/block/controls/props/Component.svelte +27 -31
  15. package/components/block/controls/props/Object.svelte +1 -1
  16. package/components/block/controls/props/Tuple.svelte +1 -1
  17. package/components/block/controls/props/misc/GroupHeader.svelte +1 -1
  18. package/components/block/controls/props/misc/Name.svelte +2 -2
  19. package/components/block/controls/props/misc/Toggle.svelte +1 -0
  20. package/components/block/controls/types.d.ts +1 -1
  21. package/components/block/icons/Button.svelte +1 -1
  22. package/components/block/icons/ControlView.svelte +1 -1
  23. package/components/block/icons/Position.svelte +2 -2
  24. package/components/context.d.ts +1 -1
  25. package/components/layout/Container.svelte +11 -5
  26. package/components/layout/DocLayout.svelte +34 -0
  27. package/components/layout/DocLayout.svelte.d.ts +38 -0
  28. package/components/layout/Layout.svelte +4 -14
  29. package/components/layout/Layout.svelte.d.ts +3 -3
  30. package/components/layout/ThemeToggle.svelte +17 -0
  31. package/components/layout/ThemeToggle.svelte.d.ts +17 -0
  32. package/components/layout/icons/Icon.svelte +1 -1
  33. package/components/layout/icons/Theme.svelte +1 -3
  34. package/components/layout/icons/Theme.svelte.d.ts +1 -2
  35. package/components/navigation/Nav.svelte +1 -1
  36. package/components/navigation/Nav.svelte.d.ts +1 -1
  37. package/components/navigation/Node.svelte +2 -1
  38. package/components/navigation/Node.svelte.d.ts +1 -1
  39. package/components/navigation/Tree.svelte.d.ts +1 -1
  40. package/index.d.ts +1 -0
  41. package/index.js +1 -0
  42. package/package.json +5 -7
  43. package/sveltekit/index.d.ts +0 -37
  44. 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, initTheme } from "../context";
3
+ import { getTheme } from "../context";
4
4
  initParams();
5
5
  initDefaults();
6
6
  initControls();
7
7
  const columns = initOrientation();
8
- export let theme = void 0;
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
- @component
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
- /** See [documentation](https://mono-doc.vercel.app/3-Components/2-Block) for more details. */
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 {};
@@ -8,5 +8,5 @@ $:
8
8
 
9
9
  <!--
10
10
  @component
11
- See [documentation](https://mono-doc.vercel.app/3-Components/2-Block/2-Controls) for more details.
11
+ See [documentation](https://mono-doc.vercel.app/3-Components/3-Block/2-Controls) for more details.
12
12
  -->
@@ -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/2-Block/2-Controls) for more details. */
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 === "string") {
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 (ext != null) {
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/2-Block/1-Content/1-Instance) for more details.
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/2-Block/1-Content/1-Instance) for more details. */
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: tag ?? `${id}`,
10
- values: resolve(props, {})
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/2-Block/1-Content/2-Template/1-Params) for more details.
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/2-Block/1-Content/2-Template/1-Params) for more details. */
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/2-Block/1-Content/2-Template) for more details.
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} props={cast(props)} {events} {key} />
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: Args;
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/2-Block/1-Content/2-Template) for more details. */
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 mode === "props"}
48
+ {#if "props" === mode}
49
49
  <div>Name</div>
50
50
  <div>Value</div>
51
51
  <div>Use</div>
52
- {:else if mode === "events"}
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={mode === "props"} bind:values={$vv.props} />
60
- <Events events={$vv.events} visible={mode === "events"} />
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>
@@ -1,7 +1,7 @@
1
1
  <script>export let type;
2
2
  </script>
3
3
 
4
- <div class:props={type === "props"} class:events={type === "events"}>
4
+ <div class:props={"props" === type} class:events={"events" === type}>
5
5
  <slot />
6
6
  </div>
7
7
 
@@ -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 === 4,
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 === 4,
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
- {@const type = info[1]}
19
- {#if "object" === type}
18
+ {#if "object" === info[1]}
20
19
  <Object {info} bind:value {depth} {disabled} {visible} />
21
- {:else if "tuple" === type}
20
+ {:else if "tuple" === info[1]}
22
21
  <Tuple {info} bind:value {depth} {disabled} {visible} />
23
- {:else if "text" === type}
22
+ {:else if "text" === info[1]}
24
23
  <Text {info} bind:value {depth} {disabled} {visible} />
25
- {:else if "color" === type}
24
+ {:else if "color" === info[1]}
26
25
  <Color {info} bind:value {depth} {disabled} {visible} />
27
- {:else if "number" === type}
26
+ {:else if "number" === info[1]}
28
27
  <Number {info} bind:value {depth} {disabled} {visible} />
29
- {:else if "range" === type}
28
+ {:else if "range" === info[1]}
30
29
  <Range {info} bind:value {depth} {disabled} {visible} />
31
- {:else if "select" === type}
30
+ {:else if "select" === info[1]}
32
31
  <Select {info} bind:value {depth} {disabled} {visible} />
33
- {:else if "toggle" === type}
32
+ {:else if "toggle" === info[1]}
34
33
  <Toggle {info} bind:value {depth} {disabled} {visible} />
35
- {:else if "button" === type}
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
- let ivalue = value ?? defaulter(info);
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
- let ivalue = value ?? defaulter(info);
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
  $:
@@ -16,7 +16,7 @@ const flip = () => {
16
16
  </script>
17
17
 
18
18
  {#if visible}
19
- <div on:click={flip} on:keypress={null}>
19
+ <div on:click={flip} on:keypress={null} role="none">
20
20
  <Name
21
21
  expand={expand === undefined ? undefined : expand && checked && !disabled}
22
22
  {name}
@@ -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={expand === true}>
7
+ <div class="icon" class:expand={true === expand}>
8
8
  <div>
9
- {expand === undefined ? "-" : ">"}
9
+ {undefined === expand ? "-" : ">"}
10
10
  </div>
11
11
  </div>
12
12
  <span>{name}</span>
@@ -14,6 +14,7 @@ const dark = getTheme();
14
14
  viewBox="-30 -30 60 60"
15
15
  on:click|stopPropagation={click}
16
16
  on:keypress
17
+ role="none"
17
18
  class:disabled
18
19
  class:dark={$dark}
19
20
  >
@@ -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, step: 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
@@ -3,7 +3,7 @@
3
3
  export let scale = false;
4
4
  </script>
5
5
 
6
- <div on:click on:keypress {title} class:scale>
6
+ <div on:click on:keypress role="none" {title} class:scale>
7
7
  <slot />
8
8
  </div>
9
9
 
@@ -4,7 +4,7 @@
4
4
  <svg viewBox="-50 -50 100 100">
5
5
  <rect width="60" height="60" x="-30" y="-30" fill="transparent" />
6
6
  <rect
7
- x={mode === "props" ? 0 : -20}
7
+ x={"props" === mode ? 0 : -20}
8
8
  class="mv"
9
9
  height="40"
10
10
  width="20"
@@ -1,8 +1,8 @@
1
1
  <script>export let position = "hidden";
2
2
  $:
3
- bottom = position === "bottom";
3
+ bottom = "bottom" === position;
4
4
  $:
5
- right = position === "right";
5
+ right = "right" === position;
6
6
  </script>
7
7
 
8
8
  <svg viewBox="-50 -50 100 100">
@@ -1,4 +1,4 @@
1
1
  import type { Writable } from "svelte/store";
2
- export type Theme = undefined | "light" | "dark";
2
+ export type Theme = "light" | "dark";
3
3
  export declare const getTheme: () => Writable<boolean>;
4
4
  export declare const initTheme: () => Writable<boolean>;
@@ -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 ? (b ? "left" : "right") : b ? "top" : "bottom"}`}
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 Icon from "./icons/Icon.svelte";
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 (panelOffset == 4) {
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
- <Icon on:click={toggle}>
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={panel === "right"} persistent bind:offset={panelOffset}>
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<any>;
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,7 +1,7 @@
1
1
  <script>export let title = void 0;
2
2
  </script>
3
3
 
4
- <div class="icon" on:click on:keypress {title}>
4
+ <div class="icon" on:click on:keypress {title} role="none">
5
5
  <slot />
6
6
  </div>
7
7
 
@@ -1,10 +1,8 @@
1
1
  <script context="module">let indexer = 0;
2
2
  </script>
3
3
 
4
- <script>export let theme = "dark";
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)"}>
@@ -1,8 +1,7 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { Theme } from "../../context";
3
2
  declare const __propDef: {
4
3
  props: {
5
- theme?: Theme;
4
+ dark?: boolean | undefined;
6
5
  };
7
6
  events: {
8
7
  [evt: string]: CustomEvent<any>;
@@ -9,7 +9,7 @@ const apply = (paths, init, pre, next, post) => {
9
9
  let t = retval;
10
10
  for (let i = 1; i < parts.length; ++i) {
11
11
  const part = parts[i];
12
- if (null == t[part]) {
12
+ if (!(part in t)) {
13
13
  t[part] = init();
14
14
  }
15
15
  if (i !== parts.length - 1) {
@@ -8,7 +8,7 @@ declare const __propDef: {
8
8
  renamer: Renamer;
9
9
  };
10
10
  events: {
11
- navigate: CustomEvent<any>;
11
+ navigate: CustomEvent<string>;
12
12
  } & {
13
13
  [evt: string]: CustomEvent<any>;
14
14
  };
@@ -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|local>
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}
@@ -12,7 +12,7 @@ declare const __propDef: {
12
12
  renamer: Renamer;
13
13
  };
14
14
  events: {
15
- navigate: CustomEvent<any>;
15
+ navigate: CustomEvent<string>;
16
16
  } & {
17
17
  [evt: string]: CustomEvent<any>;
18
18
  };
@@ -10,7 +10,7 @@ declare const __propDef: {
10
10
  selected: string;
11
11
  };
12
12
  events: {
13
- navigate: CustomEvent<any>;
13
+ navigate: CustomEvent<string>;
14
14
  } & {
15
15
  [evt: string]: CustomEvent<any>;
16
16
  };
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.3",
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
- "@sveltejs/kit": "^1.15.0",
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
- "default": "./index.js",
21
+ "types": "./index.d.ts",
23
22
  "svelte": "./index.js",
24
- "types": "./index.d.ts"
25
- },
26
- "./sveltekit": "./sveltekit/index.js"
23
+ "default": "./index.js"
24
+ }
27
25
  },
28
26
  "dependencies": {
29
27
  "vanilla-picker": "^2.12.1"
@@ -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 {};
@@ -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
- };