fragment-tools 0.2.7 → 0.2.9

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 (90) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +11 -0
  3. package/.prettierignore +1 -0
  4. package/CHANGELOG.md +10 -0
  5. package/README.md +14 -10
  6. package/bin/index.js +4 -0
  7. package/package.json +9 -2
  8. package/src/cli/build.js +1 -3
  9. package/src/cli/create.js +55 -6
  10. package/src/cli/createConfig.js +8 -23
  11. package/src/cli/createFragmentFile.js +44 -46
  12. package/src/cli/getEntries.js +13 -5
  13. package/src/cli/plugins/check-dependencies.js +1 -1
  14. package/src/cli/run.js +12 -3
  15. package/src/cli/templates/blank/index.js +4 -4
  16. package/src/cli/templates/blank/index.ts +15 -0
  17. package/src/cli/templates/default/index.js +7 -6
  18. package/src/cli/templates/default/index.ts +20 -0
  19. package/src/cli/templates/fragment-gl/fragment.fs +1 -1
  20. package/src/cli/templates/fragment-gl/index.js +3 -3
  21. package/src/cli/templates/fragment-gl/index.ts +20 -0
  22. package/src/cli/templates/p5/index.js +6 -6
  23. package/src/cli/templates/p5/index.ts +14 -0
  24. package/src/cli/templates/p5-webgl/fragment.fs +2 -4
  25. package/src/cli/templates/p5-webgl/index.js +9 -15
  26. package/src/cli/templates/p5-webgl/index.ts +43 -0
  27. package/src/cli/templates/three-fragment/fragment.fs +1 -1
  28. package/src/cli/templates/three-fragment/index.js +10 -4
  29. package/src/cli/templates/three-fragment/index.ts +68 -0
  30. package/src/cli/templates/three-orthographic/index.js +10 -4
  31. package/src/cli/templates/three-orthographic/index.ts +29 -0
  32. package/src/cli/templates/three-perspective/index.js +10 -4
  33. package/src/cli/templates/three-perspective/index.ts +26 -0
  34. package/src/cli/utils.js +3 -0
  35. package/src/client/app/components/HintRecord.svelte +3 -3
  36. package/src/client/app/hooks.js +5 -5
  37. package/src/client/app/lib/gl/Renderer.js +1 -1
  38. package/src/client/app/lib/gl/Texture.js +1 -1
  39. package/src/client/app/lib/gl/index.js +2 -2
  40. package/src/client/app/modules/AudioAnalyser/Range.svelte +2 -2
  41. package/src/client/app/modules/AudioAnalyser/Spectrum.svelte +3 -3
  42. package/src/client/app/modules/Console/ConsoleLine.svelte +13 -13
  43. package/src/client/app/modules/Console.svelte +6 -4
  44. package/src/client/app/renderers/2DRenderer.js +6 -3
  45. package/src/client/app/renderers/FragmentRenderer.js +39 -2
  46. package/src/client/app/renderers/P5GLRenderer.js +28 -26
  47. package/src/client/app/renderers/P5Renderer.js +49 -9
  48. package/src/client/app/renderers/THREERenderer.js +64 -12
  49. package/src/client/app/state/Sketch.svelte.js +0 -4
  50. package/src/client/app/state/rendering.svelte.js +2 -2
  51. package/src/client/app/state/utils.svelte.js +9 -2
  52. package/src/client/app/stores/sketches.js +2 -1
  53. package/src/client/app/ui/ErrorOverlay.svelte +5 -5
  54. package/src/client/app/ui/Field.svelte +5 -5
  55. package/src/client/app/ui/FieldGroup.svelte +5 -5
  56. package/src/client/app/ui/FieldSection.svelte +7 -7
  57. package/src/client/app/ui/FieldSpace.svelte +2 -2
  58. package/src/client/app/ui/FieldTrigger.svelte +6 -6
  59. package/src/client/app/ui/FloatingParams.svelte +1 -1
  60. package/src/client/app/ui/LayoutComponent.svelte +7 -7
  61. package/src/client/app/ui/LayoutResizer.svelte +1 -1
  62. package/src/client/app/ui/LayoutToolbar.svelte +6 -6
  63. package/src/client/app/ui/Module.svelte +6 -4
  64. package/src/client/app/ui/ModuleRenderer.svelte +3 -3
  65. package/src/client/app/ui/OutputRenderer.svelte +4 -1
  66. package/src/client/app/ui/SketchRenderer.svelte +4 -1
  67. package/src/client/app/ui/fields/ButtonInput.svelte +11 -11
  68. package/src/client/app/ui/fields/CheckboxInput.svelte +18 -12
  69. package/src/client/app/ui/fields/ColorInput.svelte +9 -7
  70. package/src/client/app/ui/fields/ImageInput.svelte +10 -8
  71. package/src/client/app/ui/fields/Input.svelte +13 -13
  72. package/src/client/app/ui/fields/IntervalInput.svelte +11 -14
  73. package/src/client/app/ui/fields/ListInput.svelte +9 -8
  74. package/src/client/app/ui/fields/ProgressInput.svelte +9 -9
  75. package/src/client/app/ui/fields/Select.svelte +11 -11
  76. package/src/client/app/ui/fields/VectorInput.svelte +1 -1
  77. package/src/client/public/css/global.css +26 -27
  78. package/src/client/public/preview.html +59 -0
  79. package/src/types/client.d.ts +36 -0
  80. package/src/types/gl.d.ts +130 -0
  81. package/src/types/helpers.d.ts +5 -0
  82. package/src/types/hooks.d.ts +14 -0
  83. package/src/types/index.d.ts +8 -0
  84. package/src/types/midi.d.ts +176 -0
  85. package/src/types/props.d.ts +72 -0
  86. package/src/types/renderers.d.ts +100 -0
  87. package/src/types/sketch.d.ts +45 -0
  88. package/src/types/triggers.d.ts +45 -0
  89. package/src/types/utils.ts +11 -0
  90. package/tsconfig.json +38 -0
@@ -1,4 +1,4 @@
1
- export let props = {};
1
+ export const props = {};
2
2
 
3
3
  /**
4
4
  * @param {object} params
@@ -8,7 +8,7 @@ export let props = {};
8
8
  * @param {number} params.height
9
9
  * @param {number} params.pixelRatio
10
10
  */
11
- export let init = ({ canvas, context, width, height }) => {};
11
+ export const init = ({ canvas, context, width, height }) => {};
12
12
 
13
13
  /**
14
14
  * @param {object} params
@@ -23,8 +23,9 @@ export let init = ({ canvas, context, width, height }) => {};
23
23
  * @param {number} params.playhead
24
24
  * @param {number} params.playcount
25
25
  */
26
- export let update = ({ context, width, height, pixelRatio }) => {
27
- context.clearRect(0, 0, width * pixelRatio, height * pixelRatio);
26
+ export const update = ({ context, width, height, pixelRatio }) => {
27
+ context.fillStyle = 'rgb(0, 255, 0)';
28
+ context.fillRect(0, 0, width * pixelRatio, height * pixelRatio);
28
29
  };
29
30
 
30
31
  /**
@@ -34,6 +35,6 @@ export let update = ({ context, width, height, pixelRatio }) => {
34
35
  * @param {number} params.height
35
36
  * @param {number} params.pixelRatio
36
37
  */
37
- export let resize = ({ width, height }) => {};
38
+ export const resize = ({ width, height }) => {};
38
39
 
39
- export let rendering = '2d';
40
+ export const rendering = '2d';
@@ -0,0 +1,20 @@
1
+ import { Init, Rendering, Resize, Update } from '@fragment/types';
2
+ import { defineProps } from '@fragment/types/utils';
3
+
4
+ export const props = defineProps({});
5
+
6
+ export const init: Init<'2d'> = ({}) => {};
7
+
8
+ export const update: Update<'2d'> = ({
9
+ context,
10
+ width,
11
+ height,
12
+ pixelRatio,
13
+ }) => {
14
+ context.fillStyle = 'rgb(0, 255, 0)';
15
+ context.fillRect(0, 0, width * pixelRatio, height * pixelRatio);
16
+ };
17
+
18
+ export const resize: Resize<'2d'> = ({}) => {};
19
+
20
+ export const rendering: Rendering = '2d';
@@ -6,5 +6,5 @@ uniform vec2 uResolution;
6
6
  varying vec2 vUv;
7
7
 
8
8
  void main() {
9
- gl_FragColor = vec4(1., 0., 0., 1.);
9
+ gl_FragColor = vec4(0., 1., 0., 1.);
10
10
  }
@@ -11,7 +11,7 @@ let uniforms = {
11
11
  * @param {number} params.height
12
12
  * @param {number} params.pixelRatio
13
13
  */
14
- export let init = ({ frag }) => {
14
+ export const init = ({ frag }) => {
15
15
  frag.uniforms = uniforms;
16
16
  frag.shader = fragmentShader;
17
17
  };
@@ -28,10 +28,10 @@ export let init = ({ frag }) => {
28
28
  * @param {number} params.playhead
29
29
  * @param {number} params.playcount
30
30
  */
31
- export let update = ({ frag, deltaTime }) => {
31
+ export const update = ({ frag, deltaTime }) => {
32
32
  uniforms.uTime.value += deltaTime;
33
33
 
34
34
  frag.render();
35
35
  };
36
36
 
37
- export let rendering = 'fragment';
37
+ export const rendering = 'fragment';
@@ -0,0 +1,20 @@
1
+ import { Init, Rendering, Update } from '@fragment/types';
2
+
3
+ import fragmentShader from './fragment.fs';
4
+
5
+ const uniforms = {
6
+ uTime: { value: 0, type: 'float' }
7
+ };
8
+
9
+ export const init: Init<'fragment'> = ({ frag }) => {
10
+ frag.uniforms = uniforms;
11
+ frag.shader = fragmentShader;
12
+ };
13
+
14
+ export const update: Update<'fragment'> = ({ frag, deltaTime }) => {
15
+ uniforms.uTime.value += deltaTime;
16
+
17
+ frag.render();
18
+ };
19
+
20
+ export const rendering: Rendering = 'fragment';
@@ -1,6 +1,6 @@
1
1
  import p5 from 'p5';
2
2
 
3
- export let props = {};
3
+ export const props = {};
4
4
 
5
5
  /**
6
6
  * @param {object} params
@@ -10,7 +10,7 @@ export let props = {};
10
10
  * @param {number} params.height
11
11
  * @param {number} params.pixelRatio
12
12
  */
13
- export function setup({ p, width, height }) {}
13
+ export const setup = ({ p, width, height }) => {};
14
14
 
15
15
  /**
16
16
  * @param {object} params
@@ -25,8 +25,8 @@ export function setup({ p, width, height }) {}
25
25
  * @param {number} params.playhead
26
26
  * @param {number} params.playcount
27
27
  */
28
- export function draw({ p }) {
29
- p.background(255, 0, 0);
30
- }
28
+ export const draw = ({ p }) => {
29
+ p.background(0, 255, 0);
30
+ };
31
31
 
32
- export let rendering = 'p5';
32
+ export const rendering = 'p5';
@@ -0,0 +1,14 @@
1
+ import p5 from 'p5';
2
+
3
+ import { Init, Rendering, Update } from '@fragment/types';
4
+ import { defineProps } from '@fragment/types/utils';
5
+
6
+ export const props = defineProps({});
7
+
8
+ export const setup: Init<'p5'> = ({}) => {};
9
+
10
+ export const draw: Update<'p5'> = ({ p }) => {
11
+ p.background(0, 255, 0);
12
+ };
13
+
14
+ export const rendering: Rendering = 'p5';
@@ -1,14 +1,12 @@
1
1
  precision mediump float;
2
2
 
3
- #define PI 3.141592653589793
4
-
5
3
  uniform float uTime;
6
4
 
7
5
  varying vec2 vUv;
8
6
 
9
7
  void main() {
10
8
  vec2 uv = vUv;
11
- vec3 color = vec3(sin(uv.x * PI * 10. + uTime * 10.));
12
-
9
+ vec3 color = vec3(0., 1., 0.);
10
+
13
11
  gl_FragColor = vec4(color, 1.0);
14
12
  }
@@ -1,11 +1,8 @@
1
1
  import p5 from 'p5';
2
+
2
3
  import fragmentShader from './fragment.fs';
3
4
 
4
- export let props = {
5
- backgroundColor: {
6
- value: 'rgb(255, 0, 0)',
7
- },
8
- };
5
+ export let props = {};
9
6
 
10
7
  let shader;
11
8
 
@@ -17,7 +14,7 @@ let shader;
17
14
  * @param {number} params.height
18
15
  * @param {number} params.pixelRatio
19
16
  */
20
- export function setup({ p, width, height }) {
17
+ export const setup = ({ p, width, height }) => {
21
18
  shader = p.createShader(
22
19
  /* glsl */ `
23
20
  attribute vec3 aPosition;
@@ -31,15 +28,14 @@ varying vec2 vUv;
31
28
  void main() {
32
29
  vUv = aTexCoord;
33
30
 
34
- vec3 transformed = aPosition;
35
- transformed.xy = transformed.xy - 1.;
36
-
31
+ vec3 transformed = (aPosition - 0.5) * 2.;
32
+
37
33
  gl_Position = vec4(transformed, 1.);
38
34
  }
39
35
  `,
40
36
  fragmentShader,
41
37
  );
42
- }
38
+ };
43
39
 
44
40
  /**
45
41
  * @param {object} params
@@ -54,14 +50,12 @@ void main() {
54
50
  * @param {number} params.playhead
55
51
  * @param {number} params.playcount
56
52
  */
57
- export function draw({ p, width, height, time }) {
58
- p.background(props.backgroundColor.value);
59
-
53
+ export const draw = ({ p, width, height, time }) => {
60
54
  p.shader(shader);
61
55
 
62
56
  shader.setUniform('uTime', time / 1000);
63
57
 
64
58
  p.rect(0, 0, width, height);
65
- }
59
+ };
66
60
 
67
- export let rendering = 'p5-webgl';
61
+ export const rendering = 'p5-webgl';
@@ -0,0 +1,43 @@
1
+ import p5, { type Shader } from 'p5';
2
+
3
+ import { Init, Rendering, Update } from '@fragment/types';
4
+ import { defineProps } from '@fragment/types/utils';
5
+
6
+ import fragmentShader from './fragment.fs';
7
+
8
+ export const props = defineProps({});
9
+
10
+ let shader: Shader;
11
+
12
+ export const setup: Init<'p5-webgl'> = ({ p }) => {
13
+ shader = p.createShader(
14
+ /* glsl */ `
15
+ attribute vec3 aPosition;
16
+ attribute vec2 aTexCoord;
17
+
18
+ uniform mat4 uProjectionMatrix;
19
+ uniform mat4 uModelViewMatrix;
20
+
21
+ varying vec2 vUv;
22
+
23
+ void main() {
24
+ vUv = aTexCoord;
25
+
26
+ vec3 transformed = (aPosition - 0.5) * 2.;
27
+
28
+ gl_Position = vec4(transformed, 1.);
29
+ }
30
+ `,
31
+ fragmentShader,
32
+ );
33
+ };
34
+
35
+ export const draw: Update<'p5-webgl'> = ({ p, width, height, time }) => {
36
+ p.shader(shader);
37
+
38
+ shader.setUniform('uTime', time / 1000);
39
+
40
+ p.rect(0, 0, width, height);
41
+ };
42
+
43
+ export const rendering: Rendering = 'p5-webgl';
@@ -6,5 +6,5 @@ uniform vec2 uResolution;
6
6
  varying vec2 vUv;
7
7
 
8
8
  void main() {
9
- gl_FragColor = vec4(1., 0., 0., 1.);
9
+ gl_FragColor = vec4(0., 1., 0., 1.);
10
10
  }
@@ -1,7 +1,12 @@
1
1
  import * as THREE from 'three';
2
+
2
3
  import fragmentShader from './fragment.fs';
3
4
 
5
+ /** @type {THREE.Scene} */
6
+ let scene;
7
+ /** @type {THREE.OrthographicCamera} */
4
8
  let camera;
9
+
5
10
  let uniforms = {
6
11
  uResolution: { value: new THREE.Vector2() },
7
12
  uTime: { value: 0 },
@@ -16,7 +21,8 @@ let uniforms = {
16
21
  * @param {number} params.height
17
22
  * @param {number} params.pixelRatio
18
23
  */
19
- export let init = ({ scene, width, height }) => {
24
+ export const init = ({ width, height }) => {
25
+ scene = new THREE.Scene();
20
26
  camera = new THREE.OrthographicCamera(1, 1, 1, 1, 1, 1000);
21
27
 
22
28
  let geometry = new THREE.BufferGeometry();
@@ -65,7 +71,7 @@ export let init = ({ scene, width, height }) => {
65
71
  * @param {number} params.playhead
66
72
  * @param {number} params.playcount
67
73
  */
68
- export let update = ({ renderer, scene, time, deltaTime }) => {
74
+ export const update = ({ renderer, time, deltaTime }) => {
69
75
  uniforms.uTime.value = time;
70
76
 
71
77
  renderer.render(scene, camera);
@@ -80,7 +86,7 @@ export let update = ({ renderer, scene, time, deltaTime }) => {
80
86
  * @param {number} params.height
81
87
  * @param {number} params.pixelRatio
82
88
  */
83
- export let resize = ({ width, height, pixelRatio }) => {
89
+ export const resize = ({ width, height, pixelRatio }) => {
84
90
  uniforms.uResolution.value.x = width * pixelRatio;
85
91
  uniforms.uResolution.value.y = height * pixelRatio;
86
92
 
@@ -92,4 +98,4 @@ export let resize = ({ width, height, pixelRatio }) => {
92
98
  camera.updateProjectionMatrix();
93
99
  };
94
100
 
95
- export let rendering = 'three';
101
+ export const rendering = 'three';
@@ -0,0 +1,68 @@
1
+ import * as THREE from 'three';
2
+
3
+ import { Init, Rendering, Resize, Update } from '@fragment/types';
4
+
5
+ import fragmentShader from './fragment.fs';
6
+
7
+ let scene: THREE.Scene;
8
+ let camera: THREE.OrthographicCamera;
9
+ let uniforms = {
10
+ uResolution: { value: new THREE.Vector2() },
11
+ uTime: { value: 0 },
12
+ };
13
+
14
+ export const init: Init<'three'> = () => {
15
+ scene = new THREE.Scene();
16
+ camera = new THREE.OrthographicCamera(1, 1, 1, 1, 1, 1000);
17
+
18
+ const geometry = new THREE.BufferGeometry();
19
+ geometry.setAttribute(
20
+ 'position',
21
+ new THREE.Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3),
22
+ );
23
+ geometry.setAttribute(
24
+ 'uv',
25
+ new THREE.Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2),
26
+ );
27
+
28
+ const mesh = new THREE.Mesh(
29
+ geometry,
30
+ new THREE.RawShaderMaterial({
31
+ vertexShader: `
32
+ attribute vec3 position;
33
+ attribute vec2 uv;
34
+
35
+ varying vec2 vUv;
36
+
37
+ void main() {
38
+ vUv = uv;
39
+ gl_Position = vec4(position, 1.);
40
+ }
41
+ `,
42
+ fragmentShader,
43
+ uniforms,
44
+ }),
45
+ );
46
+
47
+ scene.add(mesh);
48
+ };
49
+
50
+ export const update: Update<'three'> = ({ renderer, time }) => {
51
+ uniforms.uTime.value = time;
52
+
53
+ renderer.render(scene, camera);
54
+ };
55
+
56
+ export const resize: Resize<'three'> = ({ width, height, pixelRatio }) => {
57
+ uniforms.uResolution.value.x = width * pixelRatio;
58
+ uniforms.uResolution.value.y = height * pixelRatio;
59
+
60
+ camera.left = -width * 0.5;
61
+ camera.right = width * 0.5;
62
+ camera.top = height * 0.5;
63
+ camera.bottom = -height * 0.5;
64
+
65
+ camera.updateProjectionMatrix();
66
+ };
67
+
68
+ export const rendering: Rendering = 'three';
@@ -1,5 +1,8 @@
1
1
  import * as THREE from 'three';
2
2
 
3
+ /** @type {THREE.Scene} */
4
+ let scene;
5
+ /** @type {THREE.OrthographicCamera} */
3
6
  let camera;
4
7
 
5
8
  /**
@@ -11,7 +14,10 @@ let camera;
11
14
  * @param {number} params.height
12
15
  * @param {number} params.pixelRatio
13
16
  */
14
- export let init = ({ scene, width, height }) => {
17
+ export const init = ({ width, height }) => {
18
+ scene = new THREE.Scene();
19
+ scene.background = new THREE.Color(0x00ff00);
20
+
15
21
  camera = new THREE.OrthographicCamera(1, 1, 1, 1, 1, 1000);
16
22
  camera.position.z = 1;
17
23
  };
@@ -30,7 +36,7 @@ export let init = ({ scene, width, height }) => {
30
36
  * @param {number} params.playhead
31
37
  * @param {number} params.playcount
32
38
  */
33
- export let update = ({ renderer, scene, time, deltaTime }) => {
39
+ export const update = ({ renderer, time, deltaTime }) => {
34
40
  renderer.render(scene, camera);
35
41
  };
36
42
 
@@ -43,7 +49,7 @@ export let update = ({ renderer, scene, time, deltaTime }) => {
43
49
  * @param {number} params.height
44
50
  * @param {number} params.pixelRatio
45
51
  */
46
- export let resize = ({ width, height }) => {
52
+ export const resize = ({ width, height }) => {
47
53
  camera.left = -width * 0.5;
48
54
  camera.right = width * 0.5;
49
55
  camera.top = height * 0.5;
@@ -52,4 +58,4 @@ export let resize = ({ width, height }) => {
52
58
  camera.updateProjectionMatrix();
53
59
  };
54
60
 
55
- export let rendering = 'three';
61
+ export const rendering = 'three';
@@ -0,0 +1,29 @@
1
+ import * as THREE from 'three';
2
+
3
+ import { Init, Rendering, Resize, Update } from '@fragment/types';
4
+
5
+ let scene: THREE.Scene;
6
+ let camera: THREE.OrthographicCamera;
7
+
8
+ export const init: Init<'three'> = ({}) => {
9
+ scene = new THREE.Scene();
10
+ scene.background = new THREE.Color(0x00ff00);
11
+
12
+ camera = new THREE.OrthographicCamera(1, 1, 1, 1, 1, 1000);
13
+ camera.position.z = 1;
14
+ };
15
+
16
+ export const update: Update<'three'> = ({ renderer }) => {
17
+ renderer.render(scene, camera);
18
+ };
19
+
20
+ export const resize: Resize<'three'> = ({ width, height }) => {
21
+ camera.left = -width * 0.5;
22
+ camera.right = width * 0.5;
23
+ camera.top = height * 0.5;
24
+ camera.bottom = -height * 0.5;
25
+
26
+ camera.updateProjectionMatrix();
27
+ };
28
+
29
+ export const rendering: Rendering = 'three';
@@ -1,5 +1,8 @@
1
1
  import * as THREE from 'three';
2
2
 
3
+ /** @type {THREE.Scene} */
4
+ let scene;
5
+ /** @type {THREE.OrthographicCamera} */
3
6
  let camera;
4
7
 
5
8
  /**
@@ -11,7 +14,10 @@ let camera;
11
14
  * @param {number} params.height
12
15
  * @param {number} params.pixelRatio
13
16
  */
14
- export let init = ({ scene, width, height }) => {
17
+ export const init = ({ width, height }) => {
18
+ scene = new THREE.Scene();
19
+ scene.background = new THREE.Color(0x00ff00);
20
+
15
21
  camera = new THREE.PerspectiveCamera(45, 1, 0.1, 100);
16
22
  camera.position.z = 10;
17
23
  camera.lookAt(new THREE.Vector3());
@@ -31,7 +37,7 @@ export let init = ({ scene, width, height }) => {
31
37
  * @param {number} params.playhead
32
38
  * @param {number} params.playcount
33
39
  */
34
- export let update = ({ renderer, scene, time, deltaTime }) => {
40
+ export const update = ({ renderer, time, deltaTime }) => {
35
41
  renderer.render(scene, camera);
36
42
  };
37
43
 
@@ -44,9 +50,9 @@ export let update = ({ renderer, scene, time, deltaTime }) => {
44
50
  * @param {number} params.height
45
51
  * @param {number} params.pixelRatio
46
52
  */
47
- export let resize = ({ width, height }) => {
53
+ export const resize = ({ width, height }) => {
48
54
  camera.aspect = width / height;
49
55
  camera.updateProjectionMatrix();
50
56
  };
51
57
 
52
- export let rendering = 'three';
58
+ export const rendering = 'three';
@@ -0,0 +1,26 @@
1
+ import * as THREE from 'three';
2
+
3
+ import { Init, Rendering, Resize, Update } from '@fragment/types';
4
+
5
+ let scene: THREE.Scene;
6
+ let camera: THREE.PerspectiveCamera;
7
+
8
+ export const init: Init<'three'> = ({}) => {
9
+ scene = new THREE.Scene();
10
+ scene.background = new THREE.Color(0x00ff00);
11
+
12
+ camera = new THREE.PerspectiveCamera(45, 1, 0.1, 100);
13
+ camera.position.z = 10;
14
+ camera.lookAt(new THREE.Vector3());
15
+ };
16
+
17
+ export const update: Update<'three'> = ({ renderer }) => {
18
+ renderer.render(scene, camera);
19
+ };
20
+
21
+ export const resize: Resize<'three'> = ({ width, height }) => {
22
+ camera.aspect = width / height;
23
+ camera.updateProjectionMatrix();
24
+ };
25
+
26
+ export const rendering: Rendering = 'three';
package/src/cli/utils.js CHANGED
@@ -7,6 +7,9 @@ import { log } from './log.js';
7
7
  /** @type {string} */
8
8
  export const packageManager = getPackageManager() || 'npm';
9
9
 
10
+ /** @type {string} */
11
+ export const __dirname = file('../..');
12
+
10
13
  /**
11
14
  * From https://github.com/sveltejs/kit/blob/main/packages/create-svelte/utils.js#L56
12
15
  */
@@ -25,10 +25,10 @@
25
25
  height: 16px;
26
26
  padding: 0 2px;
27
27
 
28
- color: var(--color-red);
28
+ color: var(--fragment-color-red);
29
29
  font-size: 10px;
30
30
 
31
- border: 1px solid var(--color-red);
31
+ border: 1px solid var(--fragment-color-red);
32
32
  border-radius: 2px;
33
33
  }
34
34
 
@@ -40,7 +40,7 @@
40
40
  height: var(--size);
41
41
  margin: 0 3px 0 1px;
42
42
 
43
- background-color: var(--color-red);
43
+ background-color: var(--fragment-color-red);
44
44
  border-radius: 50%;
45
45
 
46
46
  animation: fade 1s ease-in-out infinite;
@@ -2,19 +2,19 @@ import { rendering } from './state/rendering.svelte';
2
2
  import { sketchesManager } from './state/sketches.svelte';
3
3
  import { getContext } from './triggers/shared';
4
4
 
5
- export let onBeforeCapture = (listener, context = getContext()) => {
5
+ export const onBeforeCapture = (listener, context = getContext()) => {
6
6
  sketchesManager.sketches[context]?.onBeforeCapture(listener);
7
7
  };
8
8
 
9
- export let onAfterCapture = (listener, context = getContext()) => {
9
+ export const onAfterCapture = (listener, context = getContext()) => {
10
10
  sketchesManager.sketches[context]?.onAfterCapture(listener);
11
11
  };
12
12
 
13
- export let onBeforeRecord = (listener, context = getContext()) => {
13
+ export const onBeforeRecord = (listener, context = getContext()) => {
14
14
  sketchesManager.sketches[context]?.onBeforeRecord(listener);
15
15
  };
16
16
 
17
- export let onAfterRecord = (listener, context = getContext()) => {
17
+ export const onAfterRecord = (listener, context = getContext()) => {
18
18
  sketchesManager.sketches[context]?.onAfterRecord(listener);
19
19
  };
20
20
 
@@ -23,7 +23,7 @@ export let onAfterRecord = (listener, context = getContext()) => {
23
23
  * @param {object} options
24
24
  * @param {string} [options.filename]
25
25
  * @param {function} [options.pattern]
26
- * @param {exportDir} [options.pattern ]
26
+ * @param {exportDir} [options.pattern]
27
27
  */
28
28
  export async function screenshot({ filename, pattern, exportDir } = {}) {
29
29
  const context = getContext();
@@ -8,7 +8,7 @@ class Renderer {
8
8
  premultipliedAlpha = false,
9
9
  pixelRatio = window.devicePixelRatio,
10
10
  webgl = 2,
11
- }) {
11
+ } = {}) {
12
12
  let gl;
13
13
  let attributes = {
14
14
  depth,
@@ -8,7 +8,7 @@ class Texture {
8
8
  constructor(
9
9
  gl,
10
10
  {
11
- image,
11
+ image = null,
12
12
  name = '',
13
13
  target = gl.TEXTURE_2D,
14
14
  type = gl.UNSIGNED_BYTE,
@@ -9,7 +9,7 @@ export function fragment({
9
9
  canvas = document.createElement('canvas'),
10
10
  shader = defaultFragment,
11
11
  uniforms = {},
12
- }) {
12
+ } = {}) {
13
13
  let _fragmentShader = shader;
14
14
  let _vertexShader = defaultVertex;
15
15
  let _uniforms = uniforms;
@@ -30,7 +30,7 @@ export function fragment({
30
30
 
31
31
  let w, h, pr;
32
32
 
33
- function resize({ width = w, height = h, pixelRatio = pr }) {
33
+ function resize({ width = w, height = h, pixelRatio = pr } = {}) {
34
34
  renderer.setPixelRatio(pixelRatio);
35
35
  renderer.setSize({ width, height });
36
36
 
@@ -64,7 +64,7 @@
64
64
  bottom: 0;
65
65
  width: 1px;
66
66
 
67
- background-color: var(--color-border-input);
67
+ background-color: var(--fragment-input-border-color);
68
68
  }
69
69
 
70
70
  .row {
@@ -83,7 +83,7 @@
83
83
  width: 100%;
84
84
  height: 100%;
85
85
 
86
- background-color: var(--color-active);
86
+ background-color: var(--fragment-accent-color);
87
87
  opacity: var(--opacity, 0);
88
88
  border-radius: 2px;
89
89
  }
@@ -25,8 +25,8 @@
25
25
  grid-template-columns: repeat(10, 1fr);
26
26
  padding: 0 3px;
27
27
 
28
- border-radius: var(--border-radius-input);
29
- background-color: var(--color-background-input);
30
- box-shadow: inset 0 0 0 1px var(--color-border-input);
28
+ border-radius: var(--fragment-input-border-radius);
29
+ background-color: var(--fragment-input-background-color);
30
+ box-shadow: inset 0 0 0 1px var(--fragment-input-border-color);
31
31
  }
32
32
  </style>