fragment-tools 0.1.20 → 0.2.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/bin/index.js +2 -2
- package/package.json +5 -6
- package/src/cli/build.js +1 -1
- package/src/cli/run.js +1 -1
- package/src/cli/templates/three-fragment/index.js +6 -6
- package/src/cli/templates/three-orthographic/index.js +3 -3
- package/src/cli/templates/three-perspective/index.js +3 -3
- package/src/client/app/actions/resize.js +14 -0
- package/src/client/app/components/HintLoading.svelte +94 -0
- package/src/client/app/components/HintPaused.svelte +88 -0
- package/src/client/app/components/HintRecord.svelte +62 -0
- package/src/client/app/components/IconLocked.svelte +51 -0
- package/src/client/app/components/IconTriggers.svelte +48 -0
- package/src/client/app/components/Init.svelte +14 -27
- package/src/client/app/components/KeyBinding.svelte +3 -6
- package/src/client/app/helpers.js +4 -40
- package/src/client/app/hooks.js +41 -17
- package/src/client/app/inputs/MIDI.js +2 -1
- package/src/client/app/lib/canvas-recorder/CanvasRecorder.js +6 -1
- package/src/client/app/lib/gl/Renderer.js +1 -0
- package/src/client/app/lib/svelte-json-tree/ErrorNode.svelte +28 -0
- package/src/client/app/lib/svelte-json-tree/ErrorStack.svelte +31 -0
- package/src/client/app/lib/svelte-json-tree/Expandable.svelte +25 -0
- package/src/client/app/lib/svelte-json-tree/JSONArrayNode.svelte +38 -0
- package/src/client/app/lib/svelte-json-tree/JSONArrow.svelte +47 -0
- package/src/client/app/lib/svelte-json-tree/JSONFunctionNode.svelte +114 -0
- package/src/client/app/lib/svelte-json-tree/JSONIterableArrayNode.svelte +60 -0
- package/src/client/app/lib/svelte-json-tree/JSONIterableMapNode.svelte +87 -0
- package/src/client/app/lib/svelte-json-tree/JSONNested.svelte +94 -0
- package/src/client/app/lib/svelte-json-tree/JSONNode.svelte +91 -0
- package/src/client/app/lib/svelte-json-tree/JSONObjectNode.svelte +40 -0
- package/src/client/app/lib/svelte-json-tree/JSONStringNode.svelte +31 -0
- package/src/client/app/lib/svelte-json-tree/JSONValueNode.svelte +31 -0
- package/src/client/app/lib/svelte-json-tree/PreviewList.svelte +38 -0
- package/src/client/app/lib/svelte-json-tree/RegExpNode.svelte +42 -0
- package/src/client/app/lib/svelte-json-tree/Root.svelte +75 -0
- package/src/client/app/lib/svelte-json-tree/Summary.svelte +9 -0
- package/src/client/app/lib/svelte-json-tree/TypedArrayNode.svelte +56 -0
- package/src/client/app/lib/svelte-json-tree/index.js +1 -0
- package/src/client/app/lib/svelte-json-tree/utils.js +57 -0
- package/src/client/app/modules/Console/ConsoleLine.svelte +12 -11
- package/src/client/app/modules/Console.svelte +82 -17
- package/src/client/app/modules/Exports.svelte +48 -48
- package/src/client/app/modules/MidiPanel.svelte +12 -19
- package/src/client/app/modules/Monitor.svelte +147 -55
- package/src/client/app/modules/Params.svelte +127 -80
- package/src/client/app/renderers/2DRenderer.js +1 -0
- package/src/client/app/renderers/FragmentRenderer.js +1 -1
- package/src/client/app/renderers/P5GLRenderer.js +11 -5
- package/src/client/app/renderers/P5Renderer.js +7 -3
- package/src/client/app/renderers/THREERenderer.js +42 -79
- package/src/client/app/state/Sketch.svelte.js +538 -0
- package/src/client/app/state/errors.svelte.js +17 -0
- package/src/client/app/state/exports.svelte.js +152 -0
- package/src/client/app/state/layout.svelte.js +205 -0
- package/src/client/app/state/monitors.svelte.js +36 -0
- package/src/client/app/state/renderers.svelte.js +77 -0
- package/src/client/app/state/rendering.svelte.js +697 -0
- package/src/client/app/state/sketches.svelte.js +73 -0
- package/src/client/app/state/utils.svelte.js +65 -0
- package/src/client/app/ui/Build.svelte +53 -60
- package/src/client/app/ui/ErrorOverlay.svelte +2 -2
- package/src/client/app/ui/Field.svelte +63 -189
- package/src/client/app/ui/FieldGroup.svelte +4 -5
- package/src/client/app/ui/FieldSection.svelte +14 -9
- package/src/client/app/ui/FieldSpace.svelte +1 -1
- package/src/client/app/ui/FieldTrigger.svelte +86 -84
- package/src/client/app/ui/FieldTriggers.svelte +25 -24
- package/src/client/app/ui/FloatingParams.svelte +50 -12
- package/src/client/app/ui/Layout.svelte +24 -13
- package/src/client/app/ui/LayoutColumn.svelte +2 -2
- package/src/client/app/ui/LayoutComponent.svelte +86 -195
- package/src/client/app/ui/LayoutResizer.svelte +25 -37
- package/src/client/app/ui/LayoutRoot.svelte +3 -5
- package/src/client/app/ui/LayoutRow.svelte +2 -2
- package/src/client/app/ui/LayoutToolbar.svelte +17 -76
- package/src/client/app/ui/Module.svelte +31 -35
- package/src/client/app/ui/ModuleHeaderAction.svelte +23 -16
- package/src/client/app/ui/ModuleHeaderButton.svelte +3 -3
- package/src/client/app/ui/ModuleHeaderSelect.svelte +4 -12
- package/src/client/app/ui/ModuleRenderer.svelte +84 -22
- package/src/client/app/ui/ParamsOutput.svelte +61 -77
- package/src/client/app/ui/Preview.svelte +15 -4
- package/src/client/app/ui/SelectChevrons.svelte +1 -2
- package/src/client/app/ui/SketchRenderer.svelte +89 -701
- package/src/client/app/ui/SketchSelect.svelte +14 -49
- package/src/client/app/ui/fields/ButtonInput.svelte +14 -11
- package/src/client/app/ui/fields/CheckboxInput.svelte +5 -12
- package/src/client/app/ui/fields/ColorInput.svelte +46 -121
- package/src/client/app/ui/fields/FieldInputRow.svelte +5 -1
- package/src/client/app/ui/fields/ImageInput.svelte +14 -14
- package/src/client/app/ui/fields/Input.svelte +19 -25
- package/src/client/app/ui/fields/IntervalInput.svelte +22 -22
- package/src/client/app/ui/fields/NumberInput.svelte +32 -38
- package/src/client/app/ui/fields/ProgressInput.svelte +14 -13
- package/src/client/app/ui/fields/Select.svelte +34 -45
- package/src/client/app/ui/fields/TextInput.svelte +10 -6
- package/src/client/app/ui/fields/VectorInput.svelte +25 -30
- package/src/client/app/utils/canvas.utils.js +8 -8
- package/src/client/app/utils/color.utils.js +46 -13
- package/src/client/app/utils/fields.utils.js +1 -1
- package/src/client/app/utils/glsl.utils.js +1 -1
- package/src/client/app/utils/glslErrors.js +1 -1
- package/src/client/main.js +2 -2
|
@@ -1,49 +1,44 @@
|
|
|
1
|
-
<script context="module">
|
|
2
|
-
let MODULE_ID = 0;
|
|
3
|
-
|
|
4
|
-
export let getModuleID = () => {
|
|
5
|
-
return MODULE_ID++;
|
|
6
|
-
};
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
1
|
<script>
|
|
10
2
|
import { getContext } from 'svelte';
|
|
11
|
-
import { layout } from '../
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
import { layout } from '../state/layout.svelte.js';
|
|
4
|
+
import { resize } from '../actions/resize.js';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
id,
|
|
8
|
+
name,
|
|
9
|
+
slug = name,
|
|
10
|
+
scrollable = true,
|
|
11
|
+
headless = false,
|
|
12
|
+
children,
|
|
13
|
+
headerLeft,
|
|
14
|
+
headerRight,
|
|
15
|
+
onresize,
|
|
16
|
+
} = $props();
|
|
18
17
|
|
|
19
18
|
const parent = getContext('parent');
|
|
19
|
+
const minimize = getContext('minimize');
|
|
20
20
|
|
|
21
|
-
const current = {
|
|
22
|
-
|
|
21
|
+
const current = layout.createComponent({
|
|
22
|
+
id,
|
|
23
23
|
type: 'module',
|
|
24
24
|
name: slug,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
MODULE_ID = Math.max(MODULE_ID, !isNaN(current.mID) ? current.mID + 1 : 0);
|
|
29
|
-
|
|
30
|
-
parent.registerChild(current);
|
|
31
|
-
|
|
32
|
-
const m = getContext('module');
|
|
33
|
-
m.set(current);
|
|
25
|
+
headless,
|
|
26
|
+
origin: parent,
|
|
27
|
+
});
|
|
34
28
|
</script>
|
|
35
29
|
|
|
36
30
|
<div
|
|
37
31
|
class="module module--{slug}"
|
|
38
32
|
class:scrollable
|
|
39
|
-
class:
|
|
40
|
-
class:editing={
|
|
33
|
+
class:headless
|
|
34
|
+
class:editing={layout.editing}
|
|
35
|
+
bind:this={current.node}
|
|
41
36
|
>
|
|
42
|
-
{#if
|
|
43
|
-
<header class="module__header">
|
|
37
|
+
{#if !headless && name}
|
|
38
|
+
<header class="module__header" onclick={minimize}>
|
|
44
39
|
<div class="header__col">
|
|
45
40
|
<div class="slot slot--left">
|
|
46
|
-
|
|
41
|
+
{@render headerLeft?.()}
|
|
47
42
|
</div>
|
|
48
43
|
</div>
|
|
49
44
|
<div class="header__col">
|
|
@@ -51,13 +46,14 @@
|
|
|
51
46
|
</div>
|
|
52
47
|
<div class="header__col">
|
|
53
48
|
<div class="slot slot--right">
|
|
54
|
-
|
|
49
|
+
{@render headerRight?.()}
|
|
50
|
+
<!-- <slot name="header-right" /> -->
|
|
55
51
|
</div>
|
|
56
52
|
</div>
|
|
57
53
|
</header>
|
|
58
54
|
{/if}
|
|
59
|
-
<div class="module__container">
|
|
60
|
-
|
|
55
|
+
<div class="module__container" use:resize={onresize}>
|
|
56
|
+
{@render children?.()}
|
|
61
57
|
</div>
|
|
62
58
|
</div>
|
|
63
59
|
|
|
@@ -71,7 +67,7 @@
|
|
|
71
67
|
align-items: stretch;
|
|
72
68
|
}
|
|
73
69
|
|
|
74
|
-
.module.
|
|
70
|
+
.module.headless {
|
|
75
71
|
--header-height: 0px;
|
|
76
72
|
grid-template-rows: minmax(0px, auto);
|
|
77
73
|
}
|
|
@@ -2,14 +2,20 @@
|
|
|
2
2
|
import ModuleHeaderSelect from './ModuleHeaderSelect.svelte';
|
|
3
3
|
import ModuleHeaderButton from './ModuleHeaderButton.svelte';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
let {
|
|
6
|
+
label = '',
|
|
7
|
+
permanent = false,
|
|
8
|
+
value,
|
|
9
|
+
border = false,
|
|
10
|
+
margin = true,
|
|
11
|
+
options = [],
|
|
12
|
+
onchange,
|
|
13
|
+
onclick,
|
|
14
|
+
children,
|
|
15
|
+
icon,
|
|
16
|
+
} = $props();
|
|
17
|
+
|
|
18
|
+
let disabled = $derived(options.length === 1);
|
|
13
19
|
</script>
|
|
14
20
|
|
|
15
21
|
<div
|
|
@@ -20,15 +26,16 @@
|
|
|
20
26
|
class:disabled
|
|
21
27
|
>
|
|
22
28
|
{#if options.length > 0}
|
|
23
|
-
<ModuleHeaderSelect {options} {value} {disabled}
|
|
29
|
+
<ModuleHeaderSelect {options} {value} {disabled} {onchange} />
|
|
24
30
|
{:else}
|
|
25
|
-
<ModuleHeaderButton {label}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
<ModuleHeaderButton {label} {onclick}>
|
|
32
|
+
{#snippet text()}{/snippet}
|
|
33
|
+
{#if icon}
|
|
34
|
+
{@render icon?.()}
|
|
35
|
+
{/if}
|
|
36
|
+
<div class="text">
|
|
37
|
+
{@render children?.()}
|
|
38
|
+
</div>
|
|
32
39
|
</ModuleHeaderButton>
|
|
33
40
|
{/if}
|
|
34
41
|
</div>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
2
|
+
let { label, children, onclick } = $props();
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
|
-
<button class="module-header-action__button" aria-label={label}
|
|
6
|
-
|
|
5
|
+
<button class="module-header-action__button" aria-label={label} {onclick}>
|
|
6
|
+
{@render children?.()}
|
|
7
7
|
</button>
|
|
8
8
|
|
|
9
9
|
<style>
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { createEventDispatcher } from 'svelte';
|
|
3
|
-
|
|
4
2
|
import SelectChevrons from './SelectChevrons.svelte';
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
export let options = [];
|
|
8
|
-
export let disabled = false;
|
|
9
|
-
|
|
10
|
-
const dispatch = createEventDispatcher();
|
|
11
|
-
|
|
12
|
-
function handleChange(event) {
|
|
13
|
-
dispatch('change', event.currentTarget.value);
|
|
14
|
-
}
|
|
4
|
+
let { value, options = [], disabled = false, onchange } = $props();
|
|
15
5
|
</script>
|
|
16
6
|
|
|
17
7
|
<div class="module-header-select">
|
|
18
8
|
<select
|
|
19
9
|
class="select"
|
|
20
|
-
|
|
10
|
+
{value}
|
|
11
|
+
{onchange}
|
|
12
|
+
onclick={(e) => e.stopPropagation()}
|
|
21
13
|
class:single={options.length === 1}
|
|
22
14
|
{disabled}
|
|
23
15
|
>
|
|
@@ -9,29 +9,91 @@
|
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<script>
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
import Monitor from '../modules/Monitor.svelte';
|
|
13
|
+
import Exports from '../modules/Exports.svelte';
|
|
14
|
+
import MidiPanel from '../modules/MidiPanel.svelte';
|
|
15
|
+
import Console from '../modules/Console.svelte';
|
|
16
|
+
import Params from '../modules/Params.svelte';
|
|
17
|
+
let { id, name, headless = false, params = {} } = $props();
|
|
18
|
+
|
|
19
|
+
// const moduleList = {
|
|
20
|
+
// monitor: () => import('../modules/Monitor.svelte'),
|
|
21
|
+
// params: () => import('../modules/Params.svelte'),
|
|
22
|
+
// };
|
|
23
|
+
|
|
24
|
+
// if (!__BUILD__) {
|
|
25
|
+
// Object.assign(moduleList, {
|
|
26
|
+
// midi: () => import('../modules/MidiPanel.svelte'),
|
|
27
|
+
// console: () => import('../modules/Console.svelte'),
|
|
28
|
+
// exports: () => import('../modules/Exports.svelte'),
|
|
29
|
+
// });
|
|
30
|
+
// }
|
|
25
31
|
</script>
|
|
26
32
|
|
|
27
|
-
{#if
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
{
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
{
|
|
33
|
+
{#if name === 'monitor'}
|
|
34
|
+
<Monitor {id} {headless} {params} />
|
|
35
|
+
{:else if name === 'exports'}
|
|
36
|
+
<Exports {id} {headless} {params} />
|
|
37
|
+
{:else if name === 'console'}
|
|
38
|
+
<Console {id} {headless} {params} />
|
|
39
|
+
{:else if name === 'params'}
|
|
40
|
+
<Params {id} {headless} {params} />
|
|
41
|
+
{:else if name === 'midi'}
|
|
42
|
+
<MidiPanel {id} {headless} {params} />
|
|
35
43
|
{:else}
|
|
36
|
-
<
|
|
44
|
+
<div class="module-renderer">
|
|
45
|
+
<header class="module-renderer-header">
|
|
46
|
+
<span>Error</span>
|
|
47
|
+
</header>
|
|
48
|
+
<div class="module-renderer-error">
|
|
49
|
+
<div>
|
|
50
|
+
<p class="message">
|
|
51
|
+
Something went wrong while loading module:
|
|
52
|
+
<span class="module-name">{name}</span>
|
|
53
|
+
</p>
|
|
54
|
+
<p class="error">{error.message}</p>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
37
58
|
{/if}
|
|
59
|
+
|
|
60
|
+
<style>
|
|
61
|
+
.module-renderer {
|
|
62
|
+
display: grid;
|
|
63
|
+
grid-template-rows: 25px 1fr;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.module-renderer-header {
|
|
67
|
+
display: flex;
|
|
68
|
+
height: 25px;
|
|
69
|
+
flex-shrink: 0;
|
|
70
|
+
justify-content: center;
|
|
71
|
+
align-items: center;
|
|
72
|
+
|
|
73
|
+
color: white;
|
|
74
|
+
font-size: 10px;
|
|
75
|
+
text-transform: capitalize;
|
|
76
|
+
user-select: none;
|
|
77
|
+
|
|
78
|
+
background-color: var(--color-lightblack);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.module-renderer-error {
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-direction: column;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
color: var(--color-red);
|
|
86
|
+
font-size: 11px;
|
|
87
|
+
text-align: center;
|
|
88
|
+
background: #2a0000;
|
|
89
|
+
border-color: #5c0000;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.message {
|
|
93
|
+
color: var(--color-text);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.module-name {
|
|
97
|
+
text-transform: capitalize;
|
|
98
|
+
}
|
|
99
|
+
</style>
|
|
@@ -1,156 +1,140 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import {
|
|
3
|
-
import { sketchesCount } from '../stores/sketches.js';
|
|
2
|
+
import { SIZES, rendering } from '../state/rendering.svelte';
|
|
4
3
|
import Field from './Field.svelte';
|
|
5
4
|
import presets, {
|
|
6
5
|
PRESET_ORIENTATIONS,
|
|
7
6
|
getDimensionsForPreset,
|
|
8
7
|
} from '../lib/presets';
|
|
9
|
-
import { exports } from '../
|
|
10
|
-
import ParamsMultisampling from './ParamsMultisampling.svelte';
|
|
8
|
+
import { exports } from '../state/exports.svelte';
|
|
9
|
+
// import ParamsMultisampling from './ParamsMultisampling.svelte';
|
|
11
10
|
import Select from './fields/Select.svelte';
|
|
12
11
|
import FieldInputRow from './fields/FieldInputRow.svelte';
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function handleChangeDimensions(event) {
|
|
18
|
-
const [width, height] = event.detail;
|
|
19
|
-
const needsUpdate = canvasWidth !== width || canvasHeight !== height;
|
|
13
|
+
function handleChangeDimensions({ width, height }) {
|
|
14
|
+
const needsUpdate =
|
|
15
|
+
rendering.width !== width || rendering.height !== height;
|
|
20
16
|
|
|
21
17
|
if (needsUpdate) {
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
rendering.width = width;
|
|
19
|
+
rendering.height = height;
|
|
24
20
|
|
|
25
|
-
rendering.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
height,
|
|
30
|
-
};
|
|
31
|
-
});
|
|
21
|
+
if (rendering.resizing === SIZES.FIXED) {
|
|
22
|
+
rendering.fixedWidth = width;
|
|
23
|
+
rendering.fixedHeight = height;
|
|
24
|
+
}
|
|
32
25
|
}
|
|
33
26
|
}
|
|
34
27
|
|
|
35
28
|
let sizes = Object.values(SIZES);
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
let dimensions = $derived({
|
|
30
|
+
width: rendering.width,
|
|
31
|
+
height: rendering.height,
|
|
32
|
+
});
|
|
33
|
+
let dimensionsEnabled = $derived(
|
|
34
|
+
[SIZES.FIXED, SIZES.SCALE].includes(rendering.resizing),
|
|
38
35
|
);
|
|
36
|
+
let dimensionsParams = $state({
|
|
37
|
+
step: 1,
|
|
38
|
+
suffix: 'px',
|
|
39
|
+
locked: false,
|
|
40
|
+
});
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
if (
|
|
42
|
-
const { preset } =
|
|
42
|
+
$effect(() => {
|
|
43
|
+
if (rendering.resizing === SIZES.PRESET) {
|
|
44
|
+
const { preset } = rendering;
|
|
43
45
|
const [width, height] = getDimensionsForPreset(preset, {
|
|
44
46
|
pixelsPerInch: 300,
|
|
45
|
-
orientation:
|
|
47
|
+
orientation: rendering.presetOrientation,
|
|
46
48
|
});
|
|
47
49
|
|
|
48
|
-
rendering.
|
|
49
|
-
|
|
50
|
-
...curr,
|
|
51
|
-
width,
|
|
52
|
-
height,
|
|
53
|
-
};
|
|
54
|
-
});
|
|
50
|
+
rendering.width = width;
|
|
51
|
+
rendering.height = height;
|
|
55
52
|
}
|
|
56
|
-
}
|
|
53
|
+
});
|
|
57
54
|
</script>
|
|
58
55
|
|
|
59
56
|
<Field
|
|
60
57
|
key="dimensions"
|
|
61
|
-
value={
|
|
62
|
-
|
|
63
|
-
params={
|
|
64
|
-
step: 1,
|
|
65
|
-
suffix: 'px',
|
|
66
|
-
locked: false,
|
|
67
|
-
}}
|
|
58
|
+
value={dimensions}
|
|
59
|
+
onchange={handleChangeDimensions}
|
|
60
|
+
bind:params={dimensionsParams}
|
|
68
61
|
disabled={!dimensionsEnabled}
|
|
69
62
|
/>
|
|
70
63
|
<Field
|
|
71
64
|
key="canvasSize"
|
|
72
|
-
value={
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
let aspectRatio = 1;
|
|
65
|
+
value={rendering.resizing}
|
|
66
|
+
onchange={(resizing) => {
|
|
67
|
+
exports.pixelsPerInch = resizing === SIZES.PRESET ? 300 : 72;
|
|
76
68
|
|
|
77
|
-
if (resizing === SIZES.
|
|
78
|
-
|
|
79
|
-
|
|
69
|
+
if (rendering.resizing !== SIZES.FIXED && resizing === SIZES.FIXED) {
|
|
70
|
+
rendering.width = rendering.fixedWidth;
|
|
71
|
+
rendering.height = rendering.fixedHeight;
|
|
80
72
|
}
|
|
81
73
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
rendering.update((curr) => {
|
|
85
|
-
return {
|
|
86
|
-
...curr,
|
|
87
|
-
resizing,
|
|
88
|
-
aspectRatio,
|
|
89
|
-
};
|
|
90
|
-
});
|
|
74
|
+
rendering.resizing = resizing;
|
|
91
75
|
}}
|
|
92
76
|
params={{
|
|
93
77
|
options: sizes,
|
|
94
78
|
}}
|
|
95
79
|
/>
|
|
96
|
-
{#if
|
|
80
|
+
{#if rendering.resizing === SIZES.ASPECT_RATIO}
|
|
97
81
|
<Field
|
|
98
82
|
key="aspectRatio"
|
|
99
|
-
value={
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
value={rendering.aspectRatio}
|
|
84
|
+
onchange={(aspectRatio) => {
|
|
85
|
+
rendering.aspectRatio = aspectRatio;
|
|
102
86
|
}}
|
|
103
87
|
params={{
|
|
104
88
|
step: 0.01,
|
|
105
89
|
}}
|
|
106
90
|
/>
|
|
107
91
|
{/if}
|
|
108
|
-
{#if
|
|
92
|
+
{#if rendering.resizing === SIZES.SCALE}
|
|
109
93
|
<Field
|
|
110
94
|
key="zoom"
|
|
111
|
-
value={
|
|
112
|
-
|
|
113
|
-
|
|
95
|
+
value={rendering.scale}
|
|
96
|
+
onchange={(event) => {
|
|
97
|
+
rendering.scale = event;
|
|
114
98
|
}}
|
|
115
99
|
params={{
|
|
116
100
|
step: 0.01,
|
|
117
101
|
}}
|
|
118
102
|
/>
|
|
119
103
|
{/if}
|
|
120
|
-
{#if
|
|
104
|
+
<!-- {#if rendering.resizing === SIZES.PRESET}
|
|
121
105
|
<Field key="preset">
|
|
122
106
|
<FieldInputRow --grid-template-columns="1fr 1fr">
|
|
123
107
|
<Select
|
|
124
|
-
value={
|
|
108
|
+
value={rendering.preset}
|
|
125
109
|
options={presets}
|
|
126
|
-
|
|
127
|
-
|
|
110
|
+
onchange={(preset) => {
|
|
111
|
+
rendering.preset = preset;
|
|
128
112
|
}}
|
|
129
113
|
/>
|
|
130
114
|
<Select
|
|
131
|
-
value={
|
|
115
|
+
value={rendering.presetOrientation}
|
|
132
116
|
options={[
|
|
133
117
|
PRESET_ORIENTATIONS.PORTRAIT,
|
|
134
118
|
PRESET_ORIENTATIONS.LANDSCAPE,
|
|
135
119
|
]}
|
|
136
|
-
|
|
137
|
-
|
|
120
|
+
onchange={(presetOrientation) => {
|
|
121
|
+
rendering.presetOrientation = presetOrientation;
|
|
138
122
|
}}
|
|
139
123
|
/>
|
|
140
124
|
</FieldInputRow>
|
|
141
125
|
</Field>
|
|
142
|
-
{/if}
|
|
126
|
+
{/if} -->
|
|
143
127
|
|
|
144
|
-
{#if
|
|
128
|
+
{#if rendering.resizing !== SIZES.PRESET}
|
|
145
129
|
<Field
|
|
146
130
|
key="pixelRatio"
|
|
147
|
-
value={Number(
|
|
148
|
-
|
|
131
|
+
value={Number(rendering.pixelRatio)}
|
|
132
|
+
onchange={(pixelRatio) => (rendering.pixelRatio = pixelRatio)}
|
|
149
133
|
params={{
|
|
150
134
|
step: 0.1,
|
|
151
135
|
}}
|
|
152
136
|
/>
|
|
153
137
|
{/if}
|
|
154
|
-
{#if $sketchesCount > 1 && $monitors.length > 1}
|
|
138
|
+
<!-- {#if $sketchesCount > 1 && $monitors.length > 1}
|
|
155
139
|
<ParamsMultisampling />
|
|
156
|
-
{/if}
|
|
140
|
+
{/if} -->
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { onDestroy } from 'svelte';
|
|
2
|
+
import { onDestroy, onMount } from 'svelte';
|
|
3
3
|
|
|
4
|
-
import { rendering } from '../
|
|
4
|
+
import { rendering } from '../state/rendering.svelte';
|
|
5
5
|
import Build from './Build.svelte';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const { resizing, width, height, pixelRatio, aspectRatio, scale, preset } =
|
|
8
|
+
rendering;
|
|
8
9
|
|
|
9
10
|
onDestroy(() => {
|
|
10
|
-
|
|
11
|
+
const prevRendering = {
|
|
12
|
+
resizing,
|
|
13
|
+
width,
|
|
14
|
+
height,
|
|
15
|
+
pixelRatio,
|
|
16
|
+
aspectRatio,
|
|
17
|
+
scale,
|
|
18
|
+
preset,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
rendering.override(prevRendering);
|
|
11
22
|
});
|
|
12
23
|
</script>
|
|
13
24
|
|