@satinhq/kit 0.1.0-beta.3 → 0.1.0-beta.4

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 (240) hide show
  1. package/NOTICE +1 -1
  2. package/README.md +1 -2
  3. package/dist/acknowledgements/inventory.json +1 -1
  4. package/dist/actions/RowActions.d.ts +2 -2
  5. package/dist/actions/RowActions.js +91 -25
  6. package/dist/actions/fullSwipeContact.d.ts +73 -0
  7. package/dist/actions/fullSwipeContact.js +186 -0
  8. package/dist/actions/rowScrub.d.ts +7 -4
  9. package/dist/actions/rowScrub.js +39 -37
  10. package/dist/actions/types.d.ts +13 -7
  11. package/dist/app/InstallComponents.d.ts +4 -7
  12. package/dist/app/InstallComponents.js +7 -7
  13. package/dist/app/InstallationDiagnostics.d.ts +2 -1
  14. package/dist/app/InstallationDiagnostics.js +2 -1
  15. package/dist/app/appearance.d.ts +5 -3
  16. package/dist/app/appearance.js +5 -3
  17. package/dist/app/appearanceStore.d.ts +3 -2
  18. package/dist/app/buildInfo.d.ts +4 -4
  19. package/dist/app/buildInfo.js +2 -2
  20. package/dist/app/definition.d.ts +11 -3
  21. package/dist/app/definition.js +2 -0
  22. package/dist/app/head.d.ts +2 -1
  23. package/dist/app/head.js +13 -16
  24. package/dist/app/inlineCSP.d.ts +6 -0
  25. package/dist/app/inlineCSP.js +25 -0
  26. package/dist/app/install.d.ts +1 -0
  27. package/dist/app/install.js +5 -2
  28. package/dist/app/installCheck.js +32 -86
  29. package/dist/app/installContext.d.ts +10 -5
  30. package/dist/app/installContext.js +2 -0
  31. package/dist/app/installCustom.js +1 -0
  32. package/dist/app/installExperience.js +0 -60
  33. package/dist/app/installationFailure.d.ts +3 -2
  34. package/dist/app/installationFailure.js +1 -1
  35. package/dist/app/launchScreen.d.ts +6 -2
  36. package/dist/app/launchScreen.js +104 -1
  37. package/dist/app/launchScreenRuntime.d.ts +31 -4
  38. package/dist/app/launchScreenRuntime.js +150 -22
  39. package/dist/app/launchWatchdog.js +25 -65
  40. package/dist/app/platformScripts.js +11 -0
  41. package/dist/app/styles.d.ts +3 -0
  42. package/dist/app/styles.js +42 -0
  43. package/dist/app/viewportValue.d.ts +2 -1
  44. package/dist/app/vite.d.ts +4 -0
  45. package/dist/app/vite.js +22 -24
  46. package/dist/content/content.d.ts +35 -30
  47. package/dist/content/content.js +19 -16
  48. package/dist/content/layout.d.ts +10 -2
  49. package/dist/content/layout.js +4 -2
  50. package/dist/content/scaledMetric.d.ts +2 -1
  51. package/dist/content/scaledMetric.js +2 -1
  52. package/dist/controls/ColorPicker.d.ts +2 -4
  53. package/dist/controls/ColorPicker.js +2 -4
  54. package/dist/controls/DatePicker.d.ts +4 -4
  55. package/dist/controls/DatePicker.js +2 -2
  56. package/dist/controls/ProgressView.d.ts +4 -4
  57. package/dist/controls/ProgressView.js +1 -2
  58. package/dist/data/database.d.ts +9 -8
  59. package/dist/data/database.js +4 -4
  60. package/dist/docs/reference.md +982 -964
  61. package/dist/docs/tailwind.md +76 -0
  62. package/dist/docs/tokens.md +1 -1
  63. package/dist/gestures/GestureView.d.ts +3 -1
  64. package/dist/gestures/GestureView.js +2 -1
  65. package/dist/gestures/gesture.d.ts +22 -2
  66. package/dist/gestures/gesture.js +7 -2
  67. package/dist/glass/GlassEffect.d.ts +2 -1
  68. package/dist/glass/GlassEffect.js +2 -1
  69. package/dist/glass/GlassPresentation.d.ts +1 -0
  70. package/dist/glass/GlassPresentation.js +21 -4
  71. package/dist/glass/TabBar.js +23 -1
  72. package/dist/glass/errorAlert.js +2 -1
  73. package/dist/glass/errors.d.ts +3 -1
  74. package/dist/glass/fallback/runtime.d.ts +1 -0
  75. package/dist/glass/fallback/runtime.js +8 -1
  76. package/dist/glass/liquidContext.d.ts +2 -0
  77. package/dist/glass/menuPresenter.d.ts +2 -0
  78. package/dist/glass/regions.d.ts +2 -1
  79. package/dist/glass/renderSpecs.d.ts +1 -0
  80. package/dist/glass/renderSpecs.js +1 -0
  81. package/dist/glass/webgpu/controlRim.d.ts +29 -0
  82. package/dist/glass/webgpu/controlRim.js +68 -0
  83. package/dist/glass/webgpu/passes.d.ts +2 -2
  84. package/dist/glass/webgpu/production.d.ts +1 -0
  85. package/dist/glass/webgpu/production.js +27 -1
  86. package/dist/glass/webgpu/rasterUniforms.js +9 -0
  87. package/dist/glass/webgpu/shaders.d.ts +2 -2
  88. package/dist/glass/webgpu/shaders.js +5 -1
  89. package/dist/haptics/SensoryButton.d.ts +4 -4
  90. package/dist/haptics/SensoryButton.js +3 -3
  91. package/dist/image/Image.d.ts +6 -3
  92. package/dist/image/Image.js +4 -3
  93. package/dist/image/asset.d.ts +2 -1
  94. package/dist/keyboard/adapter.d.ts +3 -4
  95. package/dist/keyboard/geometry.d.ts +1 -1
  96. package/dist/list-form/ListForm.d.ts +8 -7
  97. package/dist/list-form/ListForm.js +2 -2
  98. package/dist/list-form/editing.d.ts +5 -6
  99. package/dist/list-form/editing.js +4 -5
  100. package/dist/list-form/offsets.d.ts +2 -2
  101. package/dist/list-form/offsets.js +2 -2
  102. package/dist/media/react.d.ts +2 -1
  103. package/dist/media/react.js +2 -1
  104. package/dist/media/types.d.ts +6 -3
  105. package/dist/motion/TransitionView.d.ts +4 -2
  106. package/dist/motion/TransitionView.js +3 -2
  107. package/dist/motion/animationValue.d.ts +1 -1
  108. package/dist/motion/matchedGeometry.d.ts +6 -5
  109. package/dist/motion/matchedGeometry.js +2 -1
  110. package/dist/motion/transition.d.ts +4 -1
  111. package/dist/motion/transition.js +2 -0
  112. package/dist/navigation/DetailList.d.ts +1 -1
  113. package/dist/navigation/DetailList.js +1 -1
  114. package/dist/navigation/Sidebar.d.ts +3 -1
  115. package/dist/navigation/Sidebar.js +1 -1
  116. package/dist/navigation/SidebarSymbol.d.ts +2 -1
  117. package/dist/navigation/SidebarSymbol.js +2 -1
  118. package/dist/navigation/navigationContext.d.ts +2 -1
  119. package/dist/navigation/navigationContext.js +2 -1
  120. package/dist/navigation/splitContext.d.ts +2 -1
  121. package/dist/navigation/splitContext.js +2 -1
  122. package/dist/navigation/toolbarMinimization.d.ts +4 -3
  123. package/dist/navigation/types.d.ts +7 -5
  124. package/dist/presentation/Presentation.d.ts +8 -7
  125. package/dist/presentation/Presentation.js +3 -2
  126. package/dist/presentation/model.d.ts +2 -1
  127. package/dist/press/Pressable.d.ts +5 -1
  128. package/dist/press/Pressable.js +2 -0
  129. package/dist/press/stateMachine.d.ts +1 -1
  130. package/dist/public/Label.d.ts +2 -1
  131. package/dist/public/Label.js +2 -1
  132. package/dist/public/Screen.d.ts +4 -6
  133. package/dist/public/actions.d.ts +2 -1
  134. package/dist/public/actions.js +2 -1
  135. package/dist/public/buttonBorderShape.d.ts +2 -1
  136. package/dist/public/colors.d.ts +7 -4
  137. package/dist/public/colors.js +3 -2
  138. package/dist/public/controlStyle.d.ts +17 -14
  139. package/dist/public/controls.d.ts +27 -26
  140. package/dist/public/controls.js +20 -19
  141. package/dist/public/deviceActions.d.ts +6 -4
  142. package/dist/public/deviceActions.js +4 -2
  143. package/dist/public/environment.d.ts +16 -13
  144. package/dist/public/environment.js +11 -9
  145. package/dist/public/filePickers.d.ts +6 -4
  146. package/dist/public/filePickers.js +3 -2
  147. package/dist/public/glass.d.ts +6 -3
  148. package/dist/public/glass.js +2 -1
  149. package/dist/public/glassValue.d.ts +3 -4
  150. package/dist/public/glassValue.js +3 -4
  151. package/dist/public/keyboard.d.ts +4 -1
  152. package/dist/public/keyboard.js +2 -1
  153. package/dist/public/navigationTransition.d.ts +5 -5
  154. package/dist/public/navigationTransition.js +2 -2
  155. package/dist/public/presentation.d.ts +8 -7
  156. package/dist/public/presentation.js +5 -5
  157. package/dist/public/runtime.d.ts +9 -8
  158. package/dist/public/runtime.js +7 -7
  159. package/dist/public/scroll.d.ts +6 -3
  160. package/dist/public/scroll.js +3 -1
  161. package/dist/public/structure.d.ts +2 -2
  162. package/dist/public/toolbar.d.ts +15 -11
  163. package/dist/public/toolbar.js +12 -7
  164. package/dist/reachability/model.d.ts +4 -3
  165. package/dist/reachability/react.d.ts +4 -1
  166. package/dist/reachability/react.js +2 -1
  167. package/dist/root/SatinRoot.d.ts +3 -3
  168. package/dist/root/SatinRoot.js +12 -36
  169. package/dist/root/mountSatin.d.ts +1 -1
  170. package/dist/root/mountSatin.js +26 -35
  171. package/dist/root/runtimeContext.d.ts +2 -1
  172. package/dist/root/runtimeContext.js +2 -1
  173. package/dist/safe-area/Overlay.d.ts +3 -2
  174. package/dist/safe-area/Overlay.js +2 -1
  175. package/dist/safe-area/SafeAreaInset.d.ts +11 -7
  176. package/dist/safe-area/SafeAreaInset.js +7 -6
  177. package/dist/safe-area/context.d.ts +3 -3
  178. package/dist/safe-area/context.js +1 -1
  179. package/dist/safe-area/displayCorners.d.ts +4 -2
  180. package/dist/safe-area/displayCorners.js +4 -2
  181. package/dist/safe-area/modifiers.d.ts +14 -10
  182. package/dist/safe-area/modifiers.js +8 -4
  183. package/dist/scroll/ScrollSurface.js +5 -1
  184. package/dist/scroll/ScrollTarget.d.ts +1 -1
  185. package/dist/scroll/ScrollTarget.js +1 -1
  186. package/dist/scroll/edgePolicy.d.ts +2 -2
  187. package/dist/scroll/position.d.ts +5 -3
  188. package/dist/scroll/types.d.ts +1 -1
  189. package/dist/search/PadSearchDrawer.d.ts +7 -0
  190. package/dist/search/PadSearchDrawer.js +8 -0
  191. package/dist/search/PadSearchPresentationContext.d.ts +6 -0
  192. package/dist/search/PadSearchPresentationContext.js +4 -0
  193. package/dist/search/SearchDrawer.d.ts +1 -1
  194. package/dist/search/SearchDrawer.js +6 -1
  195. package/dist/search/SearchSuggestionsPopover.d.ts +6 -0
  196. package/dist/search/SearchSuggestionsPopover.js +42 -0
  197. package/dist/search/SearchToolbarField.d.ts +2 -1
  198. package/dist/search/SearchToolbarField.js +28 -7
  199. package/dist/search/padSearchBarMotion.d.ts +69 -0
  200. package/dist/search/padSearchBarMotion.js +73 -0
  201. package/dist/search/padSearchFieldSamples.json +491 -0
  202. package/dist/search/searchPlacement.d.ts +3 -0
  203. package/dist/search/searchPlacement.js +7 -0
  204. package/dist/search/searchable.d.ts +14 -12
  205. package/dist/search/usePadSearchFieldMotion.d.ts +4 -0
  206. package/dist/search/usePadSearchFieldMotion.js +100 -0
  207. package/dist/search/useSearchPresentation.d.ts +2 -1
  208. package/dist/search/useSearchPresentation.js +23 -5
  209. package/dist/server.d.ts +4 -4
  210. package/dist/server.js +4 -4
  211. package/dist/shapes/corners.d.ts +3 -3
  212. package/dist/shapes/corners.js +1 -2
  213. package/dist/styles.css +8289 -8244
  214. package/dist/sw/vite.d.ts +4 -0
  215. package/dist/sw/vite.js +2 -0
  216. package/dist/symbols/Symbol.d.ts +7 -5
  217. package/dist/symbols/Symbol.js +5 -3
  218. package/dist/symbols/catalogue.d.ts +1 -1
  219. package/dist/symbols/types.d.ts +6 -4
  220. package/dist/tabs/TabSection.d.ts +3 -2
  221. package/dist/tabs/TabSection.js +2 -1
  222. package/dist/tabs/TabView.js +54 -51
  223. package/dist/tasks/useTask.d.ts +5 -4
  224. package/dist/tasks/useTask.js +4 -3
  225. package/dist/testing.d.ts +3 -2
  226. package/dist/testing.js +3 -2
  227. package/dist/text-input/focusChain.d.ts +4 -3
  228. package/dist/text-input/focusChain.js +3 -2
  229. package/dist/text-input/kinds.d.ts +1 -1
  230. package/dist/web/WebView.d.ts +10 -3
  231. package/dist/web/WebView.js +3 -2
  232. package/dist/web/authentication.d.ts +12 -1
  233. package/dist/web/authentication.js +2 -1
  234. package/dist/web/openURL.d.ts +10 -4
  235. package/dist/web/openURL.js +4 -2
  236. package/dist/web/useWebAuthentication.d.ts +2 -1
  237. package/dist/web/useWebAuthentication.js +2 -1
  238. package/dist/zoom/Zoomable.d.ts +3 -3
  239. package/dist/zoom/Zoomable.js +2 -2
  240. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import { controlRimWGSL } from './controlRim.js';
1
2
  import { tabGlyphInkShader } from './tabGlyphInk.js';
2
3
  // Originally generated by scripts/measured-reference/generate.mjs using naga-cli 27.0.0.
3
4
  // Hand-maintained since the GLSL inputs were removed with the WebGL renderer.
@@ -173,7 +174,7 @@ const blurUniforms = [
173
174
  ];
174
175
  export const shaders = {
175
176
  bar: {
176
- wgsl: 'diagnostic(off, derivative_uniformity);\nstruct Parameters {\n uInputSize_slot: vec4<f32>,\n uInputClamp_slot: vec4<f32>,\n uResolution_slot: vec4<f32>,\n uShape_slot: vec4<f32>,\n uRadius_slot: vec4<f32>,\n uMorphParams_slot: vec4<f32>,\n uMorphShape0_slot: vec4<f32>,\n uMorphShape1_slot: vec4<f32>,\n uMorphShape2_slot: vec4<f32>,\n uMorphShape3_slot: vec4<f32>,\n uMorphShape4_slot: vec4<f32>,\n uMorphShape5_slot: vec4<f32>,\n uMorphShape6_slot: vec4<f32>,\n uMorphShape7_slot: vec4<f32>,\n uMorphShape8_slot: vec4<f32>,\n uMorphShape9_slot: vec4<f32>,\n uMorphShape10_slot: vec4<f32>,\n uMorphShape11_slot: vec4<f32>,\n uMorphShape12_slot: vec4<f32>,\n uMorphShape13_slot: vec4<f32>,\n uMorphShape14_slot: vec4<f32>,\n uMorphShape15_slot: vec4<f32>,\n uMorphRadii0_slot: vec4<f32>,\n uMorphRadii1_slot: vec4<f32>,\n uMorphRadii2_slot: vec4<f32>,\n uMorphRadii3_slot: vec4<f32>,\n uMaterialUnits_slot: vec4<f32>,\n uMaterialInner_slot: vec4<f32>,\n uMaterialOuter_slot: vec4<f32>,\n uMaterialBlend_slot: vec4<f32>,\n uMaterialBlurFill_slot: vec4<f32>,\n uMaterialBlurDistances_slot: vec4<f32>,\n uMaterialBlurDifferences_slot: vec4<f32>,\n uMaterialAberration_slot: vec4<f32>,\n uMaterialAberrationDirection_slot: vec4<f32>,\n uMaterialFace0_slot: vec4<f32>,\n uMaterialFace1_slot: vec4<f32>,\n uMaterialFace2_slot: vec4<f32>,\n uMaterialBleed0_slot: vec4<f32>,\n uMaterialBleed1_slot: vec4<f32>,\n uMaterialBleed2_slot: vec4<f32>,\n uMaterialShadow0_slot: vec4<f32>,\n uMaterialShadow1_slot: vec4<f32>,\n uMaterialShadow2_slot: vec4<f32>,\n uMaterialShadowField_slot: vec4<f32>,\n uMaterialShadowResponse_slot: vec4<f32>,\n uMaterialShadowOffset_slot: vec4<f32>,\n uMaterialColour_slot: vec4<f32>,\n uMaterialBleed_slot: vec4<f32>,\n uMaterialBleedField_slot: vec4<f32>,\n uMaterialBackgroundKey_slot: vec4<f32>,\n uMaterialBackgroundLight_slot: vec4<f32>,\n uMaterialKey_slot: vec4<f32>,\n uMaterialFill_slot: vec4<f32>,\n uMaterialLight_slot: vec4<f32>,\n uMaterialRim_slot: vec4<f32>,\n uMaterialContourAngular_slot: vec4<f32>,\n uMaterialSdfProjection_slot: vec4<f32>,\n uMaterialSdfDiffuse_slot: vec4<f32>,\n uMaterialSdfKey_slot: vec4<f32>,\n uMaterialSdfFill_slot: vec4<f32>,\n uMaterialSdfAngles_slot: vec4<f32>,\n uMaterialSdf0_slot: vec4<f32>,\n uMaterialSdf1_slot: vec4<f32>,\n uMaterialSdf2_slot: vec4<f32>,\n uMaterialMix_slot: vec4<f32>,\n uCoverageWidth_slot: vec4<f32>,\n uDiagnosticOutput_slot: vec4<f32>,\n uInnerShade_slot: vec4<f32>,\n uTouchLight_slot: vec4<f32>,\n uTouchLightColour_slot: vec4<f32>,\n uTabBarOptics_slot: vec4<f32>,\n kernelScale_slot: vec4<f32>,\n}\n\nstruct FragmentOutput {\n @location(0) finalColor: vec4<f32>,\n}\n\n@group(0) @binding(0) \nvar<uniform> global: Parameters;\n@group(0) @binding(1) \nvar sourceSampler: sampler;\n@group(0) @binding(2) \nvar uTexture_texture: texture_2d<f32>;\n@group(0) @binding(3) \nvar uSource_texture: texture_2d<f32>;\nvar<private> vTextureCoord_1: vec2<f32>;\nvar<private> vFilterCoord_1: vec2<f32>;\nvar<private> finalColor: vec4<f32>;\n\nfn sdRoundRect(p: vec2<f32>, halfSize: vec2<f32>, radius: f32) -> f32 {\n var p_1: vec2<f32>;\n var halfSize_1: vec2<f32>;\n var radius_1: f32;\n var q: vec2<f32>;\n\n p_1 = p;\n halfSize_1 = halfSize;\n radius_1 = radius;\n let _e105 = p_1;\n let _e107 = halfSize_1;\n let _e109 = radius_1;\n q = ((abs(_e105) - _e107) + vec2(_e109));\n let _e113 = q;\n let _e115 = q;\n let _e120 = q;\n let _e126 = radius_1;\n return ((min(max(_e113.x, _e115.y), 0f) + length(max(_e120, vec2(0f)))) - _e126);\n}\n\nfn morphMemberDistance(p_2: vec2<f32>, shape: vec4<f32>, radius_2: f32) -> f32 {\n var p_3: vec2<f32>;\n var shape_1: vec4<f32>;\n var radius_3: f32;\n var q_1: vec2<f32>;\n\n p_3 = p_2;\n shape_1 = shape;\n radius_3 = radius_2;\n let _e147 = p_3;\n let _e148 = shape_1;\n let _e152 = shape_1;\n let _e155 = radius_3;\n q_1 = ((abs((_e147 - _e148.xy)) - _e152.zw) + vec2(_e155));\n let _e159 = q_1;\n let _e161 = q_1;\n let _e166 = q_1;\n let _e173 = radius_3;\n return ((min(max(_e159.x, _e161.y), 0f) + length(max(_e166, vec2(0f)))) - _e173);\n}\n\nfn morphSmoothMin(a: f32, b: f32) -> f32 {\n var a_1: f32;\n var b_1: f32;\n var k: f32;\n var h: f32;\n\n a_1 = a;\n b_1 = b;\n let _e145 = global.uMorphParams_slot;\n k = _e145.y;\n let _e148 = k;\n if (_e148 <= 0f) {\n let _e151 = a_1;\n let _e152 = b_1;\n return min(_e151, _e152);\n }\n let _e154 = k;\n let _e155 = a_1;\n let _e156 = b_1;\n let _e162 = k;\n h = (max((_e154 - abs((_e155 - _e156))), 0f) / _e162);\n let _e165 = a_1;\n let _e166 = b_1;\n let _e168 = h;\n let _e169 = h;\n let _e171 = k;\n return (min(_e165, _e166) - (((_e168 * _e169) * _e171) * 0.25f));\n}\n\nfn morphMemberNormal(p_4: vec2<f32>, shape_2: vec4<f32>, radius_4: f32) -> vec2<f32> {\n var p_5: vec2<f32>;\n var shape_3: vec4<f32>;\n var radius_5: f32;\n var delta: vec2<f32>;\n var q_2: vec2<f32>;\n var n: vec2<f32>;\n var local: vec2<f32>;\n\n p_5 = p_4;\n shape_3 = shape_2;\n radius_5 = radius_4;\n let _e147 = p_5;\n let _e148 = shape_3;\n delta = (_e147 - _e148.xy);\n let _e152 = delta;\n let _e154 = shape_3;\n let _e157 = radius_5;\n q_2 = ((abs(_e152) - _e154.zw) + vec2(_e157));\n let _e161 = q_2;\n let _e166 = delta;\n n = (max(_e161, vec2(0f)) * sign(_e166));\n let _e170 = q_2;\n let _e172 = q_2;\n if (max(_e170.x, _e172.y) <= 0f) {\n let _e177 = q_2;\n let _e179 = q_2;\n if (_e177.x >= _e179.y) {\n let _e182 = delta;\n local = vec2<f32>(sign(_e182.x), 0f);\n } else {\n let _e189 = delta;\n local = vec2<f32>(0f, sign(_e189.y));\n }\n let _e195 = local;\n n = _e195;\n }\n let _e196 = n;\n let _e197 = n;\n return (_e196 / vec2(max(length(_e197), 0.00000001f)));\n}\n\nfn morphAdd(p_6: vec2<f32>, shape_4: vec4<f32>, radius_6: f32, d: ptr<function, f32>, n_1: ptr<function, vec2<f32>>) {\n var p_7: vec2<f32>;\n var shape_5: vec4<f32>;\n var radius_7: f32;\n var b_2: f32;\n var nb: vec2<f32>;\n var k_1: f32;\n var h_1: f32;\n var w: f32;\n\n p_7 = p_6;\n shape_5 = shape_4;\n radius_7 = radius_6;\n let _e149 = p_7;\n let _e150 = shape_5;\n let _e151 = radius_7;\n let _e152 = morphMemberDistance(_e149, _e150, _e151);\n b_2 = _e152;\n let _e154 = p_7;\n let _e155 = shape_5;\n let _e156 = radius_7;\n let _e157 = morphMemberNormal(_e154, _e155, _e156);\n nb = _e157;\n let _e159 = (*d);\n if (_e159 > 1000000000f) {\n {\n let _e162 = b_2;\n (*d) = _e162;\n let _e163 = nb;\n (*n_1) = _e163;\n return;\n }\n }\n let _e164 = global.uMorphParams_slot;\n let _e167 = (*n_1);\n let _e168 = nb;\n k_1 = (_e164.y * pow(clamp(((1f - dot(_e167, _e168)) * 0.5f), 0f, 1f), 1f));\n let _e181 = k_1;\n if (_e181 <= 0.0001f) {\n {\n let _e184 = b_2;\n let _e185 = (*d);\n if (_e184 < _e185) {\n {\n let _e187 = b_2;\n (*d) = _e187;\n let _e188 = nb;\n (*n_1) = _e188;\n }\n }\n return;\n }\n }\n let _e189 = k_1;\n let _e190 = (*d);\n let _e191 = b_2;\n let _e197 = k_1;\n h_1 = (max((_e189 - abs((_e190 - _e191))), 0f) / _e197);\n let _e201 = (*d);\n let _e202 = b_2;\n let _e205 = k_1;\n w = clamp((0.5f + ((_e201 - _e202) / (2f * _e205))), 0f, 1f);\n let _e213 = (*d);\n let _e214 = b_2;\n let _e216 = h_1;\n let _e217 = h_1;\n let _e219 = k_1;\n (*d) = (min(_e213, _e214) - (((_e216 * _e217) * _e219) * 0.25f));\n let _e224 = (*n_1);\n let _e225 = nb;\n let _e226 = w;\n (*n_1) = mix(_e224, _e225, vec2(_e226));\n let _e229 = (*n_1);\n let _e230 = (*n_1);\n (*n_1) = (_e229 / vec2(max(length(_e230), 0.00000001f)));\n return;\n}\n\nfn morphRawDistance(p_8: vec2<f32>) -> f32 {\n var p_9: vec2<f32>;\n var d_1: f32 = 10000000000f;\n var n_2: vec2<f32> = vec2(0f);\n\n p_9 = p_8;\n let _e149 = global.uMorphParams_slot;\n if (_e149.x > 0.5f) {\n let _e153 = p_9;\n let _e154 = global.uMorphShape0_slot;\n let _e155 = global.uMorphRadii0_slot;\n morphAdd(_e153, _e154, _e155.x, (&d_1), (&n_2));\n }\n let _e161 = global.uMorphParams_slot;\n if (_e161.x > 1.5f) {\n let _e165 = p_9;\n let _e166 = global.uMorphShape1_slot;\n let _e167 = global.uMorphRadii0_slot;\n morphAdd(_e165, _e166, _e167.y, (&d_1), (&n_2));\n }\n let _e173 = global.uMorphParams_slot;\n if (_e173.x > 2.5f) {\n let _e177 = p_9;\n let _e178 = global.uMorphShape2_slot;\n let _e179 = global.uMorphRadii0_slot;\n morphAdd(_e177, _e178, _e179.z, (&d_1), (&n_2));\n }\n let _e185 = global.uMorphParams_slot;\n if (_e185.x > 3.5f) {\n let _e189 = p_9;\n let _e190 = global.uMorphShape3_slot;\n let _e191 = global.uMorphRadii0_slot;\n morphAdd(_e189, _e190, _e191.w, (&d_1), (&n_2));\n }\n let _e197 = global.uMorphParams_slot;\n if (_e197.x > 4.5f) {\n let _e201 = p_9;\n let _e202 = global.uMorphShape4_slot;\n let _e203 = global.uMorphRadii1_slot;\n morphAdd(_e201, _e202, _e203.x, (&d_1), (&n_2));\n }\n let _e209 = global.uMorphParams_slot;\n if (_e209.x > 5.5f) {\n let _e213 = p_9;\n let _e214 = global.uMorphShape5_slot;\n let _e215 = global.uMorphRadii1_slot;\n morphAdd(_e213, _e214, _e215.y, (&d_1), (&n_2));\n }\n let _e221 = global.uMorphParams_slot;\n if (_e221.x > 6.5f) {\n let _e225 = p_9;\n let _e226 = global.uMorphShape6_slot;\n let _e227 = global.uMorphRadii1_slot;\n morphAdd(_e225, _e226, _e227.z, (&d_1), (&n_2));\n }\n let _e233 = global.uMorphParams_slot;\n if (_e233.x > 7.5f) {\n let _e237 = p_9;\n let _e238 = global.uMorphShape7_slot;\n let _e239 = global.uMorphRadii1_slot;\n morphAdd(_e237, _e238, _e239.w, (&d_1), (&n_2));\n }\n let _e245 = global.uMorphParams_slot;\n if (_e245.x > 8.5f) {\n let _e249 = p_9;\n let _e250 = global.uMorphShape8_slot;\n let _e251 = global.uMorphRadii2_slot;\n morphAdd(_e249, _e250, _e251.x, (&d_1), (&n_2));\n }\n let _e257 = global.uMorphParams_slot;\n if (_e257.x > 9.5f) {\n let _e261 = p_9;\n let _e262 = global.uMorphShape9_slot;\n let _e263 = global.uMorphRadii2_slot;\n morphAdd(_e261, _e262, _e263.y, (&d_1), (&n_2));\n }\n let _e269 = global.uMorphParams_slot;\n if (_e269.x > 10.5f) {\n let _e273 = p_9;\n let _e274 = global.uMorphShape10_slot;\n let _e275 = global.uMorphRadii2_slot;\n morphAdd(_e273, _e274, _e275.z, (&d_1), (&n_2));\n }\n let _e281 = global.uMorphParams_slot;\n if (_e281.x > 11.5f) {\n let _e285 = p_9;\n let _e286 = global.uMorphShape11_slot;\n let _e287 = global.uMorphRadii2_slot;\n morphAdd(_e285, _e286, _e287.w, (&d_1), (&n_2));\n }\n let _e293 = global.uMorphParams_slot;\n if (_e293.x > 12.5f) {\n let _e297 = p_9;\n let _e298 = global.uMorphShape12_slot;\n let _e299 = global.uMorphRadii3_slot;\n morphAdd(_e297, _e298, _e299.x, (&d_1), (&n_2));\n }\n let _e305 = global.uMorphParams_slot;\n if (_e305.x > 13.5f) {\n let _e309 = p_9;\n let _e310 = global.uMorphShape13_slot;\n let _e311 = global.uMorphRadii3_slot;\n morphAdd(_e309, _e310, _e311.y, (&d_1), (&n_2));\n }\n let _e317 = global.uMorphParams_slot;\n if (_e317.x > 14.5f) {\n let _e321 = p_9;\n let _e322 = global.uMorphShape14_slot;\n let _e323 = global.uMorphRadii3_slot;\n morphAdd(_e321, _e322, _e323.z, (&d_1), (&n_2));\n }\n let _e329 = global.uMorphParams_slot;\n if (_e329.x > 15.5f) {\n let _e333 = p_9;\n let _e334 = global.uMorphShape15_slot;\n let _e335 = global.uMorphRadii3_slot;\n morphAdd(_e333, _e334, _e335.w, (&d_1), (&n_2));\n }\n let _e341 = d_1;\n return _e341;\n}\n\nfn morphGradient(p_10: vec2<f32>) -> vec2<f32> {\n var p_11: vec2<f32>;\n var e: f32 = 0.1f;\n\n p_11 = p_10;\n let _e145 = p_11;\n let _e146 = e;\n let _e151 = morphRawDistance((_e145 + vec2<f32>(_e146, 0f)));\n let _e152 = p_11;\n let _e153 = e;\n let _e158 = morphRawDistance((_e152 - vec2<f32>(_e153, 0f)));\n let _e160 = p_11;\n let _e162 = e;\n let _e166 = morphRawDistance((_e160 + vec2<f32>(0f, _e162)));\n let _e167 = p_11;\n let _e169 = e;\n let _e173 = morphRawDistance((_e167 - vec2<f32>(0f, _e169)));\n let _e177 = e;\n return (vec2<f32>((_e151 - _e158), (_e166 - _e173)) / vec2((2f * _e177)));\n}\n\nfn morphNormal(p_12: vec2<f32>) -> vec2<f32> {\n var p_13: vec2<f32>;\n\n p_13 = p_12;\n let _e143 = p_13;\n let _e144 = morphGradient(_e143);\n return normalize((_e144 + vec2(0.00000001f)));\n}\n\nfn morphDistance(p_14: vec2<f32>) -> f32 {\n var p_15: vec2<f32>;\n var d_2: f32;\n var scale: f32;\n\n p_15 = p_14;\n let _e143 = p_15;\n let _e144 = morphRawDistance(_e143);\n d_2 = _e144;\n let _e146 = global.uMorphParams_slot;\n let _e150 = global.uMorphParams_slot;\n if ((_e146.x < 1.5f) || (_e150.y <= 0f)) {\n let _e155 = d_2;\n return _e155;\n }\n let _e157 = p_15;\n let _e158 = morphGradient(_e157);\n scale = (1f / clamp(length(_e158), 0.25f, 1f));\n let _e165 = d_2;\n let _e166 = scale;\n let _e170 = d_2;\n return (_e165 * mix(_e166, 1f, smoothstep(16f, 28f, -(_e170))));\n}\n\nfn materialDiffusionUnit() -> f32 {\n var local: f32;\n\n let _e99 = global.uMaterialUnits_slot;\n if (_e99.w > 0f) {\n let _e103 = global.uMaterialUnits_slot;\n local = _e103.w;\n } else {\n let _e105 = global.uMaterialUnits_slot;\n local = _e105.y;\n }\n let _e108 = local;\n return _e108;\n}\n\nfn materialProfile(d: f32, p_2: vec3<f32>) -> f32 {\n var d_1: f32;\n var p_3: vec3<f32>;\n var t: f32;\n\n d_1 = d;\n p_3 = p_2;\n let _e103 = d_1;\n let _e104 = p_3;\n let _e107 = p_3;\n t = clamp(((_e103 - _e104.z) / max(_e107.y, 0.000001f)), 0f, 1f);\n let _e116 = p_3;\n let _e119 = t;\n let _e121 = t;\n return (_e116.x * (1f - sqrt((_e119 * (2f - _e121)))));\n}\n\nfn materialLevel(radius_2: f32) -> f32 {\n var radius_3: f32;\n var local_1: f32;\n\n radius_3 = radius_2;\n let _e102 = radius_3;\n if (_e102 < 2f) {\n let _e106 = radius_3;\n local_1 = (1f + (_e106 * 0.5f));\n } else {\n let _e110 = radius_3;\n local_1 = _e110;\n }\n let _e112 = local_1;\n return max(0f, log2(_e112));\n}\n\nfn materialMip(uv: vec2<f32>, level: f32) -> vec3<f32> {\n var uv_1: vec2<f32>;\n var level_1: f32;\n\n uv_1 = uv;\n level_1 = level;\n let _e103 = uv_1;\n let _e104 = global.uInputClamp_slot;\n let _e106 = global.uInputClamp_slot;\n let _e109 = level_1;\n let _e110 = textureSampleLevel(uTexture_texture, sourceSampler, clamp(_e103, _e104.xy, _e106.zw), _e109);\n return _e110.xyz;\n}\n\nfn tabBarOptics() -> bool {\n return (global.uTabBarOptics_slot.x > 0.5f);\n}\n\nfn materialTwoTapFill(uv: vec2<f32>, lod: f32) -> vec3<f32> {\n let offset = (vec2((lod * 0.25f)) / vec2<f32>(vec2<i32>(textureDimensions(uTexture_texture, 0i))));\n return (0.5f * (materialMip((uv + offset), lod) + materialMip((uv - offset), lod)));\n}\n\nfn materialSharp(uv: vec2<f32>) -> vec3<f32> {\n let halfPixel = (vec2(0.5f) / vec2<f32>(textureDimensions(uSource_texture, 0i)));\n let low = halfPixel;\n let high = (vec2(1f) - halfPixel);\n let centre = (uv / global.kernelScale_slot.xy);\n let a = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre + halfPixel), low, high), 0f);\n let b = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre - halfPixel), low, high), 0f);\n let c = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre + vec2<f32>(halfPixel.x, -(halfPixel.y))), low, high), 0f);\n let d = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre + vec2<f32>(-(halfPixel.x), halfPixel.y)), low, high), 0f);\n return (0.25f * (((a.xyz + b.xyz) + c.xyz) + d.xyz));\n}\n\nfn materialDiagonal(uv_2: vec2<f32>, level_2: f32) -> vec3<f32> {\n var uv_3: vec2<f32>;\n var level_3: f32;\n var o: vec2<f32>;\n\n uv_3 = uv_2;\n level_3 = level_2;\n if ((level_2 <= 0f) && tabBarOptics()) {\n return materialSharp(uv_2);\n }\n let _e103 = level_3;\n let _e107 = textureDimensions(uTexture_texture, 0i);\n o = (vec2((_e103 * 0.25f)) / vec2<f32>(vec2<i32>(_e107)));\n let _e114 = uv_3;\n let _e115 = o;\n let _e117 = level_3;\n let _e118 = materialMip((_e114 + _e115), _e117);\n let _e119 = uv_3;\n let _e120 = o;\n let _e122 = level_3;\n let _e123 = materialMip((_e119 - _e120), _e122);\n let _e125 = uv_3;\n let _e126 = o;\n let _e128 = o;\n let _e133 = level_3;\n let _e134 = materialMip((_e125 + vec2<f32>(_e126.x, -(_e128.y))), _e133);\n let _e136 = uv_3;\n let _e137 = o;\n let _e140 = o;\n let _e144 = level_3;\n let _e145 = materialMip((_e136 + vec2<f32>(-(_e137.x), _e140.y)), _e144);\n return (0.25f * (((_e118 + _e123) + _e134) + _e145));\n}\n\nfn materialSpectrum(uv_4: vec2<f32>, delta: vec2<f32>, level_4: f32) -> vec3<f32> {\n var uv_5: vec2<f32>;\n var delta_1: vec2<f32>;\n var level_5: f32;\n\n uv_5 = uv_4;\n delta_1 = delta;\n level_5 = level_4;\n let _e105 = uv_5;\n let _e106 = delta_1;\n let _e110 = level_5;\n let _e111 = materialDiagonal((_e105 + (_e106 * 1f)), _e110);\n let _e117 = uv_5;\n let _e118 = delta_1;\n let _e122 = level_5;\n let _e123 = materialDiagonal((_e117 + (_e118 * 0.6666667f)), _e122);\n let _e130 = uv_5;\n let _e131 = delta_1;\n let _e135 = level_5;\n let _e136 = materialDiagonal((_e130 + (_e131 * 0.33333334f)), _e135);\n let _e143 = uv_5;\n let _e144 = delta_1;\n let _e148 = level_5;\n let _e149 = materialDiagonal((_e143 + (_e144 * 0f)), _e148);\n let _e156 = uv_5;\n let _e157 = delta_1;\n let _e162 = level_5;\n let _e163 = materialDiagonal((_e156 + (_e157 * -0.33333334f)), _e162);\n let _e170 = uv_5;\n let _e171 = delta_1;\n let _e176 = level_5;\n let _e177 = materialDiagonal((_e170 + (_e171 * -0.6666667f)), _e176);\n let _e184 = uv_5;\n let _e185 = delta_1;\n let _e190 = level_5;\n let _e191 = materialDiagonal((_e184 + (_e185 * -1f)), _e190);\n return (((((((_e111 * vec3<f32>(0.5f, 0f, 0f)) + (_e123 * vec3<f32>(0.33333334f, 0.11111111f, 0f))) + (_e136 * vec3<f32>(0.16666667f, 0.22222222f, 0f))) + (_e149 * vec3<f32>(0f, 0.33333334f, 0f))) + (_e163 * vec3<f32>(0f, 0.22222222f, 0.16666667f))) + (_e177 * vec3<f32>(0f, 0.11111111f, 0.33333334f))) + (_e191 * vec3<f32>(0f, 0f, 0.5f)));\n}\n\nfn materialRamp(x: f32, a: f32, b: f32) -> f32 {\n var x_1: f32;\n var a_1: f32;\n var b_1: f32;\n var local_2: f32;\n\n x_1 = x;\n a_1 = a;\n b_1 = b;\n let _e105 = b_1;\n let _e106 = a_1;\n if (abs((_e105 - _e106)) < 0.000001f) {\n let _e111 = a_1;\n let _e112 = x_1;\n local_2 = step(_e111, _e112);\n } else {\n let _e114 = x_1;\n let _e115 = a_1;\n let _e117 = b_1;\n let _e118 = a_1;\n local_2 = clamp(((_e114 - _e115) / (_e117 - _e118)), 0f, 1f);\n }\n let _e125 = local_2;\n return _e125;\n}\n\nfn materialRadius(z: f32) -> f32 {\n var z_1: f32;\n var ramps: vec3<f32>;\n\n z_1 = z;\n let _e101 = z_1;\n let _e102 = global.uMaterialBlurDistances_slot;\n let _e104 = global.uMaterialBlurDistances_slot;\n let _e106 = materialRamp(_e101, _e102.x, _e104.y);\n let _e107 = z_1;\n let _e108 = global.uMaterialBlurDistances_slot;\n let _e110 = global.uMaterialBlurDistances_slot;\n let _e112 = materialRamp(_e107, _e108.y, _e110.z);\n let _e113 = z_1;\n let _e114 = global.uMaterialBlurDistances_slot;\n let _e116 = global.uMaterialBlurDistances_slot;\n let _e118 = materialRamp(_e113, _e114.z, _e116.w);\n ramps = vec3<f32>(_e106, _e112, _e118);\n let _e122 = global.uMaterialBlend_slot;\n let _e124 = global.uMaterialBlurDifferences_slot;\n let _e126 = global.uMaterialBlurDifferences_slot;\n let _e128 = ramps;\n return max(0f, (_e122.w * (_e124.x - dot(_e126.yzw, _e128))));\n}\n\nfn materialFill(uv: vec2<f32>, lod: f32) -> vec3<f32> {\n let level = min(floor(max(0f, (lod - 0.5f))), (f32(textureNumLevels(uTexture_texture)) - 1f));\n let halfTexel = (vec2(0.5f) / vec2<f32>(textureDimensions(uTexture_texture, i32(level))));\n let a = materialMip((uv + halfTexel), level);\n let b = materialMip((uv - halfTexel), level);\n let c = materialMip((uv + vec2<f32>(halfTexel.x, -(halfTexel.y))), level);\n let d = materialMip((uv + vec2<f32>(-(halfTexel.x), halfTexel.y)), level);\n return (0.25f * (((a + b) + c) + d));\n}\n\nfn materialTransmission(signedPt: f32, n: vec2<f32>, uv_6: vec2<f32>) -> vec3<f32> {\n var signedPt_1: f32;\n var n_1: vec2<f32>;\n var uv_7: vec2<f32>;\n var s: f32;\n var fi: f32;\n var fo: f32;\n var pointToUv: vec2<f32>;\n var displacement: vec2<f32>;\n var v: vec2<f32>;\n var delta_2: vec2<f32>;\n var physicalPixelsPerPoint: f32;\n var inner: vec3<f32>;\n var lod: f32;\n var fill: vec3<f32>;\n var weights: vec2<f32>;\n var response: vec3<f32>;\n var outer: vec3<f32>;\n var w: f32;\n\n signedPt_1 = signedPt;\n n_1 = n;\n uv_7 = uv_6;\n let _e105 = signedPt_1;\n let _e106 = global.uMaterialUnits_slot;\n let _e109 = global.uMaterialUnits_slot;\n s = ((_e105 * _e106.x) + _e109.z);\n let _e113 = s;\n let _e115 = global.uMaterialInner_slot;\n let _e117 = materialProfile(-(_e113), _e115.xyz);\n fi = _e117;\n let _e119 = s;\n let _e121 = global.uMaterialOuter_slot;\n let _e123 = materialProfile(-(_e119), _e121.xyz);\n fo = _e123;\n let _e125 = global.uInputSize_slot;\n pointToUv = _e125.zw;\n let _e128 = n_1;\n let _e129 = global.uMaterialUnits_slot;\n let _e132 = pointToUv;\n displacement = ((_e128 * _e129.y) * _e132);\n let _e135 = global.uMaterialAberrationDirection_slot;\n v = _e135.xy;\n let _e138 = s;\n let _e140 = global.uMaterialAberration_slot;\n let _e142 = materialProfile(-(_e138), _e140.xyz);\n let _e143 = global.uMaterialUnits_slot;\n let _e146 = pointToUv;\n let _e148 = v;\n let _e150 = n_1;\n let _e153 = v;\n let _e155 = n_1;\n let _e160 = pointToUv;\n let _e162 = v;\n let _e164 = n_1;\n let _e167 = v;\n let _e169 = n_1;\n delta_2 = ((_e142 * _e143.y) * vec2<f32>((_e146.y * ((_e148.y * _e150.x) + (_e153.x * _e155.y))), (_e160.x * ((_e162.x * _e164.x) - (_e167.y * _e169.y)))));\n let _e178 = textureDimensions(uTexture_texture, 0i);\n let _e182 = global.uInputSize_slot;\n physicalPixelsPerPoint = (f32(vec2<i32>(_e178).x) * _e182.z);\n let _e186 = uv_7;\n let _e187 = displacement;\n let _e188 = fi;\n let _e191 = delta_2;\n let _e192 = s;\n let _e193 = fi;\n let _e195 = materialRadius((_e192 + _e193));\n let _e196 = materialDiffusionUnit();\n let _e198 = physicalPixelsPerPoint;\n let _e200 = materialLevel(((_e195 * _e196) * _e198));\n let _e201 = materialSpectrum((_e186 + (_e187 * _e188)), _e191, _e200);\n inner = _e201;\n let _e203 = global.uMaterialBlurFill_slot;\n if (_e203.x > 0f) {\n {\n let _e207 = global.uMaterialBlurFill_slot;\n let _e209 = materialDiffusionUnit();\n let _e211 = physicalPixelsPerPoint;\n let _e213 = materialLevel(((_e207.x * _e209) * _e211));\n lod = _e213;\n if (tabBarOptics()) {\n fill = materialFill(uv_7, lod);\n } else {\n fill = materialTwoTapFill(uv_7, lod);\n }\n let _e239 = global.uMaterialBlurFill_slot;\n weights = clamp(_e239.yz, vec2(0f), vec2(1f));\n let _e247 = weights;\n let _e249 = weights;\n let _e251 = weights;\n weights = (_e247 / vec2(max(1f, (_e249.x + _e251.y))));\n let _e257 = weights;\n let _e259 = inner;\n let _e260 = fill;\n let _e263 = weights;\n let _e265 = inner;\n let _e266 = fill;\n let _e271 = weights;\n let _e274 = weights;\n let _e277 = inner;\n response = (((_e257.y * min(_e259, _e260)) + (_e263.x * max(_e265, _e266))) + (((1f - _e271.x) - _e274.y) * _e277));\n let _e281 = response;\n let _e282 = fill;\n let _e283 = global.uMaterialBlurFill_slot;\n inner = mix(_e281, _e282, vec3(clamp(_e283.w, 0f, 1f)));\n }\n }\n let _e290 = uv_7;\n let _e291 = displacement;\n let _e292 = fo;\n let _e295 = s;\n let _e296 = fo;\n let _e298 = materialRadius((_e295 + _e296));\n let _e299 = materialDiffusionUnit();\n let _e301 = physicalPixelsPerPoint;\n let _e303 = materialLevel(((_e298 * _e299) * _e301));\n let _e304 = materialMip((_e290 + (_e291 * _e292)), _e303);\n outer = _e304;\n let _e306 = global.uMaterialBlend_slot;\n let _e308 = s;\n let _e309 = global.uMaterialBlend_slot;\n let _e312 = global.uMaterialBlend_slot;\n let _e314 = global.uMaterialBlend_slot;\n w = (_e306.z * clamp(((_e308 - _e309.x) / max((_e312.y - _e314.x), 0.000001f)), 0f, 1f));\n let _e325 = inner;\n let _e326 = outer;\n let _e327 = w;\n return mix(_e325, _e326, vec3(_e327));\n}\n\nfn materialLobe(d_2: f32, n_2: vec2<f32>, p_4: vec4<f32>, angle: f32, offset_1: f32) -> f32 {\n var d_3: f32;\n var n_3: vec2<f32>;\n var p_5: vec4<f32>;\n var angle_1: f32;\n var offset_2: f32;\n var z_2: f32;\n var fw: f32;\n var q_1: f32;\n var local_3: f32;\n var W: f32;\n var x_2: f32;\n\n d_3 = d_2;\n n_3 = n_2;\n p_5 = p_4;\n angle_1 = angle;\n offset_2 = offset_1;\n let _e109 = d_3;\n let _e110 = offset_2;\n z_2 = (_e109 - _e110);\n let _e113 = d_3;\n let _e114 = fwidth(_e113);\n fw = max(_e114, 0.0001f);\n let _e119 = z_2;\n let _e120 = p_5;\n q_1 = (1f - clamp((_e119 / max(_e120.x, 0.000001f)), 0f, 1f));\n let _e130 = q_1;\n if (_e130 > 0f) {\n let _e135 = q_1;\n local_3 = select((0.25f + (0.75f * _e135)), _e135, tabBarOptics());\n } else {\n local_3 = 0f;\n }\n let _e140 = local_3;\n let _e142 = z_2;\n let _e143 = fw;\n let _e151 = p_5;\n let _e153 = z_2;\n let _e155 = fw;\n W = ((_e140 * clamp((0.5f + (_e142 / _e143)), 0f, 1f)) * clamp((0.5f + ((_e151.x - _e153) / _e155)), 0f, 1f));\n let _e163 = W;\n let _e164 = angle_1;\n let _e166 = angle_1;\n let _e169 = n_3;\n let _e171 = p_5;\n let _e175 = p_5;\n x_2 = (_e163 * clamp(((dot(vec2<f32>(cos(_e164), sin(_e166)), _e169) - _e171.y) / max((1f - _e175.y), 0.000001f)), 0f, 1f));\n let _e186 = p_5;\n let _e188 = x_2;\n let _e191 = p_5;\n let _e194 = x_2;\n return ((_e186.w * _e188) / max((1f + (_e191.z * (1f - _e194))), 0.000001f));\n}\n\nfn materialAffine(c: vec3<f32>, r: vec4<f32>, g: vec4<f32>, b_2: vec4<f32>) -> vec3<f32> {\n var c_1: vec3<f32>;\n var r_1: vec4<f32>;\n var g_1: vec4<f32>;\n var b_3: vec4<f32>;\n\n c_1 = c;\n r_1 = r;\n g_1 = g;\n b_3 = b_2;\n let _e107 = c_1;\n let _e114 = r_1;\n let _e116 = c_1;\n let _e123 = g_1;\n let _e125 = c_1;\n let _e132 = b_3;\n return vec3<f32>(dot(vec4<f32>(_e107.x, _e107.y, _e107.z, 1f), _e114), dot(vec4<f32>(_e116.x, _e116.y, _e116.z, 1f), _e123), dot(vec4<f32>(_e125.x, _e125.y, _e125.z, 1f), _e132));\n}\n\nfn materialShadow(signedPt_2: f32, n_4: vec2<f32>, uv_8: vec2<f32>) -> vec4<f32> {\n var signedPt_3: f32;\n var n_5: vec2<f32>;\n var uv_9: vec2<f32>;\n var s_1: f32;\n var x_3: f32;\n var x2_: f32;\n var response_1: f32;\n var displacement_1: f32;\n var lod_1: f32;\n var c_2: vec3<f32>;\n var contribution: f32;\n var rgb: vec3<f32>;\n var alpha: f32;\n\n signedPt_3 = signedPt_2;\n n_5 = n_4;\n uv_9 = uv_8;\n let _e105 = signedPt_3;\n let _e106 = global.uMaterialUnits_slot;\n let _e109 = global.uMaterialUnits_slot;\n let _e112 = n_5;\n let _e113 = global.uMaterialShadowOffset_slot;\n s_1 = (((_e105 * _e106.x) + _e109.z) - dot(_e112, _e113.xy));\n let _e121 = s_1;\n let _e123 = global.uMaterialShadowResponse_slot;\n x_3 = ((4f * clamp((0.5f + ((0.25f * _e121) / max(_e123.x, 0.000001f))), 0f, 1f)) - 2f);\n let _e136 = x_3;\n let _e137 = x_3;\n x2_ = (_e136 * _e137);\n let _e141 = x2_;\n let _e145 = x2_;\n let _e149 = x2_;\n let _e153 = x_3;\n response_1 = clamp(((((((((0.002954483f * _e141) - 0.034454346f) * _e145) + 0.16821289f) * _e149) - 0.5605469f) * _e153) + 0.5f), 0f, 1f);\n let _e161 = s_1;\n let _e163 = global.uMaterialShadowField_slot;\n let _e165 = materialProfile(-(_e161), _e163.xyz);\n displacement_1 = _e165;\n let _e167 = global.uMaterialShadowField_slot;\n let _e169 = materialDiffusionUnit();\n let _e172 = textureDimensions(uTexture_texture, 0i);\n let _e177 = global.uInputSize_slot;\n let _e180 = materialLevel((((_e167.w * _e169) * f32(vec2<i32>(_e172).x)) * _e177.z));\n lod_1 = _e180;\n let _e182 = uv_9;\n let _e183 = n_5;\n let _e184 = displacement_1;\n let _e186 = global.uMaterialUnits_slot;\n let _e189 = global.uInputSize_slot;\n let _e193 = lod_1;\n let _e194 = materialMip((_e182 + (((_e183 * _e184) * _e186.y) * _e189.zw)), _e193);\n c_2 = _e194;\n let _e196 = global.uMaterialShadowResponse_slot;\n contribution = _e196.z;\n let _e199 = c_2;\n let _e200 = global.uMaterialShadow0_slot;\n let _e203 = c_2;\n let _e204 = global.uMaterialShadow1_slot;\n let _e207 = c_2;\n let _e208 = global.uMaterialShadow2_slot;\n let _e212 = contribution;\n let _e214 = global.uMaterialShadow0_slot;\n let _e216 = global.uMaterialShadow1_slot;\n let _e218 = global.uMaterialShadow2_slot;\n rgb = ((vec3<f32>(dot(_e199, _e200.xyz), dot(_e203, _e204.xyz), dot(_e207, _e208.xyz)) * _e212) + vec3<f32>(_e214.w, _e216.w, _e218.w));\n let _e223 = global.uMaterialShadowResponse_slot;\n let _e226 = contribution;\n alpha = mix(_e223.w, 1f, _e226);\n let _e229 = rgb;\n let _e230 = alpha;\n let _e235 = response_1;\n let _e237 = global.uMaterialShadowResponse_slot;\n return ((vec4<f32>(_e229.x, _e229.y, _e229.z, _e230) * _e235) * _e237.y);\n}\n\nfn materialBoundary(signedPt_4: f32, n_6: vec2<f32>, uv_10: vec2<f32>) -> vec4<f32> {\n var signedPt_5: f32;\n var n_7: vec2<f32>;\n var uv_11: vec2<f32>;\n var s_2: f32;\n var peak: f32;\n var raw: vec3<f32>;\n var biased: vec3<f32>;\n\n signedPt_5 = signedPt_4;\n n_7 = n_6;\n uv_11 = uv_10;\n let _e105 = global.uMaterialRim_slot;\n if (_e105.z == 0f) {\n return vec4(0f);\n }\n let _e112 = signedPt_5;\n let _e113 = global.uMaterialUnits_slot;\n let _e116 = global.uMaterialUnits_slot;\n s_2 = ((_e112 * _e113.x) + _e116.z);\n let _e121 = s_2;\n let _e122 = global.uMaterialRim_slot;\n let _e126 = global.uMaterialRim_slot;\n peak = clamp((1f - (abs((_e121 - _e122.y)) / max(_e126.x, 0.000001f))), 0f, 1f);\n let _e136 = uv_11;\n let _e138 = materialMip(_e136, 0f);\n raw = _e138;\n let _e140 = raw;\n let _e142 = global.uMaterialRim_slot;\n let _e146 = raw;\n biased = clamp((_e140 * (vec3(1f) + (_e142.z * (vec3(3f) - (2f * _e146))))), vec3(0f), vec3(1f));\n let _e160 = biased;\n let _e162 = global.uMaterialContourAngular_slot;\n let _e164 = n_7;\n let _e166 = n_7;\n let _e168 = n_7;\n let _e170 = n_7;\n let _e177 = biased;\n biased = clamp((_e160 * (vec3(1f) + (dot(_e162, vec4<f32>(1f, _e164.x, _e166.y, (_e168.x * _e170.x))) * (vec3(3f) - (2f * _e177))))), vec3(0f), vec3(1f));\n let _e190 = peak;\n let _e191 = n_7;\n let _e193 = n_7;\n peak = (_e190 * (_e191.x * _e193.x));\n let _e197 = biased;\n let _e198 = peak;\n let _e199 = (_e197 * _e198);\n let _e200 = peak;\n return vec4<f32>(_e199.x, _e199.y, _e199.z, _e200);\n}\n\nfn materialMaterial(signedPt_6: f32, n_8: vec2<f32>, uv_12: vec2<f32>, c_3: vec3<f32>) -> vec3<f32> {\n var signedPt_7: f32;\n var n_9: vec2<f32>;\n var uv_13: vec2<f32>;\n var c_4: vec3<f32>;\n var s_3: f32;\n var L: f32;\n var g_2: f32;\n var adjusted: vec3<f32>;\n var face: vec3<f32>;\n var lb: f32;\n var ramp: f32;\n var darken: f32;\n var w_1: f32;\n var bleed: vec3<f32>;\n var P: vec3<f32>;\n var backgroundH: f32;\n var d_4: f32;\n var key: vec4<f32>;\n var fill_1: vec4<f32>;\n var H: f32;\n var peak_1: f32;\n var contour: f32;\n\n signedPt_7 = signedPt_6;\n n_9 = n_8;\n uv_13 = uv_12;\n c_4 = c_3;\n let _e107 = signedPt_7;\n let _e108 = global.uMaterialUnits_slot;\n let _e111 = global.uMaterialUnits_slot;\n s_3 = ((_e107 * _e108.x) + _e111.z);\n let _e115 = c_4;\n L = dot(_e115, vec3<f32>(0.2126f, 0.7152f, 0.0722f));\n let _e123 = L;\n let _e124 = global.uMaterialColour_slot;\n g_2 = clamp((1f - (_e123 * _e124.x)), 0f, 1f);\n let _e132 = g_2;\n let _e133 = L;\n let _e136 = g_2;\n let _e137 = c_4;\n let _e142 = g_2;\n adjusted = mix(vec3((_e132 * _e133)), (_e136 * _e137), vec3((1f + (0.3f * (1f - _e142)))));\n let _e149 = c_4;\n let _e150 = adjusted;\n let _e151 = global.uMaterialFace0_slot;\n let _e152 = global.uMaterialFace1_slot;\n let _e153 = global.uMaterialFace2_slot;\n let _e154 = materialAffine(_e150, _e151, _e152, _e153);\n let _e155 = global.uMaterialColour_slot;\n face = mix(_e149, _e154, vec3(_e155.y));\n let _e160 = face;\n lb = clamp(dot(_e160, vec3<f32>(0.2125f, 0.7154f, 0.0721f)), 0f, 1f);\n let _e170 = s_3;\n let _e171 = global.uMaterialBleed_slot;\n let _e173 = global.uMaterialBleed_slot;\n let _e175 = materialRamp(_e170, _e171.x, _e173.y);\n ramp = _e175;\n let _e177 = global.uMaterialBleed_slot;\n let _e179 = lb;\n let _e181 = global.uMaterialBleed_slot;\n darken = ((_e177.z * _e179) + _e181.w);\n let _e185 = global.uMaterialColour_slot;\n let _e187 = darken;\n let _e188 = darken;\n let _e190 = ramp;\n w_1 = (_e185.z * pow(((_e187 * _e188) * _e190), 2f));\n let _e196 = uv_13;\n let _e197 = n_9;\n let _e198 = s_3;\n let _e200 = global.uMaterialBleedField_slot;\n let _e202 = materialProfile(-(_e198), _e200.xyz);\n let _e204 = global.uMaterialUnits_slot;\n let _e207 = global.uInputSize_slot;\n let _e211 = global.uMaterialBleedField_slot;\n let _e213 = materialDiffusionUnit();\n let _e216 = textureDimensions(uTexture_texture, 0i);\n let _e221 = global.uInputSize_slot;\n let _e224 = materialLevel((((_e211.w * _e213) * f32(vec2<i32>(_e216).x)) * _e221.z));\n let _e225 = materialMip((_e196 + (((_e197 * _e202) * _e204.y) * _e207.zw)), _e224);\n bleed = _e225;\n let _e227 = face;\n let _e228 = bleed;\n let _e229 = global.uMaterialBleed0_slot;\n let _e230 = global.uMaterialBleed1_slot;\n let _e231 = global.uMaterialBleed2_slot;\n let _e232 = materialAffine(_e228, _e229, _e230, _e231);\n let _e233 = w_1;\n P = mix(_e227, _e232, vec3(_e233));\n let _e237 = s_3;\n let _e239 = n_9;\n let _e240 = global.uMaterialBackgroundKey_slot;\n let _e241 = global.uMaterialBackgroundLight_slot;\n let _e244 = global.uMaterialBackgroundLight_slot;\n let _e247 = materialLobe(-(_e237), _e239, _e240, _e241.x, _e244.y);\n let _e248 = s_3;\n let _e250 = n_9;\n let _e252 = global.uMaterialBackgroundKey_slot;\n let _e253 = global.uMaterialBackgroundLight_slot;\n let _e256 = global.uMaterialBackgroundLight_slot;\n let _e259 = materialLobe(-(_e248), -(_e250), _e252, _e253.x, _e256.y);\n backgroundH = (_e247 + _e259);\n let _e262 = P;\n let _e264 = backgroundH;\n let _e267 = P;\n P = (_e262 * (vec3(1f) + (_e264 * (vec3(3f) - (2f * _e267)))));\n let innerShade = global.uInnerShade_slot;\n let shadeDepth = -(signedPt_7);\n let shadeBand = (smoothstep(0f, innerShade.y, shadeDepth) * (1f - smoothstep(innerShade.z, innerShade.w, shadeDepth)));\n let shadeFacing = max(-(n_9.y), 0f);\n let shadeBase = P;\n let shadeWeight = smoothstep(0.05f, 0.5f, dot(shadeBase, vec3<f32>(0.2126f, 0.7152f, 0.0722f)));\n P = (shadeBase * (vec3(1f) + ((((select(0f, innerShade.x, tabBarOptics()) * shadeBand) * (shadeFacing * shadeFacing)) * shadeWeight) * (vec3(3f) - (2f * shadeBase)))));\n let _e275 = signedPt_7;\n let _e277 = global.uMaterialSdfProjection_slot;\n let _e280 = global.uMaterialSdfProjection_slot;\n d_4 = ((-(_e275) * _e277.x) + _e280.y);\n let _e284 = global.uMaterialSdfKey_slot;\n key = _e284;\n let _e286 = global.uMaterialSdfFill_slot;\n fill_1 = _e286;\n let _e289 = key;\n let _e291 = global.uMaterialSdfProjection_slot;\n key.w = (_e289.w * _e291.w);\n let _e295 = fill_1;\n let _e297 = global.uMaterialSdfProjection_slot;\n fill_1.w = (_e295.w * _e297.w);\n let _e300 = d_4;\n let _e301 = n_9;\n let _e302 = key;\n let _e303 = global.uMaterialSdfAngles_slot;\n let _e305 = global.uMaterialSdfProjection_slot;\n let _e308 = global.uMaterialSdfAngles_slot;\n let _e310 = materialLobe(_e300, _e301, _e302, (_e303.x + _e305.z), _e308.z);\n let _e311 = d_4;\n let _e312 = n_9;\n let _e313 = fill_1;\n let _e314 = global.uMaterialSdfAngles_slot;\n let _e316 = global.uMaterialSdfProjection_slot;\n let _e319 = global.uMaterialSdfAngles_slot;\n let _e321 = materialLobe(_e311, _e312, _e313, (_e314.y + _e316.z), _e319.w);\n H = (_e310 + _e321);\n let _e324 = global.uMaterialSdfKey_slot;\n key = _e324;\n let _e325 = global.uMaterialSdfFill_slot;\n fill_1 = _e325;\n let _e327 = key;\n let _e329 = global.uMaterialSdfDiffuse_slot;\n key.x = (_e327.x * _e329.x);\n let _e333 = fill_1;\n let _e335 = global.uMaterialSdfDiffuse_slot;\n fill_1.x = (_e333.x * _e335.x);\n let _e339 = key;\n let _e346 = global.uMaterialSdfDiffuse_slot;\n key.y = cos((acos(clamp(_e339.y, -1f, 1f)) * _e346.y));\n let _e351 = fill_1;\n let _e358 = global.uMaterialSdfDiffuse_slot;\n fill_1.y = cos((acos(clamp(_e351.y, -1f, 1f)) * _e358.y));\n let _e363 = key;\n let _e365 = global.uMaterialSdfDiffuse_slot;\n let _e367 = global.uMaterialSdfDiffuse_slot;\n key.w = (_e363.w * (_e365.z * _e367.w));\n let _e372 = fill_1;\n let _e374 = global.uMaterialSdfDiffuse_slot;\n let _e376 = global.uMaterialSdfDiffuse_slot;\n fill_1.w = (_e372.w * (_e374.z * _e376.w));\n let _e380 = H;\n let _e381 = d_4;\n let _e382 = n_9;\n let _e383 = key;\n let _e384 = global.uMaterialSdfAngles_slot;\n let _e386 = global.uMaterialSdfProjection_slot;\n let _e389 = global.uMaterialSdfAngles_slot;\n let _e391 = materialLobe(_e381, _e382, _e383, (_e384.x + _e386.z), _e389.z);\n let _e392 = d_4;\n let _e393 = n_9;\n let _e394 = fill_1;\n let _e395 = global.uMaterialSdfAngles_slot;\n let _e397 = global.uMaterialSdfProjection_slot;\n let _e400 = global.uMaterialSdfAngles_slot;\n let _e402 = materialLobe(_e392, _e393, _e394, (_e395.y + _e397.z), _e400.w);\n H = (_e380 + (_e391 + _e402));\n let _e405 = P;\n let _e406 = H;\n let _e407 = P;\n let _e408 = global.uMaterialSdf0_slot;\n let _e409 = global.uMaterialSdf1_slot;\n let _e410 = global.uMaterialSdf2_slot;\n let _e411 = materialAffine(_e407, _e408, _e409, _e410);\n let _e412 = P;\n P = (_e405 + (_e406 * (_e411 - _e412)));\n let _e417 = s_3;\n let _e418 = global.uMaterialRim_slot;\n let _e422 = global.uMaterialRim_slot;\n peak_1 = clamp((1f - (abs((_e417 - _e418.y)) / max(_e422.x, 0.000001f))), 0f, 1f);\n let _e432 = P;\n let _e434 = global.uMaterialRim_slot;\n let _e436 = peak_1;\n let _e438 = n_9;\n let _e441 = n_9;\n let _e446 = P;\n P = (_e432 * (vec3(1f) + ((((_e434.z * _e436) * _e438.x) * _e441.x) * (vec3(3f) - (2f * _e446)))));\n let _e454 = global.uMaterialContourAngular_slot;\n let _e456 = n_9;\n let _e458 = n_9;\n let _e460 = n_9;\n let _e462 = n_9;\n contour = dot(_e454, vec4<f32>(1f, _e456.x, _e458.y, (_e460.x * _e462.x)));\n let _e468 = P;\n let _e470 = contour;\n let _e471 = peak_1;\n let _e475 = P;\n P = (_e468 * (vec3(1f) + ((_e470 * _e471) * (vec3(3f) - (2f * _e475)))));\n let _e483 = P;\n return clamp(_e483, vec3(0f), vec3(1f));\n}\n\nfn main_1() {\n var p_20: vec2<f32>;\n var local_5: f32;\n var sd: f32;\n var q_4: vec2<f32>;\n var cap: vec2<f32>;\n var extent: f32;\n var local_6: vec2<f32>;\n var local_7: vec2<f32>;\n var n_13: vec2<f32>;\n var boundary: vec4<f32>;\n var shadow: vec4<f32>;\n var transmitted: vec3<f32>;\n var material: vec3<f32>;\n var aa: f32;\n var alpha_1: f32;\n var shadow_1: vec4<f32>;\n var boundary_1: vec4<f32>;\n\n let _e141 = vFilterCoord_1;\n let _e142 = global.uResolution_slot;\n let _e145 = global.uShape_slot;\n p_20 = ((_e141 * _e142.xy) - _e145.xy);\n let _e149 = global.uMorphParams_slot;\n if (_e149.x > 0.5f) {\n let _e153 = vFilterCoord_1;\n let _e154 = global.uResolution_slot;\n let _e157 = morphDistance((_e153 * _e154.xy));\n local_5 = _e157;\n } else {\n let _e158 = p_20;\n let _e159 = global.uShape_slot;\n let _e161 = global.uRadius_slot;\n let _e163 = sdRoundRect(_e158, _e159.zw, _e161.x);\n local_5 = _e163;\n }\n let _e165 = local_5;\n sd = _e165;\n let _e167 = p_20;\n let _e169 = global.uShape_slot;\n let _e172 = global.uRadius_slot;\n q_4 = ((abs(_e167) - _e169.zw) + vec2(_e172.x));\n let _e177 = q_4;\n cap = max(_e177, vec2(0f));\n let _e183 = cap;\n extent = length(_e183);\n let _e186 = extent;\n if (_e186 > 0f) {\n let _e189 = p_20;\n let _e191 = cap;\n let _e193 = extent;\n local_7 = ((sign(_e189) * _e191) / vec2(_e193));\n } else {\n let _e196 = q_4;\n let _e198 = q_4;\n if (_e196.x > _e198.y) {\n let _e201 = p_20;\n local_6 = vec2<f32>(sign(_e201.x), 0f);\n } else {\n let _e208 = p_20;\n local_6 = vec2<f32>(0f, sign(_e208.y));\n }\n let _e214 = local_6;\n local_7 = _e214;\n }\n let _e216 = local_7;\n n_13 = _e216;\n let _e218 = global.uMorphParams_slot;\n if (_e218.x > 0.5f) {\n let _e222 = vFilterCoord_1;\n let _e223 = global.uResolution_slot;\n let _e226 = morphNormal((_e222 * _e223.xy));\n n_13 = _e226;\n }\n let _e227 = global.uDiagnosticOutput_slot;\n let _e231 = sd;\n let _e234 = global.uCoverageWidth_slot;\n if ((_e227.x <= 0f) && (_e231 > max(1f, (6f * _e234.x)))) {\n {\n let _e240 = sd;\n let _e241 = n_13;\n let _e242 = vTextureCoord_1;\n let _e243 = materialBoundary(_e240, _e241, _e242);\n let _e244 = global.uMaterialMix_slot;\n boundary = (_e243 * _e244.x);\n let _e248 = sd;\n let _e249 = n_13;\n let _e250 = vTextureCoord_1;\n let _e251 = materialShadow(_e248, _e249, _e250);\n let _e252 = global.uMaterialMix_slot;\n shadow = (_e251 * _e252.x);\n let _e256 = boundary;\n let _e257 = shadow;\n let _e259 = boundary;\n finalColor = (_e256 + (_e257 * (1f - _e259.w)));\n return;\n }\n }\n let _e264 = sd;\n let _e265 = n_13;\n let _e266 = vTextureCoord_1;\n let _e267 = materialTransmission(_e264, _e265, _e266);\n transmitted = _e267;\n let _e269 = global.uDiagnosticOutput_slot;\n if (_e269.x > 0f) {\n {\n let _e273 = transmitted;\n finalColor = vec4<f32>(_e273.x, _e273.y, _e273.z, 1f);\n return;\n }\n }\n let _e280 = sd;\n let _e281 = n_13;\n let _e282 = vTextureCoord_1;\n let _e283 = transmitted;\n let _e284 = materialMaterial(_e280, _e281, _e282, _e283);\n material = _e284;\n if (global.uTouchLight_slot.w > 0.0) {\n let lightPoint = vFilterCoord_1 * global.uResolution_slot.xy;\n let lightDistance = length(lightPoint - global.uTouchLight_slot.xy);\n let lightWeight = 1.0 - smoothstep(0.0, global.uTouchLight_slot.z, lightDistance);\n material = mix(material, global.uTouchLightColour_slot.xyz,\n lightWeight * global.uTouchLight_slot.w);\n }\n let _e286 = global.uCoverageWidth_slot;\n let _e289 = sd;\n let _e290 = fwidth(_e289);\n aa = max(_e286.x, (0.5f * _e290));\n let _e295 = aa;\n let _e297 = aa;\n let _e298 = sd;\n let _e301 = global.uMaterialMix_slot;\n alpha_1 = ((1f - smoothstep(-(_e295), _e297, _e298)) * _e301.x);\n let _e305 = sd;\n let _e306 = n_13;\n let _e307 = vTextureCoord_1;\n let _e308 = materialShadow(_e305, _e306, _e307);\n let _e309 = global.uMaterialMix_slot;\n shadow_1 = (_e308 * _e309.x);\n let _e313 = sd;\n let _e314 = n_13;\n let _e315 = vTextureCoord_1;\n let _e316 = materialBoundary(_e313, _e314, _e315);\n let _e317 = global.uMaterialMix_slot;\n boundary_1 = (_e316 * _e317.x);\n let _e321 = material;\n let _e322 = alpha_1;\n let _e323 = (_e321 * _e322);\n let _e324 = alpha_1;\n let _e329 = boundary_1;\n let _e330 = shadow_1;\n let _e332 = boundary_1;\n let _e338 = alpha_1;\n finalColor = (vec4<f32>(_e323.x, _e323.y, _e323.z, _e324) + ((_e329 + (_e330 * (1f - _e332.w))) * (1f - _e338)));\n return;\n}\n\n@fragment \nfn main(@location(0) vTextureCoord: vec2<f32>, @location(1) vFilterCoord: vec2<f32>) -> FragmentOutput {\n vTextureCoord_1 = vTextureCoord;\n vFilterCoord_1 = vFilterCoord;\n main_1();\n let _e151 = finalColor;\n return FragmentOutput(_e151);\n}\n',
177
+ wgsl: "diagnostic(off, derivative_uniformity);\nstruct Parameters {\n uInputSize_slot: vec4<f32>,\n uInputClamp_slot: vec4<f32>,\n uResolution_slot: vec4<f32>,\n uShape_slot: vec4<f32>,\n uRadius_slot: vec4<f32>,\n uMorphParams_slot: vec4<f32>,\n uMorphShape0_slot: vec4<f32>,\n uMorphShape1_slot: vec4<f32>,\n uMorphShape2_slot: vec4<f32>,\n uMorphShape3_slot: vec4<f32>,\n uMorphShape4_slot: vec4<f32>,\n uMorphShape5_slot: vec4<f32>,\n uMorphShape6_slot: vec4<f32>,\n uMorphShape7_slot: vec4<f32>,\n uMorphShape8_slot: vec4<f32>,\n uMorphShape9_slot: vec4<f32>,\n uMorphShape10_slot: vec4<f32>,\n uMorphShape11_slot: vec4<f32>,\n uMorphShape12_slot: vec4<f32>,\n uMorphShape13_slot: vec4<f32>,\n uMorphShape14_slot: vec4<f32>,\n uMorphShape15_slot: vec4<f32>,\n uMorphRadii0_slot: vec4<f32>,\n uMorphRadii1_slot: vec4<f32>,\n uMorphRadii2_slot: vec4<f32>,\n uMorphRadii3_slot: vec4<f32>,\n uMaterialUnits_slot: vec4<f32>,\n uMaterialInner_slot: vec4<f32>,\n uMaterialOuter_slot: vec4<f32>,\n uMaterialBlend_slot: vec4<f32>,\n uMaterialBlurFill_slot: vec4<f32>,\n uMaterialBlurDistances_slot: vec4<f32>,\n uMaterialBlurDifferences_slot: vec4<f32>,\n uMaterialAberration_slot: vec4<f32>,\n uMaterialAberrationDirection_slot: vec4<f32>,\n uMaterialFace0_slot: vec4<f32>,\n uMaterialFace1_slot: vec4<f32>,\n uMaterialFace2_slot: vec4<f32>,\n uMaterialBleed0_slot: vec4<f32>,\n uMaterialBleed1_slot: vec4<f32>,\n uMaterialBleed2_slot: vec4<f32>,\n uMaterialShadow0_slot: vec4<f32>,\n uMaterialShadow1_slot: vec4<f32>,\n uMaterialShadow2_slot: vec4<f32>,\n uMaterialShadowField_slot: vec4<f32>,\n uMaterialShadowResponse_slot: vec4<f32>,\n uMaterialShadowOffset_slot: vec4<f32>,\n uMaterialColour_slot: vec4<f32>,\n uMaterialBleed_slot: vec4<f32>,\n uMaterialBleedField_slot: vec4<f32>,\n uMaterialBackgroundKey_slot: vec4<f32>,\n uMaterialBackgroundLight_slot: vec4<f32>,\n uMaterialKey_slot: vec4<f32>,\n uMaterialFill_slot: vec4<f32>,\n uMaterialLight_slot: vec4<f32>,\n uMaterialRim_slot: vec4<f32>,\n uMaterialContourAngular_slot: vec4<f32>,\n uMaterialSdfProjection_slot: vec4<f32>,\n uMaterialSdfDiffuse_slot: vec4<f32>,\n uMaterialSdfKey_slot: vec4<f32>,\n uMaterialSdfFill_slot: vec4<f32>,\n uMaterialSdfAngles_slot: vec4<f32>,\n uMaterialSdf0_slot: vec4<f32>,\n uMaterialSdf1_slot: vec4<f32>,\n uMaterialSdf2_slot: vec4<f32>,\n uMaterialMix_slot: vec4<f32>,\n uCoverageWidth_slot: vec4<f32>,\n uDiagnosticOutput_slot: vec4<f32>,\n uInnerShade_slot: vec4<f32>,\n uTouchLight_slot: vec4<f32>,\n uTouchLightColour_slot: vec4<f32>,\n uTabBarOptics_slot: vec4<f32>,\n uControlRim_slot: vec4<f32>,\n uControlSpecular_slot: vec4<f32>,\n uControlSize_slot: vec4<f32>,\n kernelScale_slot: vec4<f32>,\n}\n\nstruct FragmentOutput {\n @location(0) finalColor: vec4<f32>,\n}\n\n@group(0) @binding(0) \nvar<uniform> global: Parameters;\n@group(0) @binding(1) \nvar sourceSampler: sampler;\n@group(0) @binding(2) \nvar uTexture_texture: texture_2d<f32>;\n@group(0) @binding(3) \nvar uSource_texture: texture_2d<f32>;\nvar<private> vTextureCoord_1: vec2<f32>;\nvar<private> vFilterCoord_1: vec2<f32>;\nvar<private> finalColor: vec4<f32>;\n\nfn sdRoundRect(p: vec2<f32>, halfSize: vec2<f32>, radius: f32) -> f32 {\n var p_1: vec2<f32>;\n var halfSize_1: vec2<f32>;\n var radius_1: f32;\n var q: vec2<f32>;\n\n p_1 = p;\n halfSize_1 = halfSize;\n radius_1 = radius;\n let _e105 = p_1;\n let _e107 = halfSize_1;\n let _e109 = radius_1;\n q = ((abs(_e105) - _e107) + vec2(_e109));\n let _e113 = q;\n let _e115 = q;\n let _e120 = q;\n let _e126 = radius_1;\n return ((min(max(_e113.x, _e115.y), 0f) + length(max(_e120, vec2(0f)))) - _e126);\n}\n\nfn morphMemberDistance(p_2: vec2<f32>, shape: vec4<f32>, radius_2: f32) -> f32 {\n var p_3: vec2<f32>;\n var shape_1: vec4<f32>;\n var radius_3: f32;\n var q_1: vec2<f32>;\n\n p_3 = p_2;\n shape_1 = shape;\n radius_3 = radius_2;\n let _e147 = p_3;\n let _e148 = shape_1;\n let _e152 = shape_1;\n let _e155 = radius_3;\n q_1 = ((abs((_e147 - _e148.xy)) - _e152.zw) + vec2(_e155));\n let _e159 = q_1;\n let _e161 = q_1;\n let _e166 = q_1;\n let _e173 = radius_3;\n return ((min(max(_e159.x, _e161.y), 0f) + length(max(_e166, vec2(0f)))) - _e173);\n}\n\nfn morphSmoothMin(a: f32, b: f32) -> f32 {\n var a_1: f32;\n var b_1: f32;\n var k: f32;\n var h: f32;\n\n a_1 = a;\n b_1 = b;\n let _e145 = global.uMorphParams_slot;\n k = _e145.y;\n let _e148 = k;\n if (_e148 <= 0f) {\n let _e151 = a_1;\n let _e152 = b_1;\n return min(_e151, _e152);\n }\n let _e154 = k;\n let _e155 = a_1;\n let _e156 = b_1;\n let _e162 = k;\n h = (max((_e154 - abs((_e155 - _e156))), 0f) / _e162);\n let _e165 = a_1;\n let _e166 = b_1;\n let _e168 = h;\n let _e169 = h;\n let _e171 = k;\n return (min(_e165, _e166) - (((_e168 * _e169) * _e171) * 0.25f));\n}\n\nfn morphMemberNormal(p_4: vec2<f32>, shape_2: vec4<f32>, radius_4: f32) -> vec2<f32> {\n var p_5: vec2<f32>;\n var shape_3: vec4<f32>;\n var radius_5: f32;\n var delta: vec2<f32>;\n var q_2: vec2<f32>;\n var n: vec2<f32>;\n var local: vec2<f32>;\n\n p_5 = p_4;\n shape_3 = shape_2;\n radius_5 = radius_4;\n let _e147 = p_5;\n let _e148 = shape_3;\n delta = (_e147 - _e148.xy);\n let _e152 = delta;\n let _e154 = shape_3;\n let _e157 = radius_5;\n q_2 = ((abs(_e152) - _e154.zw) + vec2(_e157));\n let _e161 = q_2;\n let _e166 = delta;\n n = (max(_e161, vec2(0f)) * sign(_e166));\n let _e170 = q_2;\n let _e172 = q_2;\n if (max(_e170.x, _e172.y) <= 0f) {\n let _e177 = q_2;\n let _e179 = q_2;\n if (_e177.x >= _e179.y) {\n let _e182 = delta;\n local = vec2<f32>(sign(_e182.x), 0f);\n } else {\n let _e189 = delta;\n local = vec2<f32>(0f, sign(_e189.y));\n }\n let _e195 = local;\n n = _e195;\n }\n let _e196 = n;\n let _e197 = n;\n return (_e196 / vec2(max(length(_e197), 0.00000001f)));\n}\n\nfn morphAdd(p_6: vec2<f32>, shape_4: vec4<f32>, radius_6: f32, d: ptr<function, f32>, n_1: ptr<function, vec2<f32>>) {\n var p_7: vec2<f32>;\n var shape_5: vec4<f32>;\n var radius_7: f32;\n var b_2: f32;\n var nb: vec2<f32>;\n var k_1: f32;\n var h_1: f32;\n var w: f32;\n\n p_7 = p_6;\n shape_5 = shape_4;\n radius_7 = radius_6;\n let _e149 = p_7;\n let _e150 = shape_5;\n let _e151 = radius_7;\n let _e152 = morphMemberDistance(_e149, _e150, _e151);\n b_2 = _e152;\n let _e154 = p_7;\n let _e155 = shape_5;\n let _e156 = radius_7;\n let _e157 = morphMemberNormal(_e154, _e155, _e156);\n nb = _e157;\n let _e159 = (*d);\n if (_e159 > 1000000000f) {\n {\n let _e162 = b_2;\n (*d) = _e162;\n let _e163 = nb;\n (*n_1) = _e163;\n return;\n }\n }\n let _e164 = global.uMorphParams_slot;\n let _e167 = (*n_1);\n let _e168 = nb;\n k_1 = (_e164.y * pow(clamp(((1f - dot(_e167, _e168)) * 0.5f), 0f, 1f), 1f));\n let _e181 = k_1;\n if (_e181 <= 0.0001f) {\n {\n let _e184 = b_2;\n let _e185 = (*d);\n if (_e184 < _e185) {\n {\n let _e187 = b_2;\n (*d) = _e187;\n let _e188 = nb;\n (*n_1) = _e188;\n }\n }\n return;\n }\n }\n let _e189 = k_1;\n let _e190 = (*d);\n let _e191 = b_2;\n let _e197 = k_1;\n h_1 = (max((_e189 - abs((_e190 - _e191))), 0f) / _e197);\n let _e201 = (*d);\n let _e202 = b_2;\n let _e205 = k_1;\n w = clamp((0.5f + ((_e201 - _e202) / (2f * _e205))), 0f, 1f);\n let _e213 = (*d);\n let _e214 = b_2;\n let _e216 = h_1;\n let _e217 = h_1;\n let _e219 = k_1;\n (*d) = (min(_e213, _e214) - (((_e216 * _e217) * _e219) * 0.25f));\n let _e224 = (*n_1);\n let _e225 = nb;\n let _e226 = w;\n (*n_1) = mix(_e224, _e225, vec2(_e226));\n let _e229 = (*n_1);\n let _e230 = (*n_1);\n (*n_1) = (_e229 / vec2(max(length(_e230), 0.00000001f)));\n return;\n}\n\nfn morphRawDistance(p_8: vec2<f32>) -> f32 {\n var p_9: vec2<f32>;\n var d_1: f32 = 10000000000f;\n var n_2: vec2<f32> = vec2(0f);\n\n p_9 = p_8;\n let _e149 = global.uMorphParams_slot;\n if (_e149.x > 0.5f) {\n let _e153 = p_9;\n let _e154 = global.uMorphShape0_slot;\n let _e155 = global.uMorphRadii0_slot;\n morphAdd(_e153, _e154, _e155.x, (&d_1), (&n_2));\n }\n let _e161 = global.uMorphParams_slot;\n if (_e161.x > 1.5f) {\n let _e165 = p_9;\n let _e166 = global.uMorphShape1_slot;\n let _e167 = global.uMorphRadii0_slot;\n morphAdd(_e165, _e166, _e167.y, (&d_1), (&n_2));\n }\n let _e173 = global.uMorphParams_slot;\n if (_e173.x > 2.5f) {\n let _e177 = p_9;\n let _e178 = global.uMorphShape2_slot;\n let _e179 = global.uMorphRadii0_slot;\n morphAdd(_e177, _e178, _e179.z, (&d_1), (&n_2));\n }\n let _e185 = global.uMorphParams_slot;\n if (_e185.x > 3.5f) {\n let _e189 = p_9;\n let _e190 = global.uMorphShape3_slot;\n let _e191 = global.uMorphRadii0_slot;\n morphAdd(_e189, _e190, _e191.w, (&d_1), (&n_2));\n }\n let _e197 = global.uMorphParams_slot;\n if (_e197.x > 4.5f) {\n let _e201 = p_9;\n let _e202 = global.uMorphShape4_slot;\n let _e203 = global.uMorphRadii1_slot;\n morphAdd(_e201, _e202, _e203.x, (&d_1), (&n_2));\n }\n let _e209 = global.uMorphParams_slot;\n if (_e209.x > 5.5f) {\n let _e213 = p_9;\n let _e214 = global.uMorphShape5_slot;\n let _e215 = global.uMorphRadii1_slot;\n morphAdd(_e213, _e214, _e215.y, (&d_1), (&n_2));\n }\n let _e221 = global.uMorphParams_slot;\n if (_e221.x > 6.5f) {\n let _e225 = p_9;\n let _e226 = global.uMorphShape6_slot;\n let _e227 = global.uMorphRadii1_slot;\n morphAdd(_e225, _e226, _e227.z, (&d_1), (&n_2));\n }\n let _e233 = global.uMorphParams_slot;\n if (_e233.x > 7.5f) {\n let _e237 = p_9;\n let _e238 = global.uMorphShape7_slot;\n let _e239 = global.uMorphRadii1_slot;\n morphAdd(_e237, _e238, _e239.w, (&d_1), (&n_2));\n }\n let _e245 = global.uMorphParams_slot;\n if (_e245.x > 8.5f) {\n let _e249 = p_9;\n let _e250 = global.uMorphShape8_slot;\n let _e251 = global.uMorphRadii2_slot;\n morphAdd(_e249, _e250, _e251.x, (&d_1), (&n_2));\n }\n let _e257 = global.uMorphParams_slot;\n if (_e257.x > 9.5f) {\n let _e261 = p_9;\n let _e262 = global.uMorphShape9_slot;\n let _e263 = global.uMorphRadii2_slot;\n morphAdd(_e261, _e262, _e263.y, (&d_1), (&n_2));\n }\n let _e269 = global.uMorphParams_slot;\n if (_e269.x > 10.5f) {\n let _e273 = p_9;\n let _e274 = global.uMorphShape10_slot;\n let _e275 = global.uMorphRadii2_slot;\n morphAdd(_e273, _e274, _e275.z, (&d_1), (&n_2));\n }\n let _e281 = global.uMorphParams_slot;\n if (_e281.x > 11.5f) {\n let _e285 = p_9;\n let _e286 = global.uMorphShape11_slot;\n let _e287 = global.uMorphRadii2_slot;\n morphAdd(_e285, _e286, _e287.w, (&d_1), (&n_2));\n }\n let _e293 = global.uMorphParams_slot;\n if (_e293.x > 12.5f) {\n let _e297 = p_9;\n let _e298 = global.uMorphShape12_slot;\n let _e299 = global.uMorphRadii3_slot;\n morphAdd(_e297, _e298, _e299.x, (&d_1), (&n_2));\n }\n let _e305 = global.uMorphParams_slot;\n if (_e305.x > 13.5f) {\n let _e309 = p_9;\n let _e310 = global.uMorphShape13_slot;\n let _e311 = global.uMorphRadii3_slot;\n morphAdd(_e309, _e310, _e311.y, (&d_1), (&n_2));\n }\n let _e317 = global.uMorphParams_slot;\n if (_e317.x > 14.5f) {\n let _e321 = p_9;\n let _e322 = global.uMorphShape14_slot;\n let _e323 = global.uMorphRadii3_slot;\n morphAdd(_e321, _e322, _e323.z, (&d_1), (&n_2));\n }\n let _e329 = global.uMorphParams_slot;\n if (_e329.x > 15.5f) {\n let _e333 = p_9;\n let _e334 = global.uMorphShape15_slot;\n let _e335 = global.uMorphRadii3_slot;\n morphAdd(_e333, _e334, _e335.w, (&d_1), (&n_2));\n }\n let _e341 = d_1;\n return _e341;\n}\n\nfn morphGradient(p_10: vec2<f32>) -> vec2<f32> {\n var p_11: vec2<f32>;\n var e: f32 = 0.1f;\n\n p_11 = p_10;\n let _e145 = p_11;\n let _e146 = e;\n let _e151 = morphRawDistance((_e145 + vec2<f32>(_e146, 0f)));\n let _e152 = p_11;\n let _e153 = e;\n let _e158 = morphRawDistance((_e152 - vec2<f32>(_e153, 0f)));\n let _e160 = p_11;\n let _e162 = e;\n let _e166 = morphRawDistance((_e160 + vec2<f32>(0f, _e162)));\n let _e167 = p_11;\n let _e169 = e;\n let _e173 = morphRawDistance((_e167 - vec2<f32>(0f, _e169)));\n let _e177 = e;\n return (vec2<f32>((_e151 - _e158), (_e166 - _e173)) / vec2((2f * _e177)));\n}\n\nfn morphNormal(p_12: vec2<f32>) -> vec2<f32> {\n var p_13: vec2<f32>;\n\n p_13 = p_12;\n let _e143 = p_13;\n let _e144 = morphGradient(_e143);\n return normalize((_e144 + vec2(0.00000001f)));\n}\n\nfn morphDistance(p_14: vec2<f32>) -> f32 {\n var p_15: vec2<f32>;\n var d_2: f32;\n var scale: f32;\n\n p_15 = p_14;\n let _e143 = p_15;\n let _e144 = morphRawDistance(_e143);\n d_2 = _e144;\n let _e146 = global.uMorphParams_slot;\n let _e150 = global.uMorphParams_slot;\n if ((_e146.x < 1.5f) || (_e150.y <= 0f)) {\n let _e155 = d_2;\n return _e155;\n }\n let _e157 = p_15;\n let _e158 = morphGradient(_e157);\n scale = (1f / clamp(length(_e158), 0.25f, 1f));\n let _e165 = d_2;\n let _e166 = scale;\n let _e170 = d_2;\n return (_e165 * mix(_e166, 1f, smoothstep(16f, 28f, -(_e170))));\n}\n\nfn materialDiffusionUnit() -> f32 {\n var local: f32;\n\n let _e99 = global.uMaterialUnits_slot;\n if (_e99.w > 0f) {\n let _e103 = global.uMaterialUnits_slot;\n local = _e103.w;\n } else {\n let _e105 = global.uMaterialUnits_slot;\n local = _e105.y;\n }\n let _e108 = local;\n return _e108;\n}\n\nfn materialProfile(d: f32, p_2: vec3<f32>) -> f32 {\n var d_1: f32;\n var p_3: vec3<f32>;\n var t: f32;\n\n d_1 = d;\n p_3 = p_2;\n let _e103 = d_1;\n let _e104 = p_3;\n let _e107 = p_3;\n t = clamp(((_e103 - _e104.z) / max(_e107.y, 0.000001f)), 0f, 1f);\n let _e116 = p_3;\n let _e119 = t;\n let _e121 = t;\n return (_e116.x * (1f - sqrt((_e119 * (2f - _e121)))));\n}\n\nfn materialLevel(radius_2: f32) -> f32 {\n var radius_3: f32;\n var local_1: f32;\n\n radius_3 = radius_2;\n let _e102 = radius_3;\n if (_e102 < 2f) {\n let _e106 = radius_3;\n local_1 = (1f + (_e106 * 0.5f));\n } else {\n let _e110 = radius_3;\n local_1 = _e110;\n }\n let _e112 = local_1;\n return max(0f, log2(_e112));\n}\n\nfn materialMip(uv: vec2<f32>, level: f32) -> vec3<f32> {\n var uv_1: vec2<f32>;\n var level_1: f32;\n\n uv_1 = uv;\n level_1 = level;\n let _e103 = uv_1;\n let _e104 = global.uInputClamp_slot;\n let _e106 = global.uInputClamp_slot;\n let _e109 = level_1;\n let _e110 = textureSampleLevel(uTexture_texture, sourceSampler, clamp(_e103, _e104.xy, _e106.zw), _e109);\n return _e110.xyz;\n}\n\nfn tabBarOptics() -> bool {\n return (global.uTabBarOptics_slot.x > 0.5f);\n}\n\nfn materialTwoTapFill(uv: vec2<f32>, lod: f32) -> vec3<f32> {\n let offset = (vec2((lod * 0.25f)) / vec2<f32>(vec2<i32>(textureDimensions(uTexture_texture, 0i))));\n return (0.5f * (materialMip((uv + offset), lod) + materialMip((uv - offset), lod)));\n}\n\nfn materialSharp(uv: vec2<f32>) -> vec3<f32> {\n let halfPixel = (vec2(0.5f) / vec2<f32>(textureDimensions(uSource_texture, 0i)));\n let low = halfPixel;\n let high = (vec2(1f) - halfPixel);\n let centre = (uv / global.kernelScale_slot.xy);\n let a = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre + halfPixel), low, high), 0f);\n let b = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre - halfPixel), low, high), 0f);\n let c = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre + vec2<f32>(halfPixel.x, -(halfPixel.y))), low, high), 0f);\n let d = textureSampleLevel(uSource_texture, sourceSampler, clamp((centre + vec2<f32>(-(halfPixel.x), halfPixel.y)), low, high), 0f);\n return (0.25f * (((a.xyz + b.xyz) + c.xyz) + d.xyz));\n}\n\nfn materialDiagonal(uv_2: vec2<f32>, level_2: f32) -> vec3<f32> {\n var uv_3: vec2<f32>;\n var level_3: f32;\n var o: vec2<f32>;\n\n uv_3 = uv_2;\n level_3 = level_2;\n if ((level_2 <= 0f) && tabBarOptics()) {\n return materialSharp(uv_2);\n }\n let _e103 = level_3;\n let _e107 = textureDimensions(uTexture_texture, 0i);\n o = (vec2((_e103 * 0.25f)) / vec2<f32>(vec2<i32>(_e107)));\n let _e114 = uv_3;\n let _e115 = o;\n let _e117 = level_3;\n let _e118 = materialMip((_e114 + _e115), _e117);\n let _e119 = uv_3;\n let _e120 = o;\n let _e122 = level_3;\n let _e123 = materialMip((_e119 - _e120), _e122);\n let _e125 = uv_3;\n let _e126 = o;\n let _e128 = o;\n let _e133 = level_3;\n let _e134 = materialMip((_e125 + vec2<f32>(_e126.x, -(_e128.y))), _e133);\n let _e136 = uv_3;\n let _e137 = o;\n let _e140 = o;\n let _e144 = level_3;\n let _e145 = materialMip((_e136 + vec2<f32>(-(_e137.x), _e140.y)), _e144);\n return (0.25f * (((_e118 + _e123) + _e134) + _e145));\n}\n\nfn materialSpectrum(uv_4: vec2<f32>, delta: vec2<f32>, level_4: f32) -> vec3<f32> {\n var uv_5: vec2<f32>;\n var delta_1: vec2<f32>;\n var level_5: f32;\n\n uv_5 = uv_4;\n delta_1 = delta;\n level_5 = level_4;\n let _e105 = uv_5;\n let _e106 = delta_1;\n let _e110 = level_5;\n let _e111 = materialDiagonal((_e105 + (_e106 * 1f)), _e110);\n let _e117 = uv_5;\n let _e118 = delta_1;\n let _e122 = level_5;\n let _e123 = materialDiagonal((_e117 + (_e118 * 0.6666667f)), _e122);\n let _e130 = uv_5;\n let _e131 = delta_1;\n let _e135 = level_5;\n let _e136 = materialDiagonal((_e130 + (_e131 * 0.33333334f)), _e135);\n let _e143 = uv_5;\n let _e144 = delta_1;\n let _e148 = level_5;\n let _e149 = materialDiagonal((_e143 + (_e144 * 0f)), _e148);\n let _e156 = uv_5;\n let _e157 = delta_1;\n let _e162 = level_5;\n let _e163 = materialDiagonal((_e156 + (_e157 * -0.33333334f)), _e162);\n let _e170 = uv_5;\n let _e171 = delta_1;\n let _e176 = level_5;\n let _e177 = materialDiagonal((_e170 + (_e171 * -0.6666667f)), _e176);\n let _e184 = uv_5;\n let _e185 = delta_1;\n let _e190 = level_5;\n let _e191 = materialDiagonal((_e184 + (_e185 * -1f)), _e190);\n return (((((((_e111 * vec3<f32>(0.5f, 0f, 0f)) + (_e123 * vec3<f32>(0.33333334f, 0.11111111f, 0f))) + (_e136 * vec3<f32>(0.16666667f, 0.22222222f, 0f))) + (_e149 * vec3<f32>(0f, 0.33333334f, 0f))) + (_e163 * vec3<f32>(0f, 0.22222222f, 0.16666667f))) + (_e177 * vec3<f32>(0f, 0.11111111f, 0.33333334f))) + (_e191 * vec3<f32>(0f, 0f, 0.5f)));\n}\n\nfn materialRamp(x: f32, a: f32, b: f32) -> f32 {\n var x_1: f32;\n var a_1: f32;\n var b_1: f32;\n var local_2: f32;\n\n x_1 = x;\n a_1 = a;\n b_1 = b;\n let _e105 = b_1;\n let _e106 = a_1;\n if (abs((_e105 - _e106)) < 0.000001f) {\n let _e111 = a_1;\n let _e112 = x_1;\n local_2 = step(_e111, _e112);\n } else {\n let _e114 = x_1;\n let _e115 = a_1;\n let _e117 = b_1;\n let _e118 = a_1;\n local_2 = clamp(((_e114 - _e115) / (_e117 - _e118)), 0f, 1f);\n }\n let _e125 = local_2;\n return _e125;\n}\n\nfn materialRadius(z: f32) -> f32 {\n var z_1: f32;\n var ramps: vec3<f32>;\n\n z_1 = z;\n let _e101 = z_1;\n let _e102 = global.uMaterialBlurDistances_slot;\n let _e104 = global.uMaterialBlurDistances_slot;\n let _e106 = materialRamp(_e101, _e102.x, _e104.y);\n let _e107 = z_1;\n let _e108 = global.uMaterialBlurDistances_slot;\n let _e110 = global.uMaterialBlurDistances_slot;\n let _e112 = materialRamp(_e107, _e108.y, _e110.z);\n let _e113 = z_1;\n let _e114 = global.uMaterialBlurDistances_slot;\n let _e116 = global.uMaterialBlurDistances_slot;\n let _e118 = materialRamp(_e113, _e114.z, _e116.w);\n ramps = vec3<f32>(_e106, _e112, _e118);\n let _e122 = global.uMaterialBlend_slot;\n let _e124 = global.uMaterialBlurDifferences_slot;\n let _e126 = global.uMaterialBlurDifferences_slot;\n let _e128 = ramps;\n return max(0f, (_e122.w * (_e124.x - dot(_e126.yzw, _e128))));\n}\n\nfn materialFill(uv: vec2<f32>, lod: f32) -> vec3<f32> {\n let level = min(floor(max(0f, (lod - 0.5f))), (f32(textureNumLevels(uTexture_texture)) - 1f));\n let halfTexel = (vec2(0.5f) / vec2<f32>(textureDimensions(uTexture_texture, i32(level))));\n let a = materialMip((uv + halfTexel), level);\n let b = materialMip((uv - halfTexel), level);\n let c = materialMip((uv + vec2<f32>(halfTexel.x, -(halfTexel.y))), level);\n let d = materialMip((uv + vec2<f32>(-(halfTexel.x), halfTexel.y)), level);\n return (0.25f * (((a + b) + c) + d));\n}\n\nfn materialTransmission(signedPt: f32, n: vec2<f32>, uv_6: vec2<f32>) -> vec3<f32> {\n var signedPt_1: f32;\n var n_1: vec2<f32>;\n var uv_7: vec2<f32>;\n var s: f32;\n var fi: f32;\n var fo: f32;\n var pointToUv: vec2<f32>;\n var displacement: vec2<f32>;\n var v: vec2<f32>;\n var delta_2: vec2<f32>;\n var physicalPixelsPerPoint: f32;\n var inner: vec3<f32>;\n var lod: f32;\n var fill: vec3<f32>;\n var weights: vec2<f32>;\n var response: vec3<f32>;\n var outer: vec3<f32>;\n var w: f32;\n\n signedPt_1 = signedPt;\n n_1 = n;\n uv_7 = uv_6;\n let _e105 = signedPt_1;\n let _e106 = global.uMaterialUnits_slot;\n let _e109 = global.uMaterialUnits_slot;\n s = ((_e105 * _e106.x) + _e109.z);\n let _e113 = s;\n let _e115 = global.uMaterialInner_slot;\n let _e117 = materialProfile(-(_e113), _e115.xyz);\n fi = _e117;\n let _e119 = s;\n let _e121 = global.uMaterialOuter_slot;\n let _e123 = materialProfile(-(_e119), _e121.xyz);\n fo = _e123;\n let _e125 = global.uInputSize_slot;\n pointToUv = _e125.zw;\n let _e128 = n_1;\n let _e129 = global.uMaterialUnits_slot;\n let _e132 = pointToUv;\n displacement = ((_e128 * _e129.y) * _e132);\n let _e135 = global.uMaterialAberrationDirection_slot;\n v = _e135.xy;\n let _e138 = s;\n let _e140 = global.uMaterialAberration_slot;\n let _e142 = materialProfile(-(_e138), _e140.xyz);\n let _e143 = global.uMaterialUnits_slot;\n let _e146 = pointToUv;\n let _e148 = v;\n let _e150 = n_1;\n let _e153 = v;\n let _e155 = n_1;\n let _e160 = pointToUv;\n let _e162 = v;\n let _e164 = n_1;\n let _e167 = v;\n let _e169 = n_1;\n delta_2 = ((_e142 * _e143.y) * vec2<f32>((_e146.y * ((_e148.y * _e150.x) + (_e153.x * _e155.y))), (_e160.x * ((_e162.x * _e164.x) - (_e167.y * _e169.y)))));\n let _e178 = textureDimensions(uTexture_texture, 0i);\n let _e182 = global.uInputSize_slot;\n physicalPixelsPerPoint = (f32(vec2<i32>(_e178).x) * _e182.z);\n let _e186 = uv_7;\n let _e187 = displacement;\n let _e188 = fi;\n let _e191 = delta_2;\n let _e192 = s;\n let _e193 = fi;\n let _e195 = materialRadius((_e192 + _e193));\n let _e196 = materialDiffusionUnit();\n let _e198 = physicalPixelsPerPoint;\n let _e200 = materialLevel(((_e195 * _e196) * _e198));\n let _e201 = materialSpectrum((_e186 + (_e187 * _e188)), _e191, _e200);\n inner = _e201;\n let _e203 = global.uMaterialBlurFill_slot;\n if (_e203.x > 0f) {\n {\n let _e207 = global.uMaterialBlurFill_slot;\n let _e209 = materialDiffusionUnit();\n let _e211 = physicalPixelsPerPoint;\n let _e213 = materialLevel(((_e207.x * _e209) * _e211));\n lod = _e213;\n if (tabBarOptics()) {\n fill = materialFill(uv_7, lod);\n } else {\n fill = materialTwoTapFill(uv_7, lod);\n }\n let _e239 = global.uMaterialBlurFill_slot;\n weights = clamp(_e239.yz, vec2(0f), vec2(1f));\n let _e247 = weights;\n let _e249 = weights;\n let _e251 = weights;\n weights = (_e247 / vec2(max(1f, (_e249.x + _e251.y))));\n let _e257 = weights;\n let _e259 = inner;\n let _e260 = fill;\n let _e263 = weights;\n let _e265 = inner;\n let _e266 = fill;\n let _e271 = weights;\n let _e274 = weights;\n let _e277 = inner;\n response = (((_e257.y * min(_e259, _e260)) + (_e263.x * max(_e265, _e266))) + (((1f - _e271.x) - _e274.y) * _e277));\n let _e281 = response;\n let _e282 = fill;\n let _e283 = global.uMaterialBlurFill_slot;\n inner = mix(_e281, _e282, vec3(clamp(_e283.w, 0f, 1f)));\n }\n }\n let _e290 = uv_7;\n let _e291 = displacement;\n let _e292 = fo;\n let _e295 = s;\n let _e296 = fo;\n let _e298 = materialRadius((_e295 + _e296));\n let _e299 = materialDiffusionUnit();\n let _e301 = physicalPixelsPerPoint;\n let _e303 = materialLevel(((_e298 * _e299) * _e301));\n let _e304 = materialMip((_e290 + (_e291 * _e292)), _e303);\n outer = _e304;\n let _e306 = global.uMaterialBlend_slot;\n let _e308 = s;\n let _e309 = global.uMaterialBlend_slot;\n let _e312 = global.uMaterialBlend_slot;\n let _e314 = global.uMaterialBlend_slot;\n w = (_e306.z * clamp(((_e308 - _e309.x) / max((_e312.y - _e314.x), 0.000001f)), 0f, 1f));\n let _e325 = inner;\n let _e326 = outer;\n let _e327 = w;\n return mix(_e325, _e326, vec3(_e327));\n}\n\nfn materialLobe(d_2: f32, n_2: vec2<f32>, p_4: vec4<f32>, angle: f32, offset_1: f32) -> f32 {\n var d_3: f32;\n var n_3: vec2<f32>;\n var p_5: vec4<f32>;\n var angle_1: f32;\n var offset_2: f32;\n var z_2: f32;\n var fw: f32;\n var q_1: f32;\n var local_3: f32;\n var W: f32;\n var x_2: f32;\n\n d_3 = d_2;\n n_3 = n_2;\n p_5 = p_4;\n angle_1 = angle;\n offset_2 = offset_1;\n let _e109 = d_3;\n let _e110 = offset_2;\n z_2 = (_e109 - _e110);\n let _e113 = d_3;\n let _e114 = fwidth(_e113);\n fw = max(_e114, 0.0001f);\n let _e119 = z_2;\n let _e120 = p_5;\n q_1 = (1f - clamp((_e119 / max(_e120.x, 0.000001f)), 0f, 1f));\n let _e130 = q_1;\n if (_e130 > 0f) {\n let _e135 = q_1;\n local_3 = select((0.25f + (0.75f * _e135)), _e135, tabBarOptics());\n } else {\n local_3 = 0f;\n }\n let _e140 = local_3;\n let _e142 = z_2;\n let _e143 = fw;\n let _e151 = p_5;\n let _e153 = z_2;\n let _e155 = fw;\n W = ((_e140 * clamp((0.5f + (_e142 / _e143)), 0f, 1f)) * clamp((0.5f + ((_e151.x - _e153) / _e155)), 0f, 1f));\n let _e163 = W;\n let _e164 = angle_1;\n let _e166 = angle_1;\n let _e169 = n_3;\n let _e171 = p_5;\n let _e175 = p_5;\n x_2 = (_e163 * clamp(((dot(vec2<f32>(cos(_e164), sin(_e166)), _e169) - _e171.y) / max((1f - _e175.y), 0.000001f)), 0f, 1f));\n let _e186 = p_5;\n let _e188 = x_2;\n let _e191 = p_5;\n let _e194 = x_2;\n return ((_e186.w * _e188) / max((1f + (_e191.z * (1f - _e194))), 0.000001f));\n}\n\nfn materialAffine(c: vec3<f32>, r: vec4<f32>, g: vec4<f32>, b_2: vec4<f32>) -> vec3<f32> {\n var c_1: vec3<f32>;\n var r_1: vec4<f32>;\n var g_1: vec4<f32>;\n var b_3: vec4<f32>;\n\n c_1 = c;\n r_1 = r;\n g_1 = g;\n b_3 = b_2;\n let _e107 = c_1;\n let _e114 = r_1;\n let _e116 = c_1;\n let _e123 = g_1;\n let _e125 = c_1;\n let _e132 = b_3;\n return vec3<f32>(dot(vec4<f32>(_e107.x, _e107.y, _e107.z, 1f), _e114), dot(vec4<f32>(_e116.x, _e116.y, _e116.z, 1f), _e123), dot(vec4<f32>(_e125.x, _e125.y, _e125.z, 1f), _e132));\n}\n\nfn materialShadow(signedPt_2: f32, n_4: vec2<f32>, uv_8: vec2<f32>) -> vec4<f32> {\n var signedPt_3: f32;\n var n_5: vec2<f32>;\n var uv_9: vec2<f32>;\n var s_1: f32;\n var x_3: f32;\n var x2_: f32;\n var response_1: f32;\n var displacement_1: f32;\n var lod_1: f32;\n var c_2: vec3<f32>;\n var contribution: f32;\n var rgb: vec3<f32>;\n var alpha: f32;\n\n signedPt_3 = signedPt_2;\n n_5 = n_4;\n uv_9 = uv_8;\n let _e105 = signedPt_3;\n let _e106 = global.uMaterialUnits_slot;\n let _e109 = global.uMaterialUnits_slot;\n let _e112 = n_5;\n let _e113 = global.uMaterialShadowOffset_slot;\n s_1 = (((_e105 * _e106.x) + _e109.z) - dot(_e112, _e113.xy));\n let _e121 = s_1;\n let _e123 = global.uMaterialShadowResponse_slot;\n x_3 = ((4f * clamp((0.5f + ((0.25f * _e121) / max(_e123.x, 0.000001f))), 0f, 1f)) - 2f);\n let _e136 = x_3;\n let _e137 = x_3;\n x2_ = (_e136 * _e137);\n let _e141 = x2_;\n let _e145 = x2_;\n let _e149 = x2_;\n let _e153 = x_3;\n response_1 = clamp(((((((((0.002954483f * _e141) - 0.034454346f) * _e145) + 0.16821289f) * _e149) - 0.5605469f) * _e153) + 0.5f), 0f, 1f);\n let _e161 = s_1;\n let _e163 = global.uMaterialShadowField_slot;\n let _e165 = materialProfile(-(_e161), _e163.xyz);\n displacement_1 = _e165;\n let _e167 = global.uMaterialShadowField_slot;\n let _e169 = materialDiffusionUnit();\n let _e172 = textureDimensions(uTexture_texture, 0i);\n let _e177 = global.uInputSize_slot;\n let _e180 = materialLevel((((_e167.w * _e169) * f32(vec2<i32>(_e172).x)) * _e177.z));\n lod_1 = _e180;\n let _e182 = uv_9;\n let _e183 = n_5;\n let _e184 = displacement_1;\n let _e186 = global.uMaterialUnits_slot;\n let _e189 = global.uInputSize_slot;\n let _e193 = lod_1;\n let _e194 = materialMip((_e182 + (((_e183 * _e184) * _e186.y) * _e189.zw)), _e193);\n c_2 = _e194;\n let _e196 = global.uMaterialShadowResponse_slot;\n contribution = _e196.z;\n let _e199 = c_2;\n let _e200 = global.uMaterialShadow0_slot;\n let _e203 = c_2;\n let _e204 = global.uMaterialShadow1_slot;\n let _e207 = c_2;\n let _e208 = global.uMaterialShadow2_slot;\n let _e212 = contribution;\n let _e214 = global.uMaterialShadow0_slot;\n let _e216 = global.uMaterialShadow1_slot;\n let _e218 = global.uMaterialShadow2_slot;\n rgb = ((vec3<f32>(dot(_e199, _e200.xyz), dot(_e203, _e204.xyz), dot(_e207, _e208.xyz)) * _e212) + vec3<f32>(_e214.w, _e216.w, _e218.w));\n let _e223 = global.uMaterialShadowResponse_slot;\n let _e226 = contribution;\n alpha = mix(_e223.w, 1f, _e226);\n let _e229 = rgb;\n let _e230 = alpha;\n let _e235 = response_1;\n let _e237 = global.uMaterialShadowResponse_slot;\n return ((vec4<f32>(_e229.x, _e229.y, _e229.z, _e230) * _e235) * _e237.y) * global.uControlSize_slot.y;\n}\n\n" + controlRimWGSL + "fn materialMaterial(signedPt_6: f32, n_8: vec2<f32>, uv_12: vec2<f32>, c_3: vec3<f32>) -> vec3<f32> {\n var signedPt_7: f32;\n var n_9: vec2<f32>;\n var uv_13: vec2<f32>;\n var c_4: vec3<f32>;\n var s_3: f32;\n var L: f32;\n var g_2: f32;\n var adjusted: vec3<f32>;\n var face: vec3<f32>;\n var lb: f32;\n var ramp: f32;\n var darken: f32;\n var w_1: f32;\n var bleed: vec3<f32>;\n var P: vec3<f32>;\n var backgroundH: f32;\n var d_4: f32;\n var key: vec4<f32>;\n var fill_1: vec4<f32>;\n var H: f32;\n var peak_1: f32;\n var contour: f32;\n\n signedPt_7 = signedPt_6;\n n_9 = n_8;\n uv_13 = uv_12;\n c_4 = c_3;\n let _e107 = signedPt_7;\n let _e108 = global.uMaterialUnits_slot;\n let _e111 = global.uMaterialUnits_slot;\n s_3 = ((_e107 * _e108.x) + _e111.z);\n let _e115 = c_4;\n L = dot(_e115, vec3<f32>(0.2126f, 0.7152f, 0.0722f));\n let _e123 = L;\n let _e124 = global.uMaterialColour_slot;\n g_2 = clamp((1f - (_e123 * _e124.x)), 0f, 1f);\n let _e132 = g_2;\n let _e133 = L;\n let _e136 = g_2;\n let _e137 = c_4;\n let _e142 = g_2;\n adjusted = mix(vec3((_e132 * _e133)), (_e136 * _e137), vec3((1f + (0.3f * (1f - _e142)))));\n let _e149 = c_4;\n let _e150 = adjusted;\n let _e151 = global.uMaterialFace0_slot;\n let _e152 = global.uMaterialFace1_slot;\n let _e153 = global.uMaterialFace2_slot;\n let _e154 = materialAffine(_e150, _e151, _e152, _e153);\n let _e155 = global.uMaterialColour_slot;\n face = mix(_e149, _e154, vec3(_e155.y));\n let _e160 = face;\n lb = clamp(dot(_e160, vec3<f32>(0.2125f, 0.7154f, 0.0721f)), 0f, 1f);\n let _e170 = s_3;\n let _e171 = global.uMaterialBleed_slot;\n let _e173 = global.uMaterialBleed_slot;\n let _e175 = materialRamp(_e170, _e171.x, _e173.y);\n ramp = _e175;\n let _e177 = global.uMaterialBleed_slot;\n let _e179 = lb;\n let _e181 = global.uMaterialBleed_slot;\n darken = ((_e177.z * _e179) + _e181.w);\n let _e185 = global.uMaterialColour_slot;\n let _e187 = darken;\n let _e188 = darken;\n let _e190 = ramp;\n w_1 = (_e185.z * pow(((_e187 * _e188) * _e190), 2f));\n let _e196 = uv_13;\n let _e197 = n_9;\n let _e198 = s_3;\n let _e200 = global.uMaterialBleedField_slot;\n let _e202 = materialProfile(-(_e198), _e200.xyz);\n let _e204 = global.uMaterialUnits_slot;\n let _e207 = global.uInputSize_slot;\n let _e211 = global.uMaterialBleedField_slot;\n let _e213 = materialDiffusionUnit();\n let _e216 = textureDimensions(uTexture_texture, 0i);\n let _e221 = global.uInputSize_slot;\n let _e224 = materialLevel((((_e211.w * _e213) * f32(vec2<i32>(_e216).x)) * _e221.z));\n let _e225 = materialMip((_e196 + (((_e197 * _e202) * _e204.y) * _e207.zw)), _e224);\n bleed = _e225;\n let _e227 = face;\n let _e228 = bleed;\n let _e229 = global.uMaterialBleed0_slot;\n let _e230 = global.uMaterialBleed1_slot;\n let _e231 = global.uMaterialBleed2_slot;\n let _e232 = materialAffine(_e228, _e229, _e230, _e231);\n let _e233 = w_1;\n P = mix(_e227, _e232, vec3(_e233));\n let innerShade = global.uInnerShade_slot;\n let shadeDepth = -(signedPt_7);\n let shadeBand = (smoothstep(0f, innerShade.y, shadeDepth) * (1f - smoothstep(innerShade.z, innerShade.w, shadeDepth)));\n let shadeFacing = max(-(n_9.y), 0f);\n let shadeBase = P;\n let shadeWeight = smoothstep(0.05f, 0.5f, dot(shadeBase, vec3<f32>(0.2126f, 0.7152f, 0.0722f)));\n P = (shadeBase * (vec3(1f) + ((((select(0f, innerShade.x, tabBarOptics()) * shadeBand) * (shadeFacing * shadeFacing)) * shadeWeight) * (vec3(3f) - (2f * shadeBase)))));\n let sizeBackdrop = materialMip(uv_13, 0.0);\n P = P - global.uControlSize_slot.x * sizeBackdrop * sizeBackdrop;\n H = controlSpecular(signedPt_7, n_9);\n let _e405 = P;\n let _e406 = H;\n let _e407 = P;\n let _e408 = global.uMaterialSdf0_slot;\n let _e409 = global.uMaterialSdf1_slot;\n let _e410 = global.uMaterialSdf2_slot;\n let _e411 = materialAffine(_e407, _e408, _e409, _e410);\n let _e412 = P;\n P = (_e405 + (_e406 * (_e411 - _e412)));\n let _e483 = P;\n return clamp(_e483, vec3(0f), vec3(1f));\n}\n\nfn main_1() {\n var p_20: vec2<f32>;\n var local_5: f32;\n var sd: f32;\n var q_4: vec2<f32>;\n var cap: vec2<f32>;\n var extent: f32;\n var local_6: vec2<f32>;\n var local_7: vec2<f32>;\n var n_13: vec2<f32>;\n var boundary: vec4<f32>;\n var shadow: vec4<f32>;\n var transmitted: vec3<f32>;\n var material: vec3<f32>;\n var aa: f32;\n var alpha_1: f32;\n var shadow_1: vec4<f32>;\n var boundary_1: vec4<f32>;\n\n let _e141 = vFilterCoord_1;\n let _e142 = global.uResolution_slot;\n let _e145 = global.uShape_slot;\n p_20 = ((_e141 * _e142.xy) - _e145.xy);\n let _e149 = global.uMorphParams_slot;\n if (_e149.x > 0.5f) {\n let _e153 = vFilterCoord_1;\n let _e154 = global.uResolution_slot;\n let _e157 = morphDistance((_e153 * _e154.xy));\n local_5 = _e157;\n } else {\n let _e158 = p_20;\n let _e159 = global.uShape_slot;\n let _e161 = global.uRadius_slot;\n let _e163 = sdRoundRect(_e158, _e159.zw, _e161.x);\n local_5 = _e163;\n }\n let _e165 = local_5;\n sd = _e165;\n let _e167 = p_20;\n let _e169 = global.uShape_slot;\n let _e172 = global.uRadius_slot;\n q_4 = ((abs(_e167) - _e169.zw) + vec2(_e172.x));\n let _e177 = q_4;\n cap = max(_e177, vec2(0f));\n let _e183 = cap;\n extent = length(_e183);\n let _e186 = extent;\n if (_e186 > 0f) {\n let _e189 = p_20;\n let _e191 = cap;\n let _e193 = extent;\n local_7 = ((sign(_e189) * _e191) / vec2(_e193));\n } else {\n let _e196 = q_4;\n let _e198 = q_4;\n if (_e196.x > _e198.y) {\n let _e201 = p_20;\n local_6 = vec2<f32>(sign(_e201.x), 0f);\n } else {\n let _e208 = p_20;\n local_6 = vec2<f32>(0f, sign(_e208.y));\n }\n let _e214 = local_6;\n local_7 = _e214;\n }\n let _e216 = local_7;\n n_13 = _e216;\n let _e218 = global.uMorphParams_slot;\n if (_e218.x > 0.5f) {\n let _e222 = vFilterCoord_1;\n let _e223 = global.uResolution_slot;\n let _e226 = morphNormal((_e222 * _e223.xy));\n n_13 = _e226;\n }\n let _e227 = global.uDiagnosticOutput_slot;\n let _e231 = sd;\n let _e234 = global.uCoverageWidth_slot;\n if ((_e227.x <= 0f) && (_e231 > max(1f, (6f * _e234.x)))) {\n {\n let _e240 = sd;\n let _e241 = n_13;\n let _e242 = vTextureCoord_1;\n let _e243 = materialBoundary(_e240, _e241, _e242);\n let _e244 = global.uMaterialMix_slot;\n boundary = (_e243 * _e244.x);\n let _e248 = sd;\n let _e249 = n_13;\n let _e250 = vTextureCoord_1;\n let _e251 = materialShadow(_e248, _e249, _e250);\n let _e252 = global.uMaterialMix_slot;\n shadow = (_e251 * _e252.x);\n let _e256 = boundary;\n let _e257 = shadow;\n let _e259 = boundary;\n finalColor = (_e256 + (_e257 * (1f - _e259.w)));\n return;\n }\n }\n let _e264 = sd;\n let _e265 = n_13;\n let _e266 = vTextureCoord_1;\n let _e267 = materialTransmission(_e264, _e265, _e266);\n transmitted = _e267;\n let _e269 = global.uDiagnosticOutput_slot;\n if (_e269.x > 0f) {\n {\n let _e273 = transmitted;\n finalColor = vec4<f32>(_e273.x, _e273.y, _e273.z, 1f);\n return;\n }\n }\n let _e280 = sd;\n let _e281 = n_13;\n let _e282 = vTextureCoord_1;\n let _e283 = transmitted;\n let _e284 = materialMaterial(_e280, _e281, _e282, _e283);\n material = _e284;\n if (global.uTouchLight_slot.w > 0.0) {\n let lightPoint = vFilterCoord_1 * global.uResolution_slot.xy;\n let lightDistance = length(lightPoint - global.uTouchLight_slot.xy);\n let lightWeight = 1.0 - smoothstep(0.0, global.uTouchLight_slot.z, lightDistance);\n material = mix(material, global.uTouchLightColour_slot.xyz,\n lightWeight * global.uTouchLight_slot.w);\n }\n let _e286 = global.uCoverageWidth_slot;\n let _e289 = sd;\n let _e290 = fwidth(_e289);\n aa = max(_e286.x, (0.5f * _e290));\n let _e295 = aa;\n let _e297 = aa;\n let _e298 = sd;\n let _e301 = global.uMaterialMix_slot;\n alpha_1 = ((1f - smoothstep(-(_e295), _e297, _e298)) * _e301.x);\n let _e305 = sd;\n let _e306 = n_13;\n let _e307 = vTextureCoord_1;\n let _e308 = materialShadow(_e305, _e306, _e307);\n let _e309 = global.uMaterialMix_slot;\n shadow_1 = (_e308 * _e309.x);\n let _e313 = sd;\n let _e314 = n_13;\n let _e315 = vTextureCoord_1;\n let _e316 = materialBoundary(_e313, _e314, _e315);\n let _e317 = global.uMaterialMix_slot;\n boundary_1 = (_e316 * _e317.x);\n let _e321 = material;\n let _e322 = alpha_1;\n let _e323 = (_e321 * _e322);\n let _e324 = alpha_1;\n let _e329 = boundary_1;\n let _e330 = shadow_1;\n let _e332 = boundary_1;\n let _e338 = alpha_1;\n finalColor = (vec4<f32>(_e323.x, _e323.y, _e323.z, _e324) + ((_e329 + (_e330 * (1f - _e332.w))) * (1f - _e338)));\n return;\n}\n\n@fragment \nfn main(@location(0) vTextureCoord: vec2<f32>, @location(1) vFilterCoord: vec2<f32>) -> FragmentOutput {\n vTextureCoord_1 = vTextureCoord;\n vFilterCoord_1 = vFilterCoord;\n main_1();\n let _e151 = finalColor;\n return FragmentOutput(_e151);\n}\n",
177
178
  uniforms: [
178
179
  'uInputSize',
179
180
  'uInputClamp',
@@ -247,6 +248,9 @@ export const shaders = {
247
248
  'uTouchLight',
248
249
  'uTouchLightColour',
249
250
  'uTabBarOptics',
251
+ 'uControlRim',
252
+ 'uControlSpecular',
253
+ 'uControlSize',
250
254
  ],
251
255
  textures: ['uTexture', 'uSource'],
252
256
  },
@@ -1,5 +1,5 @@
1
1
  import { type HTMLAttributes, type ReactNode } from 'react';
2
- /** The native switch selection tick. Other feedback kinds are unsupported. */
2
+ /** The feedback a `SensoryButton` plays. Only `selection`, the switch tick, exists. */
3
3
  export type SensoryFeedback = 'selection';
4
4
  /** A tap target's action, content and the feedback it plays. */
5
5
  export type SensoryButtonProps = Omit<HTMLAttributes<HTMLLabelElement>, 'onClick' | 'onChange'> & {
@@ -9,9 +9,9 @@ export type SensoryButtonProps = Omit<HTMLAttributes<HTMLLabelElement>, 'onClick
9
9
  onPress: () => void;
10
10
  };
11
11
  /**
12
- * A tap affordance backed by browser label activation. No imperative haptic API exists.
13
- * Use plain content only: links, buttons and other labelable controls cannot be nested.
14
- * Keyboard and assistive activation preserve the action, but do not promise a tick.
12
+ * A tap target that plays the system selection tick where the browser supports it. There is no
13
+ * other way to trigger haptics. Use plain content only: links, buttons and other form controls
14
+ * cannot be nested.
15
15
  */
16
16
  export declare const SensoryButton: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLLabelElement>, "onChange" | "onClick"> & {
17
17
  children?: ReactNode;
@@ -3,9 +3,9 @@ import { forwardRef, useRef } from 'react';
3
3
  import { beginKeyboardActivation, releaseKeyboardActivation, resolveClickActivation, } from '../press/activation.js';
4
4
  import { PRESS_CONTACT_CLICK_WINDOW_MS } from '../press/contactReceipt.js';
5
5
  /**
6
- * A tap affordance backed by browser label activation. No imperative haptic API exists.
7
- * Use plain content only: links, buttons and other labelable controls cannot be nested.
8
- * Keyboard and assistive activation preserve the action, but do not promise a tick.
6
+ * A tap target that plays the system selection tick where the browser supports it. There is no
7
+ * other way to trigger haptics. Use plain content only: links, buttons and other form controls
8
+ * cannot be nested.
9
9
  */
10
10
  export const SensoryButton = forwardRef(function SensoryButton({ children, disabled = false, sensoryFeedback = 'selection', onPress, onClickCapture, onKeyDown, onKeyUp, onBlur, onPointerDown, role = 'button', tabIndex, ...props }, forwardedRef) {
11
11
  if (sensoryFeedback !== 'selection' && sensoryFeedback !== false)
@@ -9,6 +9,8 @@ export interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 's
9
9
  readonly aspectRatio?: CSSProperties['aspectRatio'];
10
10
  readonly priority?: boolean;
11
11
  }
12
+ /** The loading state an `AsyncImage` reports: `empty` while loading, then `success` with the
13
+ * image element or `failure` with the error. */
12
14
  export type AsyncImagePhase = {
13
15
  readonly phase: 'empty';
14
16
  } | {
@@ -18,13 +20,14 @@ export type AsyncImagePhase = {
18
20
  readonly phase: 'failure';
19
21
  readonly error: Error;
20
22
  };
21
- /** `Image` for a bundled or local asset: it reserves its size so layout never jumps, and
22
- * `priority` loads it ahead of other images. Use `alt=""` for decoration. */
23
+ /** Shows a bundled or local image. It reserves its size so layout never jumps, and `priority`
24
+ * loads it ahead of other images. Use `alt=""` for decoration. */
23
25
  export declare function Image(props: ImageProps): import("react").JSX.Element;
24
26
  /** An `ImageProps` whose source is a remote URL. */
25
27
  export interface AsyncImageProps extends Omit<ImageProps, 'src'> {
26
28
  readonly src: string;
27
29
  readonly onPhaseChange?: (phase: AsyncImagePhase) => void;
28
30
  }
29
- /** Remote artwork keeps its placeholder on failure and never blocks navigation. */
31
+ /** Loads an image from a URL. It keeps its placeholder if loading fails, never holds up
32
+ * navigation, and reports progress through `onPhaseChange`. */
30
33
  export declare function AsyncImage(props: AsyncImageProps): import("react").JSX.Element;
@@ -254,8 +254,8 @@ function Artwork({ remote = false, admitted, ref, src, alt, contentMode = 'fit',
254
254
  : {}),
255
255
  } }));
256
256
  }
257
- /** `Image` for a bundled or local asset: it reserves its size so layout never jumps, and
258
- * `priority` loads it ahead of other images. Use `alt=""` for decoration. */
257
+ /** Shows a bundled or local image. It reserves its size so layout never jumps, and `priority`
258
+ * loads it ahead of other images. Use `alt=""` for decoration. */
259
259
  export function Image(props) {
260
260
  const preparation = useContext(ContentImageContext);
261
261
  if (!preparation)
@@ -335,7 +335,8 @@ function PreparedArtwork({ candidate, ...props }) {
335
335
  useLayoutEffect(() => accepted.images.commit(), [accepted]);
336
336
  return _jsx(Artwork, { ...props, ...accepted.source, admitted: admitted });
337
337
  }
338
- /** Remote artwork keeps its placeholder on failure and never blocks navigation. */
338
+ /** Loads an image from a URL. It keeps its placeholder if loading fails, never holds up
339
+ * navigation, and reports progress through `onPhaseChange`. */
339
340
  export function AsyncImage(props) {
340
341
  return _jsx(Artwork, { ...props, remote: true, "data-satin-async-image": "true" });
341
342
  }
@@ -1,4 +1,5 @@
1
- /** Produced by the Satin Vite plugin for imports ending in ?satin-image. */
1
+ /** A responsive image with its size, `srcSet` and a tiny placeholder. The Vite plugin produces
2
+ * one for each import ending in `?satin-image`. */
2
3
  export interface ImageAsset {
3
4
  readonly src: string;
4
5
  readonly width: number;
@@ -73,10 +73,9 @@ export declare function prepareKeyboardForNavigation(): void;
73
73
  export declare function dismissKeyboard(): void;
74
74
  export declare function installKeyboardAdapter(root: HTMLElement): () => void;
75
75
  /**
76
- * - `immediately`: a drag on the surface ends editing.
77
- * - `interactively`: scrolling keeps the keyboard; a drag that reaches the keyboard ends editing.
78
- * Native tracks the keyboard under the finger from there; WebKit's keyboard cannot follow a
79
- * finger, so it leaves on its own curve (the bottom inset chain follows it).
76
+ * When scrolling dismisses the keyboard: `never`; `immediately`, as soon as a drag on the surface
77
+ * starts; or `interactively`, when a drag reaches the keyboard. WebKit's keyboard cannot follow
78
+ * the finger, so it then slides away on its own curve and the bottom inset follows it.
80
79
  */
81
80
  export type ScrollDismissesKeyboardMode = 'never' | 'immediately' | 'interactively';
82
81
  export declare function installScrollKeyboardDismissal(surface: HTMLElement, mode: ScrollDismissesKeyboardMode): () => void;
@@ -1,4 +1,4 @@
1
- /** The keyboard overlap and viewport dimensions in points. */
1
+ /** How much the keyboard covers, whether it shows, and the viewport size, in points. */
2
2
  export type KeyboardGeometry = Readonly<{
3
3
  height: number;
4
4
  visible: boolean;
@@ -39,7 +39,8 @@ export type SectionProps = {
39
39
  footer?: ReactNode;
40
40
  className?: string;
41
41
  };
42
- /** Per-row list properties. Insets are in points. */
42
+ /** One row's content and its overrides: insets in points, background, separator, swipe actions,
43
+ * context menu and editing opt-outs. */
43
44
  export type ListRowProps = RowActionsProps & {
44
45
  children: ReactNode;
45
46
  listRowInsets?: number | {
@@ -50,22 +51,22 @@ export type ListRowProps = RowActionsProps & {
50
51
  };
51
52
  listRowBackground?: string;
52
53
  listRowSeparator?: 'visible' | 'hidden';
53
- /** `moveDisabled`: no reorder handle in edit mode. Other rows can still pass it. */
54
+ /** No reorder handle in edit mode. Other rows can still move past it. */
54
55
  moveDisabled?: boolean;
55
- /** `deleteDisabled`: no swipe-to-delete or delete control for this row. */
56
+ /** No swipe-to-delete or delete control for this row. */
56
57
  deleteDisabled?: boolean;
57
- /** `selectionDisabled`: the List selection skips this row. */
58
+ /** The List selection skips this row. */
58
59
  selectionDisabled?: boolean;
59
60
  };
60
61
  /**
61
- * Explicit framework overrides for a single row, including custom content.
62
+ * One row with custom content or per-row overrides.
62
63
  *
63
64
  * A ListRow is always one row. Several children share it side by side, laid out
64
65
  * as an HStack would (centred, 8 pt apart, a NavigationLink filling the rest);
65
66
  * each separate row needs its own ListRow.
66
67
  */
67
68
  export declare function ListRow({ children, listRowSeparator, listRowInsets, listRowBackground, }: ListRowProps): import("react").JSX.Element;
68
- /** `Section`: a group of rows in a `List` or `Form`, with an optional header and footer. */
69
+ /** A group of rows in a `List` or `Form`, with an optional header and footer. */
69
70
  export declare function Section({ children, header, footer, className, style }: SectionProps): import("react").JSX.Element;
70
71
  export type RowProps = RowActionsProps & {
71
72
  buttonProps?: Omit<PressableProps, 'children' | 'onPress'>;
@@ -109,7 +110,7 @@ export type Choice = {
109
110
  symbol?: SymbolName;
110
111
  /** The option's icon as a React node, for an icon that is not a symbol. */
111
112
  icon?: ReactNode;
112
- /** The icon's colour (its `foregroundStyle`). An option with a colour and no icon shows a
113
+ /** The icon's colour. An option with a colour and no icon shows a
113
114
  * filled circle in that colour, the usual way to offer a colour. */
114
115
  color?: string;
115
116
  /** The option shows dimmed and can't be chosen. */
@@ -131,7 +131,7 @@ function listRowStyle({ listRowInsets, listRowBackground, }) {
131
131
  };
132
132
  }
133
133
  /**
134
- * Explicit framework overrides for a single row, including custom content.
134
+ * One row with custom content or per-row overrides.
135
135
  *
136
136
  * A ListRow is always one row. Several children share it side by side, laid out
137
137
  * as an HStack would (centred, 8 pt apart, a NavigationLink filling the rest);
@@ -259,7 +259,7 @@ function ListItems({ children, section = false }) {
259
259
  return (_jsx("div", { ref: itemRef, style: style, ...attributes, children: child }, key));
260
260
  }) }));
261
261
  }
262
- /** `Section`: a group of rows in a `List` or `Form`, with an optional header and footer. */
262
+ /** A group of rows in a `List` or `Form`, with an optional header and footer. */
263
263
  export function Section({ children, header, footer, className, style }) {
264
264
  const headerId = useId();
265
265
  const rowsRef = useRef(null);
@@ -1,6 +1,6 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { RowActionsProps } from '../actions/types.js';
3
- /** `EditMode`: whether a screen's lists show their editing controls. */
3
+ /** Whether a screen's lists show their editing controls: `active` or `inactive`. */
4
4
  export type EditMode = 'inactive' | 'active';
5
5
  /** A row's identity in `List` selection: the `ForEach` id. */
6
6
  export type ListItemID = string | number;
@@ -12,8 +12,8 @@ export declare function EditModeScope({ children }: {
12
12
  children: ReactNode;
13
13
  }): import("react").JSX.Element;
14
14
  /**
15
- * `@Environment(\.editMode)`: this screen's edit mode and a setter. `EditButton` toggles
16
- * the same value, so a toolbar or bottom bar can follow it.
15
+ * Returns this screen's edit mode and a setter. `EditButton` toggles the same value, so a
16
+ * toolbar or bottom bar can follow it.
17
17
  *
18
18
  * @example
19
19
  * const [editMode] = useEditMode()
@@ -58,10 +58,9 @@ export type ForEachEditing = Readonly<Pick<ForEachProps<{
58
58
  id: ListItemID;
59
59
  }>, 'onDelete' | 'onMove'>>;
60
60
  /**
61
- * `ForEach`: one row per element of `data`, identified by its `id` (or `id` function). In a
61
+ * Makes one row per element of `data`, identified by its `id` (or an `id` function). In a
62
62
  * `List`, `onDelete` adds swipe-to-delete and the editing delete control; `onMove` adds the
63
- * reorder handle. Both receive offsets into `data`; apply them with `removing` and
64
- * `moving`.
63
+ * reorder handle. Both receive offsets into `data`; apply them with `removing` and `moving`.
65
64
  *
66
65
  * Put `ForEach` directly in a `List` or `Section`: the list reads it to know each row's identity.
67
66
  *
@@ -12,8 +12,8 @@ export function EditModeScope({ children }) {
12
12
  return _jsx(EditModeContext, { value: binding, children: children });
13
13
  }
14
14
  /**
15
- * `@Environment(\.editMode)`: this screen's edit mode and a setter. `EditButton` toggles
16
- * the same value, so a toolbar or bottom bar can follow it.
15
+ * Returns this screen's edit mode and a setter. `EditButton` toggles the same value, so a
16
+ * toolbar or bottom bar can follow it.
17
17
  *
18
18
  * @example
19
19
  * const [editMode] = useEditMode()
@@ -24,10 +24,9 @@ export function useEditMode() {
24
24
  }
25
25
  export const ListSelectionContext = createContext(null);
26
26
  /**
27
- * `ForEach`: one row per element of `data`, identified by its `id` (or `id` function). In a
27
+ * Makes one row per element of `data`, identified by its `id` (or an `id` function). In a
28
28
  * `List`, `onDelete` adds swipe-to-delete and the editing delete control; `onMove` adds the
29
- * reorder handle. Both receive offsets into `data`; apply them with `removing` and
30
- * `moving`.
29
+ * reorder handle. Both receive offsets into `data`; apply them with `removing` and `moving`.
31
30
  *
32
31
  * Put `ForEach` directly in a `List` or `Section`: the list reads it to know each row's identity.
33
32
  *
@@ -17,8 +17,8 @@ export declare function moving<T>(items: readonly T[], { fromOffsets, toOffset }
17
17
  toOffset: number;
18
18
  }): T[];
19
19
  /**
20
- * Swift `remove(atOffsets:)`, returning a new array without the elements at `offsets`. Pass it
21
- * exactly what `ForEach`'s `onDelete` reports.
20
+ * Returns a new array without the elements at `offsets`. Pass it exactly what `ForEach`'s
21
+ * `onDelete` reports.
22
22
  *
23
23
  * @example
24
24
  * <ForEach data={todos} onDelete={offsets => setTodos(todos => removing(todos, offsets))}>
@@ -22,8 +22,8 @@ export function moving(items, { fromOffsets, toOffset }) {
22
22
  return kept;
23
23
  }
24
24
  /**
25
- * Swift `remove(atOffsets:)`, returning a new array without the elements at `offsets`. Pass it
26
- * exactly what `ForEach`'s `onDelete` reports.
25
+ * Returns a new array without the elements at `offsets`. Pass it exactly what `ForEach`'s
26
+ * `onDelete` reports.
27
27
  *
28
28
  * @example
29
29
  * <ForEach data={todos} onDelete={offsets => setTodos(todos => removing(todos, offsets))}>
@@ -5,5 +5,6 @@ export declare function MediaPlayerRoot({ children, onActivityChange, }: {
5
5
  children: ReactNode;
6
6
  onActivityChange?: (active: boolean) => void;
7
7
  }): import("react").JSX.Element;
8
- /** Subscribe to the root-owned audio queue and system media commands. Video playback is not supported. */
8
+ /** Returns the app's audio player: its commands and its live state. The system's Lock Screen
9
+ * media controls drive the same player. Audio only; there is no video playback. */
9
10
  export declare function useMediaPlayer(): MediaPlayer;
@@ -17,7 +17,8 @@ export function MediaPlayerRoot({ children, onActivityChange, }) {
17
17
  }, [store]);
18
18
  return _jsx(MediaContext, { value: store, children: children });
19
19
  }
20
- /** Subscribe to the root-owned audio queue and system media commands. Video playback is not supported. */
20
+ /** Returns the app's audio player: its commands and its live state. The system's Lock Screen
21
+ * media controls drive the same player. Audio only; there is no video playback. */
21
22
  export function useMediaPlayer() {
22
23
  const store = useContext(MediaContext);
23
24
  if (!store)
@@ -1,4 +1,5 @@
1
- /** Each occurrence has its own entryId, including repeated songs. */
1
+ /** One item in the audio queue: its source URL, media id and display metadata. Each occurrence
2
+ * has its own `entryId`, so a repeated song appears twice. */
2
3
  export type MediaQueueEntry = Readonly<{
3
4
  entryId: string;
4
5
  mediaId: string;
@@ -22,7 +23,7 @@ export type MediaCommandResult = Readonly<{
22
23
  code: string;
23
24
  cause?: unknown;
24
25
  }>;
25
- /** The queue's repeat mode. */
26
+ /** The queue's repeat mode: `off`, `one` or `all`. */
26
27
  export type MediaRepeat = 'off' | 'one' | 'all';
27
28
  /** Everything the player shows: the queue, the current entry, status, position and modes. */
28
29
  export type MediaSnapshot = Readonly<{
@@ -60,7 +61,9 @@ export type MediaQueueOptions = Readonly<{
60
61
  position?: number;
61
62
  autoplay?: boolean;
62
63
  }>;
63
- /** Queue results acknowledge the transaction. Playback and seek results acknowledge observed completion. */
64
+ /** The audio player's commands: queue editing, transport, seek, repeat and shuffle. Queue
65
+ * commands resolve once the change is made; `play` and `seek` resolve once playback is seen to
66
+ * respond. */
64
67
  export interface MediaController {
65
68
  replaceQueue(entries: readonly MediaQueueEntry[], options?: MediaQueueOptions): Promise<MediaCommandResult>;
66
69
  play(): Promise<MediaCommandResult>;
@@ -1,12 +1,14 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { Transition } from './transition.js';
3
+ /** Whether the content is visible, the transition to use and the content. */
3
4
  export type TransitionViewProps = Readonly<{
4
5
  visible: boolean;
5
6
  transition?: Transition;
6
7
  children: ReactNode;
7
8
  }>;
8
- /** Keep this boundary mounted; change visible inside withAnimation. Removed content
9
- * stays mounted and inert until its exit finishes. Initial content does not animate.
9
+ /** Shows or hides its content with a transition when `visible` changes inside `withAnimation`.
10
+ * Keep the view itself mounted. Hidden content stays mounted and inert until its exit finishes,
11
+ * and the first render does not animate.
10
12
  * @experimental General transitions still require installed-device motion qualification.
11
13
  */
12
14
  export declare function TransitionView({ visible, transition, children, }: TransitionViewProps): import("react").JSX.Element;
@@ -22,8 +22,9 @@ function frame(pose) {
22
22
  opacity: Math.max(0, Math.min(1, pose.opacity)),
23
23
  };
24
24
  }
25
- /** Keep this boundary mounted; change visible inside withAnimation. Removed content
26
- * stays mounted and inert until its exit finishes. Initial content does not animate.
25
+ /** Shows or hides its content with a transition when `visible` changes inside `withAnimation`.
26
+ * Keep the view itself mounted. Hidden content stays mounted and inert until its exit finishes,
27
+ * and the first render does not animate.
27
28
  * @experimental General transitions still require installed-device motion qualification.
28
29
  */
29
30
  export function TransitionView({ visible, transition = Transition.opacity, children, }) {
@@ -4,7 +4,7 @@ declare const brand: unique symbol;
4
4
  export type Animation = Readonly<{
5
5
  [brand]: true;
6
6
  }>;
7
- /** Options for a spring defined by duration and bounce. */
7
+ /** A spring's duration in milliseconds and its bounce, for `Animation.spring`. */
8
8
  export type SpringOptions = Readonly<{
9
9
  /** The perceptual duration in milliseconds. Defaults to 500. */
10
10
  durationMs?: number;