{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/qq1FKxw0umTWpHB4Rr0j/5LaMcvwvZ8E79TxBGsE4/Shaders.js", "ssg:https://framerusercontent.com/modules/askoMqB5Ka4KF7nRT6SC/6FSseHu2mj9tGidgtYnI/GLUtils.js", "ssg:https://framerusercontent.com/modules/Bu1ZTmIXmYKL4eba45zu/S03WmYdgDRJeKeAWS3Xl/WebGL.js", "ssg:https://framerusercontent.com/modules/9ZWSjBKFoRoahsM8YwHk/HfPgiy6WgLsjDCz0SPVS/Shutters.js"],
  "sourcesContent": ["export const vertexShader=`\nuniform vec2 uMediaSize;\nuniform vec2 uPlaneSize;\nuniform vec2 uGridSize;\nuniform vec2 uCellIndex;\nuniform float uProgress;\nuniform float uPerspective;\nuniform float uOverlap;\nuniform int uEase; \nuniform bool uReverse; \nuniform int uDirection; // 0: Top, 1: Right, 2: Bottom, 3: Left, 4: TopLeft, 5: TopRight, 6: BottomLeft, 7: BottomRight\nvarying vec2 vUv;\nvarying float vVisibility;\nvarying float vMaskOpacity;\nvarying float vBrightness;\n\n\n// Easing function\nfloat easeFunction(float t) {\n    if (uEase == 0) { // Linear\n        return t;\n    } else if (uEase == 1) { // EaseInOut (Cubic)\n        return t < 0.5 ? 4.0 * t * t * t : 1.0 - pow(-2.0 * t + 2.0, 3.0) / 2.0;\n    } else if (uEase == 2) { // // EaseIn (Quad)\n        return t * t;\n    } else if (uEase == 3) { // EaseOut (Quad)\n        return 1.0 - (1.0 - t) * (1.0 - t);\n    } else if (uEase == 4) { // EaseOutBack\n        const float c1 = 1.70158;\n        const float c3 = c1 + 1.0;\n        return 1.0 + c3 * pow(t - 1.0, 3.0) + c1 * pow(t - 1.0, 2.0);\n    } else {\n        return t;\n    }\n}\n\nvoid main() {\n    vec2 ratio = uPlaneSize / uMediaSize;\n    float scale = max(ratio.x, ratio.y);\n    vec2 scaledMediaSize = uMediaSize * scale;\n    \n    // Calculate the size of each cell in UV space\n    vec2 cellSize = 1.0 / uGridSize;\n    \n    // Calculate the correct UV for this vertex within its cell\n    vec2 cellUv = uv * cellSize;\n    \n    // Offset the UV based on the cell's position in the grid\n    vec2 cellOffset = uCellIndex * cellSize;\n    \n    // Combine cell UV and offset\n    vUv = cellOffset + cellUv;\n    \n    // Adjust UV to center the media\n    vUv = (vUv - 0.5) * (uPlaneSize / scaledMediaSize) + 0.5;\n    \n    // Calculate the animation start based on direction\n    float animationStart;\n    \n    if (uDirection == 0) { // Top\n        animationStart = 1.0 - (uCellIndex.y / uGridSize.y);\n    } else if (uDirection == 1) { // Right\n        animationStart = uCellIndex.x / uGridSize.x;\n    } else if (uDirection == 2) { // Bottom\n        animationStart = uCellIndex.y / uGridSize.y;\n    } else if (uDirection == 3) { // Left\n        animationStart = 1.0 - (uCellIndex.x / uGridSize.x);\n    } else if (uDirection == 4) { // TopLeft\n        animationStart = (uCellIndex.x + uCellIndex.y) / (uGridSize.x + uGridSize.y);\n    } else if (uDirection == 5) { // TopRight\n        animationStart = ((uGridSize.x - 1.0 - uCellIndex.x) + uCellIndex.y) / (uGridSize.x + uGridSize.y);\n    } else if (uDirection == 6) { // BottomLeft\n        animationStart = (uCellIndex.x + (uGridSize.y - 1.0 - uCellIndex.y)) / (uGridSize.x + uGridSize.y);\n    } else { // BottomRight\n        animationStart = ((uGridSize.x - 1.0 - uCellIndex.x) + (uGridSize.y - 1.0 - uCellIndex.y)) / (uGridSize.x + uGridSize.y);\n    }\n    \n    // Adjust animation timing to ensure all cells finish when uProgress is 1\n    float animationDuration = uOverlap; // Increased duration to allow all cells to finish\n    float adjustedProgress = uProgress * (1.0 + animationDuration) - animationStart;\n    float localProgress = clamp(adjustedProgress / animationDuration, 0.0, 1.0);\n    \n    // Apply easing to the local progress\n    localProgress = easeFunction(localProgress);\n    \n    // Start with the original position\n    vec3 newPosition = position;\n    \n    // Calculate the center of the plane\n    float centerX = 0.0;\n    \n    // Determine if this vertex is on the left or right side\n    float side = sign(position.x - centerX);\n    \n    // Calculate row position (0 is top, 1 is bottom)\n    float rowPosition = (uGridSize.y - 1.0 - uCellIndex.y) / (uGridSize.y - 1.0);\n    \n    // Calculate distance from middle row (0 at middle, 1 at top/bottom)\n    float distanceFromMiddle = abs(rowPosition - 0.5) * 2.0;\n    \n    // Calculate the amount of horizontal movement\n    float horizontalOffset = mix(0.5, 0.0, localProgress) * side;\n    \n    // Apply the horizontal offset\n    newPosition.x = mix(centerX, position.x, localProgress) + horizontalOffset;\n    \n    float basePerspectiveStrengthL = uReverse ? uPerspective * 0.5 : uPerspective;\n    float basePerspectiveStrengthR = uReverse ? uPerspective : uPerspective * 0.5;\n\n    // Calculate vertical compression for the right side\n    if (side > 0.0) {\n        float perspectiveStrength = basePerspectiveStrengthR * (1.0 - distanceFromMiddle);\n        float verticalCompressionL = mix(perspectiveStrength, 0.0, localProgress);\n        newPosition.y *= uReverse ? (1.0 + verticalCompressionL) : (1.0 - verticalCompressionL);\n    }\n    \n    // Apply perspective and row-based offset effect to the left side\n    if (side < 0.0) {\n        // Adjust perspective strength based on row position\n        \n        float perspectiveStrength = basePerspectiveStrengthL * (1.0 - distanceFromMiddle);\n        float verticalCompressionR = uReverse ? mix(1.0 - perspectiveStrength, 1.0, localProgress) : mix(1.0 + perspectiveStrength, 1.0, localProgress);\n        newPosition.y *= verticalCompressionR;\n        \n        // Calculate row-based offset\n        float rowOffset = (rowPosition - 0.5) * (-150.0 * uPerspective); // Adjust the 0.5 to control the strength of the effect\n        \n        // Apply row-based offset\n        newPosition.y += rowOffset * (1.0 - localProgress);\n        \n        // Add a slight curve to enhance the perspective effect\n        float curve = sin(newPosition.y * 3.14159) * 0.1 * (1.0 - localProgress);\n        newPosition.x += curve * side;\n    }\n    \n    // Apply Z-axis movement\n    float zOffset = mix(0.5, 0.0, localProgress); // Adjust the 0.5 to control the initial z-offset\n    newPosition.z += zOffset;\n    \n    // Calculate mask opacity\n    float maskStart = uReverse ? 0.1 : 1.0;\n    float maskEnd = uReverse ? 1.0 : 0.1;\n    float horizontalGradient = mix(maskStart, maskEnd, uv.x);\n    vMaskOpacity = mix(horizontalGradient, 1.0, localProgress);\n    \n    // Calculate brightness\n    float minBrightness = 0.3; // Adjust this value to control the darkest point\n    vBrightness = mix(minBrightness, 1.0, localProgress);\n    \n    // Set visibility\n    vVisibility = step(0.01, localProgress);\n    \n    gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);\n}\n`;export const fragmentShader=`\nuniform sampler2D uTexture;\nvarying vec2 vUv;\nvarying float vVisibility;\nvarying float vMaskOpacity;\nvarying float vBrightness;\n\nvoid main() {\n    vec4 texColor = texture2D(uTexture, vUv);\n    \n    // Apply brightness\n    vec3 adjustedColor = texColor.rgb * vBrightness;\n    \n    // Apply mask opacity\n    float finalOpacity = texColor.a * vVisibility * vMaskOpacity;\n    \n    gl_FragColor = vec4(adjustedColor, finalOpacity);\n}\n`;\nexport const __FramerMetadata__ = {\"exports\":{\"fragmentShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"vertexShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Shaders.map", "import{useEffect,useCallback,useRef}from\"react\";import*as THREE from\"three\";export const useWebGLSetupGrid=(mountRef,{media,mediaSize,panelSize,vertexShader,fragmentShader,uniforms={},gridSize={rows:10,cols:10}})=>{const sceneRef=useRef(null);const rendererRef=useRef(null);const cameraRef=useRef(null);const materialsRef=useRef([]);const geometryRef=useRef(null);const resizeObserverRef=useRef(null);const renderScene=useCallback(()=>{if(rendererRef.current&&sceneRef.current&&cameraRef.current){rendererRef.current.render(sceneRef.current,cameraRef.current);}},[]);const handleResize=useCallback(()=>{if(!mountRef.current||!rendererRef.current||!cameraRef.current)return;const newWidth=mountRef.current.clientWidth;const newHeight=mountRef.current.clientHeight;cameraRef.current.left=newWidth/-2;cameraRef.current.right=newWidth/2;cameraRef.current.top=newHeight/2;cameraRef.current.bottom=newHeight/-2;cameraRef.current.updateProjectionMatrix();rendererRef.current.setSize(newWidth,newHeight);renderScene();},[renderScene]);const updatePixelRatio=useCallback(()=>{if(rendererRef.current){const pixelRatio=Math.min(window.devicePixelRatio,2);rendererRef.current.setPixelRatio(pixelRatio);renderScene();}},[renderScene]);useEffect(()=>{if(!mountRef.current)return;const containerWidth=mountRef.current.clientWidth;const containerHeight=mountRef.current.clientHeight;const scene=new THREE.Scene;const camera=new THREE.OrthographicCamera(containerWidth/-2,containerWidth/2,containerHeight/2,containerHeight/-2,.1,1e3);const renderer=new THREE.WebGLRenderer({alpha:true,antialias:false,powerPreference:\"high-performance\"});sceneRef.current=scene;cameraRef.current=camera;rendererRef.current=renderer;renderer.setSize(containerWidth,containerHeight);updatePixelRatio();renderer.setClearColor(0,0);mountRef.current.appendChild(renderer.domElement);camera.position.z=5;resizeObserverRef.current=new ResizeObserver(handleResize);resizeObserverRef.current.observe(mountRef.current);window.addEventListener(\"devicepixelratiochange\",updatePixelRatio);return()=>{if(resizeObserverRef.current){resizeObserverRef.current.disconnect();}window.removeEventListener(\"devicepixelratiochange\",updatePixelRatio);if(sceneRef.current){sceneRef.current.clear();}if(rendererRef.current){rendererRef.current.dispose();}if(geometryRef.current){geometryRef.current.dispose();}materialsRef.current.forEach(material=>{if(material)material.dispose();});if(mountRef.current&&rendererRef.current){mountRef.current.removeChild(rendererRef.current.domElement);}};},[mountRef,handleResize,updatePixelRatio]);useEffect(()=>{if(!media||!sceneRef.current||!cameraRef.current||!rendererRef.current)return;const{rows,cols}=gridSize;const cellWidth=panelSize.width/cols;const cellHeight=panelSize.height/rows;materialsRef.current=[];for(let i=0;i<rows;i++){for(let j=0;j<cols;j++){const material=new THREE.ShaderMaterial({uniforms:{uTexture:{value:media},uMediaSize:{value:new THREE.Vector2(mediaSize.width,mediaSize.height)},uPlaneSize:{value:new THREE.Vector2(panelSize.width,panelSize.height)},uGridSize:{value:new THREE.Vector2(cols,rows)},uCellIndex:{value:new THREE.Vector2(j,rows-1-i)},uProgress:{value:0},...uniforms},vertexShader,fragmentShader,transparent:true,blending:THREE.NormalBlending});materialsRef.current.push(material);const geometry=new THREE.PlaneGeometry(cellWidth,cellHeight);const plane=new THREE.Mesh(geometry,material);plane.position.set(j*cellWidth-panelSize.width/2+cellWidth/2,-(i*cellHeight-panelSize.height/2+cellHeight/2),0);sceneRef.current.add(plane);}}renderScene();return()=>{if(sceneRef.current){while(sceneRef.current.children.length>0){const object=sceneRef.current.children[0];sceneRef.current.remove(object);if(object.geometry)object.geometry.dispose();if(object.material)object.material.dispose();}}};},[media,mediaSize,panelSize,vertexShader,fragmentShader,uniforms,renderScene,gridSize]);return{sceneRef,rendererRef,cameraRef,materialsRef,geometryRef,renderScene};};\nexport const __FramerMetadata__ = {\"exports\":{\"useWebGLSetupGrid\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GLUtils.map", "import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useCallback}from\"react\";import{useMotionValue,useInView,useScroll,animate,useTransform,useAnimationFrame}from\"framer-motion\";import{useIsOnCanvas}from\"https://framer.com/m/framer/default-utils.js@^0.45.0\";import{vertexShader,fragmentShader}from\"https://framerusercontent.com/modules/qq1FKxw0umTWpHB4Rr0j/5LaMcvwvZ8E79TxBGsE4/Shaders.js\";import{useMediaLoader,usePanelSize}from\"https://framerusercontent.com/modules/XY6c75OfbrZTbomptgju/MYfuXlW0NrXgyiqngMs8/Utils.js\";import{useWebGLSetupGrid}from\"https://framerusercontent.com/modules/askoMqB5Ka4KF7nRT6SC/6FSseHu2mj9tGidgtYnI/GLUtils.js\";export const WebGL=({mediaType,src,loop,transition,grid,direction,overlap,perspective,sizeType,setScale,setRatio,animateProp,onLoad})=>{const isOnCanvas=useIsOnCanvas();const mountRef=useRef(null);const{media,mediaSize,mediaLoaded,handleVideoPlayback}=useMediaLoader(mediaType,src,loop,onLoad);const{panelSize,updatePanelSize}=usePanelSize(mountRef,sizeType,mediaSize,setScale,setRatio);const{sceneRef,rendererRef,cameraRef,materialsRef,geometryRef}=useWebGLSetupGrid(mountRef,{media,mediaSize,panelSize,vertexShader,fragmentShader,uniforms:{uProgress:{value:.425},uDirection:{value:direction},uOverlap:{value:overlap},uPerspective:{value:perspective},uEase:{value:grid.ease},uReverse:{value:grid.reverse}},gridSize:{rows:grid.row,cols:grid.column}});// \u52A8\u753B\u5904\u7406\nconst inView=useInView(animateProp.trigger===\"section\"&&animateProp.section?animateProp.section:mountRef,{once:!animateProp.replay,amount:animateProp.amount});const{scrollYProgress}=useScroll({target:animateProp.trigger===\"section\"&&animateProp.section?animateProp.section:mountRef,layoutEffect:false,offset:animateProp.viewport===\"top\"?[\"start end\",\"end end\"]:animateProp.viewport===\"bottom\"?[\"end end\",\"end start\"]:[\"start center\",\"end center\"]});const progressValue=useMotionValue(0);const animateValues=useCallback(progress=>{animate(progressValue,progress,{...transition,restDelta:1e-5,restSpeed:1e-5});},[progressValue]);useEffect(()=>{const{type,target,progress}=animateProp;const isInView=type===\"appear\"||type===\"enter\"&&inView;if(!animateProp.enable){progressValue.set(0);return;}if(!mediaLoaded||!sceneRef||!rendererRef||!cameraRef||!materialsRef||!geometryRef)return;if(target){animateValues(isInView?progress:0);}else{animateValues(isInView?1:0);}},[mediaLoaded,animateProp,inView,animateValues]);const transformedProgressValue=useTransform(scrollYProgress,[0,1],[0,1]);// \u5904\u7406\u89C6\u9891\u64AD\u653E\nuseEffect(()=>{if(mediaType===\"video\"&&mediaLoaded){const shouldPlay=animateProp.type===\"appear\"||animateProp.type===\"enter\"&&inView||animateProp.type===\"transform\"&&inView;handleVideoPlayback(shouldPlay);}},[mediaType,mediaLoaded,animateProp,inView,handleVideoPlayback]);// \u52A8\u753B\u5E27\u66F4\u65B0\nuseAnimationFrame(t=>{if(!materialsRef.current||!cameraRef.current||isOnCanvas)return;const progress=animateProp.type===\"transform\"?transformedProgressValue.get():progressValue.get();materialsRef.current.forEach(material=>{const uniforms=material.uniforms;uniforms.uProgress.value=progress;if(mediaType===\"video\"&&media){uniforms.uTexture.value.needsUpdate=true;}});rendererRef.current.render(sceneRef.current,cameraRef.current);});return /*#__PURE__*/_jsx(\"div\",{ref:mountRef,style:{display:\"flex\",width:\"100%\",height:\"100%\",justifyContent:\"center\",alignItems:\"center\",overflow:\"hidden\"}});};\nexport const __FramerMetadata__ = {\"exports\":{\"WebGL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WebGL.map", "import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{WebGL}from\"https://framerusercontent.com/modules/Bu1ZTmIXmYKL4eba45zu/S03WmYdgDRJeKeAWS3Xl/WebGL.js\";import{containerStyle,webGLContainerStyle,hiddenStyle}from\"https://framerusercontent.com/modules/B8C86sFFn4z8EDjUM2Eg/AelGYgnKW8ZE2Ndfdkc4/Styles.js\";import{useMediaSource,universalPropertyControls}from\"https://framerusercontent.com/modules/XY6c75OfbrZTbomptgju/MYfuXlW0NrXgyiqngMs8/Utils.js\";/**\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 800\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function Shutters(props){const{media,file,upImage,urlVideo,upVideo,loop,size,gird,distortion,direction,overlap,ease,perspective,animateProp,transition,onLoad}=props;const{mediaSrc,imageAlt}=useMediaSource(media,file,upImage,urlVideo,upVideo);return /*#__PURE__*/_jsxs(\"figure\",{style:containerStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:webGLContainerStyle,\"aria-label\":imageAlt,role:\"img\",children:/*#__PURE__*/_jsx(WebGL,{mediaType:media,src:mediaSrc,loop:loop,transition:transition,sizeType:size.type,setScale:size.scale,setRatio:size.ratio,animateProp:animateProp,onLoad:onLoad,grid:gird,direction:direction,overlap:overlap,perspective:perspective,ease:ease})}),/*#__PURE__*/_jsx(\"figcaption\",{style:hiddenStyle,children:imageAlt})]});}Shutters.displayName=\"Shutters\";addPropertyControls(Shutters,{...universalPropertyControls.media,...universalPropertyControls.size,gird:{type:ControlType.Object,title:\"Blade\",controls:{column:{type:ControlType.Number,title:\"Columns\",displayStepper:true,step:1,max:100,min:0,defaultValue:10},row:{type:ControlType.Number,title:\"Rows\",displayStepper:true,step:1,max:100,min:0,defaultValue:10},reverse:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:false},ease:{type:ControlType.Enum,title:\"Ease\",options:[0,1,2,3,4],optionTitles:[\"Linear\",\"EaseInOut\",\"EaseIn\",\"EaseOut\",\"EaseOutBack\"],defaultValue:1}}},direction:{type:ControlType.Enum,title:\"Direction\",options:[6,7,4,5],optionTitles:[\"TopLeft\",\"TopRight\",\"BottomLeft\",\"BottomRight\"],defaultValue:6},overlap:{type:ControlType.Number,title:\"Overlap\",displayStepper:true,step:.05,max:1,min:0,defaultValue:.15},perspective:{type:ControlType.Number,title:\"Perspective\",displayStepper:true,step:.1,max:1,min:0,defaultValue:.3},animateProp:{type:ControlType.Object,title:\"Animate\",controls:{...universalPropertyControls.animateControls,fadeIn:{type:ControlType.Boolean,title:\"Fade In\",defaultValue:true},target:{type:ControlType.Boolean,title:\"Target Mode\",defaultValue:false,hidden(props){if(!props.enable){return true;}return props.type!==\"enter\"&&props.type!==\"appear\";}},progress:{type:ControlType.Number,title:\"Distortion\",displayStepper:true,step:.1,max:1,min:0,defaultValue:0,description:\"Progress of animating Distortion to 0.\",hidden(props){if(!props.enable||props.target===false){return true;}return props.type!==\"enter\"&&props.type!==\"appear\";}}}},transition:{type:ControlType.Transition,title:\"Transition\",description:\"Learn more on [Reveals](https://reveals.cool).\",defaultValue:{ease:[0,0,1,1],duration:4}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Shutters\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"800\",\"framerIntrinsicWidth\":\"600\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Shutters.map"],
  "mappings": "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",
  "names": ["vertexShader", "fragmentShader", "useWebGLSetupGrid", "mountRef", "media", "mediaSize", "panelSize", "vertexShader", "fragmentShader", "uniforms", "gridSize", "sceneRef", "pe", "rendererRef", "cameraRef", "materialsRef", "geometryRef", "resizeObserverRef", "renderScene", "te", "handleResize", "newWidth", "newHeight", "updatePixelRatio", "pixelRatio", "window", "ue", "containerWidth", "containerHeight", "scene", "Scene", "camera", "OrthographicCamera", "renderer", "WebGLRenderer", "material", "rows", "cols", "cellWidth", "cellHeight", "j", "ShaderMaterial", "Vector2", "y", "geometry", "PlaneGeometry", "plane", "Mesh", "object", "WebGL", "mediaType", "src", "loop", "transition", "grid", "direction", "overlap", "perspective", "sizeType", "setScale", "setRatio", "animateProp", "onLoad", "isOnCanvas", "useIsOnCanvas", "mountRef", "pe", "media", "mediaSize", "mediaLoaded", "handleVideoPlayback", "useMediaLoader", "panelSize", "updatePanelSize", "usePanelSize", "sceneRef", "rendererRef", "cameraRef", "materialsRef", "geometryRef", "useWebGLSetupGrid", "vertexShader", "fragmentShader", "inView", "useInView", "scrollYProgress", "useScroll", "progressValue", "useMotionValue", "animateValues", "te", "progress", "animate", "ue", "type", "target", "isInView", "transformedProgressValue", "useTransform", "shouldPlay", "useAnimationFrame", "t", "material", "uniforms", "p", "Shutters", "props", "media", "file", "upImage", "urlVideo", "upVideo", "loop", "size", "gird", "distortion", "direction", "overlap", "ease", "perspective", "animateProp", "transition", "onLoad", "mediaSrc", "imageAlt", "useMediaSource", "u", "containerStyle", "p", "webGLContainerStyle", "WebGL", "hiddenStyle", "addPropertyControls", "universalPropertyControls", "ControlType"]
}
