shaders 2.2.46 → 2.2.47

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 (115) hide show
  1. package/dist/core/Kaleidoscope-3Kt0m_sh.js +97 -0
  2. package/dist/core/Mirror-CnEZ7wHa.js +84 -0
  3. package/dist/core/registry.js +66 -62
  4. package/dist/core/shaderRegistry.d.ts.map +1 -1
  5. package/dist/core/shaders/Kaleidoscope/index.d.ts +36 -0
  6. package/dist/core/shaders/Kaleidoscope/index.d.ts.map +1 -0
  7. package/dist/core/shaders/Kaleidoscope/index.js +4 -0
  8. package/dist/core/shaders/LinearBlur/index.js +1 -1
  9. package/dist/core/shaders/LinearGradient/index.js +1 -1
  10. package/dist/core/shaders/Liquify/index.js +1 -1
  11. package/dist/core/shaders/Mirror/index.d.ts +29 -0
  12. package/dist/core/shaders/Mirror/index.d.ts.map +1 -0
  13. package/dist/core/shaders/Mirror/index.js +4 -0
  14. package/dist/core/shaders/Perspective/index.js +1 -1
  15. package/dist/core/shaders/Pixelate/index.js +1 -1
  16. package/dist/core/shaders/PolarCoordinates/index.js +1 -1
  17. package/dist/core/shaders/Posterize/index.js +1 -1
  18. package/dist/core/shaders/ProgressiveBlur/index.js +1 -1
  19. package/dist/core/shaders/RadialGradient/index.js +1 -1
  20. package/dist/core/shaders/RectangularCoordinates/index.js +1 -1
  21. package/dist/core/shaders/Ripples/index.js +1 -1
  22. package/dist/core/shaders/Saturation/index.js +1 -1
  23. package/dist/core/shaders/Sharpness/index.js +1 -1
  24. package/dist/core/shaders/Shatter/index.js +1 -1
  25. package/dist/core/shaders/SimplexNoise/index.js +1 -1
  26. package/dist/core/shaders/SineWave/index.js +1 -1
  27. package/dist/core/shaders/SolidColor/index.js +1 -1
  28. package/dist/core/shaders/Spherize/index.js +1 -1
  29. package/dist/core/shaders/Spiral/index.js +1 -1
  30. package/dist/core/shaders/Strands/index.js +1 -1
  31. package/dist/core/shaders/Stretch/index.js +1 -1
  32. package/dist/core/shaders/Stripes/index.js +1 -1
  33. package/dist/core/shaders/Swirl/index.js +1 -1
  34. package/dist/core/shaders/TiltShift/index.js +1 -1
  35. package/dist/core/shaders/Tint/index.js +1 -1
  36. package/dist/core/shaders/Tritone/index.js +1 -1
  37. package/dist/core/shaders/Twirl/index.js +1 -1
  38. package/dist/core/shaders/Vibrance/index.js +1 -1
  39. package/dist/core/shaders/WaveDistortion/index.js +1 -1
  40. package/dist/core/shaders/WebcamTexture/index.js +1 -1
  41. package/dist/core/shaders/ZoomBlur/index.js +1 -1
  42. package/dist/react/Kaleidoscope.js +144 -0
  43. package/dist/react/Mirror.js +144 -0
  44. package/dist/react/components/Kaleidoscope.d.ts +31 -0
  45. package/dist/react/components/Kaleidoscope.d.ts.map +1 -0
  46. package/dist/react/components/Mirror.d.ts +31 -0
  47. package/dist/react/components/Mirror.d.ts.map +1 -0
  48. package/dist/react/index.d.ts +2 -0
  49. package/dist/react/index.d.ts.map +1 -1
  50. package/dist/react/index.js +3 -1
  51. package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
  52. package/dist/react/utils/generatePresetCode.js +10 -0
  53. package/dist/registry.js +250 -0
  54. package/dist/solid/components/Kaleidoscope.d.ts +28 -0
  55. package/dist/solid/components/Kaleidoscope.d.ts.map +1 -0
  56. package/dist/solid/components/Kaleidoscope.js +148 -0
  57. package/dist/solid/components/Mirror.d.ts +28 -0
  58. package/dist/solid/components/Mirror.d.ts.map +1 -0
  59. package/dist/solid/components/Mirror.js +148 -0
  60. package/dist/solid/index.d.ts +2 -0
  61. package/dist/solid/index.d.ts.map +1 -1
  62. package/dist/solid/index.js +68 -64
  63. package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
  64. package/dist/solid/utils/generatePresetCode.js +10 -0
  65. package/dist/svelte/components/Kaleidoscope.svelte.d.ts +19 -0
  66. package/dist/svelte/components/Mirror.svelte.d.ts +19 -0
  67. package/dist/svelte/{generatePresetCode-CtXcoyI0.js → generatePresetCode-on2wdSC3.js} +10 -0
  68. package/dist/svelte/index.d.ts +2 -0
  69. package/dist/svelte/index.js +286 -64
  70. package/dist/svelte/utils/generatePresetCode.js +1 -1
  71. package/dist/vue/Kaleidoscope.js +3 -0
  72. package/dist/vue/Kaleidoscope.vue_vue_type_script_setup_true_lang.js +127 -0
  73. package/dist/vue/Mirror.js +3 -0
  74. package/dist/vue/Mirror.vue_vue_type_script_setup_true_lang.js +126 -0
  75. package/dist/vue/components/Kaleidoscope.vue.d.ts +57 -0
  76. package/dist/vue/components/Kaleidoscope.vue.d.ts.map +1 -0
  77. package/dist/vue/components/Mirror.vue.d.ts +57 -0
  78. package/dist/vue/components/Mirror.vue.d.ts.map +1 -0
  79. package/dist/vue/index.d.ts +2 -0
  80. package/dist/vue/index.d.ts.map +1 -1
  81. package/dist/vue/index.js +3 -1
  82. package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
  83. package/dist/vue/utils/generatePresetCode.js +10 -0
  84. package/package.json +17 -1
  85. /package/dist/core/{LinearBlur-CfMT259a.js → LinearBlur-B-rumcdD.js} +0 -0
  86. /package/dist/core/{LinearGradient-Cn7w-umQ.js → LinearGradient-Al78T7WU.js} +0 -0
  87. /package/dist/core/{Liquify-BCkIt0A1.js → Liquify-BJgkphoQ.js} +0 -0
  88. /package/dist/core/{Perspective-CJOFHxEC.js → Perspective-CPhjpprG.js} +0 -0
  89. /package/dist/core/{Pixelate-BhNAxBsT.js → Pixelate-rlHN9jV1.js} +0 -0
  90. /package/dist/core/{PolarCoordinates-DLs3K__1.js → PolarCoordinates-Bfa-U0fi.js} +0 -0
  91. /package/dist/core/{Posterize-XoAqPWv2.js → Posterize-DDzCt2n9.js} +0 -0
  92. /package/dist/core/{ProgressiveBlur-BIZSnUjp.js → ProgressiveBlur-9-KRqfdm.js} +0 -0
  93. /package/dist/core/{RadialGradient-sQgXXXQk.js → RadialGradient-BHuQVJ4Q.js} +0 -0
  94. /package/dist/core/{RectangularCoordinates-CyarkXn0.js → RectangularCoordinates-CMd1Rp4Y.js} +0 -0
  95. /package/dist/core/{Ripples-Djjw66Bn.js → Ripples-Cil48gEl.js} +0 -0
  96. /package/dist/core/{Saturation-DLHW_GP6.js → Saturation-D_yZO7cz.js} +0 -0
  97. /package/dist/core/{Sharpness-DkGuV_dy.js → Sharpness-229T6rR0.js} +0 -0
  98. /package/dist/core/{Shatter-DVgj2Ea3.js → Shatter-B9tvT-jr.js} +0 -0
  99. /package/dist/core/{SimplexNoise-BXtLTcAr.js → SimplexNoise-YauHkNYZ.js} +0 -0
  100. /package/dist/core/{SineWave-BxqFasFh.js → SineWave-BEm0T7c8.js} +0 -0
  101. /package/dist/core/{SolidColor-DFkDBFq3.js → SolidColor-BSC8voa9.js} +0 -0
  102. /package/dist/core/{Spherize-DIJ4c_EG.js → Spherize-C6xkW6TJ.js} +0 -0
  103. /package/dist/core/{Spiral-BBtmU1Fv.js → Spiral-BY5eOKPL.js} +0 -0
  104. /package/dist/core/{Strands-D6UOhX0L.js → Strands-C5-TqTXW.js} +0 -0
  105. /package/dist/core/{Stretch-DLpz8Ofm.js → Stretch-CatYi4MC.js} +0 -0
  106. /package/dist/core/{Stripes-Bre3Z2m_.js → Stripes-BbNIMHDl.js} +0 -0
  107. /package/dist/core/{Swirl-CfsYsr4X.js → Swirl-ytfGCJTs.js} +0 -0
  108. /package/dist/core/{TiltShift-BPpXBzBg.js → TiltShift-CvEKlLKc.js} +0 -0
  109. /package/dist/core/{Tint-BazvezVn.js → Tint-PBKR7M-T.js} +0 -0
  110. /package/dist/core/{Tritone-w0h2ebDB.js → Tritone-D1rsE5HX.js} +0 -0
  111. /package/dist/core/{Twirl-dmfYS2Eo.js → Twirl-BQzDHvml.js} +0 -0
  112. /package/dist/core/{Vibrance-BpWyAK9W.js → Vibrance-JFvD6I5g.js} +0 -0
  113. /package/dist/core/{WaveDistortion-hWdvaZmT.js → WaveDistortion-D9Dox1gF.js} +0 -0
  114. /package/dist/core/{WebcamTexture-D4Uv7Plz.js → WebcamTexture-BnrsnuMO.js} +0 -0
  115. /package/dist/core/{ZoomBlur-DCI4uHOL.js → ZoomBlur-D9At8opY.js} +0 -0
package/dist/registry.js CHANGED
@@ -3511,6 +3511,142 @@ export const shaderRegistry = [
3511
3511
  },
3512
3512
  "propsMetadata": {}
3513
3513
  },
3514
+ {
3515
+ "name": "Kaleidoscope",
3516
+ "category": "Distortions",
3517
+ "description": "Create a kaleidoscope effect with radial mirrored segments",
3518
+ "fileName": "Kaleidoscope",
3519
+ "requiresChild": true,
3520
+ "definition": {
3521
+ "name": "Kaleidoscope",
3522
+ "category": "Distortions",
3523
+ "description": "Create a kaleidoscope effect with radial mirrored segments",
3524
+ "requiresRTT": true,
3525
+ "requiresChild": true,
3526
+ "props": {
3527
+ "center": {
3528
+ "default": {
3529
+ "x": 0.5,
3530
+ "y": 0.5
3531
+ },
3532
+ "description": "The center point of the kaleidoscope effect",
3533
+ "ui": {
3534
+ "type": "position",
3535
+ "label": "Center"
3536
+ }
3537
+ },
3538
+ "segments": {
3539
+ "default": 6,
3540
+ "description": "Number of radial segments in the kaleidoscope",
3541
+ "ui": {
3542
+ "type": "range",
3543
+ "min": 2,
3544
+ "max": 24,
3545
+ "step": 1,
3546
+ "label": "Segments"
3547
+ }
3548
+ },
3549
+ "angle": {
3550
+ "default": 0,
3551
+ "description": "Rotation offset for the entire kaleidoscope pattern",
3552
+ "ui": {
3553
+ "type": "range",
3554
+ "min": 0,
3555
+ "max": 360,
3556
+ "step": 1,
3557
+ "label": "Angle"
3558
+ }
3559
+ },
3560
+ "edges": {
3561
+ "default": "mirror",
3562
+ "description": "How to handle edges when distortion pushes content out of bounds",
3563
+ "ui": {
3564
+ "type": "select",
3565
+ "options": [
3566
+ {
3567
+ "label": "Stretch",
3568
+ "value": "stretch"
3569
+ },
3570
+ {
3571
+ "label": "Transparent",
3572
+ "value": "transparent"
3573
+ },
3574
+ {
3575
+ "label": "Mirror",
3576
+ "value": "mirror"
3577
+ },
3578
+ {
3579
+ "label": "Wrap",
3580
+ "value": "wrap"
3581
+ }
3582
+ ],
3583
+ "label": "Edges"
3584
+ }
3585
+ }
3586
+ }
3587
+ },
3588
+ "propsMetadata": {
3589
+ "center": {
3590
+ "ui": {
3591
+ "type": "position",
3592
+ "label": "Center"
3593
+ },
3594
+ "default": {
3595
+ "x": 0.5,
3596
+ "y": 0.5
3597
+ },
3598
+ "description": "The center point of the kaleidoscope effect"
3599
+ },
3600
+ "segments": {
3601
+ "ui": {
3602
+ "type": "range",
3603
+ "min": 2,
3604
+ "max": 24,
3605
+ "step": 1,
3606
+ "label": "Segments"
3607
+ },
3608
+ "default": 6,
3609
+ "description": "Number of radial segments in the kaleidoscope"
3610
+ },
3611
+ "angle": {
3612
+ "ui": {
3613
+ "type": "range",
3614
+ "min": 0,
3615
+ "max": 360,
3616
+ "step": 1,
3617
+ "label": "Angle"
3618
+ },
3619
+ "default": 0,
3620
+ "description": "Rotation offset for the entire kaleidoscope pattern"
3621
+ },
3622
+ "edges": {
3623
+ "ui": {
3624
+ "type": "select",
3625
+ "options": [
3626
+ {
3627
+ "label": "Stretch",
3628
+ "value": "stretch"
3629
+ },
3630
+ {
3631
+ "label": "Transparent",
3632
+ "value": "transparent"
3633
+ },
3634
+ {
3635
+ "label": "Mirror",
3636
+ "value": "mirror"
3637
+ },
3638
+ {
3639
+ "label": "Wrap",
3640
+ "value": "wrap"
3641
+ }
3642
+ ],
3643
+ "label": "Edges"
3644
+ },
3645
+ "default": "mirror",
3646
+ "description": "How to handle edges when distortion pushes content out of bounds"
3647
+ }
3648
+ }
3649
+ },
3514
3650
  {
3515
3651
  "name": "LinearBlur",
3516
3652
  "category": "Blurs",
@@ -3918,6 +4054,120 @@ export const shaderRegistry = [
3918
4054
  }
3919
4055
  }
3920
4056
  },
4057
+ {
4058
+ "name": "Mirror",
4059
+ "category": "Distortions",
4060
+ "description": "Mirror content across a line defined by center point and angle",
4061
+ "fileName": "Mirror",
4062
+ "requiresChild": true,
4063
+ "definition": {
4064
+ "name": "Mirror",
4065
+ "category": "Distortions",
4066
+ "description": "Mirror content across a line defined by center point and angle",
4067
+ "requiresRTT": true,
4068
+ "requiresChild": true,
4069
+ "props": {
4070
+ "center": {
4071
+ "default": {
4072
+ "x": 0.5,
4073
+ "y": 0.5
4074
+ },
4075
+ "description": "The point the mirror line passes through",
4076
+ "ui": {
4077
+ "type": "position",
4078
+ "label": "Center"
4079
+ }
4080
+ },
4081
+ "angle": {
4082
+ "default": 0,
4083
+ "description": "The angle of the mirror line in degrees",
4084
+ "ui": {
4085
+ "type": "range",
4086
+ "min": 0,
4087
+ "max": 360,
4088
+ "step": 1,
4089
+ "label": "Angle"
4090
+ }
4091
+ },
4092
+ "edges": {
4093
+ "default": "mirror",
4094
+ "description": "How to handle edges when distortion pushes content out of bounds",
4095
+ "ui": {
4096
+ "type": "select",
4097
+ "options": [
4098
+ {
4099
+ "label": "Stretch",
4100
+ "value": "stretch"
4101
+ },
4102
+ {
4103
+ "label": "Transparent",
4104
+ "value": "transparent"
4105
+ },
4106
+ {
4107
+ "label": "Mirror",
4108
+ "value": "mirror"
4109
+ },
4110
+ {
4111
+ "label": "Wrap",
4112
+ "value": "wrap"
4113
+ }
4114
+ ],
4115
+ "label": "Edges"
4116
+ }
4117
+ }
4118
+ }
4119
+ },
4120
+ "propsMetadata": {
4121
+ "center": {
4122
+ "ui": {
4123
+ "type": "position",
4124
+ "label": "Center"
4125
+ },
4126
+ "default": {
4127
+ "x": 0.5,
4128
+ "y": 0.5
4129
+ },
4130
+ "description": "The point the mirror line passes through"
4131
+ },
4132
+ "angle": {
4133
+ "ui": {
4134
+ "type": "range",
4135
+ "min": 0,
4136
+ "max": 360,
4137
+ "step": 1,
4138
+ "label": "Angle"
4139
+ },
4140
+ "default": 0,
4141
+ "description": "The angle of the mirror line in degrees"
4142
+ },
4143
+ "edges": {
4144
+ "ui": {
4145
+ "type": "select",
4146
+ "options": [
4147
+ {
4148
+ "label": "Stretch",
4149
+ "value": "stretch"
4150
+ },
4151
+ {
4152
+ "label": "Transparent",
4153
+ "value": "transparent"
4154
+ },
4155
+ {
4156
+ "label": "Mirror",
4157
+ "value": "mirror"
4158
+ },
4159
+ {
4160
+ "label": "Wrap",
4161
+ "value": "wrap"
4162
+ }
4163
+ ],
4164
+ "label": "Edges"
4165
+ },
4166
+ "default": "mirror",
4167
+ "description": "How to handle edges when distortion pushes content out of bounds"
4168
+ }
4169
+ }
4170
+ },
3921
4171
  {
3922
4172
  "name": "Perspective",
3923
4173
  "category": "Distortions",
@@ -0,0 +1,28 @@
1
+ import { JSX } from 'solid-js';
2
+ import { BlendMode, TransformConfig } from '../../core';
3
+ import { ComponentProps } from '../../core/shaders/Kaleidoscope';
4
+ export type { ComponentProps };
5
+ /**
6
+ * Base props that all shader components have
7
+ */
8
+ interface BaseShaderProps {
9
+ children?: JSX.Element;
10
+ blendMode?: BlendMode;
11
+ opacity?: number;
12
+ visible?: boolean;
13
+ id?: string;
14
+ maskSource?: string;
15
+ maskType?: string;
16
+ renderOrder?: number;
17
+ transform?: Partial<TransformConfig>;
18
+ }
19
+ /**
20
+ * Component-specific props that merge base props with shader-specific props
21
+ * Note: ComponentProps are made optional since they have defaults from the shader definition
22
+ */
23
+ type ShaderComponentProps = BaseShaderProps & Partial<ComponentProps>;
24
+ /**
25
+ * The main Solid wrapper component for Shader shader nodes
26
+ */
27
+ export default function ShaderComponent(props: ShaderComponentProps): JSX.Element;
28
+ //# sourceMappingURL=Kaleidoscope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kaleidoscope.d.ts","sourceRoot":"","sources":["../../src/components/Kaleidoscope.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGrF,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAoCtE;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA4JlE"}
@@ -0,0 +1,148 @@
1
+ import { createComponent } from "solid-js/web";
2
+ import { splitProps, createMemo, onMount, onCleanup, createEffect } from "solid-js";
3
+ import { createUniformsMap } from "../../core/index.js";
4
+ import { componentDefinition } from "../../core/shaders/Kaleidoscope/index.js";
5
+ import { useShaderContext, ShaderContext } from "../engine/Shader.js";
6
+ const DEFAULT_TRANSFORM = {
7
+ offsetX: 0,
8
+ offsetY: 0,
9
+ rotation: 0,
10
+ scale: 1,
11
+ anchorX: 0.5,
12
+ anchorY: 0.5,
13
+ edges: "transparent"
14
+ };
15
+ const defaultProps = {
16
+ blendMode: "normal",
17
+ renderOrder: 0,
18
+ visible: true
19
+ // opacity intentionally has no default - handled by renderer
20
+ // transform intentionally has no default - handled by effectiveTransform
21
+ };
22
+ try {
23
+ if (componentDefinition && componentDefinition.props) {
24
+ Object.entries(componentDefinition.props).forEach(([key, config]) => {
25
+ const propConfig = config;
26
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) {
27
+ defaultProps[key] = propConfig.default;
28
+ }
29
+ });
30
+ }
31
+ } catch (e) {
32
+ console.warn("Error extracting default props:", e);
33
+ }
34
+ function ShaderComponent(props) {
35
+ const [local, otherProps] = splitProps(props, ["children"]);
36
+ const context = useShaderContext();
37
+ const {
38
+ shaderParentId: parentId,
39
+ shaderNodeRegister: parentRegister,
40
+ shaderUniformUpdate: parentUniformUpdate,
41
+ shaderMetadataUpdate: parentMetadataUpdate
42
+ } = context;
43
+ const instanceId = props.id || `${componentDefinition.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;
44
+ const effectiveProps = createMemo(() => {
45
+ let baseProps = {
46
+ ...defaultProps
47
+ };
48
+ for (const [key, value] of Object.entries(otherProps)) {
49
+ if (value !== void 0) {
50
+ baseProps[key] = value;
51
+ }
52
+ }
53
+ return baseProps;
54
+ });
55
+ const effectiveTransform = createMemo(() => ({
56
+ ...DEFAULT_TRANSFORM,
57
+ ...props.transform
58
+ }));
59
+ let uniformsMap = null;
60
+ const getUniformsMap = () => {
61
+ if (!uniformsMap) {
62
+ uniformsMap = createUniformsMap(componentDefinition, effectiveProps(), instanceId);
63
+ }
64
+ return uniformsMap;
65
+ };
66
+ const childContextValue = createMemo(() => ({
67
+ ...context,
68
+ shaderParentId: instanceId
69
+ }));
70
+ let isRegistered = false;
71
+ onMount(() => {
72
+ const uniforms = getUniformsMap();
73
+ if (!uniforms) return;
74
+ try {
75
+ const metadata = {
76
+ blendMode: props.blendMode || "normal",
77
+ opacity: props.opacity,
78
+ visible: props.visible === false ? false : true,
79
+ id: props.id,
80
+ mask: props.maskSource ? {
81
+ source: props.maskSource,
82
+ type: props.maskType || "alpha"
83
+ } : void 0,
84
+ renderOrder: props.renderOrder || 0,
85
+ transform: effectiveTransform()
86
+ };
87
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniforms, componentDefinition);
88
+ isRegistered = true;
89
+ } catch (error) {
90
+ console.error("Error registering shader node:", error);
91
+ }
92
+ });
93
+ onCleanup(() => {
94
+ isRegistered = false;
95
+ parentRegister(instanceId, null, null, null, null);
96
+ });
97
+ createEffect(() => {
98
+ if (!isRegistered) return;
99
+ const uniforms = getUniformsMap();
100
+ if (!uniforms) return;
101
+ try {
102
+ const props_snapshot = effectiveProps();
103
+ Object.entries(uniforms).forEach(([propName, uniformData]) => {
104
+ if (!uniformData || typeof uniformData !== "object") return;
105
+ const {
106
+ uniform
107
+ } = uniformData;
108
+ if ((uniform == null ? void 0 : uniform.value) !== void 0 && propName in props_snapshot) {
109
+ const newValue = props_snapshot[propName];
110
+ parentUniformUpdate(instanceId, propName, newValue);
111
+ }
112
+ });
113
+ } catch (error) {
114
+ console.error("Error updating uniforms:", error);
115
+ }
116
+ });
117
+ createEffect(() => {
118
+ if (!isRegistered) return;
119
+ try {
120
+ const metadata = {
121
+ blendMode: props.blendMode || "normal",
122
+ opacity: props.opacity,
123
+ visible: props.visible === false ? false : true,
124
+ id: props.id,
125
+ mask: props.maskSource ? {
126
+ source: props.maskSource,
127
+ type: props.maskType || "alpha"
128
+ } : void 0,
129
+ renderOrder: props.renderOrder || 0,
130
+ transform: effectiveTransform()
131
+ };
132
+ parentMetadataUpdate(instanceId, metadata);
133
+ } catch (error) {
134
+ console.error("Error updating metadata:", error);
135
+ }
136
+ });
137
+ return createComponent(ShaderContext.Provider, {
138
+ get value() {
139
+ return childContextValue();
140
+ },
141
+ get children() {
142
+ return local.children;
143
+ }
144
+ });
145
+ }
146
+ export {
147
+ ShaderComponent as default
148
+ };
@@ -0,0 +1,28 @@
1
+ import { JSX } from 'solid-js';
2
+ import { BlendMode, TransformConfig } from '../../core';
3
+ import { ComponentProps } from '../../core/shaders/Mirror';
4
+ export type { ComponentProps };
5
+ /**
6
+ * Base props that all shader components have
7
+ */
8
+ interface BaseShaderProps {
9
+ children?: JSX.Element;
10
+ blendMode?: BlendMode;
11
+ opacity?: number;
12
+ visible?: boolean;
13
+ id?: string;
14
+ maskSource?: string;
15
+ maskType?: string;
16
+ renderOrder?: number;
17
+ transform?: Partial<TransformConfig>;
18
+ }
19
+ /**
20
+ * Component-specific props that merge base props with shader-specific props
21
+ * Note: ComponentProps are made optional since they have defaults from the shader definition
22
+ */
23
+ type ShaderComponentProps = BaseShaderProps & Partial<ComponentProps>;
24
+ /**
25
+ * The main Solid wrapper component for Shader shader nodes
26
+ */
27
+ export default function ShaderComponent(props: ShaderComponentProps): JSX.Element;
28
+ //# sourceMappingURL=Mirror.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mirror.d.ts","sourceRoot":"","sources":["../../src/components/Mirror.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4D,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAGH,KAAK,SAAS,EAId,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG/E,YAAY,EAAE,cAAc,EAAE,CAAC;AAI/B;;GAEG;AACH,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,KAAK,oBAAoB,GAAG,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAoCtE;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,eA4JlE"}
@@ -0,0 +1,148 @@
1
+ import { createComponent } from "solid-js/web";
2
+ import { splitProps, createMemo, onMount, onCleanup, createEffect } from "solid-js";
3
+ import { createUniformsMap } from "../../core/index.js";
4
+ import { componentDefinition } from "../../core/shaders/Mirror/index.js";
5
+ import { useShaderContext, ShaderContext } from "../engine/Shader.js";
6
+ const DEFAULT_TRANSFORM = {
7
+ offsetX: 0,
8
+ offsetY: 0,
9
+ rotation: 0,
10
+ scale: 1,
11
+ anchorX: 0.5,
12
+ anchorY: 0.5,
13
+ edges: "transparent"
14
+ };
15
+ const defaultProps = {
16
+ blendMode: "normal",
17
+ renderOrder: 0,
18
+ visible: true
19
+ // opacity intentionally has no default - handled by renderer
20
+ // transform intentionally has no default - handled by effectiveTransform
21
+ };
22
+ try {
23
+ if (componentDefinition && componentDefinition.props) {
24
+ Object.entries(componentDefinition.props).forEach(([key, config]) => {
25
+ const propConfig = config;
26
+ if (propConfig && typeof propConfig === "object" && "default" in propConfig) {
27
+ defaultProps[key] = propConfig.default;
28
+ }
29
+ });
30
+ }
31
+ } catch (e) {
32
+ console.warn("Error extracting default props:", e);
33
+ }
34
+ function ShaderComponent(props) {
35
+ const [local, otherProps] = splitProps(props, ["children"]);
36
+ const context = useShaderContext();
37
+ const {
38
+ shaderParentId: parentId,
39
+ shaderNodeRegister: parentRegister,
40
+ shaderUniformUpdate: parentUniformUpdate,
41
+ shaderMetadataUpdate: parentMetadataUpdate
42
+ } = context;
43
+ const instanceId = props.id || `${componentDefinition.name.toLowerCase()}_${Math.random().toString(36).substring(7)}`;
44
+ const effectiveProps = createMemo(() => {
45
+ let baseProps = {
46
+ ...defaultProps
47
+ };
48
+ for (const [key, value] of Object.entries(otherProps)) {
49
+ if (value !== void 0) {
50
+ baseProps[key] = value;
51
+ }
52
+ }
53
+ return baseProps;
54
+ });
55
+ const effectiveTransform = createMemo(() => ({
56
+ ...DEFAULT_TRANSFORM,
57
+ ...props.transform
58
+ }));
59
+ let uniformsMap = null;
60
+ const getUniformsMap = () => {
61
+ if (!uniformsMap) {
62
+ uniformsMap = createUniformsMap(componentDefinition, effectiveProps(), instanceId);
63
+ }
64
+ return uniformsMap;
65
+ };
66
+ const childContextValue = createMemo(() => ({
67
+ ...context,
68
+ shaderParentId: instanceId
69
+ }));
70
+ let isRegistered = false;
71
+ onMount(() => {
72
+ const uniforms = getUniformsMap();
73
+ if (!uniforms) return;
74
+ try {
75
+ const metadata = {
76
+ blendMode: props.blendMode || "normal",
77
+ opacity: props.opacity,
78
+ visible: props.visible === false ? false : true,
79
+ id: props.id,
80
+ mask: props.maskSource ? {
81
+ source: props.maskSource,
82
+ type: props.maskType || "alpha"
83
+ } : void 0,
84
+ renderOrder: props.renderOrder || 0,
85
+ transform: effectiveTransform()
86
+ };
87
+ parentRegister(instanceId, componentDefinition.fragmentNode, parentId, metadata, uniforms, componentDefinition);
88
+ isRegistered = true;
89
+ } catch (error) {
90
+ console.error("Error registering shader node:", error);
91
+ }
92
+ });
93
+ onCleanup(() => {
94
+ isRegistered = false;
95
+ parentRegister(instanceId, null, null, null, null);
96
+ });
97
+ createEffect(() => {
98
+ if (!isRegistered) return;
99
+ const uniforms = getUniformsMap();
100
+ if (!uniforms) return;
101
+ try {
102
+ const props_snapshot = effectiveProps();
103
+ Object.entries(uniforms).forEach(([propName, uniformData]) => {
104
+ if (!uniformData || typeof uniformData !== "object") return;
105
+ const {
106
+ uniform
107
+ } = uniformData;
108
+ if ((uniform == null ? void 0 : uniform.value) !== void 0 && propName in props_snapshot) {
109
+ const newValue = props_snapshot[propName];
110
+ parentUniformUpdate(instanceId, propName, newValue);
111
+ }
112
+ });
113
+ } catch (error) {
114
+ console.error("Error updating uniforms:", error);
115
+ }
116
+ });
117
+ createEffect(() => {
118
+ if (!isRegistered) return;
119
+ try {
120
+ const metadata = {
121
+ blendMode: props.blendMode || "normal",
122
+ opacity: props.opacity,
123
+ visible: props.visible === false ? false : true,
124
+ id: props.id,
125
+ mask: props.maskSource ? {
126
+ source: props.maskSource,
127
+ type: props.maskType || "alpha"
128
+ } : void 0,
129
+ renderOrder: props.renderOrder || 0,
130
+ transform: effectiveTransform()
131
+ };
132
+ parentMetadataUpdate(instanceId, metadata);
133
+ } catch (error) {
134
+ console.error("Error updating metadata:", error);
135
+ }
136
+ });
137
+ return createComponent(ShaderContext.Provider, {
138
+ get value() {
139
+ return childContextValue();
140
+ },
141
+ get children() {
142
+ return local.children;
143
+ }
144
+ });
145
+ }
146
+ export {
147
+ ShaderComponent as default
148
+ };
@@ -29,9 +29,11 @@ export { default as Halftone } from './components/Halftone';
29
29
  export { default as HueShift } from './components/HueShift';
30
30
  export { default as ImageTexture } from './components/ImageTexture';
31
31
  export { default as Invert } from './components/Invert';
32
+ export { default as Kaleidoscope } from './components/Kaleidoscope';
32
33
  export { default as LinearBlur } from './components/LinearBlur';
33
34
  export { default as LinearGradient } from './components/LinearGradient';
34
35
  export { default as Liquify } from './components/Liquify';
36
+ export { default as Mirror } from './components/Mirror';
35
37
  export { default as Perspective } from './components/Perspective';
36
38
  export { default as Pixelate } from './components/Pixelate';
37
39
  export { default as PolarCoordinates } from './components/PolarCoordinates';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}