@d3p1/img2pxl 2.0.0 → 3.1.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/dist/core.js DELETED
@@ -1,1363 +0,0 @@
1
- var je = Object.defineProperty;
2
- var ue = (a) => {
3
- throw TypeError(a);
4
- };
5
- var Je = (a, e, t) => e in a ? je(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t;
6
- var q = (a, e, t) => Je(a, typeof e != "symbol" ? e + "" : e, t), ee = (a, e, t) => e.has(a) || ue("Cannot " + t);
7
- var i = (a, e, t) => (ee(a, e, "read from private field"), t ? t.call(a) : e.get(a)), o = (a, e, t) => e.has(a) ? ue("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(a) : e.set(a, t), l = (a, e, t, s) => (ee(a, e, "write to private field"), s ? s.call(a, t) : e.set(a, t), t), r = (a, e, t) => (ee(a, e, "access private method"), t);
8
- import * as d from "three";
9
- import { Pane as Ce } from "tweakpane";
10
- class Ie {
11
- constructor() {
12
- this._previousTime = 0, this._currentTime = 0, this._startTime = ie(), this._delta = 0, this._elapsed = 0, this._timescale = 1, this._usePageVisibilityAPI = typeof document < "u" && document.hidden !== void 0, this._usePageVisibilityAPI === !0 && (this._pageVisibilityHandler = De.bind(this), document.addEventListener("visibilitychange", this._pageVisibilityHandler, !1));
13
- }
14
- getDelta() {
15
- return this._delta / 1e3;
16
- }
17
- getElapsed() {
18
- return this._elapsed / 1e3;
19
- }
20
- getTimescale() {
21
- return this._timescale;
22
- }
23
- setTimescale(e) {
24
- return this._timescale = e, this;
25
- }
26
- reset() {
27
- return this._currentTime = ie() - this._startTime, this;
28
- }
29
- dispose() {
30
- return this._usePageVisibilityAPI === !0 && document.removeEventListener("visibilitychange", this._pageVisibilityHandler), this;
31
- }
32
- update(e) {
33
- return this._usePageVisibilityAPI === !0 && document.hidden === !0 ? this._delta = 0 : (this._previousTime = this._currentTime, this._currentTime = (e !== void 0 ? e : ie()) - this._startTime, this._delta = (this._currentTime - this._previousTime) * this._timescale, this._elapsed += this._delta), this;
34
- }
35
- }
36
- function ie() {
37
- return performance.now();
38
- }
39
- function De() {
40
- document.hidden === !1 && this.reset();
41
- }
42
- var Ee = `attribute float aDisAngle;
43
- attribute float aDisAmplitude;
44
-
45
- uniform float uTime;
46
- uniform float uDisFrequency;
47
- uniform float uDisAmplitude;
48
- uniform sampler2D uDisTexture;
49
- uniform float uNoiseFrequency;
50
- uniform float uNoiseAmplitude;
51
- uniform sampler2D uNoiseTexture;
52
-
53
- varying vec4 vColor;`, Ye = `vec3 vertexPosition = position;
54
-
55
- vec2 noiseUv = vec2(uv.x - uNoiseFrequency * uTime, uv.y);
56
- float noiseFactor = texture(uNoiseTexture, noiseUv).r * uNoiseAmplitude;
57
- float noiseX = cos(aDisAngle) * noiseFactor;
58
- float noiseY = sin(aDisAngle) * noiseFactor;
59
- vec2 noise = vec2(noiseX, noiseY);
60
- vertexPosition.xy += noise;
61
-
62
- float disFactor = texture(uDisTexture, uv).r;
63
- disFactor = smoothstep(0.2, 0.8, disFactor);
64
- disFactor = (sin(uDisFrequency * uTime) + 1.5) / (2.5) *
65
- disFactor *
66
- uDisAmplitude;
67
- disFactor *= aDisAmplitude;
68
-
69
- float displacementX = cos(aDisAngle) * disFactor;
70
- float displacementY = sin(aDisAngle) * disFactor;
71
- vec2 displacement = vec2(displacementX, displacementY);
72
- vertexPosition.xy += displacement;`, h, R, K, X, F, ve, he, ce, fe;
73
- class Qe {
74
- /**
75
- * Constructor
76
- *
77
- * @param {Image} image
78
- * @param {Pointer} pointer
79
- * @param {RendererManager} rendererManager
80
- * @param {DebugManager} debugManager
81
- * @param {string} noiseImageSrc
82
- * @param {number} noiseFrequency
83
- * @param {number} noiseAmplitude
84
- * @param {number} displacementFrequency
85
- * @param {number} displacementAmplitude
86
- */
87
- constructor(e, t, s, n, V, m = 0.1, c = 5, p = 5, T = 50) {
88
- o(this, F);
89
- /**
90
- * @type {Image}
91
- */
92
- o(this, h);
93
- /**
94
- * @type {Pointer}
95
- */
96
- o(this, R);
97
- /**
98
- * @type {RendererManager}
99
- */
100
- o(this, K);
101
- /**
102
- * @type {DebugManager}
103
- */
104
- o(this, X);
105
- l(this, h, e), l(this, R, t), l(this, K, s), l(this, X, n), r(this, F, ve).call(this, V, m, c, p, T), r(this, F, he).call(this);
106
- }
107
- /**
108
- * Update
109
- *
110
- * @param {number} elapsed
111
- * @returns {void}
112
- */
113
- update(e) {
114
- i(this, h).points.material.uniforms.uTime.value = e, i(this, R).update(), i(this, K).update();
115
- }
116
- /**
117
- * Enable debug mode
118
- *
119
- * @returns {void}
120
- */
121
- debug() {
122
- i(this, R).debug(), i(this, h).debug();
123
- const e = i(this, X).addFolder({
124
- title: "Image Pixel Motion"
125
- });
126
- i(this, X).addBindingWithOnChange(
127
- i(this, h).points.material.uniforms.uDisFrequency,
128
- "value",
129
- "frequency",
130
- { min: 0, max: 10 * 2 * Math.PI, step: 0.01 },
131
- e
132
- ), i(this, X).addBindingWithOnChange(
133
- i(this, h).points.material.uniforms.uDisAmplitude,
134
- "value",
135
- "amplitude",
136
- { min: 0, max: i(this, K).width, step: 1 },
137
- e
138
- );
139
- const t = i(this, X).addFolder({
140
- title: "Image Motion"
141
- });
142
- i(this, X).addBindingWithOnChange(
143
- i(this, h).points.material.uniforms.uNoiseFrequency,
144
- "value",
145
- "frequency",
146
- { min: 0, max: 2 * Math.PI, step: 0.01 },
147
- t
148
- ), i(this, X).addBindingWithOnChange(
149
- i(this, h).points.material.uniforms.uNoiseAmplitude,
150
- "value",
151
- "amplitude",
152
- { min: 0, max: i(this, K).width, step: 1 },
153
- t
154
- );
155
- }
156
- /**
157
- * Dispose
158
- *
159
- * @returns {void}
160
- */
161
- dispose() {
162
- i(this, h).dispose(), i(this, R).dispose();
163
- }
164
- }
165
- h = new WeakMap(), R = new WeakMap(), K = new WeakMap(), X = new WeakMap(), F = new WeakSet(), /**
166
- * Init image
167
- *
168
- * @param {string} noiseImageSrc
169
- * @param {number} noiseFrequency
170
- * @param {number} noiseAmplitude
171
- * @param {number} displacementFrequency
172
- * @param {number} displacementAmplitude
173
- * @returns {void}
174
- */
175
- ve = function(e, t, s, n, V) {
176
- i(this, K).scene.add(i(this, h).points), r(this, F, fe).call(this), r(this, F, ce).call(this, e, t, s, n, V);
177
- }, /**
178
- * Init pointer
179
- *
180
- * @returns {void}
181
- */
182
- he = function() {
183
- i(this, R).raycasterPlane.position.copy(i(this, h).points.position), i(this, R).raycasterPlane.position.z += 0.01, i(this, K).scene.add(i(this, R).raycasterPlane);
184
- }, /**
185
- * Add logic that handles vertex/point/pixel displacement to image
186
- *
187
- * @param {string} noiseImageSrc
188
- * @param {number} noiseFrequency
189
- * @param {number} noiseAmplitude
190
- * @param {number} displacementFrequency
191
- * @param {number} displacementAmplitude
192
- * @returns {void}
193
- * @note Take into consideration that the pointer canvas/image/texture
194
- * is called `uDisTexture` inside the shader because
195
- * it is considered that the shader does not need to know
196
- * that this texture is related to a pointer
197
- * @note Force shader compilation with `compile()`.
198
- * If it is not forced the shader compilation, then
199
- * uniforms will be undefined until first render of the scene
200
- * {@link https://github.com/mrdoob/three.js/pull/10960}
201
- */
202
- ce = function(e, t, s, n, V) {
203
- const c = new d.TextureLoader().load(e);
204
- c.wrapS = d.RepeatWrapping, i(this, h).points.material.onBeforeCompile = (p) => {
205
- p.uniforms.uTime = new d.Uniform(0), p.uniforms.uDisFrequency = new d.Uniform(
206
- n
207
- ), p.uniforms.uDisAmplitude = new d.Uniform(
208
- V
209
- ), p.uniforms.uDisTexture = new d.Uniform(
210
- i(this, R).canvas.texture
211
- ), p.uniforms.uNoiseFrequency = new d.Uniform(t), p.uniforms.uNoiseAmplitude = new d.Uniform(s), p.uniforms.uNoiseTexture = new d.Uniform(c), p.vertexShader = p.vertexShader.replace(
212
- "varying vec4 vColor;",
213
- Ee
214
- ), p.vertexShader = p.vertexShader.replace(
215
- "vec3 vertexPosition = position;",
216
- Ye
217
- );
218
- }, i(this, K).compile();
219
- }, /**
220
- * Add attributes that handle displacement to image
221
- *
222
- * @returns {void}
223
- */
224
- fe = function() {
225
- const e = i(this, h).points.geometry.attributes.position.count, t = new Float32Array(e), s = new Float32Array(e);
226
- for (let n = 0; n < e; n++)
227
- t[n] = Math.random() * 2 * Math.PI, s[n] = Math.random();
228
- i(this, h).points.geometry.setAttribute(
229
- "aDisAngle",
230
- new d.BufferAttribute(t, 1)
231
- ), i(this, h).points.geometry.setAttribute(
232
- "aDisAmplitude",
233
- new d.BufferAttribute(s, 1)
234
- );
235
- };
236
- var W, Ue, We, Re, be, Ke;
237
- class Ge {
238
- /**
239
- * Constructor
240
- *
241
- * @param {number} width
242
- * @param {number} height
243
- */
244
- constructor(e, t) {
245
- o(this, W);
246
- /**
247
- * @type {THREE.Scene}
248
- */
249
- q(this, "scene");
250
- /**
251
- * @type {THREE.WebGLRenderer}
252
- */
253
- q(this, "renderer");
254
- /**
255
- * @type {THREE.OrthographicCamera}
256
- * @note It is used an orthographic camera because it is desired
257
- * to draw a 2d image without perspective
258
- */
259
- q(this, "camera");
260
- /**
261
- * @type {number}
262
- */
263
- q(this, "width");
264
- /**
265
- * @type {number}
266
- */
267
- q(this, "height");
268
- /**
269
- * @type {number}
270
- * @note Device pixel ratio
271
- */
272
- q(this, "dpr");
273
- this.width = e, this.height = t, r(this, W, Ue).call(this), r(this, W, Re).call(this), r(this, W, We).call(this);
274
- }
275
- /**
276
- * Update
277
- *
278
- * @returns {void}
279
- */
280
- update() {
281
- this.renderer.render(this.scene, this.camera);
282
- }
283
- /**
284
- * Compile shaders
285
- *
286
- * @returns {void}
287
- * {@link https://github.com/mrdoob/three.js/pull/10960}
288
- */
289
- compile() {
290
- this.renderer.compile(this.scene, this.camera);
291
- }
292
- /**
293
- * Dispose
294
- *
295
- * @returns {void}
296
- */
297
- dispose() {
298
- r(this, W, Ke).call(this), r(this, W, be).call(this), this.renderer.domElement.remove();
299
- }
300
- }
301
- W = new WeakSet(), /**
302
- * Init renderer
303
- *
304
- * @returns {void}
305
- * @note The antialias is only enabled for devices with less than `2`
306
- * as a pixel ratio. This is done to improve performance because
307
- * devices with `2` or more as pixel ratio
308
- * do not require this feature
309
- */
310
- Ue = function() {
311
- const e = document.createElement("canvas");
312
- document.body.append(e), this.dpr = Math.min(window.devicePixelRatio, 2);
313
- let t = !1;
314
- this.dpr <= 1 && (t = !0), this.renderer = new d.WebGLRenderer({
315
- canvas: e,
316
- antialias: t
317
- }), this.renderer.setPixelRatio(this.dpr), this.renderer.setSize(this.width, this.height), this.renderer.setClearAlpha(0);
318
- }, /**
319
- * Init camera
320
- *
321
- * @returns {void}
322
- * @note The renderer will have the same dimensions as the image.
323
- * The idea is that a plane with the image as texture will be
324
- * used inside the renderer, and this plane also will have the
325
- * image dimensions.
326
- * An orthographic camera will be positioned to show exactly
327
- * that plane.
328
- * Because it is used an orthographic camera,
329
- * `1` world unit is `1` pixel, making it easy to position things
330
- * @link https://discourse.threejs.org/t/mapping-orthographiccamera-world-units-to-pixels/10142
331
- */
332
- We = function() {
333
- const e = -this.renderer.domElement.width / 2, t = this.renderer.domElement.width / 2, s = this.renderer.domElement.height / 2, n = -this.renderer.domElement.height / 2, V = 0.1, m = 1;
334
- this.camera = new d.OrthographicCamera(
335
- e,
336
- t,
337
- s,
338
- n,
339
- V,
340
- m
341
- ), this.scene.add(this.camera), this.camera.position.z = m - 0.1;
342
- }, /**
343
- * Init scene
344
- *
345
- * @returns {void}
346
- */
347
- Re = function() {
348
- this.scene = new d.Scene();
349
- }, /**
350
- * Dispose renderer
351
- *
352
- * @returns {void}
353
- */
354
- be = function() {
355
- this.renderer.dispose();
356
- }, /**
357
- * Dispose scene
358
- *
359
- * @returns {void}
360
- */
361
- Ke = function() {
362
- for (; this.scene.children.length > 0; )
363
- this.scene.remove(this.scene.children[0]);
364
- };
365
- const Be = (a, e, t, s, n, V, m) => `{
366
- images: {
367
- 0: {
368
- src: <image-src>,
369
- width: <image-width>,
370
- height: <image-height>,
371
- resolution: {
372
- width: <image-resolution-width>,
373
- height: <image-resolution-height>
374
- },
375
- pixel: {
376
- size: ${a},
377
- motion: {
378
- displacement: {
379
- frequency: ${e},
380
- amplitude: ${t}
381
- }
382
- }
383
- },
384
- motion: {
385
- noise: {
386
- frequency: ${s},
387
- amplitude: ${n}
388
- }
389
- }
390
- }
391
- },
392
- pointer: {
393
- size: ${V},
394
- trailing: {
395
- factor: ${m}
396
- }
397
- }
398
- }`;
399
- var _, Xe;
400
- class He {
401
- /**
402
- * Constructor
403
- */
404
- constructor() {
405
- o(this, _);
406
- /**
407
- * @type {Pane}
408
- */
409
- q(this, "debugger");
410
- this.debugger = new Ce(), r(this, _, Xe).call(this);
411
- }
412
- /**
413
- * Enable. Show debugger
414
- *
415
- * @returns {void}
416
- */
417
- enable() {
418
- this.debugger.element.style.display = "block";
419
- }
420
- /**
421
- * Disable. Hide debugger
422
- *
423
- * @returns {void}
424
- */
425
- disable() {
426
- this.debugger.element.style.display = "none";
427
- }
428
- /**
429
- * Dispose
430
- *
431
- * @returns {void}
432
- */
433
- dispose() {
434
- this.debugger.dispose(), this.debugger.element.remove();
435
- }
436
- /**
437
- * Add folder
438
- *
439
- * @param {{title: string; expanded?: boolean;}} config
440
- * @returns {object}
441
- */
442
- addFolder(e) {
443
- return e = { expanded: !1, ...e }, this.debugger.addFolder(e);
444
- }
445
- /**
446
- * Add binding with on change handler
447
- *
448
- * @param {object} object
449
- * @param {string} property
450
- * @param {string} label
451
- * @param {object | undefined} config
452
- * @param {object | undefined} folder
453
- * @returns {object}
454
- */
455
- addBindingWithOnChange(e, t, s, n, V = void 0) {
456
- return this.addBinding(s, e[t], n, V).on(
457
- "change",
458
- (m) => {
459
- e[t] = m.value;
460
- }
461
- );
462
- }
463
- /**
464
- * Add binding
465
- *
466
- * @param {string} label
467
- * @param {string | number} value
468
- * @param {object | undefined} config
469
- * @param {object | undefined} folder
470
- * @returns {object}
471
- */
472
- addBinding(e, t, s, n = void 0) {
473
- let V = this.debugger;
474
- return n && (V = n), V.addBinding(
475
- {
476
- [e]: t
477
- },
478
- e,
479
- s
480
- );
481
- }
482
- }
483
- _ = new WeakSet(), /**
484
- * Add copy button
485
- *
486
- * @returns {void}
487
- */
488
- Xe = function() {
489
- const e = this.debugger.addButton({
490
- title: "Copy"
491
- });
492
- e.on("click", () => {
493
- const t = this.debugger.exportState();
494
- if (t.children && t.children instanceof Array) {
495
- const s = t.children[1], n = s.children[0].binding.value, V = s.children[1].binding.value, c = t.children[4].children[0].binding.value, p = t.children[5], T = p.children[0].binding.value, G = p.children[1].binding.value, E = t.children[6], B = E.children[0].binding.value, H = E.children[1].binding.value, A = Be(
496
- c,
497
- T,
498
- G,
499
- B,
500
- H,
501
- n,
502
- V
503
- );
504
- navigator.clipboard.writeText(A).then(() => {
505
- e.title = "Copied!", setTimeout(() => {
506
- e.title = "Copy";
507
- }, 1e3);
508
- });
509
- }
510
- });
511
- };
512
- var Ae = `uniform sampler2D uImageTexture;
513
- uniform float uPointSize;
514
-
515
- varying vec4 vColor;
516
-
517
- void main() {
518
- vec3 vertexPosition = position;
519
-
520
- vec4 modelPosition = modelMatrix * vec4(vertexPosition, 1.0);
521
- vec4 viewPosition = viewMatrix * modelPosition;
522
- vec4 projectionPosition = projectionMatrix * viewPosition;
523
-
524
- gl_Position = projectionPosition;
525
- gl_PointSize = uPointSize;
526
-
527
- vColor = texture(uImageTexture, uv);
528
- }`, _e = `uniform float uAlphaTest;
529
-
530
- varying vec4 vColor;
531
-
532
- void main() {
533
- if (vColor.a < uAlphaTest) {
534
- discard;
535
- }
536
-
537
- gl_FragColor = vColor;
538
-
539
- #include <tonemapping_fragment>
540
- #include <colorspace_fragment>
541
- }`, M, w, y, Z, Fe, te, se, qe;
542
- let $e = (qe = class {
543
- /**
544
- * Constructor
545
- *
546
- * @param {RendererManager} rendererManager
547
- * @param {DebugManager} debugManager
548
- * @param {string} imageSrc
549
- * @param {number} resolutionWidth
550
- * @param {number} resolutionHeight
551
- * @param {number} pointSize
552
- * @param {number} alphaTest
553
- */
554
- constructor(e, t, s, n, V, m = 1, c = 0.1) {
555
- o(this, Z);
556
- /**
557
- * @type {THREE.Points}
558
- */
559
- q(this, "points");
560
- /**
561
- * @type {THREE.Texture}
562
- */
563
- o(this, M);
564
- /**
565
- * @type {RendererManager}
566
- */
567
- o(this, w);
568
- /**
569
- * @type {DebugManager}
570
- */
571
- o(this, y);
572
- l(this, w, e), l(this, y, t), r(this, Z, Fe).call(this, s, n, V, m, c);
573
- }
574
- /**
575
- * Enable debug mode
576
- *
577
- * @returns {void}
578
- */
579
- debug() {
580
- const e = i(this, y).addFolder({
581
- title: "Image Resolution"
582
- });
583
- i(this, y).addBinding(
584
- "width",
585
- this.points.geometry.parameters.widthSegments,
586
- { min: 0, max: this.points.geometry.parameters.width, step: 1 },
587
- e
588
- ).on("change", (s) => {
589
- s.last && r(this, Z, te).call(this, s.value, this.points.geometry.parameters.heightSegments);
590
- }), i(this, y).addBinding(
591
- "height",
592
- this.points.geometry.parameters.heightSegments,
593
- { min: 0, max: this.points.geometry.parameters.height, step: 1 },
594
- e
595
- ).on("change", (s) => {
596
- s.last && r(this, Z, te).call(this, this.points.geometry.parameters.widthSegments, s.value);
597
- });
598
- const t = i(this, y).addFolder({ title: "Image Pixel" });
599
- i(this, y).addBinding(
600
- "size",
601
- this.points.material.uniforms.uPointSize.value,
602
- { min: 1, max: 100, step: 1 },
603
- t
604
- ).on("change", (s) => {
605
- s.last && (this.points.material.uniforms.uPointSize.value = s.value);
606
- });
607
- }
608
- /**
609
- * Dispose
610
- *
611
- * @returns {void}
612
- */
613
- dispose() {
614
- this.points.geometry.dispose(), this.points.material.dispose(), i(this, M).dispose();
615
- }
616
- }, M = new WeakMap(), w = new WeakMap(), y = new WeakMap(), Z = new WeakSet(), /**
617
- * Init points
618
- *
619
- * @param {string} imageSrc
620
- * @param {number} resolutionWidth
621
- * @param {number} resolutionHeight
622
- * @param {number} pointSize
623
- * @param {number} alphaTest
624
- * @returns {void}
625
- */
626
- Fe = function(e, t, s, n, V) {
627
- const m = new d.TextureLoader();
628
- l(this, M, m.load(e));
629
- const c = r(this, Z, se).call(this, t, s), p = new d.ShaderMaterial({
630
- vertexShader: Ae,
631
- fragmentShader: _e,
632
- uniforms: {
633
- uImageTexture: new d.Uniform(i(this, M)),
634
- uPointSize: new d.Uniform(n),
635
- uAlphaTest: new d.Uniform(V)
636
- },
637
- transparent: !0,
638
- depthWrite: !1,
639
- alphaTest: V
640
- });
641
- this.points = new d.Points(c, p);
642
- }, /**
643
- * Replace image geometry
644
- *
645
- * @param {number} resolutionWidth
646
- * @param {number} resolutionHeight
647
- * @returns {void}
648
- * @note It is sent old attributes to be persisted by the new geometry.
649
- * New generated geometry attributes will replace old ones if
650
- * they exist in the old geometry
651
- */
652
- te = function(e, t) {
653
- const s = this.points.geometry.attributes;
654
- this.points.geometry.dispose(), this.points.geometry = r(this, Z, se).call(this, e, t, s);
655
- }, /**
656
- * Create image geometry
657
- *
658
- * @param {number} resolutionWidth
659
- * @param {number} resolutionHeight
660
- * @param {THREE.NormalBufferAttributes | null} attributes
661
- * @returns {THREE.PlaneGeometry}
662
- * @note It is created a plane that occupies all the render
663
- * @note The dom element width and height of the renderer include
664
- * the device pixel ratio, so it is important to use them
665
- * to create a plane that take all the render space/pixels
666
- * @note It is removed the index and normals from the geometry
667
- * to improve performance.
668
- * Normals are not going to be needed.
669
- * The index could cause the draw of multiple points/pixels in the
670
- * same place. That is why it is required to remove it
671
- */
672
- se = function(e, t, s = null) {
673
- const n = new d.PlaneGeometry(
674
- i(this, w).renderer.domElement.width,
675
- i(this, w).renderer.domElement.height,
676
- e * i(this, w).dpr,
677
- t * i(this, w).dpr
678
- );
679
- return n.setIndex(null), n.deleteAttribute("normal"), s && (n.attributes = { ...s, ...n.attributes }), n;
680
- }, qe);
681
- var b, k, j, S, Ze, Se, ye, Pe;
682
- class ei {
683
- /**
684
- * Constructor
685
- *
686
- * @param {RendererManager} rendererManager
687
- * @param {Canvas} canvas
688
- */
689
- constructor(e, t) {
690
- o(this, S);
691
- /**
692
- * @type {THREE.Vector2 | {x: number | undefined, y: number | undefined}}
693
- */
694
- q(this, "coord");
695
- /**
696
- * @type {Canvas}
697
- */
698
- q(this, "canvas");
699
- /**
700
- * @type {THREE.Raycaster}
701
- */
702
- q(this, "raycaster");
703
- /**
704
- * @type {THREE.Mesh}
705
- */
706
- q(this, "raycasterPlane");
707
- /**
708
- * @type {RendererManager}
709
- */
710
- o(this, b);
711
- /**
712
- * @type {Function}
713
- */
714
- o(this, k);
715
- /**
716
- * @type {Function}
717
- */
718
- o(this, j);
719
- this.canvas = t, this.coord = new d.Vector2(void 0, void 0), l(this, b, e), r(this, S, ye).call(this);
720
- }
721
- /**
722
- * Update
723
- *
724
- * @returns {void}
725
- */
726
- update() {
727
- let e = null, t = null;
728
- if (this.coord.x && this.coord.y) {
729
- this.raycaster.setFromCamera(
730
- this.coord,
731
- i(this, b).camera
732
- );
733
- const s = this.raycaster.intersectObject(this.raycasterPlane);
734
- if (s.length) {
735
- const n = s[0].uv;
736
- e = n.x * this.canvas.element.width, t = (1 - n.y) * this.canvas.element.height;
737
- }
738
- }
739
- this.canvas.update(e, t);
740
- }
741
- /**
742
- * Enable debug mode
743
- *
744
- * @returns {void}
745
- */
746
- debug() {
747
- this.canvas.debug();
748
- }
749
- /**
750
- * Dispose
751
- *
752
- * @returns {void}
753
- */
754
- dispose() {
755
- this.canvas.dispose(), r(this, S, Pe).call(this);
756
- }
757
- }
758
- b = new WeakMap(), k = new WeakMap(), j = new WeakMap(), S = new WeakSet(), /**
759
- * Process pointer move
760
- *
761
- * @param {PointerEvent} e
762
- * @returns {void}
763
- * @note Pointer coordinates are normalized to
764
- * clip space (NDC - Normalized Device Coordinate) to
765
- * use it for raycasting
766
- */
767
- Ze = function(e) {
768
- const t = e.target;
769
- this.coord.x = (e.offsetX / t.width - 0.5) * 2, this.coord.y = -(e.offsetY / t.height - 0.5) * 2;
770
- }, /**
771
- * Process pointer leave
772
- *
773
- * @returns {void}
774
- */
775
- Se = function() {
776
- this.coord.x = void 0, this.coord.y = void 0;
777
- }, /**
778
- * Init raycaster
779
- *
780
- * @returns {void}
781
- * @note It is created low poly plane in front of the image
782
- * to avoid performance issues that could arise while
783
- * working between the raycaster and image points
784
- */
785
- ye = function() {
786
- this.raycaster = new d.Raycaster(), l(this, k, r(this, S, Ze).bind(this)), i(this, b).renderer.domElement.addEventListener(
787
- "pointermove",
788
- i(this, k)
789
- ), l(this, j, r(this, S, Se).bind(this)), i(this, b).renderer.domElement.addEventListener(
790
- "pointerleave",
791
- i(this, j)
792
- ), this.raycasterPlane = new d.Mesh(
793
- new d.PlaneGeometry(
794
- i(this, b).width,
795
- i(this, b).height
796
- ),
797
- new d.MeshBasicMaterial()
798
- ), this.raycasterPlane.visible = !1;
799
- }, /**
800
- * Dispose raycaster
801
- *
802
- * @returns {void}
803
- */
804
- Pe = function() {
805
- i(this, b).renderer.domElement.removeEventListener(
806
- "pointermove",
807
- i(this, k)
808
- ), i(this, b).renderer.domElement.removeEventListener(
809
- "pointerleave",
810
- i(this, j)
811
- ), this.raycasterPlane.geometry.dispose(), this.raycasterPlane.material.dispose();
812
- };
813
- var P, f, J, g, x, U, ge, ze, we, xe, ne;
814
- class ii {
815
- /**
816
- * Constructor
817
- *
818
- * @param {DebugManager} debugManager
819
- * @param {number} resolutionWidth
820
- * @param {number} resolutionHeight
821
- * @param {string} pointerImageSrc
822
- * @param {number} pointerImageSize
823
- * @param {number} pointerTrailingFactor
824
- */
825
- constructor(e, t, s, n, V = 0.1, m = 0.05) {
826
- o(this, U);
827
- /**
828
- * @type {DebugManager}
829
- */
830
- o(this, P);
831
- /**
832
- * @type {THREE.CanvasTexture}
833
- */
834
- q(this, "texture");
835
- /**
836
- * @type {HTMLCanvasElement}
837
- */
838
- q(this, "element");
839
- /**
840
- * @type {CanvasRenderingContext2D}
841
- */
842
- o(this, f);
843
- /**
844
- * @type {HTMLImageElement}
845
- * @note Image that will represent the pointer.
846
- * This image is used to
847
- * select which vertices/points/pixels
848
- * should be displaced
849
- */
850
- o(this, J);
851
- /**
852
- * @type {number}
853
- * @note This value defines how many pixels are affected by the
854
- * pointer effect.
855
- * It is defined as a proportion of the image resolution width
856
- */
857
- o(this, g);
858
- /**
859
- * @type {number}
860
- * @note This value defines the strength of the
861
- * pointer trailing effect on the
862
- * pixels' displacement
863
- */
864
- o(this, x);
865
- l(this, P, e), l(this, x, m), r(this, U, we).call(this, t, s), r(this, U, xe).call(this, n, V);
866
- }
867
- /**
868
- * Update
869
- *
870
- * @param {number | null} dx
871
- * @param {number | null} dy
872
- * @returns {void}
873
- */
874
- update(e, t) {
875
- r(this, U, ze).call(this), e && t && r(this, U, ge).call(this, e, t), this.texture.needsUpdate = !0;
876
- }
877
- /**
878
- * Enable debug mode
879
- *
880
- * @returns {void}
881
- */
882
- debug() {
883
- const e = i(this, P).addFolder({
884
- title: "Pointer"
885
- });
886
- i(this, P).addBinding(
887
- "size",
888
- i(this, g) / this.element.width,
889
- {
890
- min: 0,
891
- max: 1,
892
- step: 0.01
893
- },
894
- e
895
- ).on("change", (s) => r(this, U, ne).call(this, s.value)), i(this, P).addBinding(
896
- "trailing",
897
- i(this, x),
898
- {
899
- min: 0,
900
- max: 1,
901
- step: 0.01
902
- },
903
- e
904
- ).on("change", (s) => l(this, x, s.value));
905
- const t = i(this, P).addFolder({
906
- title: "Pointer Canvas"
907
- });
908
- i(this, P).addBinding("show", !1, void 0, t).on("change", (s) => {
909
- s.value ? (document.body.appendChild(this.element), this.element.style.position = "fixed", this.element.style.top = "0", this.element.style.left = "0", this.element.style.border = "1px solid #fff") : document.body.removeChild(this.element);
910
- });
911
- }
912
- /**
913
- * Dispose
914
- *
915
- * @returns {void}
916
- */
917
- dispose() {
918
- this.texture.dispose();
919
- }
920
- }
921
- P = new WeakMap(), f = new WeakMap(), J = new WeakMap(), g = new WeakMap(), x = new WeakMap(), U = new WeakSet(), /**
922
- * Draw
923
- *
924
- * @param {number} dx
925
- * @param {number} dy
926
- * @returns {void}
927
- * @note The destination of the image is moved half its size
928
- * so it is drawn at the center of the destination position
929
- */
930
- ge = function(e, t) {
931
- e -= i(this, g) / 2, t -= i(this, g) / 2, i(this, f).save(), i(this, f).globalCompositeOperation = "lighten", i(this, f).drawImage(
932
- i(this, J),
933
- e,
934
- t,
935
- i(this, g),
936
- i(this, g)
937
- ), i(this, f).restore();
938
- }, /**
939
- * Clear
940
- *
941
- * @returns {void}
942
- * @note The idea is to draw a white image that will
943
- * indicate how much points inside them will be displaced.
944
- * That is why it is required to clear the canvas with black color
945
- */
946
- ze = function() {
947
- i(this, f).save(), i(this, f).globalAlpha = i(this, x), i(this, f).fillStyle = "#000", i(this, f).fillRect(0, 0, this.element.width, this.element.height), i(this, f).restore();
948
- }, /**
949
- * Init canvas texture used to detect pointer location and
950
- * displace points
951
- *
952
- * @param {number} resolutionWidth
953
- * @param {number} resolutionHeight
954
- * @returns {void}
955
- * @note The canvas will have the same number of pixels as the
956
- * image.
957
- * That is why it is used the image resolution as its dimensions
958
- */
959
- we = function(e, t) {
960
- this.element = document.createElement("canvas"), this.element.width = e, this.element.height = t, this.texture = new d.CanvasTexture(this.element), l(this, f, this.element.getContext("2d"));
961
- }, /**
962
- * Init pointer image
963
- *
964
- * @param {string} pointerImageSrc
965
- * @param {number} pointerImageSize
966
- * @returns {void}
967
- * @note It is considered that the pointer image will be
968
- * a white image that will indicate which pixels should be displaced
969
- */
970
- xe = function(e, t) {
971
- l(this, J, new Image()), i(this, J).src = e, r(this, U, ne).call(this, t);
972
- }, /**
973
- * Process pointer image size
974
- *
975
- * @param {number} pointerImageSize
976
- * @returns {void}
977
- * @note The aspect ratio of the image is always square
978
- * (the same size is used for the width and the height of the image).
979
- * It is proportional to the canvas width.
980
- * This approach is considered correct because web elements
981
- * adjust only their width to fit in the page
982
- */
983
- ne = function(e) {
984
- l(this, g, e * this.element.width);
985
- };
986
- const ti = "data:image/png;base64,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", si = "data:image/png;base64,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", me = 0;
987
- var C, Y, $, Ne;
988
- class ni {
989
- /**
990
- * Constructor
991
- *
992
- * @param {{
993
- * src : string;
994
- * width : number;
995
- * height : number;
996
- * resolution: {
997
- * width : number;
998
- * height: number;
999
- * };
1000
- * pixel?: {
1001
- * size ?: number;
1002
- * alphaTest?: number;
1003
- * motion ?: {
1004
- * displacement?: {
1005
- * frequency?: number;
1006
- * amplitude?: number;
1007
- * };
1008
- * };
1009
- * };
1010
- * motion?: {
1011
- * noise?: {
1012
- * src ?: string;
1013
- * frequency?: number;
1014
- * amplitude?: number;
1015
- * };
1016
- * };
1017
- * }[]} images
1018
- * @throws {Error}
1019
- */
1020
- constructor(e) {
1021
- o(this, $);
1022
- /**
1023
- * @type {{
1024
- * src : string;
1025
- * width : number;
1026
- * height : number;
1027
- * resolution: {
1028
- * width : number;
1029
- * height: number;
1030
- * }
1031
- * pixel?: {
1032
- * size ?: number;
1033
- * alphaTest?: number;
1034
- * motion ?: {
1035
- * displacement?: {
1036
- * frequency?: number;
1037
- * amplitude?: number;
1038
- * };
1039
- * };
1040
- * };
1041
- * motion?: {
1042
- * noise?: {
1043
- * src ?: string;
1044
- * frequency?: number;
1045
- * amplitude?: number;
1046
- * };
1047
- * };
1048
- * }[]}
1049
- */
1050
- q(this, "images");
1051
- /**
1052
- * @type {{
1053
- * src : string;
1054
- * width : number;
1055
- * height : number;
1056
- * resolution: {
1057
- * width : number;
1058
- * height: number;
1059
- * };
1060
- * pixel?: {
1061
- * size ?: number;
1062
- * alphaTest?: number;
1063
- * motion ?: {
1064
- * displacement?: {
1065
- * frequency?: number;
1066
- * amplitude?: number;
1067
- * }
1068
- * };
1069
- * };
1070
- * motion?: {
1071
- * noise?: {
1072
- * src ?: string;
1073
- * frequency?: number;
1074
- * amplitude?: number;
1075
- * };
1076
- * };
1077
- * }}
1078
- */
1079
- q(this, "currentImage");
1080
- /**
1081
- * @type {number}
1082
- */
1083
- o(this, C);
1084
- /**
1085
- * @type {number[]}
1086
- */
1087
- o(this, Y);
1088
- this.images = e, r(this, $, Ne).call(this, Object.keys(this.images).map(Number)), this.update();
1089
- }
1090
- /**
1091
- * Taking into consideration window size,
1092
- * it is selected the breakpoint and image to be used
1093
- *
1094
- * @returns {boolean}
1095
- * @note Each breakpoint defines the `min-width` at which
1096
- * a specific image should be used.
1097
- * That is why it is returned
1098
- * the greater breakpoint that is less than or equal
1099
- * the window size
1100
- */
1101
- update() {
1102
- const e = window.innerWidth, t = i(this, Y).reduce(
1103
- (s, n) => n <= e && n > s ? n : s,
1104
- me
1105
- );
1106
- return t !== i(this, C) ? (l(this, C, t), this.currentImage = this.images[i(this, C)], !0) : !1;
1107
- }
1108
- }
1109
- C = new WeakMap(), Y = new WeakMap(), $ = new WeakSet(), /**
1110
- * Init breakpoints from image
1111
- *
1112
- * @param {number[]} breakpoints
1113
- * @returns {void}
1114
- * @throws {Error}
1115
- */
1116
- Ne = function(e) {
1117
- if (e.find(
1118
- (t) => t === me
1119
- ) === void 0)
1120
- throw new Error(
1121
- "The `0` breakpoint is required. It defines the default image that should be used."
1122
- );
1123
- l(this, Y, e);
1124
- };
1125
- var N, v, L, z, O, Q, I, D, u, re, ae, Le, oe, Oe, Te, Me, ke;
1126
- class li {
1127
- /**
1128
- * Constructor
1129
- *
1130
- * @param {{
1131
- * containerSelector?: string;
1132
- * image : {
1133
- * src : string;
1134
- * width : number;
1135
- * height : number;
1136
- * resolution: {
1137
- * width : number;
1138
- * height: number;
1139
- * };
1140
- * pixel?: {
1141
- * size ?: number;
1142
- * alphaTest?: number;
1143
- * motion ?: {
1144
- * displacement?: {
1145
- * frequency?: number;
1146
- * amplitude?: number;
1147
- * }
1148
- * }
1149
- * };
1150
- * motion?: {
1151
- * noise?: {
1152
- * src ?: string;
1153
- * frequency?: number;
1154
- * amplitude?: number;
1155
- * }
1156
- * }
1157
- * }[];
1158
- * pointer?: {
1159
- * src ?: string;
1160
- * size ?: number;
1161
- * trailing?: {
1162
- * factor?: number;
1163
- * }
1164
- * };
1165
- * isDebugging?: boolean;
1166
- * }} config
1167
- * @throws {Error}
1168
- */
1169
- constructor(e) {
1170
- o(this, u);
1171
- /**
1172
- * @type {RendererManager}
1173
- */
1174
- q(this, "rendererManager");
1175
- /**
1176
- * @type {DebugManager}
1177
- */
1178
- q(this, "debugManager");
1179
- /**
1180
- * @type {Runner}
1181
- */
1182
- o(this, N);
1183
- /**
1184
- * @type {ImageManager}
1185
- */
1186
- o(this, v);
1187
- /**
1188
- * @type {Timer}
1189
- */
1190
- o(this, L);
1191
- /**
1192
- * @type {{
1193
- * containerSelector?: string;
1194
- * image : {
1195
- * src : string;
1196
- * width : number;
1197
- * height : number;
1198
- * resolution: {
1199
- * width : number;
1200
- * height: number;
1201
- * };
1202
- * pixel?: {
1203
- * size ?: number;
1204
- * motion?: {
1205
- * displacement?: {
1206
- * frequency?: number;
1207
- * amplitude?: number;
1208
- * }
1209
- * }
1210
- * };
1211
- * motion?: {
1212
- * noise?: {
1213
- * src ?: string;
1214
- * frequency?: number;
1215
- * amplitude?: number;
1216
- * }
1217
- * }
1218
- * }[];
1219
- * pointer?: {
1220
- * src ?: string;
1221
- * size ?: number;
1222
- * trailing?: {
1223
- * factor?: number;
1224
- * }
1225
- * };
1226
- * isDebugging?: boolean;
1227
- * }}
1228
- */
1229
- o(this, z);
1230
- /**
1231
- * @type {boolean}
1232
- */
1233
- o(this, O);
1234
- /**
1235
- * @type {number}
1236
- */
1237
- o(this, Q);
1238
- /**
1239
- * @type {Function}
1240
- */
1241
- o(this, I);
1242
- /**
1243
- * @type {Function}
1244
- */
1245
- o(this, D);
1246
- l(this, z, e), l(this, O, e.isDebugging ?? !1), l(this, v, new ni(e.images)), r(this, u, re).call(this);
1247
- }
1248
- /**
1249
- * Debug
1250
- *
1251
- * @returns {void}
1252
- */
1253
- debug() {
1254
- i(this, O) || (r(this, u, oe).call(this), l(this, O, !0));
1255
- }
1256
- /**
1257
- * Dispose
1258
- *
1259
- * @returns {void}
1260
- */
1261
- dispose() {
1262
- cancelAnimationFrame(i(this, Q)), window.removeEventListener("keydown", i(this, I)), window.removeEventListener("resize", i(this, D)), i(this, L).dispose(), i(this, N).dispose(), this.rendererManager.dispose(), this.debugManager.dispose();
1263
- }
1264
- }
1265
- N = new WeakMap(), v = new WeakMap(), L = new WeakMap(), z = new WeakMap(), O = new WeakMap(), Q = new WeakMap(), I = new WeakMap(), D = new WeakMap(), u = new WeakSet(), /**
1266
- * Init
1267
- *
1268
- * @returns {void}
1269
- */
1270
- re = function() {
1271
- this.rendererManager = new Ge(
1272
- i(this, v).currentImage.width,
1273
- i(this, v).currentImage.height
1274
- ), l(this, L, new Ie()), r(this, u, Me).call(this), r(this, u, Te).call(this), i(this, z).containerSelector && r(this, u, ke).call(this, i(this, z).containerSelector), l(this, I, r(this, u, Le).bind(this)), window.addEventListener("keydown", i(this, I)), i(this, O) ? r(this, u, oe).call(this) : r(this, u, Oe).call(this), l(this, D, () => {
1275
- i(this, v).update() && (this.dispose(), r(this, u, re).call(this));
1276
- }), window.addEventListener("resize", i(this, D)), r(this, u, ae).call(this);
1277
- }, /**
1278
- * Render
1279
- *
1280
- * @params {number} t
1281
- * @returns {void}
1282
- */
1283
- ae = function(e = 0) {
1284
- i(this, L).update(e), i(this, N).update(i(this, L).getElapsed()), l(this, Q, requestAnimationFrame(r(this, u, ae).bind(this)));
1285
- }, /**
1286
- * Handle debug
1287
- *
1288
- * @param {KeyboardEvent} e
1289
- * @returns {void}
1290
- */
1291
- Le = function(e) {
1292
- e.key === "d" && this.debug();
1293
- }, /**
1294
- * Enable debug
1295
- *
1296
- * @returns {void}
1297
- */
1298
- oe = function() {
1299
- i(this, N).debug(), this.debugManager.enable();
1300
- }, /**
1301
- * Disable debug
1302
- *
1303
- * @returns {void}
1304
- */
1305
- Oe = function() {
1306
- this.debugManager.disable();
1307
- }, /**
1308
- * Init runner
1309
- *
1310
- * @returns {void}
1311
- */
1312
- Te = function() {
1313
- var e, t, s, n, V, m, c, p, T, G, E, B, H, A, le, de, Ve, pe;
1314
- l(this, N, new Qe(
1315
- new $e(
1316
- this.rendererManager,
1317
- this.debugManager,
1318
- i(this, v).currentImage.src,
1319
- i(this, v).currentImage.resolution.width,
1320
- i(this, v).currentImage.resolution.height,
1321
- ((e = i(this, v).currentImage.pixel) == null ? void 0 : e.size) ?? 1,
1322
- ((t = i(this, v).currentImage.pixel) == null ? void 0 : t.alphaTest) ?? 0.1
1323
- ),
1324
- new ei(
1325
- this.rendererManager,
1326
- new ii(
1327
- this.debugManager,
1328
- i(this, v).currentImage.resolution.width,
1329
- i(this, v).currentImage.resolution.height,
1330
- ((s = i(this, z).pointer) == null ? void 0 : s.src) ?? ti,
1331
- ((n = i(this, z).pointer) == null ? void 0 : n.size) ?? 0.15,
1332
- ((m = (V = i(this, z).pointer) == null ? void 0 : V.trailing) == null ? void 0 : m.factor) ?? 0.01
1333
- )
1334
- ),
1335
- this.rendererManager,
1336
- this.debugManager,
1337
- ((p = (c = i(this, v).currentImage.motion) == null ? void 0 : c.noise) == null ? void 0 : p.src) ?? si,
1338
- ((G = (T = i(this, v).currentImage.motion) == null ? void 0 : T.noise) == null ? void 0 : G.frequency) ?? 0.05,
1339
- ((B = (E = i(this, v).currentImage.motion) == null ? void 0 : E.noise) == null ? void 0 : B.amplitude) ?? 3,
1340
- ((le = (A = (H = i(this, v).currentImage.pixel) == null ? void 0 : H.motion) == null ? void 0 : A.displacement) == null ? void 0 : le.frequency) ?? 5,
1341
- ((pe = (Ve = (de = i(this, v).currentImage.pixel) == null ? void 0 : de.motion) == null ? void 0 : Ve.displacement) == null ? void 0 : pe.amplitude) ?? 4
1342
- ));
1343
- }, /**
1344
- * Init debug manager
1345
- *
1346
- * @returns {void}
1347
- */
1348
- Me = function() {
1349
- this.debugManager = new He();
1350
- }, /**
1351
- * Init DOM
1352
- *
1353
- * @param {string} containerSelector
1354
- * @returns {void}
1355
- */
1356
- ke = function(e) {
1357
- const t = document.querySelector(e);
1358
- t == null || t.appendChild(this.rendererManager.renderer.domElement), t == null || t.appendChild(this.debugManager.debugger.element);
1359
- };
1360
- export {
1361
- li as Img2Pxl
1362
- };
1363
- //# sourceMappingURL=core.js.map