@d3p1/img2pxl 1.22.2 → 2.0.0
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/README.md +4 -8
- package/dist/{core/app → app/main/runner}/image.d.ts +2 -2
- package/dist/{core/app → app/main/runner}/pointer/canvas.d.ts +1 -1
- package/dist/{core/app → app/main/runner}/pointer.d.ts +1 -1
- package/dist/{core/app.d.ts → app/main/runner.d.ts} +5 -5
- package/dist/{img2pxl.d.ts → app/main.d.ts} +4 -4
- package/dist/{img2pxl.js → core.js} +4 -4
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/{core/lib → services}/image-manager.d.ts +1 -1
- package/package.json +13 -11
- package/dist/img2pxl.js.map +0 -1
- package/dist/img2pxl.umd.cjs +0 -94
- package/dist/img2pxl.umd.cjs.map +0 -1
- /package/dist/{core/lib → services}/debug-manager/copy/settings.d.ts +0 -0
- /package/dist/{core/lib → services}/debug-manager.d.ts +0 -0
- /package/dist/{core/lib → services}/renderer-manager.d.ts +0 -0
package/dist/img2pxl.umd.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"img2pxl.umd.cjs","sources":["../node_modules/three/examples/jsm/misc/Timer.js","../src/core/app/shader/pars_vertex.glsl","../src/core/app/shader/position_vertex.glsl","../src/core/app.ts","../src/core/lib/renderer-manager.ts","../src/core/lib/debug-manager/copy/settings.ts","../src/core/lib/debug-manager.ts","../src/core/app/image/shader/vertex.glsl","../src/core/app/image/shader/fragment.glsl","../src/core/app/image.ts","../src/core/app/pointer.ts","../src/core/app/pointer/canvas.ts","../src/media/processor/displacement/pointer.png","../src/media/processor/displacement/noise.png","../src/core/lib/image-manager.ts","../src/img2pxl.ts"],"sourcesContent":["class Timer {\n\n\tconstructor() {\n\n\t\tthis._previousTime = 0;\n\t\tthis._currentTime = 0;\n\t\tthis._startTime = now();\n\n\t\tthis._delta = 0;\n\t\tthis._elapsed = 0;\n\n\t\tthis._timescale = 1;\n\n\t\t// use Page Visibility API to avoid large time delta values\n\n\t\tthis._usePageVisibilityAPI = ( typeof document !== 'undefined' && document.hidden !== undefined );\n\n\t\tif ( this._usePageVisibilityAPI === true ) {\n\n\t\t\tthis._pageVisibilityHandler = handleVisibilityChange.bind( this );\n\n\t\t\tdocument.addEventListener( 'visibilitychange', this._pageVisibilityHandler, false );\n\n\t\t}\n\n\t}\n\n\tgetDelta() {\n\n\t\treturn this._delta / 1000;\n\n\t}\n\n\tgetElapsed() {\n\n\t\treturn this._elapsed / 1000;\n\n\t}\n\n\tgetTimescale() {\n\n\t\treturn this._timescale;\n\n\t}\n\n\tsetTimescale( timescale ) {\n\n\t\tthis._timescale = timescale;\n\n\t\treturn this;\n\n\t}\n\n\treset() {\n\n\t\tthis._currentTime = now() - this._startTime;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this._usePageVisibilityAPI === true ) {\n\n\t\t\tdocument.removeEventListener( 'visibilitychange', this._pageVisibilityHandler );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( timestamp ) {\n\n\n\t\tif ( this._usePageVisibilityAPI === true && document.hidden === true ) {\n\n\t\t\tthis._delta = 0;\n\n\t\t} else {\n\n\t\t\tthis._previousTime = this._currentTime;\n\t\t\tthis._currentTime = ( timestamp !== undefined ? timestamp : now() ) - this._startTime;\n\n\t\t\tthis._delta = ( this._currentTime - this._previousTime ) * this._timescale;\n\t\t\tthis._elapsed += this._delta; // _elapsed is the accumulation of all previous deltas\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass FixedTimer extends Timer {\n\n\tconstructor( fps = 60 ) {\n\n\t\tsuper();\n\t\tthis._delta = ( 1 / fps ) * 1000;\n\n\t}\n\n\tupdate() {\n\n\t\tthis._elapsed += ( this._delta * this._timescale ); // _elapsed is the accumulation of all previous deltas\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn performance.now();\n\n}\n\nfunction handleVisibilityChange() {\n\n\tif ( document.hidden === false ) this.reset();\n\n}\n\nexport { Timer, FixedTimer };\n","/**\n * @description Shader chunk used to define params used in the\n * image vertex shader\n * to handle vertex/point/pixel displacement\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note This file is called `pars_vertex.glsl` to mantain the\n * same naming style used by Three.js for its `.glsl` chunk\n * files that define shader params\n */\nattribute float aDisAngle;\nattribute float aDisAmplitude;\n\nuniform float uTime;\nuniform float uDisFrequency;\nuniform float uDisAmplitude;\nuniform sampler2D uDisTexture;\nuniform float uNoiseFrequency;\nuniform float uNoiseAmplitude;\nuniform sampler2D uNoiseTexture;\n\nvarying vec4 vColor;","/**\n * @description Shader chunk used to handle vertex/point/pixel displacement\n * to handle vertex/point/pixel displacement\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n */\nvec3 vertexPosition = position;\n\nvec2 noiseUv = vec2(uv.x - uNoiseFrequency * uTime, uv.y);\nfloat noiseFactor = texture(uNoiseTexture, noiseUv).r * uNoiseAmplitude;\nfloat noiseX = cos(aDisAngle) * noiseFactor;\nfloat noiseY = sin(aDisAngle) * noiseFactor;\nvec2 noise = vec2(noiseX, noiseY);\n vertexPosition.xy += noise;\n\nfloat disFactor = texture(uDisTexture, uv).r;\n disFactor = smoothstep(0.2, 0.8, disFactor);\n disFactor = (sin(uDisFrequency * uTime) + 1.5) / (2.5) *\n disFactor *\n uDisAmplitude;\n disFactor *= aDisAmplitude;\n\nfloat displacementX = cos(aDisAngle) * disFactor;\nfloat displacementY = sin(aDisAngle) * disFactor;\nvec2 displacement = vec2(displacementX, displacementY);\n vertexPosition.xy += displacement;","/**\n * @description App\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note This class will manage how the renderer manager,\n * debug manager, the image, the pointer\n * and the motion (pixels' default motion, noise, etc.)\n * interact between each other\n */\nimport * as THREE from 'three'\nimport RendererManager from './lib/renderer-manager.js'\nimport DebugManager from './lib/debug-manager.js'\nimport Image from './app/image.js'\nimport Pointer from './app/pointer.js'\nimport parsVertexShader from './app/shader/pars_vertex.glsl'\nimport positionVertexShader from './app/shader/position_vertex.glsl'\n\nexport default class App {\n /**\n * @type {Image}\n */\n #image: Image\n\n /**\n * @type {Pointer}\n */\n #pointer: Pointer\n\n /**\n * @type {RendererManager}\n */\n #rendererManager: RendererManager\n\n /**\n * @type {DebugManager}\n */\n #debugManager: DebugManager\n\n /**\n * Constructor\n *\n * @param {Image} image\n * @param {Pointer} pointer\n * @param {RendererManager} rendererManager\n * @param {DebugManager} debugManager\n * @param {string} noiseImageSrc\n * @param {number} noiseFrequency\n * @param {number} noiseAmplitude\n * @param {number} displacementFrequency\n * @param {number} displacementAmplitude\n */\n constructor(\n image: Image,\n pointer: Pointer,\n rendererManager: RendererManager,\n debugManager: DebugManager,\n noiseImageSrc: string,\n noiseFrequency: number = 0.1,\n noiseAmplitude: number = 5,\n displacementFrequency: number = 5,\n displacementAmplitude: number = 50,\n ) {\n this.#image = image\n this.#pointer = pointer\n this.#rendererManager = rendererManager\n this.#debugManager = debugManager\n this.#initImage(\n noiseImageSrc,\n noiseFrequency,\n noiseAmplitude,\n displacementFrequency,\n displacementAmplitude,\n )\n this.#initPointer()\n }\n\n /**\n * Update\n *\n * @param {number} elapsed\n * @returns {void}\n */\n update(elapsed: number): void {\n this.#image.points.material.uniforms.uTime.value = elapsed\n this.#pointer.update()\n this.#rendererManager.update()\n }\n\n /**\n * Enable debug mode\n *\n * @returns {void}\n */\n debug(): void {\n this.#pointer.debug()\n\n this.#image.debug()\n\n const pixelMotionFolder = this.#debugManager.addFolder({\n title: 'Image Pixel Motion',\n })\n\n this.#debugManager.addBindingWithOnChange(\n this.#image.points.material.uniforms.uDisFrequency,\n 'value',\n 'frequency',\n {min: 0, max: 10 * 2 * Math.PI, step: 0.01},\n pixelMotionFolder,\n )\n\n this.#debugManager.addBindingWithOnChange(\n this.#image.points.material.uniforms.uDisAmplitude,\n 'value',\n 'amplitude',\n {min: 0, max: this.#rendererManager.width, step: 1},\n pixelMotionFolder,\n )\n\n const imageMotionFolder = this.#debugManager.addFolder({\n title: 'Image Motion',\n })\n\n this.#debugManager.addBindingWithOnChange(\n this.#image.points.material.uniforms.uNoiseFrequency,\n 'value',\n 'frequency',\n {min: 0, max: 2 * Math.PI, step: 0.01},\n imageMotionFolder,\n )\n\n this.#debugManager.addBindingWithOnChange(\n this.#image.points.material.uniforms.uNoiseAmplitude,\n 'value',\n 'amplitude',\n {min: 0, max: this.#rendererManager.width, step: 1},\n imageMotionFolder,\n )\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n this.#image.dispose()\n this.#pointer.dispose()\n }\n\n /**\n * Init image\n *\n * @param {string} noiseImageSrc\n * @param {number} noiseFrequency\n * @param {number} noiseAmplitude\n * @param {number} displacementFrequency\n * @param {number} displacementAmplitude\n * @returns {void}\n */\n #initImage(\n noiseImageSrc: string,\n noiseFrequency: number,\n noiseAmplitude: number,\n displacementFrequency: number,\n displacementAmplitude: number,\n ): void {\n this.#rendererManager.scene.add(this.#image.points)\n this.#addDisplacementAttributesToImage()\n this.#addDisplacementHandlerToImage(\n noiseImageSrc,\n noiseFrequency,\n noiseAmplitude,\n displacementFrequency,\n displacementAmplitude,\n )\n }\n\n /**\n * Init pointer\n *\n * @returns {void}\n */\n #initPointer(): void {\n this.#pointer.raycasterPlane.position.copy(this.#image.points.position)\n this.#pointer.raycasterPlane.position.z += 0.01\n\n this.#rendererManager.scene.add(this.#pointer.raycasterPlane)\n }\n\n /**\n * Add logic that handles vertex/point/pixel displacement to image\n *\n * @param {string} noiseImageSrc\n * @param {number} noiseFrequency\n * @param {number} noiseAmplitude\n * @param {number} displacementFrequency\n * @param {number} displacementAmplitude\n * @returns {void}\n * @note Take into consideration that the pointer canvas/image/texture\n * is called `uDisTexture` inside the shader because\n * it is considered that the shader does not need to know\n * that this texture is related to a pointer\n * @note Force shader compilation with `compile()`.\n * If it is not forced the shader compilation, then\n * uniforms will be undefined until first render of the scene\n * {@link https://github.com/mrdoob/three.js/pull/10960}\n */\n #addDisplacementHandlerToImage(\n noiseImageSrc: string,\n noiseFrequency: number,\n noiseAmplitude: number,\n displacementFrequency: number,\n displacementAmplitude: number,\n ): void {\n const textureLoader = new THREE.TextureLoader()\n const noiseTexture = textureLoader.load(noiseImageSrc)\n noiseTexture.wrapS = THREE.RepeatWrapping\n\n this.#image.points.material.onBeforeCompile = (\n shader: THREE.WebGLProgramParametersWithUniforms,\n ) => {\n shader.uniforms['uTime'] = new THREE.Uniform(0)\n shader.uniforms['uDisFrequency'] = new THREE.Uniform(\n displacementFrequency,\n )\n shader.uniforms['uDisAmplitude'] = new THREE.Uniform(\n displacementAmplitude,\n )\n shader.uniforms['uDisTexture'] = new THREE.Uniform(\n this.#pointer.canvas.texture,\n )\n shader.uniforms['uNoiseFrequency'] = new THREE.Uniform(noiseFrequency)\n shader.uniforms['uNoiseAmplitude'] = new THREE.Uniform(noiseAmplitude)\n shader.uniforms['uNoiseTexture'] = new THREE.Uniform(noiseTexture)\n\n shader.vertexShader = shader.vertexShader.replace(\n 'varying vec4 vColor;',\n parsVertexShader,\n )\n shader.vertexShader = shader.vertexShader.replace(\n 'vec3 vertexPosition = position;',\n positionVertexShader,\n )\n }\n\n this.#rendererManager.compile()\n }\n\n /**\n * Add attributes that handle displacement to image\n *\n * @returns {void}\n */\n #addDisplacementAttributesToImage(): void {\n const vertices = this.#image.points.geometry.attributes.position.count\n const disAngle = new Float32Array(vertices)\n const disAmplitude = new Float32Array(vertices)\n for (let i = 0; i < vertices; i++) {\n disAngle[i] = Math.random() * 2 * Math.PI\n disAmplitude[i] = Math.random()\n }\n this.#image.points.geometry.setAttribute(\n 'aDisAngle',\n new THREE.BufferAttribute(disAngle, 1),\n )\n this.#image.points.geometry.setAttribute(\n 'aDisAmplitude',\n new THREE.BufferAttribute(disAmplitude, 1),\n )\n }\n}\n","/**\n * @description Renderer manager\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note The idea behind this class is to encapsulate and wrap the\n * render logic\n */\nimport * as THREE from 'three'\n\nexport default class RendererManager {\n /**\n * @type {THREE.Scene}\n */\n scene: THREE.Scene\n\n /**\n * @type {THREE.WebGLRenderer}\n */\n renderer: THREE.WebGLRenderer\n\n /**\n * @type {THREE.OrthographicCamera}\n * @note It is used an orthographic camera because it is desired\n * to draw a 2d image without perspective\n */\n camera: THREE.OrthographicCamera\n\n /**\n * @type {number}\n */\n width: number\n\n /**\n * @type {number}\n */\n height: number\n\n /**\n * @type {number}\n * @note Device pixel ratio\n */\n dpr: number\n\n /**\n * Constructor\n *\n * @param {number} width\n * @param {number} height\n */\n constructor(width: number, height: number) {\n this.width = width\n this.height = height\n this.#initRenderer()\n this.#initScene()\n this.#initCamera()\n }\n\n /**\n * Update\n *\n * @returns {void}\n */\n update(): void {\n this.renderer.render(this.scene, this.camera)\n }\n\n /**\n * Compile shaders\n *\n * @returns {void}\n * {@link https://github.com/mrdoob/three.js/pull/10960}\n */\n compile(): void {\n this.renderer.compile(this.scene, this.camera)\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n this.#disposeScene()\n this.#disposeRenderer()\n this.renderer.domElement.remove()\n }\n\n /**\n * Init renderer\n *\n * @returns {void}\n * @note The antialias is only enabled for devices with less than `2`\n * as a pixel ratio. This is done to improve performance because\n * devices with `2` or more as pixel ratio\n * do not require this feature\n */\n #initRenderer(): void {\n const canvas = document.createElement('canvas')\n document.body.append(canvas)\n\n this.dpr = Math.min(window.devicePixelRatio, 2)\n\n let antialias = false\n if (this.dpr <= 1) {\n antialias = true\n }\n this.renderer = new THREE.WebGLRenderer({\n canvas: canvas,\n antialias: antialias,\n })\n this.renderer.setPixelRatio(this.dpr)\n this.renderer.setSize(this.width, this.height)\n this.renderer.setClearAlpha(0)\n }\n\n /**\n * Init camera\n *\n * @returns {void}\n * @note The renderer will have the same dimensions as the image.\n * The idea is that a plane with the image as texture will be\n * used inside the renderer, and this plane also will have the\n * image dimensions.\n * An orthographic camera will be positioned to show exactly\n * that plane.\n * Because it is used an orthographic camera,\n * `1` world unit is `1` pixel, making it easy to position things\n * @link https://discourse.threejs.org/t/mapping-orthographiccamera-world-units-to-pixels/10142\n */\n #initCamera(): void {\n const left = -this.renderer.domElement.width / 2\n const right = this.renderer.domElement.width / 2\n const top = this.renderer.domElement.height / 2\n const bottom = -this.renderer.domElement.height / 2\n const near = 0.1\n const far = 1\n this.camera = new THREE.OrthographicCamera(\n left,\n right,\n top,\n bottom,\n near,\n far,\n )\n this.scene.add(this.camera)\n\n this.camera.position.z = far - 0.1\n }\n\n /**\n * Init scene\n *\n * @returns {void}\n */\n #initScene(): void {\n this.scene = new THREE.Scene()\n }\n\n /**\n * Dispose renderer\n *\n * @returns {void}\n */\n #disposeRenderer(): void {\n this.renderer.dispose()\n }\n\n /**\n * Dispose scene\n *\n * @returns {void}\n */\n #disposeScene(): void {\n while (this.scene.children.length > 0) {\n this.scene.remove(this.scene.children[0])\n }\n }\n}\n","/**\n * @description Debug manager raw settings\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note It is returned a plain text of the settings that\n * should be used to instance current effect.\n * This plain text is used by the copy button of the\n * debug manager\n */\nexport const getSettings = (\n imagePixelSize: string,\n imagePixelMotionFrequency: string,\n imagePixelMotionAmplitude: string,\n imageMotionFrequency: string,\n imageMotionAmplitude: string,\n pointerSize: string,\n pointerTrailing: string,\n) => {\n return `{\n images: {\n 0: {\n src: <image-src>,\n width: <image-width>,\n height: <image-height>,\n resolution: {\n width: <image-resolution-width>,\n height: <image-resolution-height>\n },\n pixel: {\n size: ${imagePixelSize},\n motion: {\n displacement: {\n frequency: ${imagePixelMotionFrequency},\n amplitude: ${imagePixelMotionAmplitude}\n }\n }\n },\n motion: {\n noise: {\n frequency: ${imageMotionFrequency},\n amplitude: ${imageMotionAmplitude}\n }\n }\n }\n },\n pointer: {\n size: ${pointerSize},\n trailing: {\n factor: ${pointerTrailing}\n }\n }\n }`\n}\n","/**\n * @description Debug manager\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note The idea behind this class is to encapsulate and wrap the\n * debug management logic\n */\nimport {BindingParams, FolderApi, FolderParams, Pane} from 'tweakpane'\nimport {BindingApi} from '@tweakpane/core'\nimport {getSettings} from './debug-manager/copy/settings.js'\n\nexport default class DebugManager {\n /**\n * @type {Pane}\n */\n debugger: Pane\n\n /**\n * Constructor\n */\n constructor() {\n this.debugger = new Pane()\n this.#addCopyButton()\n }\n\n /**\n * Enable. Show debugger\n *\n * @returns {void}\n */\n enable(): void {\n this.debugger.element.style.display = 'block'\n }\n\n /**\n * Disable. Hide debugger\n *\n * @returns {void}\n */\n disable(): void {\n this.debugger.element.style.display = 'none'\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n this.debugger.dispose()\n this.debugger.element.remove()\n }\n\n /**\n * Add folder\n *\n * @param {{title: string; expanded?: boolean;}} config\n * @returns {object}\n */\n addFolder(config: FolderParams): FolderApi {\n config = {expanded: false, ...config}\n return this.debugger.addFolder(config)\n }\n\n /**\n * Add binding with on change handler\n *\n * @param {object} object\n * @param {string} property\n * @param {string} label\n * @param {object | undefined} config\n * @param {object | undefined} folder\n * @returns {object}\n */\n addBindingWithOnChange<K extends string, V>(\n object: {[key in K]: V},\n property: K,\n label: string,\n config: BindingParams | undefined,\n folder: FolderApi | undefined = undefined,\n ): BindingApi<unknown, V> {\n return this.addBinding(label, object[property], config, folder).on(\n 'change',\n (e) => {\n object[property] = e.value\n },\n )\n }\n\n /**\n * Add binding\n *\n * @param {string} label\n * @param {string | number} value\n * @param {object | undefined} config\n * @param {object | undefined} folder\n * @returns {object}\n */\n addBinding<V>(\n label: string,\n value: V,\n config: BindingParams | undefined,\n folder: FolderApi | undefined = undefined,\n ): BindingApi<unknown, V> {\n let debuggerObj: Pane | FolderApi = this.debugger\n if (folder) {\n debuggerObj = folder\n }\n\n return debuggerObj.addBinding(\n {\n [label]: value,\n },\n label,\n config,\n )\n }\n\n /**\n * Add copy button\n *\n * @returns {void}\n */\n #addCopyButton(): void {\n const btn = this.debugger.addButton({\n title: 'Copy',\n })\n btn.on('click', () => {\n const state = this.debugger.exportState()\n\n if (state.children && state.children instanceof Array) {\n const pointer = state.children[1]\n const pointerSize = pointer.children[0]['binding']['value']\n const pointerTrailing = pointer.children[1]['binding']['value']\n\n const imagePixel = state.children[4]\n const imagePixelSize = imagePixel.children[0]['binding']['value']\n\n const imagePixelMotion = state.children[5]\n const imagePixelMotionFrequency =\n imagePixelMotion.children[0]['binding']['value']\n const imagePixelMotionAmplitude =\n imagePixelMotion.children[1]['binding']['value']\n\n const imageMotion = state.children[6]\n const imageMotionFrequency = imageMotion.children[0]['binding']['value']\n const imageMotionAmplitude = imageMotion.children[1]['binding']['value']\n\n const settings = getSettings(\n imagePixelSize,\n imagePixelMotionFrequency,\n imagePixelMotionAmplitude,\n imageMotionFrequency,\n imageMotionAmplitude,\n pointerSize,\n pointerTrailing,\n )\n\n navigator.clipboard.writeText(settings).then(() => {\n btn.title = 'Copied!'\n setTimeout(() => {\n btn.title = 'Copy'\n }, 1000)\n })\n }\n })\n }\n}\n","/**\n * @description Image vertex shader\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n */\nuniform sampler2D uImageTexture;\nuniform float uPointSize;\n\nvarying vec4 vColor;\n\nvoid main() {\n vec3 vertexPosition = position;\n\n vec4 modelPosition = modelMatrix * vec4(vertexPosition, 1.0);\n vec4 viewPosition = viewMatrix * modelPosition;\n vec4 projectionPosition = projectionMatrix * viewPosition;\n\n gl_Position = projectionPosition;\n gl_PointSize = uPointSize;\n\n vColor = texture(uImageTexture, uv);\n}","/**\n * @description Image fragment shader\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note It is introduced a `discard` logic to avoid issues\n * on mobile devices where transparent pixels of the border\n * of the image, are not tested correctly against\n * the alpha test param and are incorrectly shown\n */\nuniform float uAlphaTest;\n\nvarying vec4 vColor;\n\nvoid main() {\n if (vColor.a < uAlphaTest) {\n discard;\n }\n\n gl_FragColor = vColor;\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}","/**\n * @description Image\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note This class handles the logic related to the\n * transformation of the image into vertices/points/pixels\n */\nimport * as THREE from 'three'\nimport RendererManager from '../lib/renderer-manager.js'\nimport DebugManager from '../lib/debug-manager.js'\nimport imageVertexShader from './image/shader/vertex.glsl'\nimport imageFragmentShader from './image/shader/fragment.glsl'\n\nexport default class Image {\n /**\n * @type {THREE.Points}\n */\n points: THREE.Points<THREE.PlaneGeometry, THREE.ShaderMaterial>\n\n /**\n * @type {THREE.Texture}\n */\n #imageTexture: THREE.Texture\n\n /**\n * @type {RendererManager}\n */\n #rendererManager: RendererManager\n\n /**\n * @type {DebugManager}\n */\n #debugManager: DebugManager\n\n /**\n * Constructor\n *\n * @param {RendererManager} rendererManager\n * @param {DebugManager} debugManager\n * @param {string} imageSrc\n * @param {number} resolutionWidth\n * @param {number} resolutionHeight\n * @param {number} pointSize\n * @param {number} alphaTest\n */\n constructor(\n rendererManager: RendererManager,\n debugManager: DebugManager,\n imageSrc: string,\n resolutionWidth: number,\n resolutionHeight: number,\n pointSize: number = 1,\n alphaTest: number = 0.1,\n ) {\n this.#rendererManager = rendererManager\n this.#debugManager = debugManager\n this.#initPoints(\n imageSrc,\n resolutionWidth,\n resolutionHeight,\n pointSize,\n alphaTest,\n )\n }\n\n /**\n * Enable debug mode\n *\n * @returns {void}\n */\n debug(): void {\n const resolutionFolder = this.#debugManager.addFolder({\n title: 'Image Resolution',\n })\n\n this.#debugManager\n .addBinding(\n 'width',\n this.points.geometry.parameters.widthSegments,\n {min: 0, max: this.points.geometry.parameters.width, step: 1},\n resolutionFolder,\n )\n .on('change', (e) => {\n if (e.last) {\n this.#replaceImageGeometry(\n e.value,\n this.points.geometry.parameters.heightSegments,\n )\n }\n })\n\n this.#debugManager\n .addBinding(\n 'height',\n this.points.geometry.parameters.heightSegments,\n {min: 0, max: this.points.geometry.parameters.height, step: 1},\n resolutionFolder,\n )\n .on('change', (e) => {\n if (e.last) {\n this.#replaceImageGeometry(\n this.points.geometry.parameters.widthSegments,\n e.value,\n )\n }\n })\n\n const pixelFolder = this.#debugManager.addFolder({title: 'Image Pixel'})\n\n this.#debugManager\n .addBinding(\n 'size',\n this.points.material.uniforms.uPointSize.value,\n {min: 1, max: 100, step: 1},\n pixelFolder,\n )\n .on('change', (e) => {\n if (e.last) {\n this.points.material.uniforms.uPointSize.value = e.value\n }\n })\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n this.points.geometry.dispose()\n this.points.material.dispose()\n this.#imageTexture.dispose()\n }\n\n /**\n * Init points\n *\n * @param {string} imageSrc\n * @param {number} resolutionWidth\n * @param {number} resolutionHeight\n * @param {number} pointSize\n * @param {number} alphaTest\n * @returns {void}\n */\n #initPoints(\n imageSrc: string,\n resolutionWidth: number,\n resolutionHeight: number,\n pointSize: number,\n alphaTest: number,\n ): void {\n const textureLoader = new THREE.TextureLoader()\n this.#imageTexture = textureLoader.load(imageSrc)\n\n const imageGeometry = this.#createImageGeometry(\n resolutionWidth,\n resolutionHeight,\n )\n\n const imageMaterial = new THREE.ShaderMaterial({\n vertexShader: imageVertexShader,\n fragmentShader: imageFragmentShader,\n uniforms: {\n uImageTexture: new THREE.Uniform(this.#imageTexture),\n uPointSize: new THREE.Uniform(pointSize),\n uAlphaTest: new THREE.Uniform(alphaTest),\n },\n transparent: true,\n depthWrite: false,\n alphaTest: alphaTest,\n })\n\n this.points = new THREE.Points(imageGeometry, imageMaterial)\n }\n\n /**\n * Replace image geometry\n *\n * @param {number} resolutionWidth\n * @param {number} resolutionHeight\n * @returns {void}\n * @note It is sent old attributes to be persisted by the new geometry.\n * New generated geometry attributes will replace old ones if\n * they exist in the old geometry\n */\n #replaceImageGeometry(\n resolutionWidth: number,\n resolutionHeight: number,\n ): void {\n const attributes = this.points.geometry.attributes\n this.points.geometry.dispose()\n this.points.geometry = this.#createImageGeometry(\n resolutionWidth,\n resolutionHeight,\n attributes,\n )\n }\n\n /**\n * Create image geometry\n *\n * @param {number} resolutionWidth\n * @param {number} resolutionHeight\n * @param {THREE.NormalBufferAttributes | null} attributes\n * @returns {THREE.PlaneGeometry}\n * @note It is created a plane that occupies all the render\n * @note The dom element width and height of the renderer include\n * the device pixel ratio, so it is important to use them\n * to create a plane that take all the render space/pixels\n * @note It is removed the index and normals from the geometry\n * to improve performance.\n * Normals are not going to be needed.\n * The index could cause the draw of multiple points/pixels in the\n * same place. That is why it is required to remove it\n */\n #createImageGeometry(\n resolutionWidth: number,\n resolutionHeight: number,\n attributes: THREE.NormalBufferAttributes | null = null,\n ): THREE.PlaneGeometry {\n const geometry = new THREE.PlaneGeometry(\n this.#rendererManager.renderer.domElement.width,\n this.#rendererManager.renderer.domElement.height,\n resolutionWidth * this.#rendererManager.dpr,\n resolutionHeight * this.#rendererManager.dpr,\n )\n geometry.setIndex(null)\n geometry.deleteAttribute('normal')\n\n if (attributes) {\n geometry.attributes = {...attributes, ...geometry.attributes}\n }\n\n return geometry\n }\n}\n","/**\n * @description Pointer\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n */\nimport * as THREE from 'three'\nimport RendererManager from '../lib/renderer-manager.js'\nimport Canvas from './pointer/canvas.js'\n\nexport default class Pointer {\n /**\n * @type {THREE.Vector2 | {x: number | undefined, y: number | undefined}}\n */\n coord: THREE.Vector2 | {x: number | undefined; y: number | undefined}\n\n /**\n * @type {Canvas}\n */\n canvas: Canvas\n\n /**\n * @type {THREE.Raycaster}\n */\n raycaster: THREE.Raycaster\n\n /**\n * @type {THREE.Mesh}\n */\n raycasterPlane: THREE.Mesh<THREE.PlaneGeometry, THREE.MeshBasicMaterial>\n\n /**\n * @type {RendererManager}\n */\n #rendererManager: RendererManager\n\n /**\n * @type {Function}\n */\n #boundPointerMove: (e: PointerEvent) => void\n\n /**\n * @type {Function}\n */\n #boundPointerLeave: (e: PointerEvent) => void\n\n /**\n * Constructor\n *\n * @param {RendererManager} rendererManager\n * @param {Canvas} canvas\n */\n constructor(rendererManager: RendererManager, canvas: Canvas) {\n this.canvas = canvas\n this.coord = new THREE.Vector2(undefined, undefined)\n this.#rendererManager = rendererManager\n this.#initRaycaster()\n }\n\n /**\n * Update\n *\n * @returns {void}\n */\n update(): void {\n let dx: number | null = null\n let dy: number | null = null\n\n if (this.coord.x && this.coord.y) {\n this.raycaster.setFromCamera(\n this.coord as THREE.Vector2,\n this.#rendererManager.camera,\n )\n const intersections = this.raycaster.intersectObject(this.raycasterPlane)\n if (intersections.length) {\n const uv = intersections[0].uv as THREE.Vector2\n dx = uv.x * this.canvas.element.width\n dy = (1 - uv.y) * this.canvas.element.height\n }\n }\n\n this.canvas.update(dx, dy)\n }\n\n /**\n * Enable debug mode\n *\n * @returns {void}\n */\n debug(): void {\n this.canvas.debug()\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n this.canvas.dispose()\n this.#disposeRaycaster()\n }\n\n /**\n * Process pointer move\n *\n * @param {PointerEvent} e\n * @returns {void}\n * @note Pointer coordinates are normalized to\n * clip space (NDC - Normalized Device Coordinate) to\n * use it for raycasting\n */\n #processPointerMove(e: PointerEvent): void {\n const target = e.target as EventTarget & {width: number; height: number}\n this.coord.x = (e.offsetX / target.width - 0.5) * 2\n this.coord.y = -(e.offsetY / target.height - 0.5) * 2\n }\n\n /**\n * Process pointer leave\n *\n * @returns {void}\n */\n #processPointerLeave(): void {\n this.coord.x = undefined\n this.coord.y = undefined\n }\n\n /**\n * Init raycaster\n *\n * @returns {void}\n * @note It is created low poly plane in front of the image\n * to avoid performance issues that could arise while\n * working between the raycaster and image points\n */\n #initRaycaster(): void {\n this.raycaster = new THREE.Raycaster()\n\n this.#boundPointerMove = this.#processPointerMove.bind(this)\n this.#rendererManager.renderer.domElement.addEventListener(\n 'pointermove',\n this.#boundPointerMove,\n )\n\n this.#boundPointerLeave = this.#processPointerLeave.bind(this)\n this.#rendererManager.renderer.domElement.addEventListener(\n 'pointerleave',\n this.#boundPointerLeave,\n )\n\n this.raycasterPlane = new THREE.Mesh(\n new THREE.PlaneGeometry(\n this.#rendererManager.width,\n this.#rendererManager.height,\n ),\n new THREE.MeshBasicMaterial(),\n )\n this.raycasterPlane.visible = false\n }\n\n /**\n * Dispose raycaster\n *\n * @returns {void}\n */\n #disposeRaycaster(): void {\n this.#rendererManager.renderer.domElement.removeEventListener(\n 'pointermove',\n this.#boundPointerMove,\n )\n this.#rendererManager.renderer.domElement.removeEventListener(\n 'pointerleave',\n this.#boundPointerLeave,\n )\n\n this.raycasterPlane.geometry.dispose()\n this.raycasterPlane.material.dispose()\n }\n}\n","/**\n * @description Pointer canvas\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note This canvas will be used as a texture that will be sent\n * to the vertex shader. This texture will be updated\n * to mark where the pointer is in relation with the image.\n * In that way, it allows selecting which vertices/points/pixels\n * should be displaced\n */\nimport * as THREE from 'three'\nimport DebugManager from '../../lib/debug-manager.js'\n\nexport default class Canvas {\n /**\n * @type {DebugManager}\n */\n #debugManager: DebugManager\n\n /**\n * @type {THREE.CanvasTexture}\n */\n texture: THREE.Texture\n\n /**\n * @type {HTMLCanvasElement}\n */\n element: HTMLCanvasElement\n\n /**\n * @type {CanvasRenderingContext2D}\n */\n #context: CanvasRenderingContext2D\n\n /**\n * @type {HTMLImageElement}\n * @note Image that will represent the pointer.\n * This image is used to\n * select which vertices/points/pixels\n * should be displaced\n */\n #pointerImage: HTMLImageElement\n\n /**\n * @type {number}\n * @note This value defines how many pixels are affected by the\n * pointer effect.\n * It is defined as a proportion of the image resolution width\n */\n #pointerImageSize: number\n\n /**\n * @type {number}\n * @note This value defines the strength of the\n * pointer trailing effect on the\n * pixels' displacement\n */\n #pointerTrailingFactor: number\n\n /**\n * Constructor\n *\n * @param {DebugManager} debugManager\n * @param {number} resolutionWidth\n * @param {number} resolutionHeight\n * @param {string} pointerImageSrc\n * @param {number} pointerImageSize\n * @param {number} pointerTrailingFactor\n */\n constructor(\n debugManager: DebugManager,\n resolutionWidth: number,\n resolutionHeight: number,\n pointerImageSrc: string,\n pointerImageSize: number = 0.1,\n pointerTrailingFactor: number = 0.05,\n ) {\n this.#debugManager = debugManager\n this.#pointerTrailingFactor = pointerTrailingFactor\n this.#initCanvasTexture(resolutionWidth, resolutionHeight)\n this.#initPointerImage(pointerImageSrc, pointerImageSize)\n }\n\n /**\n * Update\n *\n * @param {number | null} dx\n * @param {number | null} dy\n * @returns {void}\n */\n update(dx: number | null, dy: number | null): void {\n this.#clear()\n\n if (dx && dy) {\n this.#draw(dx, dy)\n }\n\n this.texture.needsUpdate = true\n }\n\n /**\n * Enable debug mode\n *\n * @returns {void}\n */\n debug(): void {\n const pointerFolder = this.#debugManager.addFolder({\n title: 'Pointer',\n })\n\n this.#debugManager\n .addBinding(\n 'size',\n this.#pointerImageSize / this.element.width,\n {\n min: 0,\n max: 1,\n step: 0.01,\n },\n pointerFolder,\n )\n .on('change', (e) => this.#processPointerImageSize(e.value))\n\n this.#debugManager\n .addBinding(\n 'trailing',\n this.#pointerTrailingFactor,\n {\n min: 0,\n max: 1,\n step: 0.01,\n },\n pointerFolder,\n )\n .on('change', (e) => (this.#pointerTrailingFactor = e.value))\n\n const pointerCanvasFolder = this.#debugManager.addFolder({\n title: 'Pointer Canvas',\n })\n\n this.#debugManager\n .addBinding('show', false, undefined, pointerCanvasFolder)\n .on('change', (e) => {\n if (e.value) {\n document.body.appendChild(this.element)\n this.element.style.position = 'fixed'\n this.element.style.top = '0'\n this.element.style.left = '0'\n this.element.style.border = '1px solid #fff'\n } else {\n document.body.removeChild(this.element)\n }\n })\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n this.texture.dispose()\n }\n\n /**\n * Draw\n *\n * @param {number} dx\n * @param {number} dy\n * @returns {void}\n * @note The destination of the image is moved half its size\n * so it is drawn at the center of the destination position\n */\n #draw(dx: number, dy: number): void {\n dx -= this.#pointerImageSize / 2\n dy -= this.#pointerImageSize / 2\n\n this.#context.save()\n this.#context.globalCompositeOperation = 'lighten'\n this.#context.drawImage(\n this.#pointerImage,\n dx,\n dy,\n this.#pointerImageSize,\n this.#pointerImageSize,\n )\n this.#context.restore()\n }\n\n /**\n * Clear\n *\n * @returns {void}\n * @note The idea is to draw a white image that will\n * indicate how much points inside them will be displaced.\n * That is why it is required to clear the canvas with black color\n */\n #clear(): void {\n this.#context.save()\n this.#context.globalAlpha = this.#pointerTrailingFactor\n this.#context.fillStyle = '#000'\n this.#context.fillRect(0, 0, this.element.width, this.element.height)\n this.#context.restore()\n }\n\n /**\n * Init canvas texture used to detect pointer location and\n * displace points\n *\n * @param {number} resolutionWidth\n * @param {number} resolutionHeight\n * @returns {void}\n * @note The canvas will have the same number of pixels as the\n * image.\n * That is why it is used the image resolution as its dimensions\n */\n #initCanvasTexture(resolutionWidth: number, resolutionHeight: number): void {\n this.element = document.createElement('canvas')\n this.element.width = resolutionWidth\n this.element.height = resolutionHeight\n this.texture = new THREE.CanvasTexture(this.element)\n\n this.#context = this.element.getContext('2d') as CanvasRenderingContext2D\n }\n\n /**\n * Init pointer image\n *\n * @param {string} pointerImageSrc\n * @param {number} pointerImageSize\n * @returns {void}\n * @note It is considered that the pointer image will be\n * a white image that will indicate which pixels should be displaced\n */\n #initPointerImage(pointerImageSrc: string, pointerImageSize: number): void {\n this.#pointerImage = new Image()\n this.#pointerImage.src = pointerImageSrc\n this.#processPointerImageSize(pointerImageSize)\n }\n\n /**\n * Process pointer image size\n *\n * @param {number} pointerImageSize\n * @returns {void}\n * @note The aspect ratio of the image is always square\n * (the same size is used for the width and the height of the image).\n * It is proportional to the canvas width.\n * This approach is considered correct because web elements\n * adjust only their width to fit in the page\n */\n #processPointerImageSize(pointerImageSize: number): void {\n this.#pointerImageSize = pointerImageSize * this.element.width\n }\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","/**\n * @description Image manager\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note The idea behind this class is to encapsulate and wrap the\n * image management logic.\n * It is defined an image by breakpoint, so it is necessary\n * to handle which image should be used\n */\nimport {ImgSource, ImgSourceCollection} from '../../types'\n\n/**\n * @note The `0` breakpoint for image must always be set.\n * It defines the image that should be used by default\n */\nconst DEFAULT_IMAGE_BREAKPOINT = 0\n\nexport default class ImageManager {\n /**\n * @type {{\n * src : string;\n * width : number;\n * height : number;\n * resolution: {\n * width : number;\n * height: number;\n * }\n * pixel?: {\n * size ?: number;\n * alphaTest?: number;\n * motion ?: {\n * displacement?: {\n * frequency?: number;\n * amplitude?: number;\n * };\n * };\n * };\n * motion?: {\n * noise?: {\n * src ?: string;\n * frequency?: number;\n * amplitude?: number;\n * };\n * };\n * }[]}\n */\n images: ImgSourceCollection\n\n /**\n * @type {{\n * src : string;\n * width : number;\n * height : number;\n * resolution: {\n * width : number;\n * height: number;\n * };\n * pixel?: {\n * size ?: number;\n * alphaTest?: number;\n * motion ?: {\n * displacement?: {\n * frequency?: number;\n * amplitude?: number;\n * }\n * };\n * };\n * motion?: {\n * noise?: {\n * src ?: string;\n * frequency?: number;\n * amplitude?: number;\n * };\n * };\n * }}\n */\n currentImage: ImgSource\n\n /**\n * @type {number}\n */\n #currentBreakpoint: number\n\n /**\n * @type {number[]}\n */\n #breakpoints: number[]\n\n /**\n * Constructor\n *\n * @param {{\n * src : string;\n * width : number;\n * height : number;\n * resolution: {\n * width : number;\n * height: number;\n * };\n * pixel?: {\n * size ?: number;\n * alphaTest?: number;\n * motion ?: {\n * displacement?: {\n * frequency?: number;\n * amplitude?: number;\n * };\n * };\n * };\n * motion?: {\n * noise?: {\n * src ?: string;\n * frequency?: number;\n * amplitude?: number;\n * };\n * };\n * }[]} images\n * @throws {Error}\n */\n constructor(images: ImgSourceCollection) {\n this.images = images\n this.#initBreakpointsFromImages(Object.keys(this.images).map(Number))\n this.update()\n }\n\n /**\n * Taking into consideration window size,\n * it is selected the breakpoint and image to be used\n *\n * @returns {boolean}\n * @note Each breakpoint defines the `min-width` at which\n * a specific image should be used.\n * That is why it is returned\n * the greater breakpoint that is less than or equal\n * the window size\n */\n update(): boolean {\n const width = window.innerWidth\n\n const currentBreakpoint = this.#breakpoints.reduce(\n (max, breakpoint) =>\n breakpoint <= width && breakpoint > max ? breakpoint : max,\n DEFAULT_IMAGE_BREAKPOINT,\n )\n\n if (currentBreakpoint !== this.#currentBreakpoint) {\n this.#currentBreakpoint = currentBreakpoint\n this.currentImage = this.images[this.#currentBreakpoint]\n return true\n }\n\n return false\n }\n\n /**\n * Init breakpoints from image\n *\n * @param {number[]} breakpoints\n * @returns {void}\n * @throws {Error}\n */\n #initBreakpointsFromImages(breakpoints: number[]): void {\n if (\n breakpoints.find(\n (breakpoint) => breakpoint === DEFAULT_IMAGE_BREAKPOINT,\n ) === undefined\n ) {\n throw new Error(\n 'The `0` breakpoint is required. It defines the default image that should be used.',\n )\n }\n\n this.#breakpoints = breakpoints\n }\n}\n","/**\n * @description img2pxl\n * @author C. M. de Picciotto <d3p1@d3p1.dev> (https://d3p1.dev/)\n * @note This class works as the entry point of the library.\n * It is like a dependency injection manager (DI container).\n * Also, it adds features not related to the app/effect itself,\n * like enable debug to tweak app/effect parameters or\n * effect parent container configuration\n */\nimport {Timer} from 'three/addons'\nimport App from './core/app.js'\nimport RendererManager from './core/lib/renderer-manager.js'\nimport DebugManager from './core/lib/debug-manager.js'\nimport Image from './core/app/image.js'\nimport Pointer from './core/app/pointer.js'\nimport PointerCanvas from './core/app/pointer/canvas.js'\nimport pointerImage from './media/processor/displacement/pointer.png'\nimport noiseImage from './media/processor/displacement/noise.png'\nimport {Config} from './types'\nimport ImageManager from './core/lib/image-manager.js'\n\nexport default class Img2Pxl {\n /**\n * @type {RendererManager}\n */\n rendererManager: RendererManager\n\n /**\n * @type {DebugManager}\n */\n debugManager: DebugManager\n\n /**\n * @type {App}\n */\n #app: App\n\n /**\n * @type {ImageManager}\n */\n #imageManager: ImageManager\n\n /**\n * @type {Timer}\n */\n #timer: Timer\n\n /**\n * @type {{\n * containerSelector?: string;\n * image : {\n * src : string;\n * width : number;\n * height : number;\n * resolution: {\n * width : number;\n * height: number;\n * };\n * pixel?: {\n * size ?: number;\n * motion?: {\n * displacement?: {\n * frequency?: number;\n * amplitude?: number;\n * }\n * }\n * };\n * motion?: {\n * noise?: {\n * src ?: string;\n * frequency?: number;\n * amplitude?: number;\n * }\n * }\n * }[];\n * pointer?: {\n * src ?: string;\n * size ?: number;\n * trailing?: {\n * factor?: number;\n * }\n * };\n * isDebugging?: boolean;\n * }}\n */\n #config: Config\n\n /**\n * @type {boolean}\n */\n #isDebugging: boolean\n\n /**\n * @type {number}\n */\n #requestAnimationId: number\n\n /**\n * @type {Function}\n */\n #boundHandleDebug: (e: KeyboardEvent) => void\n\n /**\n * @type {Function}\n */\n #boundHandleResize: (e: Event) => void\n\n /**\n * Constructor\n *\n * @param {{\n * containerSelector?: string;\n * image : {\n * src : string;\n * width : number;\n * height : number;\n * resolution: {\n * width : number;\n * height: number;\n * };\n * pixel?: {\n * size ?: number;\n * alphaTest?: number;\n * motion ?: {\n * displacement?: {\n * frequency?: number;\n * amplitude?: number;\n * }\n * }\n * };\n * motion?: {\n * noise?: {\n * src ?: string;\n * frequency?: number;\n * amplitude?: number;\n * }\n * }\n * }[];\n * pointer?: {\n * src ?: string;\n * size ?: number;\n * trailing?: {\n * factor?: number;\n * }\n * };\n * isDebugging?: boolean;\n * }} config\n * @throws {Error}\n */\n constructor(config: Config) {\n this.#config = config\n this.#isDebugging = config.isDebugging ?? false\n this.#imageManager = new ImageManager(config.images)\n\n this.#init()\n }\n\n /**\n * Debug\n *\n * @returns {void}\n */\n debug(): void {\n if (!this.#isDebugging) {\n this.#enableDebug()\n this.#isDebugging = true\n }\n }\n\n /**\n * Dispose\n *\n * @returns {void}\n */\n dispose(): void {\n cancelAnimationFrame(this.#requestAnimationId)\n\n window.removeEventListener('keydown', this.#boundHandleDebug)\n window.removeEventListener('resize', this.#boundHandleResize)\n\n this.#timer.dispose()\n\n this.#app.dispose()\n\n this.rendererManager.dispose()\n\n this.debugManager.dispose()\n }\n\n /**\n * Init\n *\n * @returns {void}\n */\n #init(): void {\n this.rendererManager = new RendererManager(\n this.#imageManager.currentImage.width,\n this.#imageManager.currentImage.height,\n )\n\n this.#timer = new Timer()\n\n this.#initDebugManager()\n\n this.#initApp()\n\n if (this.#config.containerSelector) {\n this.#initDom(this.#config.containerSelector)\n }\n\n this.#boundHandleDebug = this.#handleDebug.bind(this)\n window.addEventListener('keydown', this.#boundHandleDebug)\n if (this.#isDebugging) {\n this.#enableDebug()\n } else {\n this.#disableDebug()\n }\n\n this.#boundHandleResize = () => {\n if (this.#imageManager.update()) {\n this.dispose()\n this.#init()\n }\n }\n window.addEventListener('resize', this.#boundHandleResize)\n\n this.#render()\n }\n\n /**\n * Render\n *\n * @params {number} t\n * @returns {void}\n */\n #render(t = 0): void {\n this.#timer.update(t)\n\n this.#app.update(this.#timer.getElapsed())\n\n this.#requestAnimationId = requestAnimationFrame(this.#render.bind(this))\n }\n\n /**\n * Handle debug\n *\n * @param {KeyboardEvent} e\n * @returns {void}\n */\n #handleDebug(e: KeyboardEvent): void {\n if (e.key === 'd') {\n this.debug()\n }\n }\n\n /**\n * Enable debug\n *\n * @returns {void}\n */\n #enableDebug(): void {\n this.#app.debug()\n this.debugManager.enable()\n }\n\n /**\n * Disable debug\n *\n * @returns {void}\n */\n #disableDebug(): void {\n this.debugManager.disable()\n }\n\n /**\n * Init app\n *\n * @returns {void}\n */\n #initApp(): void {\n this.#app = new App(\n new Image(\n this.rendererManager,\n this.debugManager,\n this.#imageManager.currentImage.src,\n this.#imageManager.currentImage.resolution.width,\n this.#imageManager.currentImage.resolution.height,\n this.#imageManager.currentImage.pixel?.size ?? 1,\n this.#imageManager.currentImage.pixel?.alphaTest ?? 0.1,\n ),\n new Pointer(\n this.rendererManager,\n new PointerCanvas(\n this.debugManager,\n this.#imageManager.currentImage.resolution.width,\n this.#imageManager.currentImage.resolution.height,\n this.#config.pointer?.src ?? pointerImage,\n this.#config.pointer?.size ?? 0.15,\n this.#config.pointer?.trailing?.factor ?? 0.01,\n ),\n ),\n this.rendererManager,\n this.debugManager,\n this.#imageManager.currentImage.motion?.noise?.src ?? noiseImage,\n this.#imageManager.currentImage.motion?.noise?.frequency ?? 0.05,\n this.#imageManager.currentImage.motion?.noise?.amplitude ?? 3,\n this.#imageManager.currentImage.pixel?.motion?.displacement?.frequency ??\n 5,\n this.#imageManager.currentImage.pixel?.motion?.displacement?.amplitude ??\n 4,\n )\n }\n\n /**\n * Init debug manager\n *\n * @returns {void}\n */\n #initDebugManager(): void {\n this.debugManager = new DebugManager()\n }\n\n /**\n * Init DOM\n *\n * @param {string} containerSelector\n * @returns {void}\n */\n #initDom(containerSelector: string): void {\n const node = document.querySelector(containerSelector)\n node?.appendChild(this.rendererManager.renderer.domElement)\n node?.appendChild(this.debugManager.debugger.element)\n }\n}\n"],"names":["Timer","now","handleVisibilityChange","timescale","timestamp","pars_vertex_default","position_vertex_default","App","image","pointer","rendererManager","debugManager","noiseImageSrc","noiseFrequency","noiseAmplitude","displacementFrequency","displacementAmplitude","__privateAdd","_App_instances","_image","_pointer","_rendererManager","_debugManager","__privateSet","__privateMethod","initImage_fn","initPointer_fn","elapsed","__privateGet","pixelMotionFolder","imageMotionFolder","addDisplacementAttributesToImage_fn","addDisplacementHandlerToImage_fn","noiseTexture","THREE","shader","parsVertexShader","positionVertexShader","vertices","disAngle","disAmplitude","i","RendererManager","width","height","_RendererManager_instances","__publicField","initRenderer_fn","initScene_fn","initCamera_fn","disposeScene_fn","disposeRenderer_fn","canvas","antialias","left","right","top","bottom","near","far","getSettings","imagePixelSize","imagePixelMotionFrequency","imagePixelMotionAmplitude","imageMotionFrequency","imageMotionAmplitude","pointerSize","pointerTrailing","DebugManager","_DebugManager_instances","Pane","addCopyButton_fn","config","object","property","label","folder","e","value","debuggerObj","btn","state","imagePixelMotion","imageMotion","settings","vertex_default","fragment_default","Image$1","_a","imageSrc","resolutionWidth","resolutionHeight","pointSize","alphaTest","_Image_instances","_imageTexture","initPoints_fn","resolutionFolder","replaceImageGeometry_fn","pixelFolder","textureLoader","imageGeometry","createImageGeometry_fn","imageMaterial","imageVertexShader","imageFragmentShader","attributes","geometry","Pointer","_Pointer_instances","_boundPointerMove","_boundPointerLeave","initRaycaster_fn","dx","dy","intersections","uv","disposeRaycaster_fn","processPointerMove_fn","target","processPointerLeave_fn","Canvas","pointerImageSrc","pointerImageSize","pointerTrailingFactor","_Canvas_instances","_context","_pointerImage","_pointerImageSize","_pointerTrailingFactor","initCanvasTexture_fn","initPointerImage_fn","clear_fn","draw_fn","pointerFolder","processPointerImageSize_fn","pointerCanvasFolder","pointerImage","noiseImage","DEFAULT_IMAGE_BREAKPOINT","ImageManager","images","_ImageManager_instances","_currentBreakpoint","_breakpoints","initBreakpointsFromImages_fn","currentBreakpoint","max","breakpoint","breakpoints","Img2Pxl","_Img2Pxl_instances","_app","_imageManager","_timer","_config","_isDebugging","_requestAnimationId","_boundHandleDebug","_boundHandleResize","init_fn","enableDebug_fn","initDebugManager_fn","initApp_fn","initDom_fn","handleDebug_fn","disableDebug_fn","render_fn","t","Image","_b","PointerCanvas","_c","_d","_f","_e","_h","_g","_j","_i","_l","_k","_o","_n","_m","_r","_q","_p","containerSelector","node"],"mappings":"6wCAAA,MAAMA,EAAM,CAEX,aAAc,CAEb,KAAK,cAAgB,EACrB,KAAK,aAAe,EACpB,KAAK,WAAaC,GAAK,EAEvB,KAAK,OAAS,EACd,KAAK,SAAW,EAEhB,KAAK,WAAa,EAIlB,KAAK,sBAA0B,OAAO,SAAa,KAAe,SAAS,SAAW,OAEjF,KAAK,wBAA0B,KAEnC,KAAK,uBAAyBC,GAAuB,KAAM,IAAM,EAEjE,SAAS,iBAAkB,mBAAoB,KAAK,uBAAwB,EAAO,EAItF,CAEC,UAAW,CAEV,OAAO,KAAK,OAAS,GAEvB,CAEC,YAAa,CAEZ,OAAO,KAAK,SAAW,GAEzB,CAEC,cAAe,CAEd,OAAO,KAAK,UAEd,CAEC,aAAcC,EAAY,CAEzB,YAAK,WAAaA,EAEX,IAET,CAEC,OAAQ,CAEP,YAAK,aAAeF,GAAK,EAAG,KAAK,WAE1B,IAET,CAEC,SAAU,CAET,OAAK,KAAK,wBAA0B,IAEnC,SAAS,oBAAqB,mBAAoB,KAAK,sBAAwB,EAIzE,IAET,CAEC,OAAQG,EAAY,CAGnB,OAAK,KAAK,wBAA0B,IAAQ,SAAS,SAAW,GAE/D,KAAK,OAAS,GAId,KAAK,cAAgB,KAAK,aAC1B,KAAK,cAAiBA,IAAc,OAAYA,EAAYH,GAAG,GAAO,KAAK,WAE3E,KAAK,QAAW,KAAK,aAAe,KAAK,eAAkB,KAAK,WAChE,KAAK,UAAY,KAAK,QAIhB,IAET,CAEA,CAqBA,SAASA,IAAM,CAEd,OAAO,YAAY,IAAK,CAEzB,CAEA,SAASC,IAAyB,CAE5B,SAAS,SAAW,IAAQ,KAAK,MAAO,CAE9C,CC7HA,IAAAG,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CCgBA,MAAqBC,EAAI,CAkCvB,YACEC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAyB,GACzBC,EAAyB,EACzBC,EAAgC,EAChCC,EAAgC,GAChC,CA5CJC,EAAA,KAAAC,GAIED,EAAA,KAAAE,GAKAF,EAAA,KAAAG,GAKAH,EAAA,KAAAI,GAKAJ,EAAA,KAAAK,GA0BEC,EAAA,KAAKJ,EAASX,GACde,EAAA,KAAKH,EAAWX,GAChBc,EAAA,KAAKF,EAAmBX,GACxBa,EAAA,KAAKD,EAAgBX,GAChBa,EAAA,KAAAN,EAAAO,IAAA,UACHb,EACAC,EACAC,EACAC,EACAC,GAEFQ,EAAA,KAAKN,EAAAQ,IAAL,UAAkB,CASpB,OAAOC,EAAuB,CAC5BC,EAAA,KAAKT,GAAO,OAAO,SAAS,SAAS,MAAM,MAAQQ,EACnDC,EAAA,KAAKR,GAAS,OAAO,EACrBQ,EAAA,KAAKP,GAAiB,OAAO,CAAA,CAQ/B,OAAc,CACZO,EAAA,KAAKR,GAAS,MAAM,EAEpBQ,EAAA,KAAKT,GAAO,MAAM,EAEZ,MAAAU,EAAoBD,EAAA,KAAKN,GAAc,UAAU,CACrD,MAAO,oBAAA,CACR,EAEDM,EAAA,KAAKN,GAAc,uBACjBM,EAAA,KAAKT,GAAO,OAAO,SAAS,SAAS,cACrC,QACA,YACA,CAAC,IAAK,EAAG,IAAK,GAAK,EAAI,KAAK,GAAI,KAAM,GAAI,EAC1CU,CACF,EAEAD,EAAA,KAAKN,GAAc,uBACjBM,EAAA,KAAKT,GAAO,OAAO,SAAS,SAAS,cACrC,QACA,YACA,CAAC,IAAK,EAAG,IAAKS,EAAA,KAAKP,GAAiB,MAAO,KAAM,CAAC,EAClDQ,CACF,EAEM,MAAAC,EAAoBF,EAAA,KAAKN,GAAc,UAAU,CACrD,MAAO,cAAA,CACR,EAEDM,EAAA,KAAKN,GAAc,uBACjBM,EAAA,KAAKT,GAAO,OAAO,SAAS,SAAS,gBACrC,QACA,YACA,CAAC,IAAK,EAAG,IAAK,EAAI,KAAK,GAAI,KAAM,GAAI,EACrCW,CACF,EAEAF,EAAA,KAAKN,GAAc,uBACjBM,EAAA,KAAKT,GAAO,OAAO,SAAS,SAAS,gBACrC,QACA,YACA,CAAC,IAAK,EAAG,IAAKS,EAAA,KAAKP,GAAiB,MAAO,KAAM,CAAC,EAClDS,CACF,CAAA,CAQF,SAAgB,CACdF,EAAA,KAAKT,GAAO,QAAQ,EACpBS,EAAA,KAAKR,GAAS,QAAQ,CAAA,CA4H1B,CAzPED,EAAA,YAKAC,EAAA,YAKAC,EAAA,YAKAC,EAAA,YAnBFJ,EAAA,YA8IEO,GACE,SAAAb,EACAC,EACAC,EACAC,EACAC,EACM,CACNY,EAAA,KAAKP,GAAiB,MAAM,IAAIO,EAAA,KAAKT,GAAO,MAAM,EAClDK,EAAA,KAAKN,EAAAa,IAAL,WACKP,EAAA,KAAAN,EAAAc,IAAA,UACHpB,EACAC,EACAC,EACAC,EACAC,EACF,EAQFU,GAAqB,UAAA,CACnBE,EAAA,KAAKR,GAAS,eAAe,SAAS,KAAKQ,EAAA,KAAKT,GAAO,OAAO,QAAQ,EACjES,EAAA,KAAAR,GAAS,eAAe,SAAS,GAAK,IAE3CQ,EAAA,KAAKP,GAAiB,MAAM,IAAIO,EAAA,KAAKR,GAAS,cAAc,CAAA,EAqB9DY,GACE,SAAApB,EACAC,EACAC,EACAC,EACAC,EACM,CAEA,MAAAiB,EADgB,IAAIC,EAAM,cAAc,EACX,KAAKtB,CAAa,EACrDqB,EAAa,MAAQC,EAAM,eAE3BN,EAAA,KAAKT,GAAO,OAAO,SAAS,gBAC1BgB,GACG,CACHA,EAAO,SAAS,MAAW,IAAID,EAAM,QAAQ,CAAC,EAC9CC,EAAO,SAAS,cAAmB,IAAID,EAAM,QAC3CnB,CACF,EACAoB,EAAO,SAAS,cAAmB,IAAID,EAAM,QAC3ClB,CACF,EACAmB,EAAO,SAAS,YAAiB,IAAID,EAAM,QACzCN,EAAA,KAAKR,GAAS,OAAO,OACvB,EACAe,EAAO,SAAS,gBAAqB,IAAID,EAAM,QAAQrB,CAAc,EACrEsB,EAAO,SAAS,gBAAqB,IAAID,EAAM,QAAQpB,CAAc,EACrEqB,EAAO,SAAS,cAAmB,IAAID,EAAM,QAAQD,CAAY,EAE1DE,EAAA,aAAeA,EAAO,aAAa,QACxC,uBACAC,EACF,EACOD,EAAA,aAAeA,EAAO,aAAa,QACxC,kCACAE,EACF,CACF,EAEAT,EAAA,KAAKP,GAAiB,QAAQ,CAAA,EAQhCU,GAA0C,UAAA,CACxC,MAAMO,EAAWV,EAAA,KAAKT,GAAO,OAAO,SAAS,WAAW,SAAS,MAC3DoB,EAAW,IAAI,aAAaD,CAAQ,EACpCE,EAAe,IAAI,aAAaF,CAAQ,EAC9C,QAASG,EAAI,EAAGA,EAAIH,EAAUG,IAC5BF,EAASE,CAAC,EAAI,KAAK,OAAO,EAAI,EAAI,KAAK,GAC1BD,EAAAC,CAAC,EAAI,KAAK,OAAO,EAE3Bb,EAAA,KAAAT,GAAO,OAAO,SAAS,aAC1B,YACA,IAAIe,EAAM,gBAAgBK,EAAU,CAAC,CACvC,EACKX,EAAA,KAAAT,GAAO,OAAO,SAAS,aAC1B,gBACA,IAAIe,EAAM,gBAAgBM,EAAc,CAAC,CAC3C,CAAA,ECnQJ,MAAqBE,EAAgB,CAwCnC,YAAYC,EAAeC,EAAgB,CAxC7C3B,EAAA,KAAA4B,GAIEC,EAAA,cAKAA,EAAA,iBAOAA,EAAA,eAKAA,EAAA,cAKAA,EAAA,eAMAA,EAAA,YASE,KAAK,MAAQH,EACb,KAAK,OAASC,EACdpB,EAAA,KAAKqB,EAAAE,IAAL,WACAvB,EAAA,KAAKqB,EAAAG,IAAL,WACAxB,EAAA,KAAKqB,EAAAI,IAAL,UAAiB,CAQnB,QAAe,CACb,KAAK,SAAS,OAAO,KAAK,MAAO,KAAK,MAAM,CAAA,CAS9C,SAAgB,CACd,KAAK,SAAS,QAAQ,KAAK,MAAO,KAAK,MAAM,CAAA,CAQ/C,SAAgB,CACdzB,EAAA,KAAKqB,EAAAK,IAAL,WACA1B,EAAA,KAAKqB,EAAAM,IAAL,WACK,KAAA,SAAS,WAAW,OAAO,CAAA,CA6FpC,CAxKAN,EAAA,YAuFEE,GAAsB,UAAA,CACd,MAAAK,EAAS,SAAS,cAAc,QAAQ,EACrC,SAAA,KAAK,OAAOA,CAAM,EAE3B,KAAK,IAAM,KAAK,IAAI,OAAO,iBAAkB,CAAC,EAE9C,IAAIC,EAAY,GACZ,KAAK,KAAO,IACFA,EAAA,IAET,KAAA,SAAW,IAAInB,EAAM,cAAc,CACtC,OAAAkB,EACA,UAAAC,CAAA,CACD,EACI,KAAA,SAAS,cAAc,KAAK,GAAG,EACpC,KAAK,SAAS,QAAQ,KAAK,MAAO,KAAK,MAAM,EACxC,KAAA,SAAS,cAAc,CAAC,CAAA,EAiB/BJ,GAAoB,UAAA,CAClB,MAAMK,EAAO,CAAC,KAAK,SAAS,WAAW,MAAQ,EACzCC,EAAQ,KAAK,SAAS,WAAW,MAAQ,EACzCC,EAAM,KAAK,SAAS,WAAW,OAAS,EACxCC,EAAS,CAAC,KAAK,SAAS,WAAW,OAAS,EAC5CC,EAAO,GACPC,EAAM,EACP,KAAA,OAAS,IAAIzB,EAAM,mBACtBoB,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,EACK,KAAA,MAAM,IAAI,KAAK,MAAM,EAErB,KAAA,OAAO,SAAS,EAAIA,EAAM,EAAA,EAQjCX,GAAmB,UAAA,CACZ,KAAA,MAAQ,IAAId,EAAM,KAAM,EAQ/BiB,GAAyB,UAAA,CACvB,KAAK,SAAS,QAAQ,CAAA,EAQxBD,GAAsB,UAAA,CACpB,KAAO,KAAK,MAAM,SAAS,OAAS,GAClC,KAAK,MAAM,OAAO,KAAK,MAAM,SAAS,CAAC,CAAC,CAC1C,ECtKS,MAAAU,GAAc,CACzBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IAEO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAWSN,CAAc;AAAA;AAAA;AAAA,2BAGLC,CAAyB;AAAA,2BACzBC,CAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAM3BC,CAAoB;AAAA,yBACpBC,CAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAM/BC,CAAW;AAAA;AAAA,kBAEPC,CAAe;AAAA;AAAA;AAAA,KCrCjC,MAAqBC,EAAa,CAShC,aAAc,CAThBnD,EAAA,KAAAoD,GAIEvB,EAAA,iBAMO,KAAA,SAAW,IAAIwB,OACpB9C,EAAA,KAAK6C,EAAAE,IAAL,UAAoB,CAQtB,QAAe,CACR,KAAA,SAAS,QAAQ,MAAM,QAAU,OAAA,CAQxC,SAAgB,CACT,KAAA,SAAS,QAAQ,MAAM,QAAU,MAAA,CAQxC,SAAgB,CACd,KAAK,SAAS,QAAQ,EACjB,KAAA,SAAS,QAAQ,OAAO,CAAA,CAS/B,UAAUC,EAAiC,CACzC,OAAAA,EAAS,CAAC,SAAU,GAAO,GAAGA,CAAM,EAC7B,KAAK,SAAS,UAAUA,CAAM,CAAA,CAavC,uBACEC,EACAC,EACAC,EACAH,EACAI,EAAgC,OACR,CACjB,OAAA,KAAK,WAAWD,EAAOF,EAAOC,CAAQ,EAAGF,EAAQI,CAAM,EAAE,GAC9D,SACCC,GAAM,CACEJ,EAAAC,CAAQ,EAAIG,EAAE,KAAA,CAEzB,CAAA,CAYF,WACEF,EACAG,EACAN,EACAI,EAAgC,OACR,CACxB,IAAIG,EAAgC,KAAK,SACzC,OAAIH,IACYG,EAAAH,GAGTG,EAAY,WACjB,CACE,CAACJ,CAAK,EAAGG,CACX,EACAH,EACAH,CACF,CAAA,CAoDJ,CA5JAH,EAAA,YAgHEE,GAAuB,UAAA,CACf,MAAAS,EAAM,KAAK,SAAS,UAAU,CAClC,MAAO,MAAA,CACR,EACGA,EAAA,GAAG,QAAS,IAAM,CACd,MAAAC,EAAQ,KAAK,SAAS,YAAY,EAExC,GAAIA,EAAM,UAAYA,EAAM,oBAAoB,MAAO,CAC/C,MAAAxE,EAAUwE,EAAM,SAAS,CAAC,EAC1Bf,EAAczD,EAAQ,SAAS,CAAC,EAAE,QAAW,MAC7C0D,EAAkB1D,EAAQ,SAAS,CAAC,EAAE,QAAW,MAGjDoD,EADaoB,EAAM,SAAS,CAAC,EACD,SAAS,CAAC,EAAE,QAAW,MAEnDC,EAAmBD,EAAM,SAAS,CAAC,EACnCnB,EACJoB,EAAiB,SAAS,CAAC,EAAE,QAAW,MACpCnB,EACJmB,EAAiB,SAAS,CAAC,EAAE,QAAW,MAEpCC,EAAcF,EAAM,SAAS,CAAC,EAC9BjB,GAAuBmB,EAAY,SAAS,CAAC,EAAE,QAAW,MAC1DlB,GAAuBkB,EAAY,SAAS,CAAC,EAAE,QAAW,MAE1DC,GAAWxB,GACfC,EACAC,EACAC,EACAC,GACAC,GACAC,EACAC,CACF,EAEA,UAAU,UAAU,UAAUiB,EAAQ,EAAE,KAAK,IAAM,CACjDJ,EAAI,MAAQ,UACZ,WAAW,IAAM,CACfA,EAAI,MAAQ,QACX,GAAI,CAAA,CACR,CAAA,CACH,CACD,CAAA,ECpKL,IAAAK,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCYA,IAAAC,IAAAC,GAAA,KAA2B,CAgCzB,YACE9E,EACAC,EACA8E,EACAC,EACAC,EACAC,EAAoB,EACpBC,EAAoB,GACpB,CAxCJ5E,EAAA,KAAA6E,GAIEhD,EAAA,eAKA7B,EAAA,KAAA8E,GAKA9E,EAAA,KAAAI,GAKAJ,EAAA,KAAAK,GAsBEC,EAAA,KAAKF,EAAmBX,GACxBa,EAAA,KAAKD,EAAgBX,GAChBa,EAAA,KAAAsE,EAAAE,IAAA,UACHP,EACAC,EACAC,EACAC,EACAC,EACF,CAQF,OAAc,CACN,MAAAI,EAAmBrE,EAAA,KAAKN,GAAc,UAAU,CACpD,MAAO,kBAAA,CACR,EAEDM,EAAA,KAAKN,GACF,WACC,QACA,KAAK,OAAO,SAAS,WAAW,cAChC,CAAC,IAAK,EAAG,IAAK,KAAK,OAAO,SAAS,WAAW,MAAO,KAAM,CAAC,EAC5D2E,CAAA,EAED,GAAG,SAAWpB,GAAM,CACfA,EAAE,MACCrD,EAAA,KAAAsE,EAAAI,IAAA,UACHrB,EAAE,MACF,KAAK,OAAO,SAAS,WAAW,eAEpC,CACD,EAEHjD,EAAA,KAAKN,GACF,WACC,SACA,KAAK,OAAO,SAAS,WAAW,eAChC,CAAC,IAAK,EAAG,IAAK,KAAK,OAAO,SAAS,WAAW,OAAQ,KAAM,CAAC,EAC7D2E,CAAA,EAED,GAAG,SAAWpB,GAAM,CACfA,EAAE,MACCrD,EAAA,KAAAsE,EAAAI,IAAA,UACH,KAAK,OAAO,SAAS,WAAW,cAChCrB,EAAE,MAEN,CACD,EAEH,MAAMsB,EAAcvE,EAAA,KAAKN,GAAc,UAAU,CAAC,MAAO,cAAc,EAEvEM,EAAA,KAAKN,GACF,WACC,OACA,KAAK,OAAO,SAAS,SAAS,WAAW,MACzC,CAAC,IAAK,EAAG,IAAK,IAAK,KAAM,CAAC,EAC1B6E,CAAA,EAED,GAAG,SAAWtB,GAAM,CACfA,EAAE,OACJ,KAAK,OAAO,SAAS,SAAS,WAAW,MAAQA,EAAE,MACrD,CACD,CAAA,CAQL,SAAgB,CACT,KAAA,OAAO,SAAS,QAAQ,EACxB,KAAA,OAAO,SAAS,QAAQ,EAC7BjD,EAAA,KAAKmE,GAAc,QAAQ,CAAA,CAwG/B,EArNEA,EAAA,YAKA1E,EAAA,YAKAC,EAAA,YAnBFwE,EAAA,YAmIEE,GACE,SAAAP,EACAC,EACAC,EACAC,EACAC,EACM,CACA,MAAAO,EAAgB,IAAIlE,EAAM,cAC3BX,EAAA,KAAAwE,EAAgBK,EAAc,KAAKX,CAAQ,GAEhD,MAAMY,EAAgB7E,EAAA,KAAKsE,EAAAQ,IAAL,UACpBZ,EACAC,GAGIY,EAAgB,IAAIrE,EAAM,eAAe,CAC7C,aAAcsE,GACd,eAAgBC,GAChB,SAAU,CACR,cAAe,IAAIvE,EAAM,QAAQN,EAAA,KAAKmE,EAAa,EACnD,WAAY,IAAI7D,EAAM,QAAQ0D,CAAS,EACvC,WAAY,IAAI1D,EAAM,QAAQ2D,CAAS,CACzC,EACA,YAAa,GACb,WAAY,GACZ,UAAAA,CAAA,CACD,EAED,KAAK,OAAS,IAAI3D,EAAM,OAAOmE,EAAeE,CAAa,CAAA,EAa7DL,GAAA,SACER,EACAC,EACM,CACA,MAAAe,EAAa,KAAK,OAAO,SAAS,WACnC,KAAA,OAAO,SAAS,QAAQ,EACxB,KAAA,OAAO,SAAWlF,EAAA,KAAKsE,EAAAQ,IAAL,UACrBZ,EACAC,EACAe,EACF,EAoBFJ,GACE,SAAAZ,EACAC,EACAe,EAAkD,KAC7B,CACf,MAAAC,EAAW,IAAIzE,EAAM,cACzBN,EAAA,KAAKP,GAAiB,SAAS,WAAW,MAC1CO,EAAA,KAAKP,GAAiB,SAAS,WAAW,OAC1CqE,EAAkB9D,EAAA,KAAKP,GAAiB,IACxCsE,EAAmB/D,EAAA,KAAKP,GAAiB,GAC3C,EACA,OAAAsF,EAAS,SAAS,IAAI,EACtBA,EAAS,gBAAgB,QAAQ,EAE7BD,IACFC,EAAS,WAAa,CAAC,GAAGD,EAAY,GAAGC,EAAS,UAAU,GAGvDA,CAAA,EA5NXnB,ICJA,MAAqBoB,EAAQ,CA0C3B,YAAYlG,EAAkC0C,EAAgB,CA1ChEnC,EAAA,KAAA4F,GAIE/D,EAAA,cAKAA,EAAA,eAKAA,EAAA,kBAKAA,EAAA,uBAKA7B,EAAA,KAAAI,GAKAJ,EAAA,KAAA6F,GAKA7F,EAAA,KAAA8F,GASE,KAAK,OAAS3D,EACd,KAAK,MAAQ,IAAIlB,EAAM,QAAQ,OAAW,MAAS,EACnDX,EAAA,KAAKF,EAAmBX,GACxBc,EAAA,KAAKqF,EAAAG,IAAL,UAAoB,CAQtB,QAAe,CACb,IAAIC,EAAoB,KACpBC,EAAoB,KAExB,GAAI,KAAK,MAAM,GAAK,KAAK,MAAM,EAAG,CAChC,KAAK,UAAU,cACb,KAAK,MACLtF,EAAA,KAAKP,GAAiB,MACxB,EACA,MAAM8F,EAAgB,KAAK,UAAU,gBAAgB,KAAK,cAAc,EACxE,GAAIA,EAAc,OAAQ,CAClB,MAAAC,EAAKD,EAAc,CAAC,EAAE,GAC5BF,EAAKG,EAAG,EAAI,KAAK,OAAO,QAAQ,MAChCF,GAAM,EAAIE,EAAG,GAAK,KAAK,OAAO,QAAQ,MAAA,CACxC,CAGG,KAAA,OAAO,OAAOH,EAAIC,CAAE,CAAA,CAQ3B,OAAc,CACZ,KAAK,OAAO,MAAM,CAAA,CAQpB,SAAgB,CACd,KAAK,OAAO,QAAQ,EACpB1F,EAAA,KAAKqF,EAAAQ,IAAL,UAAuB,CA+E3B,CAjJEhG,EAAA,YAKAyF,EAAA,YAKAC,EAAA,YAlCFF,EAAA,YAsGES,YAAoBzC,EAAuB,CACzC,MAAM0C,EAAS1C,EAAE,OACjB,KAAK,MAAM,GAAKA,EAAE,QAAU0C,EAAO,MAAQ,IAAO,EAClD,KAAK,MAAM,EAAI,EAAE1C,EAAE,QAAU0C,EAAO,OAAS,IAAO,CAAA,EAQtDC,GAA6B,UAAA,CAC3B,KAAK,MAAM,EAAI,OACf,KAAK,MAAM,EAAI,MAAA,EAWjBR,GAAuB,UAAA,CAChB,KAAA,UAAY,IAAI9E,EAAM,UAE3BX,EAAA,KAAKuF,EAAoBtF,EAAA,KAAKqF,EAAAS,IAAoB,KAAK,IAAI,GACtD1F,EAAA,KAAAP,GAAiB,SAAS,WAAW,iBACxC,cACAO,EAAA,KAAKkF,EACP,EAEAvF,EAAA,KAAKwF,EAAqBvF,EAAA,KAAKqF,EAAAW,IAAqB,KAAK,IAAI,GACxD5F,EAAA,KAAAP,GAAiB,SAAS,WAAW,iBACxC,eACAO,EAAA,KAAKmF,EACP,EAEK,KAAA,eAAiB,IAAI7E,EAAM,KAC9B,IAAIA,EAAM,cACRN,EAAA,KAAKP,GAAiB,MACtBO,EAAA,KAAKP,GAAiB,MACxB,EACA,IAAIa,EAAM,iBACZ,EACA,KAAK,eAAe,QAAU,EAAA,EAQhCmF,GAA0B,UAAA,CACnBzF,EAAA,KAAAP,GAAiB,SAAS,WAAW,oBACxC,cACAO,EAAA,KAAKkF,EACP,EACKlF,EAAA,KAAAP,GAAiB,SAAS,WAAW,oBACxC,eACAO,EAAA,KAAKmF,EACP,EAEK,KAAA,eAAe,SAAS,QAAQ,EAChC,KAAA,eAAe,SAAS,QAAQ,CAAA,ECnKzC,MAAqBU,EAAO,CAwD1B,YACE9G,EACA+E,EACAC,EACA+B,EACAC,EAA2B,GAC3BC,EAAgC,IAChC,CA/DJ3G,EAAA,KAAA4G,GAIE5G,EAAA,KAAAK,GAKAwB,EAAA,gBAKAA,EAAA,gBAKA7B,EAAA,KAAA6G,GASA7G,EAAA,KAAA8G,GAQA9G,EAAA,KAAA+G,GAQA/G,EAAA,KAAAgH,GAoBE1G,EAAA,KAAKD,EAAgBX,GACrBY,EAAA,KAAK0G,EAAyBL,GACzBpG,EAAA,KAAAqG,EAAAK,IAAA,UAAmBxC,EAAiBC,GACpCnE,EAAA,KAAAqG,EAAAM,IAAA,UAAkBT,EAAiBC,EAAgB,CAU1D,OAAOV,EAAmBC,EAAyB,CACjD1F,EAAA,KAAKqG,EAAAO,IAAL,WAEInB,GAAMC,GACH1F,EAAA,KAAAqG,EAAAQ,IAAA,UAAMpB,EAAIC,GAGjB,KAAK,QAAQ,YAAc,EAAA,CAQ7B,OAAc,CACN,MAAAoB,EAAgB1G,EAAA,KAAKN,GAAc,UAAU,CACjD,MAAO,SAAA,CACR,EAEDM,EAAA,KAAKN,GACF,WACC,OACAM,EAAA,KAAKoG,GAAoB,KAAK,QAAQ,MACtC,CACE,IAAK,EACL,IAAK,EACL,KAAM,GACR,EACAM,CAAA,EAED,GAAG,SAAWzD,GAAMrD,EAAA,KAAKqG,EAAAU,IAAL,UAA8B1D,EAAE,MAAM,EAE7DjD,EAAA,KAAKN,GACF,WACC,WACAM,EAAA,KAAKqG,GACL,CACE,IAAK,EACL,IAAK,EACL,KAAM,GACR,EACAK,CAAA,EAED,GAAG,SAAWzD,GAAOtD,EAAA,KAAK0G,EAAyBpD,EAAE,MAAM,EAExD,MAAA2D,EAAsB5G,EAAA,KAAKN,GAAc,UAAU,CACvD,MAAO,gBAAA,CACR,EAEIM,EAAA,KAAAN,GACF,WAAW,OAAQ,GAAO,OAAWkH,CAAmB,EACxD,GAAG,SAAW3D,GAAM,CACfA,EAAE,OACK,SAAA,KAAK,YAAY,KAAK,OAAO,EACjC,KAAA,QAAQ,MAAM,SAAW,QACzB,KAAA,QAAQ,MAAM,IAAM,IACpB,KAAA,QAAQ,MAAM,KAAO,IACrB,KAAA,QAAQ,MAAM,OAAS,kBAEnB,SAAA,KAAK,YAAY,KAAK,OAAO,CACxC,CACD,CAAA,CAQL,SAAgB,CACd,KAAK,QAAQ,QAAQ,CAAA,CA6FzB,CA7OEvD,EAAA,YAeAwG,EAAA,YASAC,EAAA,YAQAC,EAAA,YAQAC,EAAA,YA5CFJ,EAAA,YAgKEQ,GAAA,SAAMpB,EAAYC,EAAkB,CAClCD,GAAMrF,EAAA,KAAKoG,GAAoB,EAC/Bd,GAAMtF,EAAA,KAAKoG,GAAoB,EAE/BpG,EAAA,KAAKkG,GAAS,KAAK,EACnBlG,EAAA,KAAKkG,GAAS,yBAA2B,UACzClG,EAAA,KAAKkG,GAAS,UACZlG,EAAA,KAAKmG,GACLd,EACAC,EACAtF,EAAA,KAAKoG,GACLpG,EAAA,KAAKoG,EACP,EACApG,EAAA,KAAKkG,GAAS,QAAQ,CAAA,EAWxBM,GAAe,UAAA,CACbxG,EAAA,KAAKkG,GAAS,KAAK,EACdlG,EAAA,KAAAkG,GAAS,YAAclG,EAAA,KAAKqG,GACjCrG,EAAA,KAAKkG,GAAS,UAAY,OACrBlG,EAAA,KAAAkG,GAAS,SAAS,EAAG,EAAG,KAAK,QAAQ,MAAO,KAAK,QAAQ,MAAM,EACpElG,EAAA,KAAKkG,GAAS,QAAQ,CAAA,EAcxBI,GAAA,SAAmBxC,EAAyBC,EAAgC,CACrE,KAAA,QAAU,SAAS,cAAc,QAAQ,EAC9C,KAAK,QAAQ,MAAQD,EACrB,KAAK,QAAQ,OAASC,EACtB,KAAK,QAAU,IAAIzD,EAAM,cAAc,KAAK,OAAO,EAEnDX,EAAA,KAAKuG,EAAW,KAAK,QAAQ,WAAW,IAAI,EAAA,EAY9CK,GAAA,SAAkBT,EAAyBC,EAAgC,CACpEpG,EAAA,KAAAwG,EAAgB,IAAI,OACzBnG,EAAA,KAAKmG,GAAc,IAAML,EACzBlG,EAAA,KAAKqG,EAAAU,IAAL,UAA8BZ,EAAgB,EAchDY,YAAyBZ,EAAgC,CAClDpG,EAAA,KAAAyG,EAAoBL,EAAmB,KAAK,QAAQ,MAAA,EC3P9C,MAAAc,GAAA,q0OCAAC,GAAA,yn6FCcTC,GAA2B,EAEjC,MAAqBC,EAAa,CAsGhC,YAAYC,EAA6B,CAtG3C5H,EAAA,KAAA6H,GA6BEhG,EAAA,eA8BAA,EAAA,qBAKA7B,EAAA,KAAA8H,GAKA9H,EAAA,KAAA+H,GAkCE,KAAK,OAASH,EACTrH,EAAA,KAAAsH,EAAAG,IAAA,UAA2B,OAAO,KAAK,KAAK,MAAM,EAAE,IAAI,MAAM,GACnE,KAAK,OAAO,CAAA,CAcd,QAAkB,CAChB,MAAMtG,EAAQ,OAAO,WAEfuG,EAAoBtH,EAAA,KAAKoH,GAAa,OAC1C,CAACG,EAAKC,IACJA,GAAczG,GAASyG,EAAaD,EAAMC,EAAaD,EACzDR,EACF,EAEI,OAAAO,IAAsBtH,EAAA,KAAKmH,IAC7BxH,EAAA,KAAKwH,EAAqBG,GAC1B,KAAK,aAAe,KAAK,OAAOtH,EAAA,KAAKmH,EAAkB,EAChD,IAGF,EAAA,CAuBX,CA7FEA,EAAA,YAKAC,EAAA,YArEFF,EAAA,YAgJEG,YAA2BI,EAA6B,CACtD,GACEA,EAAY,KACTD,GAAeA,IAAeT,MAC3B,OAEN,MAAM,IAAI,MACR,mFACF,EAGFpH,EAAA,KAAKyH,EAAeK,EAAA,ECtJxB,MAAqBC,EAAQ,CAgI3B,YAAY9E,EAAgB,CAhI9BvD,EAAA,KAAAsI,GAIEzG,EAAA,wBAKAA,EAAA,qBAKA7B,EAAA,KAAAuI,GAKAvI,EAAA,KAAAwI,GAKAxI,EAAA,KAAAyI,GAwCAzI,EAAA,KAAA0I,GAKA1I,EAAA,KAAA2I,GAKA3I,EAAA,KAAA4I,GAKA5I,EAAA,KAAA6I,GAKA7I,EAAA,KAAA8I,GA6CExI,EAAA,KAAKoI,EAAUnF,GACVjD,EAAA,KAAAqI,EAAepF,EAAO,aAAe,IAC1CjD,EAAA,KAAKkI,EAAgB,IAAIb,GAAapE,EAAO,MAAM,GAEnDhD,EAAA,KAAK+H,EAAAS,IAAL,UAAW,CAQb,OAAc,CACPpI,EAAA,KAAKgI,KACRpI,EAAA,KAAK+H,EAAAU,IAAL,WACA1I,EAAA,KAAKqI,EAAe,IACtB,CAQF,SAAgB,CACd,qBAAqBhI,EAAA,KAAKiI,EAAmB,EAEtC,OAAA,oBAAoB,UAAWjI,EAAA,KAAKkI,EAAiB,EACrD,OAAA,oBAAoB,SAAUlI,EAAA,KAAKmI,EAAkB,EAE5DnI,EAAA,KAAK8H,GAAO,QAAQ,EAEpB9H,EAAA,KAAK4H,GAAK,QAAQ,EAElB,KAAK,gBAAgB,QAAQ,EAE7B,KAAK,aAAa,QAAQ,CAAA,CAmJ9B,CA1SE,OAAAA,EAAA,YAKAC,EAAA,YAKAC,EAAA,YAwCAC,EAAA,YAKAC,EAAA,YAKAC,EAAA,YAKAC,EAAA,YAKAC,EAAA,YApFFR,EAAA,YA6KES,GAAc,UAAA,CACZ,KAAK,gBAAkB,IAAItH,GACzBd,EAAA,KAAK6H,GAAc,aAAa,MAChC7H,EAAA,KAAK6H,GAAc,aAAa,MAClC,EAEKlI,EAAA,KAAAmI,EAAS,IAAI1J,IAElBwB,EAAA,KAAK+H,EAAAW,IAAL,WAEA1I,EAAA,KAAK+H,EAAAY,IAAL,WAEIvI,EAAA,KAAK+H,GAAQ,mBACVnI,EAAA,KAAA+H,EAAAa,IAAA,UAASxI,EAAA,KAAK+H,GAAQ,mBAG7BpI,EAAA,KAAKuI,EAAoBtI,EAAA,KAAK+H,EAAAc,IAAa,KAAK,IAAI,GAC7C,OAAA,iBAAiB,UAAWzI,EAAA,KAAKkI,EAAiB,EACrDlI,EAAA,KAAKgI,GACPpI,EAAA,KAAK+H,EAAAU,IAAL,WAEAzI,EAAA,KAAK+H,EAAAe,IAAL,WAGF/I,EAAA,KAAKwI,EAAqB,IAAM,CAC1BnI,EAAA,KAAK6H,GAAc,WACrB,KAAK,QAAQ,EACbjI,EAAA,KAAK+H,EAAAS,IAAL,WAEJ,GACO,OAAA,iBAAiB,SAAUpI,EAAA,KAAKmI,EAAkB,EAEzDvI,EAAA,KAAK+H,EAAAgB,IAAL,UAAa,EASfA,GAAA,SAAQC,EAAI,EAAS,CACd5I,EAAA,KAAA8H,GAAO,OAAOc,CAAC,EAEpB5I,EAAA,KAAK4H,GAAK,OAAO5H,EAAA,KAAK8H,GAAO,YAAY,EAEzCnI,EAAA,KAAKsI,EAAsB,sBAAsBrI,EAAA,KAAK+H,EAAAgB,IAAQ,KAAK,IAAI,CAAC,EAAA,EAS1EF,YAAaxF,EAAwB,CAC/BA,EAAE,MAAQ,KACZ,KAAK,MAAM,CACb,EAQFoF,GAAqB,UAAA,CACnBrI,EAAA,KAAK4H,GAAK,MAAM,EAChB,KAAK,aAAa,OAAO,CAAA,EAQ3Bc,GAAsB,UAAA,CACpB,KAAK,aAAa,QAAQ,CAAA,EAQ5BH,GAAiB,UAAA,gDACf5I,EAAA,KAAKiI,EAAO,IAAIjJ,GACd,IAAIkK,GACF,KAAK,gBACL,KAAK,aACL7I,EAAA,KAAK6H,GAAc,aAAa,IAChC7H,EAAA,KAAK6H,GAAc,aAAa,WAAW,MAC3C7H,EAAA,KAAK6H,GAAc,aAAa,WAAW,SAC3CjE,EAAA5D,EAAA,KAAK6H,GAAc,aAAa,QAAhC,YAAAjE,EAAuC,OAAQ,IAC/CkF,EAAA9I,EAAA,KAAK6H,GAAc,aAAa,QAAhC,YAAAiB,EAAuC,YAAa,EACtD,EACA,IAAI9D,GACF,KAAK,gBACL,IAAI+D,GACF,KAAK,aACL/I,EAAA,KAAK6H,GAAc,aAAa,WAAW,MAC3C7H,EAAA,KAAK6H,GAAc,aAAa,WAAW,SAC3CmB,EAAAhJ,EAAA,KAAK+H,GAAQ,UAAb,YAAAiB,EAAsB,MAAOnC,KAC7BoC,EAAAjJ,EAAA,KAAK+H,GAAQ,UAAb,YAAAkB,EAAsB,OAAQ,MAC9BC,GAAAC,EAAAnJ,EAAA,KAAK+H,GAAQ,UAAb,YAAAoB,EAAsB,WAAtB,YAAAD,EAAgC,SAAU,GAAA,CAE9C,EACA,KAAK,gBACL,KAAK,eACLE,GAAAC,EAAArJ,EAAA,KAAK6H,GAAc,aAAa,SAAhC,YAAAwB,EAAwC,QAAxC,YAAAD,EAA+C,MAAOtC,KACtDwC,GAAAC,EAAAvJ,EAAA,KAAK6H,GAAc,aAAa,SAAhC,YAAA0B,EAAwC,QAAxC,YAAAD,EAA+C,YAAa,MAC5DE,IAAAC,EAAAzJ,EAAA,KAAK6H,GAAc,aAAa,SAAhC,YAAA4B,EAAwC,QAAxC,YAAAD,GAA+C,YAAa,IAC5DE,IAAAC,IAAAC,GAAA5J,EAAA,KAAK6H,GAAc,aAAa,QAAhC,YAAA+B,GAAuC,SAAvC,YAAAD,GAA+C,eAA/C,YAAAD,GAA6D,YAC3D,IACFG,IAAAC,IAAAC,GAAA/J,EAAA,KAAK6H,GAAc,aAAa,QAAhC,YAAAkC,GAAuC,SAAvC,YAAAD,GAA+C,eAA/C,YAAAD,GAA6D,YAC3D,CACJ,EAAA,EAQFvB,GAA0B,UAAA,CACnB,KAAA,aAAe,IAAI9F,EAAa,EASvCgG,YAASwB,EAAiC,CAClC,MAAAC,EAAO,SAAS,cAAcD,CAAiB,EACrDC,GAAA,MAAAA,EAAM,YAAY,KAAK,gBAAgB,SAAS,YAChDA,GAAA,MAAAA,EAAM,YAAY,KAAK,aAAa,SAAS,QAAO","x_google_ignoreList":[0]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|