@razorpay/blade 12.95.0 → 12.95.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/native/components/Card/Card.js +1 -1
- package/build/lib/native/components/Card/Card.js.map +1 -1
- package/build/lib/native/components/Input/BaseInput/baseInputStyles.js +1 -1
- package/build/lib/native/components/Input/BaseInput/baseInputStyles.js.map +1 -1
- package/build/lib/native/components/Spark/RazorSenseGradient/shader.js +10 -3
- package/build/lib/native/components/Spark/RazorSenseGradient/shader.js.map +1 -1
- package/build/lib/native/components/Spark/RzpGlass/RzpGlass.js +5 -4
- package/build/lib/native/components/Spark/RzpGlass/RzpGlass.js.map +1 -1
- package/build/lib/native/components/Spark/RzpGlass/RzpGlassMount.js +2 -1
- package/build/lib/native/components/Spark/RzpGlass/RzpGlassMount.js.map +1 -1
- package/build/lib/native/components/Spark/RzpGlass/rzpGlassShader.js +8 -5
- package/build/lib/native/components/Spark/RzpGlass/rzpGlassShader.js.map +1 -1
- package/build/lib/native/components/Spark/RzpGlass/utils.js +4 -2
- package/build/lib/native/components/Spark/RzpGlass/utils.js.map +1 -1
- package/build/lib/web/development/components/Card/Card.js +7 -1
- package/build/lib/web/development/components/Card/Card.js.map +1 -1
- package/build/lib/web/development/components/Dropdown/DropdownOverlay.web.js +0 -1
- package/build/lib/web/development/components/Dropdown/DropdownOverlay.web.js.map +1 -1
- package/build/lib/web/development/components/Input/BaseInput/baseInputStyles.js +1 -0
- package/build/lib/web/development/components/Input/BaseInput/baseInputStyles.js.map +1 -1
- package/build/lib/web/development/components/Modal/Modal.web.js +31 -28
- package/build/lib/web/development/components/Modal/Modal.web.js.map +1 -1
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavItem.web.js +1 -1
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavItem.web.js.map +1 -1
- package/build/lib/web/development/components/Spark/RazorSenseGradient/shader.js +1 -1
- package/build/lib/web/development/components/Spark/RazorSenseGradient/shader.js.map +1 -1
- package/build/lib/web/development/components/Spark/RzpGlass/RzpGlass.js +14 -103
- package/build/lib/web/development/components/Spark/RzpGlass/RzpGlass.js.map +1 -1
- package/build/lib/web/development/components/Spark/RzpGlass/RzpGlassMount.js +8 -6
- package/build/lib/web/development/components/Spark/RzpGlass/RzpGlassMount.js.map +1 -1
- package/build/lib/web/development/components/Spark/RzpGlass/rzpGlassShader.js +1 -1
- package/build/lib/web/development/components/Spark/RzpGlass/rzpGlassShader.js.map +1 -1
- package/build/lib/web/development/components/Spark/RzpGlass/utils.js +68 -1
- package/build/lib/web/development/components/Spark/RzpGlass/utils.js.map +1 -1
- package/build/lib/web/development/components/TopNav/TabNav/TabNavItem.web.js +3 -2
- package/build/lib/web/development/components/TopNav/TabNav/TabNavItem.web.js.map +1 -1
- package/build/lib/web/production/_virtual/flatten.js +1 -1
- package/build/lib/web/production/_virtual/flatten3.js +1 -1
- package/build/lib/web/production/components/Card/Card.js +7 -1
- package/build/lib/web/production/components/Card/Card.js.map +1 -1
- package/build/lib/web/production/components/Dropdown/DropdownOverlay.web.js +0 -1
- package/build/lib/web/production/components/Dropdown/DropdownOverlay.web.js.map +1 -1
- package/build/lib/web/production/components/Input/BaseInput/baseInputStyles.js +1 -0
- package/build/lib/web/production/components/Input/BaseInput/baseInputStyles.js.map +1 -1
- package/build/lib/web/production/components/Modal/Modal.web.js +31 -28
- package/build/lib/web/production/components/Modal/Modal.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavItem.web.js +1 -1
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavItem.web.js.map +1 -1
- package/build/lib/web/production/components/Spark/RazorSenseGradient/shader.js +1 -1
- package/build/lib/web/production/components/Spark/RazorSenseGradient/shader.js.map +1 -1
- package/build/lib/web/production/components/Spark/RzpGlass/RzpGlass.js +14 -103
- package/build/lib/web/production/components/Spark/RzpGlass/RzpGlass.js.map +1 -1
- package/build/lib/web/production/components/Spark/RzpGlass/RzpGlassMount.js +8 -6
- package/build/lib/web/production/components/Spark/RzpGlass/RzpGlassMount.js.map +1 -1
- package/build/lib/web/production/components/Spark/RzpGlass/rzpGlassShader.js +1 -1
- package/build/lib/web/production/components/Spark/RzpGlass/rzpGlassShader.js.map +1 -1
- package/build/lib/web/production/components/Spark/RzpGlass/utils.js +68 -1
- package/build/lib/web/production/components/Spark/RzpGlass/utils.js.map +1 -1
- package/build/lib/web/production/components/TopNav/TabNav/TabNavItem.web.js +3 -2
- package/build/lib/web/production/components/TopNav/TabNav/TabNavItem.web.js.map +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/array/flatten.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
- package/build/types/components/index.d.ts +40 -0
- package/build/types/components/index.native.d.ts +39 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RzpGlass.js","sources":["../../../../../../../src/components/Spark/RzpGlass/RzpGlass.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable @typescript-eslint/no-implicit-any-catch */\n/* eslint-disable @typescript-eslint/no-shadow */\n/**\n * RzpGlass React Component\n *\n * A React wrapper for the RzpGlassMount WebGL shader effect.\n * Manages the component lifecycle with useEffect hooks.\n *\n * @example\n * ```tsx\n * // Uses default assets and config\n * <RzpGlass width=\"400px\" height=\"300px\" />\n *\n * // With custom assets\n * <RzpGlass\n * videoSrc=\"/custom_video.mp4\"\n * gradientMapSrc=\"/custom-gradient.jpg\"\n * enableBloom={true}\n * />\n * ```\n */\n\nimport { forwardRef, useEffect, useRef, useState, useCallback } from 'react';\nimport { RzpGlassMount } from './RzpGlassMount';\nimport type {\n RzpGlassProps,\n RzpGlassConfig,\n RzpGlassAssets,\n RzpGlassPresetDefinition,\n} from './types';\nimport { getPresets } from './presets';\nimport type { RzpGlassPreset } from './presets';\n\n// Duration of the component's built-in fade-in transition.\n// The video is kept paused during this window so one-shot animations\n// (e.g. circleSlideUp) don't \"waste\" frames while the canvas is invisible.\nconst FADE_IN_MS = 200;\n\nconst DEFAULT_CDN_PATH = 'https://cdn.jsdelivr.net/npm/@razorpay/blade/assets/spark';\n\nconst getDefaultAssets = (assetsPath: string): Required<RzpGlassAssets> => ({\n videoSrc: `${assetsPath}/spark-base-video.mp4`,\n imageSrc: `${assetsPath}/bottom-frame.jpg`,\n gradientMapSrc: `${assetsPath}/colorama-gradient-map-green.jpg`,\n gradientMap2Src: `${assetsPath}/colorama-gradient-map-blue.jpg`,\n centerGradientMapSrc: `${assetsPath}/colorama-center-gradient-map.jpg`,\n});\n\n/**\n * Hook to merge multiple refs into one\n */\nfunction useMergeRefs<T>(refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> {\n return useCallback(\n (value: T) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n },\n [refs],\n );\n}\n\n/**\n * Extract config from props (exclude non-config props).\n * Strips undefined values so they don't clobber preset defaults.\n */\nfunction extractConfig(props: RzpGlassProps): Partial<RzpGlassConfig> {\n const {\n width: _width,\n height: _height,\n className: _className,\n style: _style,\n onLoad: _onLoad,\n onError: _onError,\n preset: _preset,\n assetsPath: _assetsPath,\n gradientMapSrc: _gradientMapSrc,\n gradientMap2Src: _gradientMap2Src,\n gradientMapCanvas: _gradientMapCanvas,\n imageSrc: _imageSrc,\n ...config\n } = props;\n\n // Drop keys with undefined values so preset config isn't overridden by unset props\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n Object.entries(config).filter(([, v]) => v !== undefined),\n ) as Partial<RzpGlassConfig>;\n}\n\nconst ASSET_KEYS = new Set<string>([\n 'videoSrc',\n 'imageSrc',\n 'gradientMapSrc',\n 'gradientMap2Src',\n 'centerGradientMapSrc',\n]);\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return */\nfunction getPresetDefinition(\n preset: RzpGlassPreset | undefined,\n assetsPath: string,\n): RzpGlassPresetDefinition {\n const presets = getPresets(assetsPath);\n if (preset && preset in presets) return { ...presets[preset] };\n return {};\n}\n\nfunction getPresetConfig(\n preset: RzpGlassPreset | undefined,\n assetsPath: string,\n): Partial<RzpGlassConfig> {\n const def = getPresetDefinition(preset, assetsPath) as Record<string, unknown>;\n return Object.fromEntries(\n Object.entries(def).filter(([k]) => !ASSET_KEYS.has(k)),\n ) as Partial<RzpGlassConfig>;\n}\n\nfunction getPresetAssets(\n preset: RzpGlassPreset | undefined,\n assetsPath: string,\n): Partial<RzpGlassAssets> {\n const def = getPresetDefinition(preset, assetsPath) as Record<string, unknown>;\n return Object.fromEntries(\n Object.entries(def).filter(([k]) => ASSET_KEYS.has(k)),\n ) as Partial<RzpGlassAssets>;\n}\n\n/**\n * Merge preset config with user-provided config.\n * Preset values are used as base; any explicit prop overrides them.\n */\nfunction resolveConfig(props: RzpGlassProps, assetsPath: string): Partial<RzpGlassConfig> {\n return {\n ...getPresetConfig(props.preset, assetsPath),\n ...extractConfig(props),\n };\n}\n\nexport const RzpGlass = forwardRef<HTMLDivElement, RzpGlassProps>(function RzpGlass(\n props,\n forwardedRef,\n) {\n const {\n width = '100%',\n height = '100%',\n className,\n style,\n onLoad,\n onError,\n assetsPath: assetsPathProp,\n gradientMapCanvas,\n gradientMapSrc: gradientMapSrcProp,\n gradientMap2Src: gradientMap2SrcProp,\n imageSrc: imageSrcProp,\n ...configProps\n } = props;\n\n // Get default assets based on assetsPath\n const assetsPath: string = assetsPathProp ?? DEFAULT_CDN_PATH;\n const defaultAssets = getDefaultAssets(assetsPath);\n\n // Resolve assets: prop overrides preset, preset overrides default\n const presetAssets = getPresetAssets(props.preset, assetsPath);\n const imageSrc = imageSrcProp ?? presetAssets.imageSrc;\n const videoSrc = imageSrc ? undefined : presetAssets.videoSrc ?? defaultAssets.videoSrc;\n const gradientMapSrc =\n gradientMapSrcProp ?? presetAssets.gradientMapSrc ?? defaultAssets.gradientMapSrc;\n const gradientMap2Src =\n gradientMap2SrcProp ?? presetAssets.gradientMap2Src ?? defaultAssets.gradientMap2Src;\n const centerGradientMapSrc =\n presetAssets.centerGradientMapSrc ?? defaultAssets.centerGradientMapSrc;\n\n const [isInitialized, setIsInitialized] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const divRef = useRef<HTMLDivElement>(null);\n const mountRef = useRef<RzpGlassMount | null>(null);\n\n // Initialize on mount\n useEffect(() => {\n const init = async () => {\n if (!divRef.current || mountRef.current) return;\n\n try {\n const config = resolveConfig(props, assetsPath);\n\n mountRef.current = new RzpGlassMount(\n divRef.current,\n {\n videoSrc,\n imageSrc,\n gradientMapSrc,\n gradientMap2Src,\n centerGradientMapSrc,\n },\n config,\n );\n\n await mountRef.current.loadAssets();\n\n // Pause the video during the CSS fade-in so one-shot animations\n // don't burn frames while the component is still transparent.\n // Only do this when the consumer hasn't explicitly set paused: true.\n const userWantsPaused = config.paused ?? false;\n if (!userWantsPaused) {\n mountRef.current.pause();\n }\n\n setIsInitialized(true); // kicks off the CSS opacity 0 → 1 transition\n\n // After the fade-in completes, resume video and notify the consumer.\n setTimeout(() => {\n if (!mountRef.current) return;\n if (!userWantsPaused) {\n mountRef.current.play();\n }\n onLoad?.();\n }, FADE_IN_MS);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n onError?.(error);\n }\n };\n\n void init();\n\n return () => {\n mountRef.current?.dispose();\n mountRef.current = null;\n setIsInitialized(false);\n };\n }, [\n assetsPath,\n videoSrc,\n imageSrc,\n gradientMapSrc,\n gradientMap2Src,\n centerGradientMapSrc,\n configProps.preset,\n ]);\n\n // Update uniforms when config props change\n useEffect(() => {\n if (isInitialized && mountRef.current) {\n const config = resolveConfig(props, assetsPath);\n mountRef.current.setUniforms(config);\n }\n }, [\n isInitialized,\n configProps.preset,\n // Colorama\n configProps.inputMin,\n configProps.inputMax,\n configProps.modifyGamma,\n configProps.posterizeLevels,\n configProps.cycleRepetitions,\n configProps.phaseShift,\n configProps.cycleSpeed,\n configProps.wrapMode,\n configProps.reverse,\n configProps.blendWithOriginal,\n // Displacement\n configProps.numSegments,\n configProps.slitAngle,\n configProps.displacementX,\n configProps.displacementY,\n // Center element\n configProps.enableCenterElement,\n configProps.centerAnimDuration,\n // Color correction\n configProps.ccBlackPoint,\n configProps.ccWhitePoint,\n configProps.ccMidtoneGamma,\n configProps.ccGamma,\n configProps.ccContrast,\n // Zoom & Pan\n configProps.zoom,\n configProps.panX,\n configProps.panY,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...(configProps.edgeFeather ?? [0, 0, 0, 0]),\n // Effect toggles\n configProps.enableDisplacement,\n configProps.enableColorama,\n configProps.enableBloom,\n configProps.enableLightSweep,\n // Light\n configProps.lightIntensity,\n configProps.lightStartFrame,\n // Playback\n configProps.paused,\n configProps.startTime,\n configProps.endTime,\n configProps.animateLightIndependently,\n // Cycle animation\n configProps.animateCycleReps,\n configProps.cycleRepetitionsStart,\n configProps.cycleRepetitionsEnd,\n configProps.cycleRepetitionsStartFrame,\n configProps.cycleRepetitionsDuration,\n // Gradient map blend\n configProps.gradientMapBlend,\n configProps.gradientMapBlendDuration,\n ]);\n\n // Update gradient map texture when a canvas is provided\n useEffect(() => {\n if (isInitialized && mountRef.current && gradientMapCanvas) {\n mountRef.current.updateGradientMapTexture(gradientMapCanvas);\n }\n }, [isInitialized, gradientMapCanvas]);\n\n const mergedRef = useMergeRefs([divRef, forwardedRef]);\n\n // Convert width/height to string if number\n const widthStyle = typeof width === 'number' ? `${width}px` : width;\n const heightStyle = typeof height === 'number' ? `${height}px` : height;\n\n if (error) {\n return (\n <div\n ref={mergedRef}\n className={className}\n style={{\n width: widthStyle,\n height: heightStyle,\n ...style,\n }}\n />\n );\n }\n\n return (\n <div\n ref={mergedRef}\n className={className}\n style={{\n width: widthStyle,\n height: heightStyle,\n position: 'relative',\n overflow: 'hidden',\n backgroundColor: 'transparent',\n transition: '2s opacity',\n ...(isInitialized ? { opacity: 1 } : { opacity: 0 }),\n ...style,\n }}\n />\n );\n});\n\nexport default RzpGlass;\n"],"names":["FADE_IN_MS","DEFAULT_CDN_PATH","getDefaultAssets","assetsPath","videoSrc","concat","imageSrc","gradientMapSrc","gradientMap2Src","centerGradientMapSrc","useMergeRefs","refs","useCallback","value","forEach","ref","current","extractConfig","props","_width","width","_height","height","_className","className","_style","style","_onLoad","onLoad","_onError","onError","_preset","preset","_assetsPath","_gradientMapSrc","_gradientMap2Src","_gradientMapCanvas","gradientMapCanvas","_imageSrc","config","_objectWithoutProperties","_excluded","Object","fromEntries","entries","filter","_ref","_ref2","_slicedToArray","v","undefined","ASSET_KEYS","Set","getPresetDefinition","presets","getPresets","_objectSpread","getPresetConfig","def","_ref3","_ref4","k","has","getPresetAssets","_ref5","_ref6","resolveConfig","RzpGlass","forwardRef","forwardedRef","_presetAssets$videoSr","_ref7","_ref8","_presetAssets$centerG","_configProps$edgeFeat","_props$width","_props$height","assetsPathProp","gradientMapSrcProp","gradientMap2SrcProp","imageSrcProp","configProps","_excluded2","defaultAssets","presetAssets","_useState","useState","_useState2","isInitialized","setIsInitialized","_useState3","_useState4","error","setError","divRef","useRef","mountRef","useEffect","init","_ref9","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_config$paused","userWantsPaused","_error","_t","wrap","_context","prev","next","abrupt","RzpGlassMount","loadAssets","paused","pause","setTimeout","play","Error","String","stop","apply","arguments","_mountRef$current","dispose","setUniforms","inputMin","inputMax","modifyGamma","posterizeLevels","cycleRepetitions","phaseShift","cycleSpeed","wrapMode","reverse","blendWithOriginal","numSegments","slitAngle","displacementX","displacementY","enableCenterElement","centerAnimDuration","ccBlackPoint","ccWhitePoint","ccMidtoneGamma","ccGamma","ccContrast","zoom","panX","panY","_toConsumableArray","edgeFeather","enableDisplacement","enableColorama","enableBloom","enableLightSweep","lightIntensity","lightStartFrame","startTime","endTime","animateLightIndependently","animateCycleReps","cycleRepetitionsStart","cycleRepetitionsEnd","cycleRepetitionsStartFrame","cycleRepetitionsDuration","gradientMapBlend","gradientMapBlendDuration","updateGradientMapTexture","mergedRef","widthStyle","heightStyle","_jsx","position","overflow","backgroundColor","transition","opacity"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RzpGlass.js","sources":["../../../../../../../src/components/Spark/RzpGlass/RzpGlass.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable @typescript-eslint/no-implicit-any-catch */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport { forwardRef, useEffect, useRef, useState } from 'react';\nimport { RzpGlassMount } from './RzpGlassMount';\nimport type { RzpGlassProps } from './types';\nimport { DEFAULT_CDN_PATH, getDefaultAssets, getPresetAssets, resolveConfig } from './utils';\nimport { useMergeRefs } from '~utils/useMergeRefs';\n\n// Duration of the component's built-in fade-in transition.\n// The video is kept paused during this window so one-shot animations\n// (e.g. circleSlideUp) don't \"waste\" frames while the canvas is invisible.\nconst FADE_IN_MS = 200;\n\nconst RzpGlass = forwardRef<HTMLDivElement, RzpGlassProps>(function RzpGlass(props, forwardedRef) {\n const {\n width = '100%',\n height = '100%',\n className,\n style,\n onLoad,\n onError,\n assetsPath: assetsPathProp,\n gradientMapCanvas,\n gradientMapSrc: gradientMapSrcProp,\n gradientMap2Src: gradientMap2SrcProp,\n imageSrc: imageSrcProp,\n ...configProps\n } = props;\n\n // Get default assets based on assetsPath\n const assetsPath: string = assetsPathProp ?? DEFAULT_CDN_PATH;\n const defaultAssets = getDefaultAssets(assetsPath);\n\n // Resolve assets: prop overrides preset, preset overrides default\n const presetAssets = getPresetAssets(props.preset, assetsPath);\n const imageSrc = imageSrcProp ?? presetAssets.imageSrc;\n const videoSrc = imageSrc ? undefined : presetAssets.videoSrc ?? defaultAssets.videoSrc;\n const gradientMapSrc =\n gradientMapSrcProp ?? presetAssets.gradientMapSrc ?? defaultAssets.gradientMapSrc;\n const gradientMap2Src =\n gradientMap2SrcProp ?? presetAssets.gradientMap2Src ?? defaultAssets.gradientMap2Src;\n const centerGradientMapSrc =\n presetAssets.centerGradientMapSrc ?? defaultAssets.centerGradientMapSrc;\n\n const [isInitialized, setIsInitialized] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const divRef = useRef<HTMLDivElement>(null);\n const mountRef = useRef<RzpGlassMount | null>(null);\n\n // Initialize on mount\n useEffect(() => {\n const init = async () => {\n if (!divRef.current || mountRef.current) return;\n\n try {\n const config = resolveConfig(props, assetsPath);\n\n mountRef.current = new RzpGlassMount(\n divRef.current,\n {\n videoSrc,\n imageSrc,\n gradientMapSrc,\n gradientMap2Src,\n centerGradientMapSrc,\n },\n config,\n );\n\n await mountRef.current.loadAssets();\n\n // Pause the video during the CSS fade-in so one-shot animations\n // don't burn frames while the component is still transparent.\n // Only do this when the consumer hasn't explicitly set paused: true.\n const userWantsPaused = config.paused ?? false;\n if (!userWantsPaused) {\n mountRef.current.pause();\n }\n\n setIsInitialized(true); // kicks off the CSS opacity 0 → 1 transition\n\n // After the fade-in completes, resume video and notify the consumer.\n setTimeout(() => {\n if (!mountRef.current) return;\n if (!userWantsPaused) {\n mountRef.current.play();\n }\n onLoad?.();\n }, FADE_IN_MS);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n onError?.(error);\n }\n };\n\n void init();\n\n return () => {\n mountRef.current?.dispose();\n mountRef.current = null;\n setIsInitialized(false);\n };\n }, [assetsPath, videoSrc, imageSrc, gradientMapSrc, gradientMap2Src, centerGradientMapSrc, configProps.preset]);\n\n // Update uniforms when config props change\n useEffect(() => {\n if (isInitialized && mountRef.current) {\n const config = resolveConfig(props, assetsPath);\n mountRef.current.setUniforms(config);\n }\n }, [\n isInitialized,\n configProps.preset,\n // Colorama\n configProps.inputMin,\n configProps.inputMax,\n configProps.modifyGamma,\n configProps.posterizeLevels,\n configProps.cycleRepetitions,\n configProps.phaseShift,\n configProps.cycleSpeed,\n configProps.wrapMode,\n configProps.reverse,\n configProps.blendWithOriginal,\n // Displacement\n configProps.numSegments,\n configProps.slitAngle,\n configProps.displacementX,\n configProps.displacementY,\n // Center element\n configProps.enableCenterElement,\n configProps.centerAnimDuration,\n // Color correction\n configProps.ccBlackPoint,\n configProps.ccWhitePoint,\n configProps.ccMidtoneGamma,\n configProps.ccGamma,\n configProps.ccContrast,\n // Zoom & Pan\n configProps.zoom,\n configProps.panX,\n configProps.panY,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...(configProps.edgeFeather ?? [0, 0, 0, 0]),\n // Effect toggles\n configProps.enableDisplacement,\n configProps.enableColorama,\n configProps.enableBloom,\n configProps.enableLightSweep,\n // Light\n configProps.lightIntensity,\n configProps.lightStartFrame,\n // Playback\n configProps.paused,\n configProps.startTime,\n configProps.endTime,\n configProps.animateLightIndependently,\n // Cycle animation\n configProps.animateCycleReps,\n configProps.cycleRepetitionsStart,\n configProps.cycleRepetitionsEnd,\n configProps.cycleRepetitionsStartFrame,\n configProps.cycleRepetitionsDuration,\n // Gradient map blend\n configProps.gradientMapBlend,\n configProps.gradientMapBlendDuration,\n ]);\n\n // Update gradient map texture when a canvas is provided\n useEffect(() => {\n if (isInitialized && mountRef.current && gradientMapCanvas) {\n mountRef.current.updateGradientMapTexture(gradientMapCanvas);\n }\n }, [isInitialized, gradientMapCanvas]);\n\n const mergedRef = useMergeRefs(forwardedRef, divRef);\n\n // Convert width/height to string if number\n const widthStyle = typeof width === 'number' ? `${width}px` : width;\n const heightStyle = typeof height === 'number' ? `${height}px` : height;\n\n if (error) {\n return (\n <div\n ref={mergedRef}\n className={className}\n style={{\n width: widthStyle,\n height: heightStyle,\n ...style,\n }}\n />\n );\n }\n\n return (\n <div\n ref={mergedRef}\n className={className}\n style={{\n width: widthStyle,\n height: heightStyle,\n position: 'relative',\n overflow: 'hidden',\n backgroundColor: 'transparent',\n transition: `${FADE_IN_MS}ms opacity`,\n ...(isInitialized ? { opacity: 1 } : { opacity: 0 }),\n ...style,\n }}\n />\n );\n});\n\nexport { RzpGlass };\n"],"names":["FADE_IN_MS","RzpGlass","forwardRef","props","forwardedRef","_presetAssets$videoSr","_ref","_ref2","_presetAssets$centerG","_configProps$edgeFeat","_props$width","width","_props$height","height","className","style","onLoad","onError","assetsPathProp","assetsPath","gradientMapCanvas","gradientMapSrcProp","gradientMapSrc","gradientMap2SrcProp","gradientMap2Src","imageSrcProp","imageSrc","configProps","_objectWithoutProperties","_excluded","DEFAULT_CDN_PATH","defaultAssets","getDefaultAssets","presetAssets","getPresetAssets","preset","videoSrc","undefined","centerGradientMapSrc","_useState","useState","_useState2","_slicedToArray","isInitialized","setIsInitialized","_useState3","_useState4","error","setError","divRef","useRef","mountRef","useEffect","init","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_config$paused","config","userWantsPaused","_error","_t","wrap","_context","prev","next","current","abrupt","resolveConfig","RzpGlassMount","loadAssets","paused","pause","setTimeout","play","Error","String","stop","apply","arguments","_mountRef$current","dispose","setUniforms","inputMin","inputMax","modifyGamma","posterizeLevels","cycleRepetitions","phaseShift","cycleSpeed","wrapMode","reverse","blendWithOriginal","numSegments","slitAngle","displacementX","displacementY","enableCenterElement","centerAnimDuration","ccBlackPoint","ccWhitePoint","ccMidtoneGamma","ccGamma","ccContrast","zoom","panX","panY","concat","_toConsumableArray","edgeFeather","enableDisplacement","enableColorama","enableBloom","enableLightSweep","lightIntensity","lightStartFrame","startTime","endTime","animateLightIndependently","animateCycleReps","cycleRepetitionsStart","cycleRepetitionsEnd","cycleRepetitionsStartFrame","cycleRepetitionsDuration","gradientMapBlend","gradientMapBlendDuration","updateGradientMapTexture","mergedRef","useMergeRefs","widthStyle","heightStyle","_jsx","ref","_objectSpread","position","overflow","backgroundColor","transition","opacity"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ var REF_RESOLUTION = {
|
|
|
22
22
|
var DEFAULT_MAX_PIXEL_COUNT = 1920 * 1080 * 4;
|
|
23
23
|
|
|
24
24
|
// Default styles for the shader container
|
|
25
|
-
var defaultStyle = "@layer rzp-glass {\n :where([data-rzp-glass]) {\n isolation: isolate;\n position: relative;\n overflow: hidden;\n\n & canvas {\n contain: strict;\n display: block;\n position: absolute;\n z-index: -1;\n border-radius: inherit;\n }\n }\n}";
|
|
25
|
+
var defaultStyle = "@layer rzp-glass {\n :where([data-rzp-glass]) {\n isolation: isolate;\n position: relative;\n overflow: hidden;\n\n & canvas {\n contain: strict;\n display: block;\n position: absolute;\n z-index: -1;\n border-radius: inherit;\n pointer-events: none;\n }\n }\n}";
|
|
26
26
|
|
|
27
27
|
/** Map of config keys to uniform names */
|
|
28
28
|
var CONFIG_TO_UNIFORM = {
|
|
@@ -376,11 +376,6 @@ var RzpGlassMount = /*#__PURE__*/function () {
|
|
|
376
376
|
powerPreference: 'high-performance'
|
|
377
377
|
});
|
|
378
378
|
this.gl = _gl;
|
|
379
|
-
this.performanceController = new WebGLPerformanceController({
|
|
380
|
-
gl: this.gl,
|
|
381
|
-
onLevelChange: this.handlePerformanceLevelChange
|
|
382
|
-
});
|
|
383
|
-
this.stopIfPotato();
|
|
384
379
|
|
|
385
380
|
// Flip Y axis when uploading textures (video/images have Y=0 at top, WebGL has Y=0 at bottom)
|
|
386
381
|
_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, true);
|
|
@@ -394,6 +389,13 @@ var RzpGlassMount = /*#__PURE__*/function () {
|
|
|
394
389
|
|
|
395
390
|
// Initialize program
|
|
396
391
|
this.initProgram();
|
|
392
|
+
|
|
393
|
+
// Initialize performance controller after the initProgram so we don't get a crash when the program is not initialized yet.
|
|
394
|
+
this.performanceController = new WebGLPerformanceController({
|
|
395
|
+
gl: this.gl,
|
|
396
|
+
onLevelChange: this.handlePerformanceLevelChange
|
|
397
|
+
});
|
|
398
|
+
this.stopIfPotato();
|
|
397
399
|
this.setupPositionAttribute();
|
|
398
400
|
this.setupUniformLocations();
|
|
399
401
|
this.setupResizeObserver();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RzpGlassMount.js","sources":["../../../../../../../src/components/Spark/RzpGlass/RzpGlassMount.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n/* eslint-disable @typescript-eslint/no-implicit-any-catch */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable one-var */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n\n/**\n * RzpGlassMount\n *\n * Core vanilla class for the RzpGlass WebGL shader effect.\n * Modeled after paper-shaders' ShaderMount with extensions for video textures.\n *\n * @see https://github.com/paper-design/shaders/blob/main/packages/shaders/src/shader-mount.ts\n */\nimport { rzpGlassVertexShader, rzpGlassFragmentShader } from './rzpGlassShader';\nimport type { RzpGlassConfig, RzpGlassAssets } from './types';\nimport { DEFAULT_CONFIG } from './presets';\nimport { loadImage, loadVideo, isSafari, bestGuessBrowserZoom } from './utils';\nimport { createProgram, setupFullscreenQuad, Texture } from './webgl-utils';\nimport { WebGLPerformanceController, LEVEL_RENDER_SETTINGS } from './PerformanceManager';\nimport type { PerformanceLevel } from './PerformanceManager';\n\n// Reference resolution for zoom-independent displacement\nconst REF_RESOLUTION = { width: 3000, height: 2000 };\n\n// Default max pixel count (1920 * 1080 * 4 = 8,294,400 pixels)\nconst DEFAULT_MAX_PIXEL_COUNT = 1920 * 1080 * 4;\n\n// Default styles for the shader container\nconst defaultStyle = `@layer rzp-glass {\n :where([data-rzp-glass]) {\n isolation: isolate;\n position: relative;\n overflow: hidden;\n\n & canvas {\n contain: strict;\n display: block;\n position: absolute;\n z-index: -1;\n border-radius: inherit;\n }\n }\n}`;\n\n/** Map of config keys to uniform names */\nconst CONFIG_TO_UNIFORM: Record<string, string> = {\n enableDisplacement: 'uEnableDisplacement',\n enableColorama: 'uEnableColorama',\n enableBloom: 'uEnableBloom',\n enableLightSweep: 'uEnableLightSweep',\n inputMin: 'uInputMin',\n inputMax: 'uInputMax',\n modifyGamma: 'uModifyGamma',\n posterizeLevels: 'uPosterizeLevels',\n cycleRepetitions: 'uCycleRepetitions',\n phaseShift: 'uPhaseShift',\n cycleSpeed: 'uCycleSpeed',\n wrapMode: 'uWrapMode',\n reverse: 'uReverse',\n blendWithOriginal: 'uBlendWithOriginal',\n lightIntensity: 'uLightIntensity',\n lightStartFrame: 'uLightStartFrame',\n numSegments: 'uNumSegments',\n slitAngle: 'uSlitAngle',\n displacementX: 'uDisplacementX',\n displacementY: 'uDisplacementY',\n enableCenterElement: 'uEnableCenterElement',\n centerAnimDuration: 'uCenterAnimDuration',\n ccBlackPoint: 'uCCBlackPoint',\n ccWhitePoint: 'uCCWhitePoint',\n ccMidtoneGamma: 'uCCMidtoneGamma',\n ccGamma: 'uCCGamma',\n ccContrast: 'uCCContrast',\n zoom: 'uZoom',\n // panX and panY are combined into uPan (vec2) in setUniformValues\n // backgroundColor is handled separately (needs clear color update)\n edgeFeather: 'uEdgeFeather',\n};\n\nexport class RzpGlassMount {\n public parentElement: HTMLElement;\n public canvasElement: HTMLCanvasElement;\n\n private gl: WebGLRenderingContext;\n private program: WebGLProgram | null = null;\n private uniformLocations: Record<string, WebGLUniformLocation | null> = {};\n private uniformCache: Record<string, unknown> = {};\n\n // Textures\n private videoTexture: Texture | null = null;\n private gradientMapTexture: Texture | null = null;\n private gradientMap2Texture: Texture | null = null;\n private centerGradientMapTexture: Texture | null = null;\n\n // Gradient map blend animation state\n private currentGradientMapBlend = 0;\n\n // Video element\n private video: HTMLVideoElement | null = null;\n private videoFrameCallbackId: number | null = null;\n\n // Animation state (paper-shader style)\n private rafId: number | null = null;\n /** Last render time in seconds */\n private lastRenderTime = 0;\n /** Frame count (increments every frame) */\n private currentFrame = 0;\n\n // Video-specific animation state\n /** Time for independent light animation (accumulates deltaTime) */\n private independentLightTime = 0;\n /** Last video animation time (for detecting jumps) */\n private lastVideoTime = 0;\n\n // Configuration\n private config: Required<RzpGlassConfig>;\n private assets: RzpGlassAssets;\n\n // State flags\n private hasBeenDisposed = false;\n private isInitialized = false;\n private resolutionChanged = true;\n\n // Visible UV bounds (where container clips the canvas)\n // vec4(minX, minY, maxX, maxY) - portion of canvas UV that's visible\n private visibleUvBounds: [number, number, number, number] = [0, 0, 1, 1];\n\n // Resize handling\n private resizeObserver: ResizeObserver | null = null;\n private renderScale = 1;\n private parentWidth = 0;\n private parentHeight = 0;\n private parentDevicePixelWidth = 0;\n private parentDevicePixelHeight = 0;\n private devicePixelsSupported = false;\n private minPixelRatio: number;\n private maxPixelCount: number;\n private isSafariBrowser = isSafari();\n\n // Performance monitoring\n private performanceController: WebGLPerformanceController | null = null;\n\n constructor(\n parentElement: HTMLElement,\n assets: RzpGlassAssets,\n config: Partial<RzpGlassConfig> = {},\n /** Starting frame offset in ms for deterministic results */\n frame = 0,\n /** Minimum pixel ratio to render at (default: 2) */\n minPixelRatio = 1,\n /** Maximum pixel count to render (default: ~8.3M) */\n maxPixelCount = DEFAULT_MAX_PIXEL_COUNT,\n ) {\n this.parentElement = parentElement;\n this.assets = assets;\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.currentFrame = frame;\n this.minPixelRatio = minPixelRatio;\n this.maxPixelCount = maxPixelCount;\n\n // Inject default styles if not already present\n if (!document.querySelector('style[data-rzp-glass-style]')) {\n const styleElement = document.createElement('style');\n styleElement.innerHTML = defaultStyle;\n styleElement.setAttribute('data-rzp-glass-style', '');\n document.head.prepend(styleElement);\n }\n\n // Create canvas element\n this.canvasElement = document.createElement('canvas');\n this.parentElement.prepend(this.canvasElement);\n this.parentElement.setAttribute('data-rzp-glass', '');\n\n // Get WebGL context with alpha for transparency during loading\n const gl = this.canvasElement.getContext('webgl', {\n antialias: false,\n premultipliedAlpha: false,\n depth: false,\n alpha: true,\n powerPreference: 'high-performance',\n })!;\n this.gl = gl;\n\n this.performanceController = new WebGLPerformanceController({\n gl: this.gl,\n onLevelChange: this.handlePerformanceLevelChange,\n });\n\n this.stopIfPotato();\n\n // Flip Y axis when uploading textures (video/images have Y=0 at top, WebGL has Y=0 at bottom)\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n\n // WebGL state setup (matching OGL defaults for 2D rendering)\n gl.disable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n\n // Set clear color to transparent (for alpha blending during loading)\n gl.clearColor(0, 0, 0, 0);\n\n // Initialize program\n this.initProgram();\n this.setupPositionAttribute();\n this.setupUniformLocations();\n this.setupResizeObserver();\n\n // Visual viewport listener for zoom changes\n visualViewport?.addEventListener('resize', this.handleVisualViewportChange);\n\n // Listen for visibility changes to pause when tab is hidden\n document.addEventListener('visibilitychange', this.handleDocumentVisibilityChange);\n }\n\n private stopIfPotato(): asserts this is this {\n if (!this.performanceController?.isPotato()) {\n return;\n }\n this.stopRenderLoop();\n throw new Error('RzpGlass: WebGL is not supported in this browser');\n }\n\n /**\n * Load all assets (video or static image + gradient maps) and start rendering.\n * When `assets.imageSrc` is provided it is used as a static base texture and\n * no video element is created.\n */\n async loadAssets(): Promise<void> {\n this.stopIfPotato();\n try {\n const useStaticImage = Boolean(this.assets.imageSrc);\n\n const gradientMap2Src = this.assets.gradientMap2Src ?? this.assets.gradientMapSrc!;\n\n const [baseAsset, gradientMap, gradientMap2, centerGradientMap] = await Promise.all([\n useStaticImage ? loadImage(this.assets.imageSrc!) : loadVideo(this.assets.videoSrc!),\n loadImage(this.assets.gradientMapSrc!),\n loadImage(gradientMap2Src),\n loadImage(this.assets.centerGradientMapSrc!),\n ]);\n\n if (useStaticImage) {\n // Static image path — upload once to texture unit 0, no video loop needed\n this.setupImageTexture('uVideoTexture', baseAsset as HTMLImageElement, 0);\n } else {\n this.video = baseAsset as HTMLVideoElement;\n this.setupVideoTexture();\n // Set video to start time and apply playback rate before playback\n this.video.currentTime = this.config.startTime;\n this.video.playbackRate = this.config.playbackRate;\n if (!this.config.paused) {\n await this.video.play().catch((e) => {\n console.warn('Video autoplay failed:', e);\n });\n }\n }\n\n this.setupImageTexture('uGradientMap', gradientMap as HTMLImageElement, 1);\n this.setupImageTexture('uCenterGradientMap', centerGradientMap as HTMLImageElement, 2);\n this.setupImageTexture('uGradientMap2', gradientMap2 as HTMLImageElement, 3);\n\n // Set initial uniform values\n this.setAllUniforms();\n\n this.isInitialized = true;\n\n // Initial resize\n this.handleResize();\n\n // Start the render loop (runs continuously)\n this.startRenderLoop();\n } catch (error) {\n console.error('RzpGlass: Failed to load assets', error);\n throw error;\n }\n }\n\n private initProgram(): void {\n const program = createProgram(this.gl, rzpGlassVertexShader, rzpGlassFragmentShader);\n if (!program) {\n throw new Error('RzpGlass: Failed to create WebGL program');\n }\n this.program = program;\n }\n\n private setupPositionAttribute(): void {\n const buffers = setupFullscreenQuad(this.gl, this.program!);\n if (!buffers) {\n throw new Error('RzpGlass: Failed to setup fullscreen quad');\n }\n }\n\n private setupUniformLocations(): void {\n const gl = this.gl;\n const program = this.program!;\n\n // All uniform names from the shader\n const uniformNames = [\n 'uTime',\n 'iResolution',\n 'uDpr',\n 'uVideoTexture',\n 'uGradientMap',\n 'uGradientMap2',\n 'uGradientMapBlend',\n 'uCenterGradientMap',\n 'uEnableDisplacement',\n 'uEnableColorama',\n 'uEnableBloom',\n 'uEnableLightSweep',\n 'uInputMin',\n 'uInputMax',\n 'uModifyGamma',\n 'uPosterizeLevels',\n 'uCycleRepetitions',\n 'uPhaseShift',\n 'uCycleSpeed',\n 'uWrapMode',\n 'uReverse',\n 'uBlendWithOriginal',\n 'uLightIntensity',\n 'uFrameCount',\n 'uLightStartFrame',\n 'uNumSegments',\n 'uSlitAngle',\n 'uDisplacementX',\n 'uDisplacementY',\n 'uEnableCenterElement',\n 'uCenterAnimDuration',\n 'uCenterAnimTime',\n 'uCCBlackPoint',\n 'uCCWhitePoint',\n 'uCCMidtoneGamma',\n 'uCCGamma',\n 'uCCContrast',\n 'uZoom',\n 'uPan', // vec2(panX, panY) - set in vertex shader\n 'uEdgeFeather',\n 'uRefResolution',\n 'uVisibleUvBounds', // vec4(minX, minY, maxX, maxY) - visible portion of canvas in UV space\n 'uBackgroundColor', // vec3(r, g, b) - background color to blend with\n // Ripple wave\n 'uEnableRippleWave',\n 'uRippleSpeed',\n 'uRippleBlend',\n 'uRippleAngularPower',\n 'uRippleRadialFalloff',\n 'uRippleWaitTime',\n ];\n\n for (const name of uniformNames) {\n this.uniformLocations[name] = gl.getUniformLocation(program, name);\n }\n }\n\n private setupVideoTexture(): void {\n this.videoTexture = new Texture(this.gl, { textureUnit: 0 });\n\n // Use requestVideoFrameCallback for efficient video texture updates\n if (this.video && 'requestVideoFrameCallback' in this.video) {\n const updateVideoFrame = () => {\n if (this.hasBeenDisposed || !this.video || !this.videoTexture) return;\n\n this.videoTexture.update(this.video);\n\n this.videoFrameCallbackId = (this.video as any).requestVideoFrameCallback(updateVideoFrame);\n };\n this.videoFrameCallbackId = (this.video as any).requestVideoFrameCallback(updateVideoFrame);\n }\n }\n\n private setupImageTexture(\n uniformName: string,\n image: HTMLImageElement,\n textureUnit: number,\n ): void {\n const texture = new Texture(this.gl, { textureUnit });\n texture.image(image);\n\n if (uniformName === 'uVideoTexture') {\n this.videoTexture = texture;\n } else if (uniformName === 'uGradientMap') {\n this.gradientMapTexture = texture;\n } else if (uniformName === 'uGradientMap2') {\n this.gradientMap2Texture = texture;\n } else if (uniformName === 'uCenterGradientMap') {\n this.centerGradientMapTexture = texture;\n }\n }\n\n /**\n * Hot-swap the gradient map texture at runtime.\n * Accepts an HTMLCanvasElement (generated by generateGradientCanvas) or an HTMLImageElement.\n * No reinitialization required — the next frame will pick up the new texture.\n */\n public updateGradientMapTexture(source: HTMLCanvasElement | HTMLImageElement): void {\n if (!this.isInitialized || !this.gradientMapTexture) return;\n this.gradientMapTexture.image(source);\n }\n\n private setupResizeObserver(): void {\n this.resizeObserver = new ResizeObserver(([entry]) => {\n if (entry?.borderBoxSize[0]) {\n const physicalPixelSize = entry.devicePixelContentBoxSize?.[0];\n\n if (physicalPixelSize !== undefined) {\n this.devicePixelsSupported = true;\n this.parentDevicePixelWidth = physicalPixelSize.inlineSize;\n this.parentDevicePixelHeight = physicalPixelSize.blockSize;\n }\n\n this.parentWidth = entry.borderBoxSize[0].inlineSize;\n this.parentHeight = entry.borderBoxSize[0].blockSize;\n }\n\n this.handleResize();\n });\n\n this.resizeObserver.observe(this.parentElement);\n }\n\n private handleVisualViewportChange = (): void => {\n // Restart resize observer to get fresh callback on zoom change\n this.resizeObserver?.disconnect();\n this.setupResizeObserver();\n };\n\n private handleResize = (): void => {\n // Container dimensions (use stored values or fallback to clientWidth/Height)\n const containerWidth = this.parentWidth || this.parentElement.clientWidth;\n const containerHeight = this.parentHeight || this.parentElement.clientHeight;\n const containerAspect = containerWidth / containerHeight;\n\n // \"Cover\" behavior: fill container while maintaining aspect ratio (crop overflow)\n let canvasWidth: number;\n let canvasHeight: number;\n\n const targetAspectRatio = this.config.aspectRatio;\n if (containerAspect > targetAspectRatio) {\n // Container is wider than target - fit to width, crop top/bottom\n canvasWidth = containerWidth;\n canvasHeight = containerWidth / targetAspectRatio;\n } else {\n // Container is taller than target - fit to height, crop left/right\n canvasHeight = containerHeight;\n canvasWidth = containerHeight * targetAspectRatio;\n }\n\n // Center the canvas (overflow will be hidden by parent)\n const offsetX = (containerWidth - canvasWidth) / 2;\n const offsetY = (containerHeight - canvasHeight) / 2;\n\n // Calculate visible UV bounds (where container clips the canvas)\n // When canvas overflows container, we need to know which portion is visible\n const visibleMinX = -offsetX / canvasWidth;\n const visibleMaxX = (containerWidth - offsetX) / canvasWidth;\n const visibleMinY = -offsetY / canvasHeight;\n const visibleMaxY = (containerHeight - offsetY) / canvasHeight;\n this.visibleUvBounds = [visibleMinX, visibleMinY, visibleMaxX, visibleMaxY];\n\n // Set display size (CSS pixels)\n this.canvasElement.style.width = `${canvasWidth}px`;\n this.canvasElement.style.height = `${canvasHeight}px`;\n this.canvasElement.style.left = `${offsetX}px`;\n this.canvasElement.style.top = `${offsetY}px`;\n\n // Calculate target pixel dimensions for rendering\n let targetPixelWidth = 0;\n let targetPixelHeight = 0;\n\n const dpr = Math.max(1, window.devicePixelRatio);\n const pinchZoom = visualViewport?.scale ?? 1;\n\n if (this.devicePixelsSupported) {\n // Use real pixel size if we know it, but maintain aspect ratio\n // Calculate the scale ratio from parent to canvas (for aspect ratio correction)\n const canvasToParentRatioX = canvasWidth / containerWidth;\n const canvasToParentRatioY = canvasHeight / containerHeight;\n\n const scaleToMeetMinPixelRatio = Math.max(1, this.minPixelRatio / dpr);\n // Apply aspect ratio correction to device pixel dimensions\n targetPixelWidth =\n this.parentDevicePixelWidth * canvasToParentRatioX * scaleToMeetMinPixelRatio * pinchZoom;\n targetPixelHeight =\n this.parentDevicePixelHeight * canvasToParentRatioY * scaleToMeetMinPixelRatio * pinchZoom;\n } else {\n // Approximate using devicePixelRatio\n let targetRenderScale = Math.max(dpr, this.minPixelRatio) * pinchZoom;\n\n if (this.isSafariBrowser) {\n // Safari reports physical devicePixelRatio, need to factor in zoom manually\n const zoomLevel = bestGuessBrowserZoom();\n targetRenderScale *= Math.max(1, zoomLevel);\n }\n\n targetPixelWidth = Math.round(canvasWidth) * targetRenderScale;\n targetPixelHeight = Math.round(canvasHeight) * targetRenderScale;\n }\n\n // Prevent total rendered pixels from exceeding maxPixelCount\n const maxPixelCountHeadroom =\n Math.sqrt(this.maxPixelCount) / Math.sqrt(targetPixelWidth * targetPixelHeight);\n const scaleToMeetMaxPixelCount = Math.min(1, maxPixelCountHeadroom);\n const newWidth = Math.round(targetPixelWidth * scaleToMeetMaxPixelCount);\n const newHeight = Math.round(targetPixelHeight * scaleToMeetMaxPixelCount);\n const newRenderScale = newWidth / Math.round(canvasWidth);\n\n if (\n this.canvasElement.width !== newWidth ||\n this.canvasElement.height !== newHeight ||\n this.renderScale !== newRenderScale\n ) {\n this.renderScale = newRenderScale;\n this.canvasElement.width = newWidth;\n this.canvasElement.height = newHeight;\n this.resolutionChanged = true;\n this.gl.viewport(0, 0, newWidth, newHeight);\n\n // Only render immediately when the loop isn't running — if it is,\n // resolutionChanged=true is enough and the next RAF picks it up.\n // Calling render() while the loop is active spawns a duplicate RAF chain.\n if (this.rafId === null) {\n this.render(performance.now());\n }\n }\n };\n\n private handleDocumentVisibilityChange = (): void => {\n if (document.hidden) {\n // Pause render loop when tab is hidden\n this.stopRenderLoop();\n this.video?.pause();\n } else {\n // Resume render loop when tab is visible\n this.startRenderLoop();\n // Only resume video if not paused\n if (!this.config.paused) {\n this.video?.play().catch(() => {});\n }\n }\n };\n\n private setAllUniforms(): void {\n const gl = this.gl;\n gl.useProgram(this.program);\n\n // Texture units\n gl.uniform1i(this.uniformLocations.uVideoTexture, 0);\n gl.uniform1i(this.uniformLocations.uGradientMap, 1);\n gl.uniform1i(this.uniformLocations.uCenterGradientMap, 2);\n gl.uniform1i(this.uniformLocations.uGradientMap2, 3);\n gl.uniform1f(this.uniformLocations.uGradientMapBlend, this.currentGradientMapBlend);\n\n // Set all config-based uniforms\n this.setUniformValues(this.config);\n\n // Explicitly set pan uniform (vertex shader uniform)\n gl.uniform2f(this.uniformLocations.uPan, this.config.panX, this.config.panY);\n\n // Reference resolution (constant)\n gl.uniform2f(this.uniformLocations.uRefResolution, REF_RESOLUTION.width, REF_RESOLUTION.height);\n\n // Background color (or set to -1 if not provided)\n if (this.config.backgroundColor) {\n const [r, g, b] = this.config.backgroundColor;\n gl.uniform3f(this.uniformLocations.uBackgroundColor, r, g, b);\n // Also set clear color to match\n gl.clearColor(r, g, b, 1.0);\n } else {\n // Set to -1 to indicate no background color blending\n gl.uniform3f(this.uniformLocations.uBackgroundColor, -1.0, -1.0, -1.0);\n // Use transparent clear color\n gl.clearColor(0, 0, 0, 0);\n }\n\n // Visible UV bounds (where container clips the canvas)\n gl.uniform4f(\n this.uniformLocations.uVisibleUvBounds,\n this.visibleUvBounds[0],\n this.visibleUvBounds[1],\n this.visibleUvBounds[2],\n this.visibleUvBounds[3],\n );\n }\n\n /** Check if uniform values are equal (handles arrays) */\n private areUniformValuesEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n return a.every((val, i) => this.areUniformValuesEqual(val, b[i]));\n }\n return false;\n }\n\n /** Set uniform values with caching to avoid redundant updates */\n private setUniformValues(config: Partial<RzpGlassConfig>): void {\n const gl = this.gl;\n gl.useProgram(this.program);\n\n Object.entries(config).forEach(([key, value]) => {\n if (value === undefined) return;\n\n // Check if value has changed\n if (this.areUniformValuesEqual(this.uniformCache[key], value)) return;\n this.uniformCache[key] = value;\n\n // Get uniform name from config key\n const uniformName = CONFIG_TO_UNIFORM[key];\n if (!uniformName) return; // Skip non-uniform config values\n\n const location = this.uniformLocations[uniformName];\n if (!location) return;\n\n if (typeof value === 'boolean') {\n gl.uniform1f(location, value ? 1 : 0);\n } else if (typeof value === 'number') {\n gl.uniform1f(location, value);\n } else if (Array.isArray(value)) {\n // Handle array uniforms (cast to number[] since config values are all numbers/booleans)\n const flatArray = (value as number[]).flat() as number[];\n switch (flatArray.length) {\n case 2:\n gl.uniform2fv(location, flatArray);\n break;\n case 3:\n gl.uniform3fv(location, flatArray);\n break;\n case 4:\n gl.uniform4fv(location, flatArray);\n break;\n }\n }\n });\n\n // Handle special pan uniform (vec2 in vertex shader)\n if (config.panX !== undefined || config.panY !== undefined) {\n const panCacheKey = 'pan';\n const panValue = [this.config.panX, this.config.panY];\n if (!this.areUniformValuesEqual(this.uniformCache[panCacheKey], panValue)) {\n this.uniformCache[panCacheKey] = panValue;\n gl.uniform2f(this.uniformLocations.uPan, panValue[0], panValue[1]);\n }\n }\n\n // Handle special backgroundColor uniform (vec3 in fragment shader)\n if (config.backgroundColor !== undefined) {\n const bgCacheKey = 'backgroundColor';\n if (!this.areUniformValuesEqual(this.uniformCache[bgCacheKey], config.backgroundColor)) {\n this.uniformCache[bgCacheKey] = config.backgroundColor;\n if (config.backgroundColor) {\n const [r, g, b] = config.backgroundColor;\n gl.uniform3f(this.uniformLocations.uBackgroundColor, r, g, b);\n // Also update clear color to match\n gl.clearColor(r, g, b, 1.0);\n } else {\n // Set to -1 to indicate no background color blending\n gl.uniform3f(this.uniformLocations.uBackgroundColor, -1.0, -1.0, -1.0);\n // Use transparent clear color\n gl.clearColor(0, 0, 0, 0);\n }\n }\n }\n }\n\n /**\n * Update uniforms from config (partial update supported)\n */\n public setUniforms(newConfig: Partial<RzpGlassConfig>): void {\n this.config = { ...this.config, ...newConfig };\n\n if (!this.isInitialized) return;\n\n // Use the new caching-based uniform setter\n this.setUniformValues(newConfig);\n\n // Handle paused state changes - control video play/pause\n if (newConfig.paused !== undefined) {\n if (newConfig.paused) {\n this.video?.pause();\n } else {\n this.video?.play().catch(() => {});\n }\n }\n\n if (newConfig.playbackRate !== undefined && this.video) {\n this.video.playbackRate = newConfig.playbackRate;\n }\n\n if (newConfig.aspectRatio !== undefined) {\n this.handleResize();\n }\n }\n\n private startRenderLoop(): void {\n if (this.rafId !== null) return; // Already running\n this.lastRenderTime = performance.now() * 0.001; // Initialize in seconds\n this.rafId = requestAnimationFrame(this.render);\n }\n\n private stopRenderLoop(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n }\n\n private render = (currentTime: number): void => {\n if (this.hasBeenDisposed) return;\n\n // ALWAYS schedule next frame first (like the original loop)\n this.rafId = requestAnimationFrame(this.render);\n\n if (this.program === null) {\n console.warn('Tried to render before program was initialized');\n return;\n }\n\n const gl = this.gl;\n const video = this.video;\n\n // Calculate delta time in seconds (framerate independent)\n const currentTimeSeconds = currentTime * 0.001; // Convert ms to seconds\n const deltaTime = currentTimeSeconds - this.lastRenderTime;\n this.lastRenderTime = currentTimeSeconds;\n this.currentFrame++; // Increment frame count every frame\n\n const usingStaticImage = !video && this.videoTexture !== null;\n\n // Skip rendering if video isn't ready — do NOT clear the canvas here so the\n // last rendered frame stays visible instead of flashing transparent/black.\n // This prevents flickering during video native loop boundary frames.\n if (!usingStaticImage) {\n if (!video || video.readyState < video.HAVE_CURRENT_DATA) {\n return;\n }\n\n // Update video texture (fallback for browsers without requestVideoFrameCallback)\n if (!('requestVideoFrameCallback' in video) && this.videoTexture) {\n this.videoTexture.update(video);\n }\n\n // Handle video looping within start/end time range (only when not paused)\n if (!this.config.paused) {\n if (video.currentTime < this.config.startTime || video.currentTime >= this.config.endTime) {\n video.currentTime = this.config.startTime;\n }\n }\n }\n\n // Clear canvas now that we know we have data to draw.\n // Doing this after the readyState guard means we keep the last frame\n // during any brief gaps (e.g. native video loop boundary).\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n // Animation time: driven by video position for video mode, real elapsed time for static image\n const videoAnimTime = usingStaticImage\n ? currentTimeSeconds\n : video!.currentTime - this.config.startTime;\n\n // Update center animation time (always accumulate real time for smooth animation)\n if (this.config.animateLightIndependently || usingStaticImage) {\n this.independentLightTime += deltaTime;\n } else {\n const videoTimeDelta = videoAnimTime - this.lastVideoTime;\n const isVideoJump = Math.abs(videoTimeDelta) > 0.1 || videoTimeDelta < -0.01;\n\n if (isVideoJump) {\n this.independentLightTime = videoAnimTime;\n } else {\n this.independentLightTime += deltaTime;\n }\n }\n this.lastVideoTime = videoAnimTime;\n\n // Use program and set per-frame uniforms\n gl.useProgram(this.program);\n\n // Time uniforms\n gl.uniform1f(this.uniformLocations.uTime, currentTimeSeconds);\n // When animateLightIndependently is true, use real elapsed time for frame count\n // so light effects aren't tied to video playback\n const frameCount = this.config.animateLightIndependently\n ? this.independentLightTime * 30 // Use independent time (in seconds * 30fps)\n : videoAnimTime * 30; // Use video time (in seconds * 30fps)\n gl.uniform1f(this.uniformLocations.uFrameCount, frameCount);\n gl.uniform1f(this.uniformLocations.uCenterAnimTime, this.independentLightTime);\n\n // Resolution uniforms (only when changed)\n if (this.resolutionChanged) {\n gl.uniform2f(\n this.uniformLocations.iResolution,\n this.canvasElement.width,\n this.canvasElement.height,\n );\n gl.uniform1f(this.uniformLocations.uDpr, this.renderScale);\n // Update visible UV bounds (where container clips the canvas)\n gl.uniform4f(\n this.uniformLocations.uVisibleUvBounds,\n this.visibleUvBounds[0],\n this.visibleUvBounds[1],\n this.visibleUvBounds[2],\n this.visibleUvBounds[3],\n );\n this.resolutionChanged = false;\n }\n\n // Animate cycleRepetitions if enabled\n if (\n this.config.animateCycleReps &&\n this.currentFrame > this.config.cycleRepetitionsStartFrame\n ) {\n const elapsed = this.currentFrame - this.config.cycleRepetitionsStartFrame;\n const cycleProgress =\n (elapsed % (this.config.cycleRepetitionsDuration * 2)) /\n this.config.cycleRepetitionsDuration;\n const pingPong = cycleProgress <= 1 ? cycleProgress : 2 - cycleProgress;\n const eased = pingPong * pingPong * (3 - 2 * pingPong); // smoothstep\n const delta = this.config.cycleRepetitionsEnd - this.config.cycleRepetitionsStart;\n gl.uniform1f(\n this.uniformLocations.uCycleRepetitions,\n this.config.cycleRepetitionsStart + eased * delta,\n );\n } else {\n gl.uniform1f(this.uniformLocations.uCycleRepetitions, this.config.cycleRepetitions);\n }\n\n // Animate gradientMapBlend smoothly towards target\n const targetBlend = this.config.gradientMapBlend;\n if (this.currentGradientMapBlend !== targetBlend) {\n const speed = 1.0 / this.config.gradientMapBlendDuration;\n const diff = targetBlend - this.currentGradientMapBlend;\n const step = Math.sign(diff) * Math.min(Math.abs(diff), speed * deltaTime);\n this.currentGradientMapBlend += step;\n gl.uniform1f(this.uniformLocations.uGradientMapBlend, this.currentGradientMapBlend);\n }\n\n // Draw\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n // ===== Public API (paper-shader style) =====\n\n /** Get the current animation frame (in ms) */\n public getCurrentFrame(): number {\n return this.currentFrame;\n }\n\n /** Set a specific frame for deterministic results */\n public setFrame(newFrame: number): void {\n this.currentFrame = newFrame;\n }\n\n /** Set the maximum pixel count for performance tuning */\n public setMaxPixelCount(newMaxPixelCount: number = DEFAULT_MAX_PIXEL_COUNT): void {\n this.maxPixelCount = newMaxPixelCount;\n this.handleResize();\n }\n\n /** Set the minimum pixel ratio for quality tuning */\n public setMinPixelRatio(newMinPixelRatio: number = 2): void {\n this.minPixelRatio = newMinPixelRatio;\n this.handleResize();\n }\n\n /** Play video */\n public play(): void {\n this.config.paused = false;\n this.video?.play().catch(() => {});\n }\n\n /** Pause video */\n public pause(): void {\n this.config.paused = true;\n this.video?.pause();\n }\n\n /** Seek to specific time in video */\n public setTime(time: number): void {\n if (this.video) {\n this.video.currentTime = time;\n }\n }\n\n private handlePerformanceLevelChange = (level: PerformanceLevel): void => {\n if (level === 0) {\n this.stopRenderLoop();\n this.canvasElement.style.display = 'none';\n return;\n }\n\n const { maxPixelCount, minPixelRatio } = LEVEL_RENDER_SETTINGS[level];\n this.maxPixelCount = maxPixelCount;\n this.minPixelRatio = minPixelRatio;\n\n // Restore canvas + render loop if they were previously hidden/stopped\n if (this.canvasElement.style.display === 'none') {\n this.canvasElement.style.display = '';\n }\n if (this.isInitialized) {\n this.startRenderLoop();\n }\n\n this.handleResize();\n };\n\n /** Clean up all WebGL resources */\n public dispose(): void {\n // Immediately mark as disposed to prevent future renders\n this.hasBeenDisposed = true;\n\n // Cancel any pending RAF\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n\n // Cancel video frame callback\n if (\n this.videoFrameCallbackId !== null &&\n this.video &&\n 'cancelVideoFrameCallback' in this.video\n ) {\n (this.video as any).cancelVideoFrameCallback(this.videoFrameCallbackId);\n }\n\n // Pause and remove video\n if (this.video) {\n this.video.pause();\n this.video.src = '';\n this.video.load();\n this.video = null;\n }\n\n // Clean up WebGL resources\n if (this.gl && this.program) {\n this.videoTexture?.destroy();\n this.gradientMapTexture?.destroy();\n this.gradientMap2Texture?.destroy();\n this.centerGradientMapTexture?.destroy();\n this.gl.deleteProgram(this.program);\n this.program = null;\n\n // Reset WebGL state\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null);\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, null);\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);\n\n // Clear any errors\n this.gl.getError();\n }\n\n // Clean up performance controller\n this.performanceController?.dispose();\n this.performanceController = null;\n\n // Clean up observers and listeners\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n visualViewport?.removeEventListener('resize', this.handleVisualViewportChange);\n document.removeEventListener('visibilitychange', this.handleDocumentVisibilityChange);\n\n this.uniformLocations = {};\n this.uniformCache = {};\n\n // Remove canvas\n this.canvasElement.remove();\n this.parentElement.removeAttribute('data-rzp-glass');\n }\n}\n"],"names":["REF_RESOLUTION","width","height","DEFAULT_MAX_PIXEL_COUNT","defaultStyle","CONFIG_TO_UNIFORM","enableDisplacement","enableColorama","enableBloom","enableLightSweep","inputMin","inputMax","modifyGamma","posterizeLevels","cycleRepetitions","phaseShift","cycleSpeed","wrapMode","reverse","blendWithOriginal","lightIntensity","lightStartFrame","numSegments","slitAngle","displacementX","displacementY","enableCenterElement","centerAnimDuration","ccBlackPoint","ccWhitePoint","ccMidtoneGamma","ccGamma","ccContrast","zoom","edgeFeather","RzpGlassMount","parentElement","assets","_this","_visualViewport2","config","arguments","length","undefined","frame","minPixelRatio","maxPixelCount","_classCallCheck","_defineProperty","isSafari","_this$resizeObserver","resizeObserver","disconnect","setupResizeObserver","_visualViewport$scale","_visualViewport","containerWidth","parentWidth","clientWidth","containerHeight","parentHeight","clientHeight","containerAspect","canvasWidth","canvasHeight","targetAspectRatio","aspectRatio","offsetX","offsetY","visibleMinX","visibleMaxX","visibleMinY","visibleMaxY","visibleUvBounds","canvasElement","style","concat","left","top","targetPixelWidth","targetPixelHeight","dpr","Math","max","window","devicePixelRatio","pinchZoom","visualViewport","scale","devicePixelsSupported","canvasToParentRatioX","canvasToParentRatioY","scaleToMeetMinPixelRatio","parentDevicePixelWidth","parentDevicePixelHeight","targetRenderScale","isSafariBrowser","zoomLevel","bestGuessBrowserZoom","round","maxPixelCountHeadroom","sqrt","scaleToMeetMaxPixelCount","min","newWidth","newHeight","newRenderScale","renderScale","resolutionChanged","gl","viewport","rafId","render","performance","now","document","hidden","_this$video","stopRenderLoop","video","pause","startRenderLoop","paused","_this$video2","play","currentTime","hasBeenDisposed","requestAnimationFrame","program","console","warn","currentTimeSeconds","deltaTime","lastRenderTime","currentFrame","usingStaticImage","videoTexture","readyState","HAVE_CURRENT_DATA","update","startTime","endTime","clear","COLOR_BUFFER_BIT","videoAnimTime","animateLightIndependently","independentLightTime","videoTimeDelta","lastVideoTime","isVideoJump","abs","useProgram","uniform1f","uniformLocations","uTime","frameCount","uFrameCount","uCenterAnimTime","uniform2f","iResolution","uDpr","uniform4f","uVisibleUvBounds","animateCycleReps","cycleRepetitionsStartFrame","elapsed","cycleProgress","cycleRepetitionsDuration","pingPong","eased","delta","cycleRepetitionsEnd","cycleRepetitionsStart","uCycleRepetitions","targetBlend","gradientMapBlend","currentGradientMapBlend","speed","gradientMapBlendDuration","diff","step","sign","uGradientMapBlend","drawArrays","TRIANGLES","level","display","_LEVEL_RENDER_SETTING","LEVEL_RENDER_SETTINGS","isInitialized","handleResize","_objectSpread","DEFAULT_CONFIG","querySelector","styleElement","createElement","innerHTML","setAttribute","head","prepend","getContext","antialias","premultipliedAlpha","depth","alpha","powerPreference","performanceController","WebGLPerformanceController","onLevelChange","handlePerformanceLevelChange","stopIfPotato","pixelStorei","UNPACK_FLIP_Y_WEBGL","disable","DEPTH_TEST","CULL_FACE","clearColor","initProgram","setupPositionAttribute","setupUniformLocations","addEventListener","handleVisualViewportChange","handleDocumentVisibilityChange","_createClass","key","value","_this$performanceCont","isPotato","Error","_loadAssets","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_this$assets$gradient","useStaticImage","gradientMap2Src","_yield$Promise$all","_yield$Promise$all2","baseAsset","gradientMap","gradientMap2","centerGradientMap","_t","wrap","_context","prev","next","Boolean","imageSrc","gradientMapSrc","Promise","all","loadImage","loadVideo","videoSrc","centerGradientMapSrc","sent","_slicedToArray","setupImageTexture","setupVideoTexture","playbackRate","e","setAllUniforms","error","stop","loadAssets","apply","createProgram","rzpGlassVertexShader","rzpGlassFragmentShader","buffers","setupFullscreenQuad","uniformNames","_i","_uniformNames","name","getUniformLocation","_this2","Texture","textureUnit","updateVideoFrame","videoFrameCallbackId","requestVideoFrameCallback","uniformName","image","texture","gradientMapTexture","gradientMap2Texture","centerGradientMapTexture","updateGradientMapTexture","source","_this3","ResizeObserver","_ref","_ref2","entry","borderBoxSize","_entry$devicePixelCon","physicalPixelSize","devicePixelContentBoxSize","inlineSize","blockSize","observe","uniform1i","uVideoTexture","uGradientMap","uCenterGradientMap","uGradientMap2","setUniformValues","uPan","panX","panY","uRefResolution","backgroundColor","_this$config$backgrou","r","g","b","uniform3f","uBackgroundColor","areUniformValuesEqual","a","_this4","Array","isArray","every","val","i","_this5","Object","entries","forEach","_ref3","_ref4","uniformCache","location","flatArray","flat","uniform2fv","uniform3fv","uniform4fv","panCacheKey","panValue","bgCacheKey","_config$backgroundCol","setUniforms","newConfig","_this$video3","_this$video4","cancelAnimationFrame","getCurrentFrame","setFrame","newFrame","setMaxPixelCount","newMaxPixelCount","setMinPixelRatio","newMinPixelRatio","_this$video5","_this$video6","setTime","time","dispose","_this$performanceCont2","_visualViewport3","cancelVideoFrameCallback","src","load","_this$videoTexture","_this$gradientMapText","_this$gradientMap2Tex","_this$centerGradientM","destroy","deleteProgram","bindBuffer","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","bindRenderbuffer","RENDERBUFFER","bindFramebuffer","FRAMEBUFFER","getError","removeEventListener","remove","removeAttribute"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RzpGlassMount.js","sources":["../../../../../../../src/components/Spark/RzpGlass/RzpGlassMount.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n/* eslint-disable @typescript-eslint/no-implicit-any-catch */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable one-var */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n\n/**\n * RzpGlassMount\n *\n * Core vanilla class for the RzpGlass WebGL shader effect.\n * Modeled after paper-shaders' ShaderMount with extensions for video textures.\n *\n * @see https://github.com/paper-design/shaders/blob/main/packages/shaders/src/shader-mount.ts\n */\nimport { rzpGlassVertexShader, rzpGlassFragmentShader } from './rzpGlassShader';\nimport type { RzpGlassConfig, RzpGlassAssets } from './types';\nimport { DEFAULT_CONFIG } from './presets';\nimport { loadImage, loadVideo, isSafari, bestGuessBrowserZoom } from './utils';\nimport { createProgram, setupFullscreenQuad, Texture } from './webgl-utils';\nimport { WebGLPerformanceController, LEVEL_RENDER_SETTINGS } from './PerformanceManager';\nimport type { PerformanceLevel } from './PerformanceManager';\n\n// Reference resolution for zoom-independent displacement\nconst REF_RESOLUTION = { width: 3000, height: 2000 };\n\n// Default max pixel count (1920 * 1080 * 4 = 8,294,400 pixels)\nconst DEFAULT_MAX_PIXEL_COUNT = 1920 * 1080 * 4;\n\n// Default styles for the shader container\nconst defaultStyle = `@layer rzp-glass {\n :where([data-rzp-glass]) {\n isolation: isolate;\n position: relative;\n overflow: hidden;\n\n & canvas {\n contain: strict;\n display: block;\n position: absolute;\n z-index: -1;\n border-radius: inherit;\n pointer-events: none;\n }\n }\n}`;\n\n/** Map of config keys to uniform names */\nconst CONFIG_TO_UNIFORM: Record<string, string> = {\n enableDisplacement: 'uEnableDisplacement',\n enableColorama: 'uEnableColorama',\n enableBloom: 'uEnableBloom',\n enableLightSweep: 'uEnableLightSweep',\n inputMin: 'uInputMin',\n inputMax: 'uInputMax',\n modifyGamma: 'uModifyGamma',\n posterizeLevels: 'uPosterizeLevels',\n cycleRepetitions: 'uCycleRepetitions',\n phaseShift: 'uPhaseShift',\n cycleSpeed: 'uCycleSpeed',\n wrapMode: 'uWrapMode',\n reverse: 'uReverse',\n blendWithOriginal: 'uBlendWithOriginal',\n lightIntensity: 'uLightIntensity',\n lightStartFrame: 'uLightStartFrame',\n numSegments: 'uNumSegments',\n slitAngle: 'uSlitAngle',\n displacementX: 'uDisplacementX',\n displacementY: 'uDisplacementY',\n enableCenterElement: 'uEnableCenterElement',\n centerAnimDuration: 'uCenterAnimDuration',\n ccBlackPoint: 'uCCBlackPoint',\n ccWhitePoint: 'uCCWhitePoint',\n ccMidtoneGamma: 'uCCMidtoneGamma',\n ccGamma: 'uCCGamma',\n ccContrast: 'uCCContrast',\n zoom: 'uZoom',\n // panX and panY are combined into uPan (vec2) in setUniformValues\n // backgroundColor is handled separately (needs clear color update)\n edgeFeather: 'uEdgeFeather',\n};\n\nexport class RzpGlassMount {\n public parentElement: HTMLElement;\n public canvasElement: HTMLCanvasElement;\n\n private gl: WebGLRenderingContext;\n private program: WebGLProgram | null = null;\n private uniformLocations: Record<string, WebGLUniformLocation | null> = {};\n private uniformCache: Record<string, unknown> = {};\n\n // Textures\n private videoTexture: Texture | null = null;\n private gradientMapTexture: Texture | null = null;\n private gradientMap2Texture: Texture | null = null;\n private centerGradientMapTexture: Texture | null = null;\n\n // Gradient map blend animation state\n private currentGradientMapBlend = 0;\n\n // Video element\n private video: HTMLVideoElement | null = null;\n private videoFrameCallbackId: number | null = null;\n\n // Animation state (paper-shader style)\n private rafId: number | null = null;\n /** Last render time in seconds */\n private lastRenderTime = 0;\n /** Frame count (increments every frame) */\n private currentFrame = 0;\n\n // Video-specific animation state\n /** Time for independent light animation (accumulates deltaTime) */\n private independentLightTime = 0;\n /** Last video animation time (for detecting jumps) */\n private lastVideoTime = 0;\n\n // Configuration\n private config: Required<RzpGlassConfig>;\n private assets: RzpGlassAssets;\n\n // State flags\n private hasBeenDisposed = false;\n private isInitialized = false;\n private resolutionChanged = true;\n\n // Visible UV bounds (where container clips the canvas)\n // vec4(minX, minY, maxX, maxY) - portion of canvas UV that's visible\n private visibleUvBounds: [number, number, number, number] = [0, 0, 1, 1];\n\n // Resize handling\n private resizeObserver: ResizeObserver | null = null;\n private renderScale = 1;\n private parentWidth = 0;\n private parentHeight = 0;\n private parentDevicePixelWidth = 0;\n private parentDevicePixelHeight = 0;\n private devicePixelsSupported = false;\n private minPixelRatio: number;\n private maxPixelCount: number;\n private isSafariBrowser = isSafari();\n\n // Performance monitoring\n private performanceController: WebGLPerformanceController | null = null;\n\n constructor(\n parentElement: HTMLElement,\n assets: RzpGlassAssets,\n config: Partial<RzpGlassConfig> = {},\n /** Starting frame offset in ms for deterministic results */\n frame = 0,\n /** Minimum pixel ratio to render at (default: 2) */\n minPixelRatio = 1,\n /** Maximum pixel count to render (default: ~8.3M) */\n maxPixelCount = DEFAULT_MAX_PIXEL_COUNT,\n ) {\n this.parentElement = parentElement;\n this.assets = assets;\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.currentFrame = frame;\n this.minPixelRatio = minPixelRatio;\n this.maxPixelCount = maxPixelCount;\n\n // Inject default styles if not already present\n if (!document.querySelector('style[data-rzp-glass-style]')) {\n const styleElement = document.createElement('style');\n styleElement.innerHTML = defaultStyle;\n styleElement.setAttribute('data-rzp-glass-style', '');\n document.head.prepend(styleElement);\n }\n\n // Create canvas element\n this.canvasElement = document.createElement('canvas');\n this.parentElement.prepend(this.canvasElement);\n this.parentElement.setAttribute('data-rzp-glass', '');\n\n // Get WebGL context with alpha for transparency during loading\n const gl = this.canvasElement.getContext('webgl', {\n antialias: false,\n premultipliedAlpha: false,\n depth: false,\n alpha: true,\n powerPreference: 'high-performance',\n })!;\n this.gl = gl;\n\n // Flip Y axis when uploading textures (video/images have Y=0 at top, WebGL has Y=0 at bottom)\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n\n // WebGL state setup (matching OGL defaults for 2D rendering)\n gl.disable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n\n // Set clear color to transparent (for alpha blending during loading)\n gl.clearColor(0, 0, 0, 0);\n\n // Initialize program\n this.initProgram();\n\n // Initialize performance controller after the initProgram so we don't get a crash when the program is not initialized yet.\n this.performanceController = new WebGLPerformanceController({\n gl: this.gl,\n onLevelChange: this.handlePerformanceLevelChange,\n });\n\n this.stopIfPotato();\n\n this.setupPositionAttribute();\n this.setupUniformLocations();\n this.setupResizeObserver();\n\n // Visual viewport listener for zoom changes\n visualViewport?.addEventListener('resize', this.handleVisualViewportChange);\n\n // Listen for visibility changes to pause when tab is hidden\n document.addEventListener('visibilitychange', this.handleDocumentVisibilityChange);\n }\n\n private stopIfPotato(): asserts this is this {\n if (!this.performanceController?.isPotato()) {\n return;\n }\n this.stopRenderLoop();\n throw new Error('RzpGlass: WebGL is not supported in this browser');\n }\n\n /**\n * Load all assets (video or static image + gradient maps) and start rendering.\n * When `assets.imageSrc` is provided it is used as a static base texture and\n * no video element is created.\n */\n async loadAssets(): Promise<void> {\n this.stopIfPotato();\n try {\n const useStaticImage = Boolean(this.assets.imageSrc);\n\n const gradientMap2Src = this.assets.gradientMap2Src ?? this.assets.gradientMapSrc!;\n\n const [baseAsset, gradientMap, gradientMap2, centerGradientMap] = await Promise.all([\n useStaticImage ? loadImage(this.assets.imageSrc!) : loadVideo(this.assets.videoSrc!),\n loadImage(this.assets.gradientMapSrc!),\n loadImage(gradientMap2Src),\n loadImage(this.assets.centerGradientMapSrc!),\n ]);\n\n if (useStaticImage) {\n // Static image path — upload once to texture unit 0, no video loop needed\n this.setupImageTexture('uVideoTexture', baseAsset as HTMLImageElement, 0);\n } else {\n this.video = baseAsset as HTMLVideoElement;\n this.setupVideoTexture();\n // Set video to start time and apply playback rate before playback\n this.video.currentTime = this.config.startTime;\n this.video.playbackRate = this.config.playbackRate;\n if (!this.config.paused) {\n await this.video.play().catch((e) => {\n console.warn('Video autoplay failed:', e);\n });\n }\n }\n\n this.setupImageTexture('uGradientMap', gradientMap as HTMLImageElement, 1);\n this.setupImageTexture('uCenterGradientMap', centerGradientMap as HTMLImageElement, 2);\n this.setupImageTexture('uGradientMap2', gradientMap2 as HTMLImageElement, 3);\n\n // Set initial uniform values\n this.setAllUniforms();\n\n this.isInitialized = true;\n\n // Initial resize\n this.handleResize();\n\n // Start the render loop (runs continuously)\n this.startRenderLoop();\n } catch (error) {\n console.error('RzpGlass: Failed to load assets', error);\n throw error;\n }\n }\n\n private initProgram(): void {\n const program = createProgram(this.gl, rzpGlassVertexShader, rzpGlassFragmentShader);\n if (!program) {\n throw new Error('RzpGlass: Failed to create WebGL program');\n }\n this.program = program;\n }\n\n private setupPositionAttribute(): void {\n const buffers = setupFullscreenQuad(this.gl, this.program!);\n if (!buffers) {\n throw new Error('RzpGlass: Failed to setup fullscreen quad');\n }\n }\n\n private setupUniformLocations(): void {\n const gl = this.gl;\n const program = this.program!;\n\n // All uniform names from the shader\n const uniformNames = [\n 'uTime',\n 'iResolution',\n 'uDpr',\n 'uVideoTexture',\n 'uGradientMap',\n 'uGradientMap2',\n 'uGradientMapBlend',\n 'uCenterGradientMap',\n 'uEnableDisplacement',\n 'uEnableColorama',\n 'uEnableBloom',\n 'uEnableLightSweep',\n 'uInputMin',\n 'uInputMax',\n 'uModifyGamma',\n 'uPosterizeLevels',\n 'uCycleRepetitions',\n 'uPhaseShift',\n 'uCycleSpeed',\n 'uWrapMode',\n 'uReverse',\n 'uBlendWithOriginal',\n 'uLightIntensity',\n 'uFrameCount',\n 'uLightStartFrame',\n 'uNumSegments',\n 'uSlitAngle',\n 'uDisplacementX',\n 'uDisplacementY',\n 'uEnableCenterElement',\n 'uCenterAnimDuration',\n 'uCenterAnimTime',\n 'uCCBlackPoint',\n 'uCCWhitePoint',\n 'uCCMidtoneGamma',\n 'uCCGamma',\n 'uCCContrast',\n 'uZoom',\n 'uPan', // vec2(panX, panY) - set in vertex shader\n 'uEdgeFeather',\n 'uRefResolution',\n 'uVisibleUvBounds', // vec4(minX, minY, maxX, maxY) - visible portion of canvas in UV space\n 'uBackgroundColor', // vec3(r, g, b) - background color to blend with\n // Ripple wave\n 'uEnableRippleWave',\n 'uRippleSpeed',\n 'uRippleBlend',\n 'uRippleAngularPower',\n 'uRippleRadialFalloff',\n 'uRippleWaitTime',\n ];\n\n for (const name of uniformNames) {\n this.uniformLocations[name] = gl.getUniformLocation(program, name);\n }\n }\n\n private setupVideoTexture(): void {\n this.videoTexture = new Texture(this.gl, { textureUnit: 0 });\n\n // Use requestVideoFrameCallback for efficient video texture updates\n if (this.video && 'requestVideoFrameCallback' in this.video) {\n const updateVideoFrame = () => {\n if (this.hasBeenDisposed || !this.video || !this.videoTexture) return;\n\n this.videoTexture.update(this.video);\n\n this.videoFrameCallbackId = (this.video as any).requestVideoFrameCallback(updateVideoFrame);\n };\n this.videoFrameCallbackId = (this.video as any).requestVideoFrameCallback(updateVideoFrame);\n }\n }\n\n private setupImageTexture(\n uniformName: string,\n image: HTMLImageElement,\n textureUnit: number,\n ): void {\n const texture = new Texture(this.gl, { textureUnit });\n texture.image(image);\n\n if (uniformName === 'uVideoTexture') {\n this.videoTexture = texture;\n } else if (uniformName === 'uGradientMap') {\n this.gradientMapTexture = texture;\n } else if (uniformName === 'uGradientMap2') {\n this.gradientMap2Texture = texture;\n } else if (uniformName === 'uCenterGradientMap') {\n this.centerGradientMapTexture = texture;\n }\n }\n\n /**\n * Hot-swap the gradient map texture at runtime.\n * Accepts an HTMLCanvasElement (generated by generateGradientCanvas) or an HTMLImageElement.\n * No reinitialization required — the next frame will pick up the new texture.\n */\n public updateGradientMapTexture(source: HTMLCanvasElement | HTMLImageElement): void {\n if (!this.isInitialized || !this.gradientMapTexture) return;\n this.gradientMapTexture.image(source);\n }\n\n private setupResizeObserver(): void {\n this.resizeObserver = new ResizeObserver(([entry]) => {\n if (entry?.borderBoxSize[0]) {\n const physicalPixelSize = entry.devicePixelContentBoxSize?.[0];\n\n if (physicalPixelSize !== undefined) {\n this.devicePixelsSupported = true;\n this.parentDevicePixelWidth = physicalPixelSize.inlineSize;\n this.parentDevicePixelHeight = physicalPixelSize.blockSize;\n }\n\n this.parentWidth = entry.borderBoxSize[0].inlineSize;\n this.parentHeight = entry.borderBoxSize[0].blockSize;\n }\n\n this.handleResize();\n });\n\n this.resizeObserver.observe(this.parentElement);\n }\n\n private handleVisualViewportChange = (): void => {\n // Restart resize observer to get fresh callback on zoom change\n this.resizeObserver?.disconnect();\n this.setupResizeObserver();\n };\n\n private handleResize = (): void => {\n // Container dimensions (use stored values or fallback to clientWidth/Height)\n const containerWidth = this.parentWidth || this.parentElement.clientWidth;\n const containerHeight = this.parentHeight || this.parentElement.clientHeight;\n const containerAspect = containerWidth / containerHeight;\n\n // \"Cover\" behavior: fill container while maintaining aspect ratio (crop overflow)\n let canvasWidth: number;\n let canvasHeight: number;\n\n const targetAspectRatio = this.config.aspectRatio;\n if (containerAspect > targetAspectRatio) {\n // Container is wider than target - fit to width, crop top/bottom\n canvasWidth = containerWidth;\n canvasHeight = containerWidth / targetAspectRatio;\n } else {\n // Container is taller than target - fit to height, crop left/right\n canvasHeight = containerHeight;\n canvasWidth = containerHeight * targetAspectRatio;\n }\n\n // Center the canvas (overflow will be hidden by parent)\n const offsetX = (containerWidth - canvasWidth) / 2;\n const offsetY = (containerHeight - canvasHeight) / 2;\n\n // Calculate visible UV bounds (where container clips the canvas)\n // When canvas overflows container, we need to know which portion is visible\n const visibleMinX = -offsetX / canvasWidth;\n const visibleMaxX = (containerWidth - offsetX) / canvasWidth;\n const visibleMinY = -offsetY / canvasHeight;\n const visibleMaxY = (containerHeight - offsetY) / canvasHeight;\n this.visibleUvBounds = [visibleMinX, visibleMinY, visibleMaxX, visibleMaxY];\n\n // Set display size (CSS pixels)\n this.canvasElement.style.width = `${canvasWidth}px`;\n this.canvasElement.style.height = `${canvasHeight}px`;\n this.canvasElement.style.left = `${offsetX}px`;\n this.canvasElement.style.top = `${offsetY}px`;\n\n // Calculate target pixel dimensions for rendering\n let targetPixelWidth = 0;\n let targetPixelHeight = 0;\n\n const dpr = Math.max(1, window.devicePixelRatio);\n const pinchZoom = visualViewport?.scale ?? 1;\n\n if (this.devicePixelsSupported) {\n // Use real pixel size if we know it, but maintain aspect ratio\n // Calculate the scale ratio from parent to canvas (for aspect ratio correction)\n const canvasToParentRatioX = canvasWidth / containerWidth;\n const canvasToParentRatioY = canvasHeight / containerHeight;\n\n const scaleToMeetMinPixelRatio = Math.max(1, this.minPixelRatio / dpr);\n // Apply aspect ratio correction to device pixel dimensions\n targetPixelWidth =\n this.parentDevicePixelWidth * canvasToParentRatioX * scaleToMeetMinPixelRatio * pinchZoom;\n targetPixelHeight =\n this.parentDevicePixelHeight * canvasToParentRatioY * scaleToMeetMinPixelRatio * pinchZoom;\n } else {\n // Approximate using devicePixelRatio\n let targetRenderScale = Math.max(dpr, this.minPixelRatio) * pinchZoom;\n\n if (this.isSafariBrowser) {\n // Safari reports physical devicePixelRatio, need to factor in zoom manually\n const zoomLevel = bestGuessBrowserZoom();\n targetRenderScale *= Math.max(1, zoomLevel);\n }\n\n targetPixelWidth = Math.round(canvasWidth) * targetRenderScale;\n targetPixelHeight = Math.round(canvasHeight) * targetRenderScale;\n }\n\n // Prevent total rendered pixels from exceeding maxPixelCount\n const maxPixelCountHeadroom =\n Math.sqrt(this.maxPixelCount) / Math.sqrt(targetPixelWidth * targetPixelHeight);\n const scaleToMeetMaxPixelCount = Math.min(1, maxPixelCountHeadroom);\n const newWidth = Math.round(targetPixelWidth * scaleToMeetMaxPixelCount);\n const newHeight = Math.round(targetPixelHeight * scaleToMeetMaxPixelCount);\n const newRenderScale = newWidth / Math.round(canvasWidth);\n\n if (\n this.canvasElement.width !== newWidth ||\n this.canvasElement.height !== newHeight ||\n this.renderScale !== newRenderScale\n ) {\n this.renderScale = newRenderScale;\n this.canvasElement.width = newWidth;\n this.canvasElement.height = newHeight;\n this.resolutionChanged = true;\n this.gl.viewport(0, 0, newWidth, newHeight);\n\n // Only render immediately when the loop isn't running — if it is,\n // resolutionChanged=true is enough and the next RAF picks it up.\n // Calling render() while the loop is active spawns a duplicate RAF chain.\n if (this.rafId === null) {\n this.render(performance.now());\n }\n }\n };\n\n private handleDocumentVisibilityChange = (): void => {\n if (document.hidden) {\n // Pause render loop when tab is hidden\n this.stopRenderLoop();\n this.video?.pause();\n } else {\n // Resume render loop when tab is visible\n this.startRenderLoop();\n // Only resume video if not paused\n if (!this.config.paused) {\n this.video?.play().catch(() => {});\n }\n }\n };\n\n private setAllUniforms(): void {\n const gl = this.gl;\n gl.useProgram(this.program);\n\n // Texture units\n gl.uniform1i(this.uniformLocations.uVideoTexture, 0);\n gl.uniform1i(this.uniformLocations.uGradientMap, 1);\n gl.uniform1i(this.uniformLocations.uCenterGradientMap, 2);\n gl.uniform1i(this.uniformLocations.uGradientMap2, 3);\n gl.uniform1f(this.uniformLocations.uGradientMapBlend, this.currentGradientMapBlend);\n\n // Set all config-based uniforms\n this.setUniformValues(this.config);\n\n // Explicitly set pan uniform (vertex shader uniform)\n gl.uniform2f(this.uniformLocations.uPan, this.config.panX, this.config.panY);\n\n // Reference resolution (constant)\n gl.uniform2f(this.uniformLocations.uRefResolution, REF_RESOLUTION.width, REF_RESOLUTION.height);\n\n // Background color (or set to -1 if not provided)\n if (this.config.backgroundColor) {\n const [r, g, b] = this.config.backgroundColor;\n gl.uniform3f(this.uniformLocations.uBackgroundColor, r, g, b);\n // Also set clear color to match\n gl.clearColor(r, g, b, 1.0);\n } else {\n // Set to -1 to indicate no background color blending\n gl.uniform3f(this.uniformLocations.uBackgroundColor, -1.0, -1.0, -1.0);\n // Use transparent clear color\n gl.clearColor(0, 0, 0, 0);\n }\n\n // Visible UV bounds (where container clips the canvas)\n gl.uniform4f(\n this.uniformLocations.uVisibleUvBounds,\n this.visibleUvBounds[0],\n this.visibleUvBounds[1],\n this.visibleUvBounds[2],\n this.visibleUvBounds[3],\n );\n }\n\n /** Check if uniform values are equal (handles arrays) */\n private areUniformValuesEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n return a.every((val, i) => this.areUniformValuesEqual(val, b[i]));\n }\n return false;\n }\n\n /** Set uniform values with caching to avoid redundant updates */\n private setUniformValues(config: Partial<RzpGlassConfig>): void {\n const gl = this.gl;\n gl.useProgram(this.program);\n\n Object.entries(config).forEach(([key, value]) => {\n if (value === undefined) return;\n\n // Check if value has changed\n if (this.areUniformValuesEqual(this.uniformCache[key], value)) return;\n this.uniformCache[key] = value;\n\n // Get uniform name from config key\n const uniformName = CONFIG_TO_UNIFORM[key];\n if (!uniformName) return; // Skip non-uniform config values\n\n const location = this.uniformLocations[uniformName];\n if (!location) return;\n\n if (typeof value === 'boolean') {\n gl.uniform1f(location, value ? 1 : 0);\n } else if (typeof value === 'number') {\n gl.uniform1f(location, value);\n } else if (Array.isArray(value)) {\n // Handle array uniforms (cast to number[] since config values are all numbers/booleans)\n const flatArray = (value as number[]).flat() as number[];\n switch (flatArray.length) {\n case 2:\n gl.uniform2fv(location, flatArray);\n break;\n case 3:\n gl.uniform3fv(location, flatArray);\n break;\n case 4:\n gl.uniform4fv(location, flatArray);\n break;\n }\n }\n });\n\n // Handle special pan uniform (vec2 in vertex shader)\n if (config.panX !== undefined || config.panY !== undefined) {\n const panCacheKey = 'pan';\n const panValue = [this.config.panX, this.config.panY];\n if (!this.areUniformValuesEqual(this.uniformCache[panCacheKey], panValue)) {\n this.uniformCache[panCacheKey] = panValue;\n gl.uniform2f(this.uniformLocations.uPan, panValue[0], panValue[1]);\n }\n }\n\n // Handle special backgroundColor uniform (vec3 in fragment shader)\n if (config.backgroundColor !== undefined) {\n const bgCacheKey = 'backgroundColor';\n if (!this.areUniformValuesEqual(this.uniformCache[bgCacheKey], config.backgroundColor)) {\n this.uniformCache[bgCacheKey] = config.backgroundColor;\n if (config.backgroundColor) {\n const [r, g, b] = config.backgroundColor;\n gl.uniform3f(this.uniformLocations.uBackgroundColor, r, g, b);\n // Also update clear color to match\n gl.clearColor(r, g, b, 1.0);\n } else {\n // Set to -1 to indicate no background color blending\n gl.uniform3f(this.uniformLocations.uBackgroundColor, -1.0, -1.0, -1.0);\n // Use transparent clear color\n gl.clearColor(0, 0, 0, 0);\n }\n }\n }\n }\n\n /**\n * Update uniforms from config (partial update supported)\n */\n public setUniforms(newConfig: Partial<RzpGlassConfig>): void {\n this.config = { ...this.config, ...newConfig };\n\n if (!this.isInitialized) return;\n\n // Use the new caching-based uniform setter\n this.setUniformValues(newConfig);\n\n // Handle paused state changes - control video play/pause\n if (newConfig.paused !== undefined) {\n if (newConfig.paused) {\n this.video?.pause();\n } else {\n this.video?.play().catch(() => {});\n }\n }\n\n if (newConfig.playbackRate !== undefined && this.video) {\n this.video.playbackRate = newConfig.playbackRate;\n }\n\n if (newConfig.aspectRatio !== undefined) {\n this.handleResize();\n }\n }\n\n private startRenderLoop(): void {\n if (this.rafId !== null) return; // Already running\n this.lastRenderTime = performance.now() * 0.001; // Initialize in seconds\n this.rafId = requestAnimationFrame(this.render);\n }\n\n private stopRenderLoop(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n }\n\n private render = (currentTime: number): void => {\n if (this.hasBeenDisposed) return;\n\n // ALWAYS schedule next frame first (like the original loop)\n this.rafId = requestAnimationFrame(this.render);\n\n if (this.program === null) {\n console.warn('Tried to render before program was initialized');\n return;\n }\n\n const gl = this.gl;\n const video = this.video;\n\n // Calculate delta time in seconds (framerate independent)\n const currentTimeSeconds = currentTime * 0.001; // Convert ms to seconds\n const deltaTime = currentTimeSeconds - this.lastRenderTime;\n this.lastRenderTime = currentTimeSeconds;\n this.currentFrame++; // Increment frame count every frame\n\n const usingStaticImage = !video && this.videoTexture !== null;\n\n // Skip rendering if video isn't ready — do NOT clear the canvas here so the\n // last rendered frame stays visible instead of flashing transparent/black.\n // This prevents flickering during video native loop boundary frames.\n if (!usingStaticImage) {\n if (!video || video.readyState < video.HAVE_CURRENT_DATA) {\n return;\n }\n\n // Update video texture (fallback for browsers without requestVideoFrameCallback)\n if (!('requestVideoFrameCallback' in video) && this.videoTexture) {\n this.videoTexture.update(video);\n }\n\n // Handle video looping within start/end time range (only when not paused)\n if (!this.config.paused) {\n if (video.currentTime < this.config.startTime || video.currentTime >= this.config.endTime) {\n video.currentTime = this.config.startTime;\n }\n }\n }\n\n // Clear canvas now that we know we have data to draw.\n // Doing this after the readyState guard means we keep the last frame\n // during any brief gaps (e.g. native video loop boundary).\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n // Animation time: driven by video position for video mode, real elapsed time for static image\n const videoAnimTime = usingStaticImage\n ? currentTimeSeconds\n : video!.currentTime - this.config.startTime;\n\n // Update center animation time (always accumulate real time for smooth animation)\n if (this.config.animateLightIndependently || usingStaticImage) {\n this.independentLightTime += deltaTime;\n } else {\n const videoTimeDelta = videoAnimTime - this.lastVideoTime;\n const isVideoJump = Math.abs(videoTimeDelta) > 0.1 || videoTimeDelta < -0.01;\n\n if (isVideoJump) {\n this.independentLightTime = videoAnimTime;\n } else {\n this.independentLightTime += deltaTime;\n }\n }\n this.lastVideoTime = videoAnimTime;\n\n // Use program and set per-frame uniforms\n gl.useProgram(this.program);\n\n // Time uniforms\n gl.uniform1f(this.uniformLocations.uTime, currentTimeSeconds);\n // When animateLightIndependently is true, use real elapsed time for frame count\n // so light effects aren't tied to video playback\n const frameCount = this.config.animateLightIndependently\n ? this.independentLightTime * 30 // Use independent time (in seconds * 30fps)\n : videoAnimTime * 30; // Use video time (in seconds * 30fps)\n gl.uniform1f(this.uniformLocations.uFrameCount, frameCount);\n gl.uniform1f(this.uniformLocations.uCenterAnimTime, this.independentLightTime);\n\n // Resolution uniforms (only when changed)\n if (this.resolutionChanged) {\n gl.uniform2f(\n this.uniformLocations.iResolution,\n this.canvasElement.width,\n this.canvasElement.height,\n );\n gl.uniform1f(this.uniformLocations.uDpr, this.renderScale);\n // Update visible UV bounds (where container clips the canvas)\n gl.uniform4f(\n this.uniformLocations.uVisibleUvBounds,\n this.visibleUvBounds[0],\n this.visibleUvBounds[1],\n this.visibleUvBounds[2],\n this.visibleUvBounds[3],\n );\n this.resolutionChanged = false;\n }\n\n // Animate cycleRepetitions if enabled\n if (\n this.config.animateCycleReps &&\n this.currentFrame > this.config.cycleRepetitionsStartFrame\n ) {\n const elapsed = this.currentFrame - this.config.cycleRepetitionsStartFrame;\n const cycleProgress =\n (elapsed % (this.config.cycleRepetitionsDuration * 2)) /\n this.config.cycleRepetitionsDuration;\n const pingPong = cycleProgress <= 1 ? cycleProgress : 2 - cycleProgress;\n const eased = pingPong * pingPong * (3 - 2 * pingPong); // smoothstep\n const delta = this.config.cycleRepetitionsEnd - this.config.cycleRepetitionsStart;\n gl.uniform1f(\n this.uniformLocations.uCycleRepetitions,\n this.config.cycleRepetitionsStart + eased * delta,\n );\n } else {\n gl.uniform1f(this.uniformLocations.uCycleRepetitions, this.config.cycleRepetitions);\n }\n\n // Animate gradientMapBlend smoothly towards target\n const targetBlend = this.config.gradientMapBlend;\n if (this.currentGradientMapBlend !== targetBlend) {\n const speed = 1.0 / this.config.gradientMapBlendDuration;\n const diff = targetBlend - this.currentGradientMapBlend;\n const step = Math.sign(diff) * Math.min(Math.abs(diff), speed * deltaTime);\n this.currentGradientMapBlend += step;\n gl.uniform1f(this.uniformLocations.uGradientMapBlend, this.currentGradientMapBlend);\n }\n\n // Draw\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n // ===== Public API (paper-shader style) =====\n\n /** Get the current animation frame (in ms) */\n public getCurrentFrame(): number {\n return this.currentFrame;\n }\n\n /** Set a specific frame for deterministic results */\n public setFrame(newFrame: number): void {\n this.currentFrame = newFrame;\n }\n\n /** Set the maximum pixel count for performance tuning */\n public setMaxPixelCount(newMaxPixelCount: number = DEFAULT_MAX_PIXEL_COUNT): void {\n this.maxPixelCount = newMaxPixelCount;\n this.handleResize();\n }\n\n /** Set the minimum pixel ratio for quality tuning */\n public setMinPixelRatio(newMinPixelRatio: number = 2): void {\n this.minPixelRatio = newMinPixelRatio;\n this.handleResize();\n }\n\n /** Play video */\n public play(): void {\n this.config.paused = false;\n this.video?.play().catch(() => {});\n }\n\n /** Pause video */\n public pause(): void {\n this.config.paused = true;\n this.video?.pause();\n }\n\n /** Seek to specific time in video */\n public setTime(time: number): void {\n if (this.video) {\n this.video.currentTime = time;\n }\n }\n\n private handlePerformanceLevelChange = (level: PerformanceLevel): void => {\n if (level === 0) {\n this.stopRenderLoop();\n this.canvasElement.style.display = 'none';\n return;\n }\n\n const { maxPixelCount, minPixelRatio } = LEVEL_RENDER_SETTINGS[level];\n this.maxPixelCount = maxPixelCount;\n this.minPixelRatio = minPixelRatio;\n\n // Restore canvas + render loop if they were previously hidden/stopped\n if (this.canvasElement.style.display === 'none') {\n this.canvasElement.style.display = '';\n }\n if (this.isInitialized) {\n this.startRenderLoop();\n }\n\n this.handleResize();\n };\n\n /** Clean up all WebGL resources */\n public dispose(): void {\n // Immediately mark as disposed to prevent future renders\n this.hasBeenDisposed = true;\n\n // Cancel any pending RAF\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n\n // Cancel video frame callback\n if (\n this.videoFrameCallbackId !== null &&\n this.video &&\n 'cancelVideoFrameCallback' in this.video\n ) {\n (this.video as any).cancelVideoFrameCallback(this.videoFrameCallbackId);\n }\n\n // Pause and remove video\n if (this.video) {\n this.video.pause();\n this.video.src = '';\n this.video.load();\n this.video = null;\n }\n\n // Clean up WebGL resources\n if (this.gl && this.program) {\n this.videoTexture?.destroy();\n this.gradientMapTexture?.destroy();\n this.gradientMap2Texture?.destroy();\n this.centerGradientMapTexture?.destroy();\n this.gl.deleteProgram(this.program);\n this.program = null;\n\n // Reset WebGL state\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null);\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, null);\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);\n\n // Clear any errors\n this.gl.getError();\n }\n\n // Clean up performance controller\n this.performanceController?.dispose();\n this.performanceController = null;\n\n // Clean up observers and listeners\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n visualViewport?.removeEventListener('resize', this.handleVisualViewportChange);\n document.removeEventListener('visibilitychange', this.handleDocumentVisibilityChange);\n\n this.uniformLocations = {};\n this.uniformCache = {};\n\n // Remove canvas\n this.canvasElement.remove();\n this.parentElement.removeAttribute('data-rzp-glass');\n }\n}\n"],"names":["REF_RESOLUTION","width","height","DEFAULT_MAX_PIXEL_COUNT","defaultStyle","CONFIG_TO_UNIFORM","enableDisplacement","enableColorama","enableBloom","enableLightSweep","inputMin","inputMax","modifyGamma","posterizeLevels","cycleRepetitions","phaseShift","cycleSpeed","wrapMode","reverse","blendWithOriginal","lightIntensity","lightStartFrame","numSegments","slitAngle","displacementX","displacementY","enableCenterElement","centerAnimDuration","ccBlackPoint","ccWhitePoint","ccMidtoneGamma","ccGamma","ccContrast","zoom","edgeFeather","RzpGlassMount","parentElement","assets","_this","_visualViewport2","config","arguments","length","undefined","frame","minPixelRatio","maxPixelCount","_classCallCheck","_defineProperty","isSafari","_this$resizeObserver","resizeObserver","disconnect","setupResizeObserver","_visualViewport$scale","_visualViewport","containerWidth","parentWidth","clientWidth","containerHeight","parentHeight","clientHeight","containerAspect","canvasWidth","canvasHeight","targetAspectRatio","aspectRatio","offsetX","offsetY","visibleMinX","visibleMaxX","visibleMinY","visibleMaxY","visibleUvBounds","canvasElement","style","concat","left","top","targetPixelWidth","targetPixelHeight","dpr","Math","max","window","devicePixelRatio","pinchZoom","visualViewport","scale","devicePixelsSupported","canvasToParentRatioX","canvasToParentRatioY","scaleToMeetMinPixelRatio","parentDevicePixelWidth","parentDevicePixelHeight","targetRenderScale","isSafariBrowser","zoomLevel","bestGuessBrowserZoom","round","maxPixelCountHeadroom","sqrt","scaleToMeetMaxPixelCount","min","newWidth","newHeight","newRenderScale","renderScale","resolutionChanged","gl","viewport","rafId","render","performance","now","document","hidden","_this$video","stopRenderLoop","video","pause","startRenderLoop","paused","_this$video2","play","currentTime","hasBeenDisposed","requestAnimationFrame","program","console","warn","currentTimeSeconds","deltaTime","lastRenderTime","currentFrame","usingStaticImage","videoTexture","readyState","HAVE_CURRENT_DATA","update","startTime","endTime","clear","COLOR_BUFFER_BIT","videoAnimTime","animateLightIndependently","independentLightTime","videoTimeDelta","lastVideoTime","isVideoJump","abs","useProgram","uniform1f","uniformLocations","uTime","frameCount","uFrameCount","uCenterAnimTime","uniform2f","iResolution","uDpr","uniform4f","uVisibleUvBounds","animateCycleReps","cycleRepetitionsStartFrame","elapsed","cycleProgress","cycleRepetitionsDuration","pingPong","eased","delta","cycleRepetitionsEnd","cycleRepetitionsStart","uCycleRepetitions","targetBlend","gradientMapBlend","currentGradientMapBlend","speed","gradientMapBlendDuration","diff","step","sign","uGradientMapBlend","drawArrays","TRIANGLES","level","display","_LEVEL_RENDER_SETTING","LEVEL_RENDER_SETTINGS","isInitialized","handleResize","_objectSpread","DEFAULT_CONFIG","querySelector","styleElement","createElement","innerHTML","setAttribute","head","prepend","getContext","antialias","premultipliedAlpha","depth","alpha","powerPreference","pixelStorei","UNPACK_FLIP_Y_WEBGL","disable","DEPTH_TEST","CULL_FACE","clearColor","initProgram","performanceController","WebGLPerformanceController","onLevelChange","handlePerformanceLevelChange","stopIfPotato","setupPositionAttribute","setupUniformLocations","addEventListener","handleVisualViewportChange","handleDocumentVisibilityChange","_createClass","key","value","_this$performanceCont","isPotato","Error","_loadAssets","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_this$assets$gradient","useStaticImage","gradientMap2Src","_yield$Promise$all","_yield$Promise$all2","baseAsset","gradientMap","gradientMap2","centerGradientMap","_t","wrap","_context","prev","next","Boolean","imageSrc","gradientMapSrc","Promise","all","loadImage","loadVideo","videoSrc","centerGradientMapSrc","sent","_slicedToArray","setupImageTexture","setupVideoTexture","playbackRate","e","setAllUniforms","error","stop","loadAssets","apply","createProgram","rzpGlassVertexShader","rzpGlassFragmentShader","buffers","setupFullscreenQuad","uniformNames","_i","_uniformNames","name","getUniformLocation","_this2","Texture","textureUnit","updateVideoFrame","videoFrameCallbackId","requestVideoFrameCallback","uniformName","image","texture","gradientMapTexture","gradientMap2Texture","centerGradientMapTexture","updateGradientMapTexture","source","_this3","ResizeObserver","_ref","_ref2","entry","borderBoxSize","_entry$devicePixelCon","physicalPixelSize","devicePixelContentBoxSize","inlineSize","blockSize","observe","uniform1i","uVideoTexture","uGradientMap","uCenterGradientMap","uGradientMap2","setUniformValues","uPan","panX","panY","uRefResolution","backgroundColor","_this$config$backgrou","r","g","b","uniform3f","uBackgroundColor","areUniformValuesEqual","a","_this4","Array","isArray","every","val","i","_this5","Object","entries","forEach","_ref3","_ref4","uniformCache","location","flatArray","flat","uniform2fv","uniform3fv","uniform4fv","panCacheKey","panValue","bgCacheKey","_config$backgroundCol","setUniforms","newConfig","_this$video3","_this$video4","cancelAnimationFrame","getCurrentFrame","setFrame","newFrame","setMaxPixelCount","newMaxPixelCount","setMinPixelRatio","newMinPixelRatio","_this$video5","_this$video6","setTime","time","dispose","_this$performanceCont2","_visualViewport3","cancelVideoFrameCallback","src","load","_this$videoTexture","_this$gradientMapText","_this$gradientMap2Tex","_this$centerGradientM","destroy","deleteProgram","bindBuffer","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","bindRenderbuffer","RENDERBUFFER","bindFramebuffer","FRAMEBUFFER","getError","removeEventListener","remove","removeAttribute"],"mappings":"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"}
|