svelte-tweakpane-ui 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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -0
  3. package/dist/control/ButtonGrid.svelte +49 -0
  4. package/dist/control/ButtonGrid.svelte.d.ts +190 -0
  5. package/dist/control/Checkbox.svelte +6 -0
  6. package/dist/control/Checkbox.svelte.d.ts +113 -0
  7. package/dist/control/Color.svelte +79 -0
  8. package/dist/control/Color.svelte.d.ts +177 -0
  9. package/dist/control/CubicBezier.svelte +74 -0
  10. package/dist/control/CubicBezier.svelte.d.ts +204 -0
  11. package/dist/control/Image.svelte +23 -0
  12. package/dist/control/Image.svelte.d.ts +177 -0
  13. package/dist/control/IntervalSlider.svelte +37 -0
  14. package/dist/control/IntervalSlider.svelte.d.ts +196 -0
  15. package/dist/control/List.svelte +69 -0
  16. package/dist/control/List.svelte.d.ts +122 -0
  17. package/dist/control/Point.svelte +100 -0
  18. package/dist/control/Point.svelte.d.ts +374 -0
  19. package/dist/control/RadioGrid.svelte +42 -0
  20. package/dist/control/RadioGrid.svelte.d.ts +231 -0
  21. package/dist/control/Ring.svelte +19 -0
  22. package/dist/control/Ring.svelte.d.ts +220 -0
  23. package/dist/control/RotationEuler.svelte +67 -0
  24. package/dist/control/RotationEuler.svelte.d.ts +273 -0
  25. package/dist/control/RotationQuaternion.svelte +65 -0
  26. package/dist/control/RotationQuaternion.svelte.d.ts +276 -0
  27. package/dist/control/Slider.svelte +6 -0
  28. package/dist/control/Slider.svelte.d.ts +165 -0
  29. package/dist/control/Text.svelte +25 -0
  30. package/dist/control/Text.svelte.d.ts +129 -0
  31. package/dist/control/Textarea.svelte +47 -0
  32. package/dist/control/Textarea.svelte.d.ts +149 -0
  33. package/dist/control/Wheel.svelte +15 -0
  34. package/dist/control/Wheel.svelte.d.ts +186 -0
  35. package/dist/core/Binding.svelte +68 -0
  36. package/dist/core/Binding.svelte.d.ts +116 -0
  37. package/dist/core/Blade.svelte +61 -0
  38. package/dist/core/Blade.svelte.d.ts +90 -0
  39. package/dist/core/Button.svelte +59 -0
  40. package/dist/core/Button.svelte.d.ts +65 -0
  41. package/dist/core/Folder.svelte +69 -0
  42. package/dist/core/Folder.svelte.d.ts +78 -0
  43. package/dist/core/Pane.svelte +51 -0
  44. package/dist/core/Pane.svelte.d.ts +500 -0
  45. package/dist/core/Separator.svelte +14 -0
  46. package/dist/core/Separator.svelte.d.ts +85 -0
  47. package/dist/core/TabGroup.svelte +64 -0
  48. package/dist/core/TabGroup.svelte.d.ts +72 -0
  49. package/dist/core/TabPage.svelte +85 -0
  50. package/dist/core/TabPage.svelte.d.ts +82 -0
  51. package/dist/extra/AutoObject.svelte +46 -0
  52. package/dist/extra/AutoObject.svelte.d.ts +108 -0
  53. package/dist/extra/AutoValue.svelte +11 -0
  54. package/dist/extra/AutoValue.svelte.d.ts +123 -0
  55. package/dist/extra/Element.svelte +53 -0
  56. package/dist/extra/Element.svelte.d.ts +170 -0
  57. package/dist/index.d.ts +94 -0
  58. package/dist/index.js +39 -0
  59. package/dist/internal/ClsPad.svelte +34 -0
  60. package/dist/internal/ClsPad.svelte.d.ts +95 -0
  61. package/dist/internal/GenericBinding.svelte +22 -0
  62. package/dist/internal/GenericBinding.svelte.d.ts +116 -0
  63. package/dist/internal/GenericBladeFolding.svelte +38 -0
  64. package/dist/internal/GenericBladeFolding.svelte.d.ts +95 -0
  65. package/dist/internal/GenericInput.svelte +19 -0
  66. package/dist/internal/GenericInput.svelte.d.ts +116 -0
  67. package/dist/internal/GenericInputFolding.svelte +40 -0
  68. package/dist/internal/GenericInputFolding.svelte.d.ts +140 -0
  69. package/dist/internal/GenericMonitor.svelte +24 -0
  70. package/dist/internal/GenericMonitor.svelte.d.ts +139 -0
  71. package/dist/internal/GenericPane.svelte +100 -0
  72. package/dist/internal/GenericPane.svelte.d.ts +84 -0
  73. package/dist/internal/GenericSlider.svelte +27 -0
  74. package/dist/internal/GenericSlider.svelte.d.ts +146 -0
  75. package/dist/internal/InternalMonitorBoolean.svelte +17 -0
  76. package/dist/internal/InternalMonitorBoolean.svelte.d.ts +154 -0
  77. package/dist/internal/InternalMonitorNumber.svelte +31 -0
  78. package/dist/internal/InternalMonitorNumber.svelte.d.ts +178 -0
  79. package/dist/internal/InternalMonitorString.svelte +23 -0
  80. package/dist/internal/InternalMonitorString.svelte.d.ts +162 -0
  81. package/dist/internal/InternalPaneDraggable.svelte +368 -0
  82. package/dist/internal/InternalPaneDraggable.svelte.d.ts +178 -0
  83. package/dist/internal/InternalPaneFixed.svelte +28 -0
  84. package/dist/internal/InternalPaneFixed.svelte.d.ts +119 -0
  85. package/dist/internal/InternalPaneInline.svelte +29 -0
  86. package/dist/internal/InternalPaneInline.svelte.d.ts +106 -0
  87. package/dist/monitor/FpsGraph.svelte +86 -0
  88. package/dist/monitor/FpsGraph.svelte.d.ts +230 -0
  89. package/dist/monitor/Monitor.svelte +14 -0
  90. package/dist/monitor/Monitor.svelte.d.ts +526 -0
  91. package/dist/monitor/Profiler.svelte +72 -0
  92. package/dist/monitor/Profiler.svelte.d.ts +265 -0
  93. package/dist/monitor/WaveformMonitor.svelte +26 -0
  94. package/dist/monitor/WaveformMonitor.svelte.d.ts +176 -0
  95. package/dist/theme.d.ts +91 -0
  96. package/dist/theme.js +332 -0
  97. package/dist/utils.d.ts +157 -0
  98. package/dist/utils.js +238 -0
  99. package/package.json +280 -0
@@ -0,0 +1,59 @@
1
+ <script context="module"></script>
2
+
3
+ <script>
4
+ import ClsPad from '../internal/ClsPad.svelte';
5
+ import InternalPaneInline from '../internal/InternalPaneInline.svelte';
6
+ import { getElementIndex, isRootPane } from '../utils.js';
7
+ import { BROWSER } from 'esm-env';
8
+ import { createEventDispatcher, getContext, onDestroy, onMount } from 'svelte';
9
+ export let title = 'Button';
10
+ export let label = void 0;
11
+ export let disabled = false;
12
+ export let theme = void 0;
13
+ const parentStore = getContext('parentStore');
14
+ const userCreatedPane = getContext('userCreatedPane');
15
+ const dispatch = createEventDispatcher();
16
+ let indexElement;
17
+ let button;
18
+ let index;
19
+ function create() {
20
+ if (button) button.dispose();
21
+ button = $parentStore.addButton({
22
+ disabled,
23
+ index,
24
+ label,
25
+ title
26
+ });
27
+ button.on('click', () => {
28
+ dispatch('click');
29
+ });
30
+ }
31
+ onMount(() => {
32
+ index = indexElement ? getElementIndex(indexElement) : 0;
33
+ });
34
+ onDestroy(() => {
35
+ button?.dispose();
36
+ });
37
+ $: index !== void 0 && $parentStore && !button && create();
38
+ $: button && (button.title = title);
39
+ $: button && (button.label = label);
40
+ $: button && (button.disabled = disabled);
41
+ $: theme &&
42
+ $parentStore &&
43
+ (userCreatedPane || !isRootPane($parentStore)) &&
44
+ console.warn(
45
+ 'Set theme on the <Pane> component, not on its children! (Check nested <Button> components for a theme prop.)'
46
+ );
47
+ </script>
48
+
49
+ {#if parentStore}
50
+ {#if BROWSER}
51
+ <div bind:this={indexElement} style="display: none;" />
52
+ {:else}
53
+ <ClsPad keysAdd={['containerUnitSize', 'containerVerticalPadding']} {theme} />
54
+ {/if}
55
+ {:else}
56
+ <InternalPaneInline {theme} userCreatedPane={false}>
57
+ <svelte:self on:click {disabled} {label} {title} />
58
+ </InternalPaneInline>
59
+ {/if}
@@ -0,0 +1,65 @@
1
+ import { SvelteComponent } from 'svelte';
2
+ export type ButtonClickEvent = CustomEvent<null>;
3
+ import type { Theme } from '../theme.js';
4
+ declare const __propDef: {
5
+ props: {
6
+ /**
7
+ * Text inside of the button.
8
+ * @default `'Button'`
9
+ * */ title?: string | undefined;
10
+ /**
11
+ * Text displayed next to the button.
12
+ * @default `undefined`
13
+ * */ label?: string | undefined;
14
+ /**
15
+ * Prevent interactivity and gray out the control.
16
+ * @default `false`
17
+ * */ disabled?: boolean | undefined;
18
+ /**
19
+ * Custom color scheme.
20
+ * @default `undefined` \
21
+ * Inherits default Tweakpane theme equivalent to `ThemeUtils.presets.standard`, or the theme
22
+ * set with `setGlobalDefaultTheme()`.)
23
+ * */ theme?: Theme | undefined;
24
+ };
25
+ slots: {};
26
+ events: {
27
+ /**
28
+ * Fires when the button is clicked.
29
+ * @event
30
+ * */
31
+ click: ButtonClickEvent;
32
+ };
33
+ };
34
+ export type ButtonProps = typeof __propDef.props;
35
+ export type ButtonEvents = typeof __propDef.events;
36
+ export type ButtonSlots = typeof __propDef.slots;
37
+ /**
38
+ * A humble but effective push button.
39
+ *
40
+ * Wraps the Tweakpane [`addButton`](https://tweakpane.github.io/docs/ui-components/#button) method.
41
+ *
42
+ * Usage outside of a `<Pane>` component will implicitly wrap the button in `<Pane position='inline'>`.
43
+ *
44
+ * See the `<ButtonGrid>` and `<RadioGrid>` components for a convenient way to lay out multiple
45
+ * buttons.
46
+ *
47
+ * @emits {void} click - When the button is clicked.
48
+ *
49
+ * @example
50
+ * ```svelte
51
+ * <script lang="ts">
52
+ * import { Button } from 'svelte-tweakpane-ui';
53
+ *
54
+ * let count = 0;
55
+ * </script>
56
+ *
57
+ * <Button on:click={() => count++} label="Count" title="Increment" />
58
+ * <pre>Count: {count}</pre>
59
+ * ```
60
+ *
61
+ * @sourceLink
62
+ * [Button.svelte](https://github.com/kitschpatrol/svelte-tweakpane-ui/blob/main/src/lib/core/Button.svelte)
63
+ */
64
+ export default class Button extends SvelteComponent<ButtonProps, ButtonEvents, ButtonSlots> {}
65
+ export {};
@@ -0,0 +1,69 @@
1
+ <script>
2
+ import ClsPad from '../internal/ClsPad.svelte';
3
+ import InternalPaneInline from '../internal/InternalPaneInline.svelte';
4
+ import { getElementIndex, isRootPane, updateCollapsibility } from '../utils.js';
5
+ import { BROWSER } from 'esm-env';
6
+ import { getContext, onDestroy, onMount, setContext } from 'svelte';
7
+ import { writable } from 'svelte/store';
8
+ export let title = 'Folder';
9
+ export let disabled = false;
10
+ export let expanded = true;
11
+ export let userExpandable = true;
12
+ export let theme = void 0;
13
+ const parentStore = getContext('parentStore');
14
+ const folderStore = writable();
15
+ const userCreatedPane = getContext('userCreatedPane');
16
+ let indexElement;
17
+ let index;
18
+ let folderRef = void 0;
19
+ setContext('parentStore', folderStore);
20
+ function create() {
21
+ $folderStore = $parentStore.addFolder({
22
+ disabled,
23
+ expanded,
24
+ index,
25
+ title
26
+ });
27
+ $folderStore.on('fold', () => {
28
+ expanded = $folderStore.expanded;
29
+ });
30
+ folderRef = $folderStore;
31
+ }
32
+ onMount(() => {
33
+ index = indexElement ? getElementIndex(indexElement) : 0;
34
+ });
35
+ onDestroy(() => {
36
+ $folderStore?.dispose();
37
+ });
38
+ $: $parentStore && !folderRef && index !== void 0 && create();
39
+ $: folderRef && updateCollapsibility(userExpandable, folderRef.element, 'tp-fldv_b', 'tp-fldv_m');
40
+ $: folderRef && (folderRef.title = title);
41
+ $: folderRef && (folderRef.disabled = disabled);
42
+ $: folderRef && expanded !== void 0 && (folderRef.expanded = expanded);
43
+ $: theme &&
44
+ $parentStore &&
45
+ (userCreatedPane || !isRootPane($parentStore)) &&
46
+ console.warn(
47
+ 'Set theme on the <Pane> component, not on its children! (Check nested <Folder> components for a theme prop.)'
48
+ );
49
+ </script>
50
+
51
+ {#if parentStore}
52
+ {#if BROWSER}
53
+ <div bind:this={indexElement} style="display: none;">
54
+ <slot />
55
+ </div>
56
+ {:else}
57
+ <ClsPad keysAdd={['containerUnitSize']} {theme} />
58
+ {#if expanded}
59
+ <ClsPad keysAdd={['containerVerticalPadding', 'containerVerticalPadding']} {theme} />
60
+ <slot />
61
+ {/if}
62
+ {/if}
63
+ {:else}
64
+ <InternalPaneInline {theme} userCreatedPane={false}>
65
+ <svelte:self bind:expanded {disabled} {title} {userExpandable}>
66
+ <slot />
67
+ </svelte:self>
68
+ </InternalPaneInline>
69
+ {/if}
@@ -0,0 +1,78 @@
1
+ import { SvelteComponent } from 'svelte';
2
+ import type { Theme } from '../theme.js';
3
+ declare const __propDef: {
4
+ props: {
5
+ /**
6
+ * Text in folder title bar.
7
+ *
8
+ * Unlike a `<Pane>`, a `<Folder>`'s title bar is always visible and the title is always shown.
9
+ * It can be set to an empty string if you want an unadorned title bar.
10
+ * @default `'Folder'`
11
+ * */ title?: string | undefined;
12
+ /**
13
+ * Prevent interactivity and gray out the control.
14
+ * @default `false`
15
+ * */ disabled?: boolean | undefined;
16
+ /**
17
+ * Expand or collapse folder.
18
+ *
19
+ * When bound it will indicate whether the folder is expanded or collapsed.
20
+ * @default `true`
21
+ * @bindable
22
+ * */ expanded?: boolean | undefined;
23
+ /**
24
+ * Allow the user to be collapse and expand the folder by clicking its title bar.
25
+ * @default `true`
26
+ * */ userExpandable?: boolean | undefined;
27
+ /**
28
+ * Custom color scheme.
29
+ * @default `undefined` \
30
+ * Inherits default Tweakpane theme equivalent to `ThemeUtils.presets.standard`, or the theme
31
+ * set with `setGlobalDefaultTheme()`.
32
+ * */ theme?: Theme | undefined;
33
+ };
34
+ events: {
35
+ [evt: string]: CustomEvent<any>;
36
+ };
37
+ slots: {
38
+ /**
39
+ * Any Tweakpane component, except a `<Pane>`.
40
+ */
41
+ default: {};
42
+ };
43
+ };
44
+ export type FolderProps = typeof __propDef.props;
45
+ export type FolderEvents = typeof __propDef.events;
46
+ export type FolderSlots = typeof __propDef.slots;
47
+ /**
48
+ * Organize multiple controls into a collapsable folder.
49
+ *
50
+ * Wraps the Tweakpane [`addFolder`](https://tweakpane.github.io/docs/ui-components/#folder) method.
51
+ *
52
+ * May also be used to label and group multiple controls without user-collapsibility by setting
53
+ * `userExpandable` to `false` and `expanded` to true.
54
+ *
55
+ * Usage outside of a `<Pane>` component will implicitly wrap the folder in `<Pane position='inline'>`.
56
+ *
57
+ * @example
58
+ * ```svelte
59
+ * <script lang="ts">
60
+ * import { Button, Checkbox, Folder, Monitor } from 'svelte-tweakpane-ui';
61
+ *
62
+ * let expanded = true;
63
+ * let count = 0;
64
+ * </script>
65
+ *
66
+ * <Folder bind:expanded title="Reticulation Management Folder">
67
+ * <Button on:click={() => count++} title="Increment" />
68
+ * <Monitor value={count} label="Count" />
69
+ * </Folder>
70
+ *
71
+ * <Checkbox bind:value={expanded} label="Expanded" />
72
+ * ```
73
+ *
74
+ * @sourceLink
75
+ * [Folder.svelte](https://github.com/kitschpatrol/svelte-tweakpane-ui/blob/main/src/lib/core/Folder.svelte)
76
+ */
77
+ export default class Folder extends SvelteComponent<FolderProps, FolderEvents, FolderSlots> {}
78
+ export {};
@@ -0,0 +1,51 @@
1
+ <script context="module"></script>
2
+
3
+ <script>
4
+ import InternalPaneDraggable from '../internal/InternalPaneDraggable.svelte';
5
+ import InternalPaneFixed from '../internal/InternalPaneFixed.svelte';
6
+ import InternalPaneInline from '../internal/InternalPaneInline.svelte';
7
+ import { removeKeys } from '../utils';
8
+ import { BROWSER } from 'esm-env';
9
+ import { beforeUpdate } from 'svelte';
10
+ export let expanded = void 0;
11
+ export let position = void 0;
12
+ export let width = void 0;
13
+ export let x = void 0;
14
+ export let y = void 0;
15
+ beforeUpdate(() => {
16
+ if ($$props.position === 'inline' || $$props.position === 'fixed') {
17
+ x = $$props.x;
18
+ y = $$props.y;
19
+ width = $$props.width;
20
+ expanded = $$props.expanded;
21
+ }
22
+ });
23
+ </script>
24
+
25
+ <!-- Only prerender inline panes, because fixed / absolute positioned objects don't affect layout
26
+ -->
27
+ {#if position === undefined || position === 'draggable'}
28
+ {#if BROWSER}
29
+ <InternalPaneDraggable bind:expanded bind:width bind:x bind:y {...$$restProps}>
30
+ <slot />
31
+ </InternalPaneDraggable>
32
+ {:else}
33
+ <div style="display: none;">
34
+ <slot />
35
+ </div>
36
+ {/if}
37
+ {:else if position === 'inline'}
38
+ <InternalPaneInline bind:expanded {width} {...removeKeys($$restProps, 'storePositionLocally')}>
39
+ <slot />
40
+ </InternalPaneInline>
41
+ {:else if position === 'fixed'}
42
+ {#if BROWSER}
43
+ <InternalPaneFixed bind:expanded bind:x bind:y {width} {...$$restProps}>
44
+ <slot />
45
+ </InternalPaneFixed>
46
+ {:else}
47
+ <div style="display: none;">
48
+ <slot />
49
+ </div>
50
+ {/if}
51
+ {/if}