atharv-mandlavdiya 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,13 +31,15 @@ progress-card {
31
31
  width: 100%;
32
32
  margin-bottom: 30vh;
33
33
  overflow: hidden;
34
+ --progress-card-radius-start: 2.441rem;
35
+ --progress-card-radius-end: 1rem;
34
36
  scale: calc(0.5 + var(--progress) * 0.5);
35
37
  clip-path: rect(
36
38
  calc(20% - var(--progress) * 20%)
37
39
  calc(90% + var(--progress) * 10%)
38
40
  calc(80% + var(--progress) * 20%)
39
41
  calc(10% - var(--progress) * 10%)
40
- round calc(2.441rem - var(--progress) * 2.441rem)
42
+ round calc(var(--progress-card-radius-start) - var(--progress) * (var(--progress-card-radius-start) - var(--progress-card-radius-end)))
41
43
  );
42
44
  transform: translateZ(0);
43
45
  will-change: clip-path, scale;
@@ -56,7 +58,7 @@ progress-card {
56
58
  calc(70% + var(--progress) * 30%)
57
59
  calc(80% + var(--progress) * 20%)
58
60
  calc(30% - var(--progress) * 30%)
59
- round calc(2.441rem - var(--progress) * 2.441rem)
61
+ round calc(var(--progress-card-radius-start) - var(--progress) * (var(--progress-card-radius-start) - var(--progress-card-radius-end)))
60
62
  );
61
63
  }
62
64
  }
@@ -638,3 +640,303 @@ export function sign() {
638
640
  })();
639
641
  </script>`;
640
642
  }
643
+
644
+ export function dtcLogo() {
645
+ const PATH_D = "M458 1128 L319 892 L171 1130Z M427 1111 L204 1111 L319 927Z M634 1228 L319 692 L0 1230Z M603 1211 L31 1211 L319 727Z M523 328 L325 670 L386 782 L460 676 L778 1230 L914 1230 L526 558 L597 444Z M523 363 L576 446 L505 558 L882 1212 L787 1210 L461 642 L388 747 L345 669Z M715 0 L529 314 L1050 1224 L1426 1230 L1183 802 L1079 854 L1227 1115 L1130 1113 L669 321 L716 240 L856 473 L955 417Z M715 35 L930 410 L863 449 L715 203 L654 331 L1121 1133 L1258 1134 L1104 862 L1175 825 L1394 1212 L1065 1212 L550 314Z";
646
+ const SVG_W = 1427;
647
+ const SVG_H = 1231;
648
+
649
+ return `<canvas id="dtc-logo-canvas" style="display:block;touch-action:pan-y;width:30vw;height:auto;" width="1547" height="1351"></canvas>
650
+ <script>
651
+ (function() {
652
+ var VERTEX_SHADER = \`
653
+ attribute vec2 aPosition;
654
+ attribute float aSize;
655
+ attribute float aAlpha;
656
+ uniform vec2 uResolution;
657
+ varying float vAlpha;
658
+ void main() {
659
+ vec2 clip = (aPosition / uResolution) * 2.0 - 1.0;
660
+ clip.y *= -1.0;
661
+ gl_Position = vec4(clip, 0.0, 1.0);
662
+ gl_PointSize = aSize;
663
+ vAlpha = aAlpha;
664
+ }
665
+ \`;
666
+
667
+ var FRAGMENT_SHADER = \`
668
+ precision mediump float;
669
+ varying float vAlpha;
670
+ void main() {
671
+ vec2 d = gl_PointCoord - 0.5;
672
+ float r = length(d) * 2.0;
673
+ if (r > 1.0) discard;
674
+ float a = (1.0 - smoothstep(0.55, 0.95, r)) * vAlpha;
675
+ gl_FragColor = vec4(1.0, 0.0, 0.0, a);
676
+ }
677
+ \`;
678
+
679
+ var canvas = document.getElementById('dtc-logo-canvas');
680
+ if (!canvas) return;
681
+
682
+ var gl = canvas.getContext('webgl', { premultipliedAlpha: false, alpha: true, antialias: true });
683
+ if (!gl) return;
684
+
685
+ var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
686
+
687
+ function compile(type, source) {
688
+ var s = gl.createShader(type);
689
+ gl.shaderSource(s, source);
690
+ gl.compileShader(s);
691
+ return s;
692
+ }
693
+
694
+ var program = gl.createProgram();
695
+ gl.attachShader(program, compile(gl.VERTEX_SHADER, VERTEX_SHADER));
696
+ gl.attachShader(program, compile(gl.FRAGMENT_SHADER, FRAGMENT_SHADER));
697
+ gl.linkProgram(program);
698
+ gl.useProgram(program);
699
+
700
+ var aPos = gl.getAttribLocation(program, 'aPosition');
701
+ var aSize = gl.getAttribLocation(program, 'aSize');
702
+ var aAlpha = gl.getAttribLocation(program, 'aAlpha');
703
+ var uRes = gl.getUniformLocation(program, 'uResolution');
704
+
705
+ var posBuf = gl.createBuffer();
706
+ var sizeBuf = gl.createBuffer();
707
+ var alphaBuf = gl.createBuffer();
708
+
709
+ gl.enable(gl.BLEND);
710
+ gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
711
+
712
+ var sampleScale = 1;
713
+ var svgW = ${SVG_W};
714
+ var svgH = ${SVG_H};
715
+ var rW = svgW * sampleScale;
716
+ var rH = svgH * sampleScale;
717
+
718
+ var svgBlob = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + svgW + ' ' + svgH + '" width="' + rW + '" height="' + rH + '">'
719
+ + '<path d="${PATH_D}" fill="white" fill-rule="evenodd"/>'
720
+ + '</svg>';
721
+
722
+ var svgUrl = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svgBlob);
723
+
724
+ var img = new Image();
725
+ img.onload = function() {
726
+ var PAD = 60;
727
+ var canvasW = rW + 2 * PAD;
728
+ var canvasH = rH + 2 * PAD;
729
+
730
+ var off = document.createElement('canvas');
731
+ off.width = rW;
732
+ off.height = rH;
733
+ var ctx = off.getContext('2d', { willReadFrequently: true });
734
+ ctx.drawImage(img, 0, 0, rW, rH);
735
+ var data = ctx.getImageData(0, 0, rW, rH).data;
736
+
737
+ var targets = [];
738
+ for (var y = 0; y < rH; y++) {
739
+ for (var x = 0; x < rW; x++) {
740
+ var a = data[(y * rW + x) * 4 + 3] || 0;
741
+ if (a > 64) targets.push({ x: x + 0.5, y: y + 0.5, a: a / 255 });
742
+ }
743
+ }
744
+
745
+ canvas.width = canvasW;
746
+ canvas.height = canvasH;
747
+ gl.viewport(0, 0, canvasW, canvasH);
748
+ gl.uniform2f(uRes, canvasW, canvasH);
749
+
750
+ var cx = canvasW / 2;
751
+ var cy = canvasH / 2;
752
+
753
+ var particles = targets.map(function(t) {
754
+ var tx = t.x + PAD;
755
+ var ty = t.y + PAD;
756
+ var angle = Math.random() * Math.PI * 2;
757
+ var dist = Math.max(canvasW, canvasH) * (0.55 + Math.random() * 0.6);
758
+ var delay = reduced ? 0 : (t.x / rW) * 0.48 + Math.random() * 0.24;
759
+ return {
760
+ tx: tx, ty: ty,
761
+ x: reduced ? tx : cx + Math.cos(angle) * dist,
762
+ y: reduced ? ty : cy + Math.sin(angle) * dist,
763
+ vx: 0, vy: 0,
764
+ delay: delay,
765
+ arrived: reduced,
766
+ size: 2.5 + Math.random() * 0.5,
767
+ baseAlpha: t.a,
768
+ phaseX: Math.random() * Math.PI * 2,
769
+ phaseY: Math.random() * Math.PI * 2
770
+ };
771
+ });
772
+
773
+ var N = particles.length;
774
+ var positions = new Float32Array(N * 2);
775
+ var alphas = new Float32Array(N);
776
+ var sizesArr = new Float32Array(N);
777
+ for (var i = 0; i < N; i++) sizesArr[i] = particles[i].size;
778
+
779
+ gl.bindBuffer(gl.ARRAY_BUFFER, sizeBuf);
780
+ gl.bufferData(gl.ARRAY_BUFFER, sizesArr, gl.STATIC_DRAW);
781
+ gl.enableVertexAttribArray(aSize);
782
+ gl.vertexAttribPointer(aSize, 1, gl.FLOAT, false, 0, 0);
783
+
784
+ gl.bindBuffer(gl.ARRAY_BUFFER, posBuf);
785
+ gl.bufferData(gl.ARRAY_BUFFER, positions, gl.DYNAMIC_DRAW);
786
+ gl.enableVertexAttribArray(aPos);
787
+ gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 0, 0);
788
+
789
+ gl.bindBuffer(gl.ARRAY_BUFFER, alphaBuf);
790
+ gl.bufferData(gl.ARRAY_BUFFER, alphas, gl.DYNAMIC_DRAW);
791
+ gl.enableVertexAttribArray(aAlpha);
792
+ gl.vertexAttribPointer(aAlpha, 1, gl.FLOAT, false, 0, 0);
793
+
794
+ var k = 0.014;
795
+ var damp = 0.8;
796
+ var mr = 60;
797
+ var mForce = 5.5;
798
+ var driftAmp = 0.12;
799
+ var fadeDur = 0.48;
800
+ var revealBand = 140;
801
+ var arriveDist = 6;
802
+
803
+ function smoothstep(e0, e1, x) {
804
+ var t = Math.min(1, Math.max(0, (x - e0) / (e1 - e0)));
805
+ return t * t * (3 - 2 * t);
806
+ }
807
+
808
+ var mouse = { x: -1e6, y: -1e6, has: false };
809
+ var startTime = 0;
810
+ var rafId = null;
811
+ var rafScheduled = false;
812
+ var isVisible = true;
813
+
814
+ function step(elapsed) {
815
+ for (var i = 0; i < particles.length; i++) {
816
+ var p = particles[i];
817
+ var t = elapsed - p.delay;
818
+ if (t < 0) {
819
+ positions[i * 2] = -1e6;
820
+ positions[i * 2 + 1] = -1e6;
821
+ alphas[i] = 0;
822
+ continue;
823
+ }
824
+
825
+ var driftX = Math.sin(elapsed * 0.5 + p.tx * 0.006 + p.phaseX * 0.15) * driftAmp;
826
+ var driftY = Math.cos(elapsed * 0.42 + p.ty * 0.01 + p.phaseY * 0.15) * driftAmp;
827
+ var tgtX = p.tx + driftX;
828
+ var tgtY = p.ty + driftY;
829
+
830
+ var ax = (tgtX - p.x) * k;
831
+ var ay = (tgtY - p.y) * k;
832
+
833
+ if (!reduced && mouse.has) {
834
+ var dx = p.x - mouse.x;
835
+ var dy = p.y - mouse.y;
836
+ var d2 = dx * dx + dy * dy;
837
+ if (d2 < mr * mr && d2 > 0.5) {
838
+ var d = Math.sqrt(d2);
839
+ var falloff = 1 - d / mr;
840
+ var force = falloff * falloff * mForce;
841
+ ax += (dx / d) * force;
842
+ ay += (dy / d) * force;
843
+ }
844
+ }
845
+
846
+ p.vx = (p.vx + ax) * damp;
847
+ p.vy = (p.vy + ay) * damp;
848
+ p.x += p.vx;
849
+ p.y += p.vy;
850
+
851
+ positions[i * 2] = p.x;
852
+ positions[i * 2 + 1] = p.y;
853
+
854
+ var alpha = Math.min(1, t / fadeDur) * p.baseAlpha;
855
+ if (!p.arrived) {
856
+ var dxr = p.tx - p.x;
857
+ var dyr = p.ty - p.y;
858
+ var dist2 = dxr * dxr + dyr * dyr;
859
+ if (dist2 < arriveDist * arriveDist) {
860
+ p.arrived = true;
861
+ } else {
862
+ alpha *= 1 - smoothstep(arriveDist, revealBand, Math.sqrt(dist2));
863
+ }
864
+ }
865
+ alphas[i] = alpha;
866
+ }
867
+ }
868
+
869
+ var STEP_MS = 1000 / 60;
870
+ var lastNow = 0;
871
+ var accMs = 0;
872
+ var simMs = 0;
873
+
874
+ function render() {
875
+ rafScheduled = false;
876
+ if (!isVisible) return;
877
+
878
+ var now = performance.now();
879
+ if (startTime === 0) {
880
+ startTime = now;
881
+ lastNow = now - STEP_MS;
882
+ }
883
+
884
+ var frameDt = now - lastNow;
885
+ lastNow = now;
886
+ if (frameDt > 250) frameDt = STEP_MS;
887
+
888
+ accMs += frameDt;
889
+ if (accMs > STEP_MS * 5) accMs = STEP_MS * 5;
890
+
891
+ while (accMs >= STEP_MS) {
892
+ step(simMs / 1000);
893
+ simMs += STEP_MS;
894
+ accMs -= STEP_MS;
895
+ }
896
+
897
+ gl.clearColor(0, 0, 0, 0);
898
+ gl.clear(gl.COLOR_BUFFER_BIT);
899
+
900
+ gl.bindBuffer(gl.ARRAY_BUFFER, posBuf);
901
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, positions);
902
+
903
+ gl.bindBuffer(gl.ARRAY_BUFFER, alphaBuf);
904
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, alphas);
905
+
906
+ gl.drawArrays(gl.POINTS, 0, particles.length);
907
+
908
+ rafScheduled = true;
909
+ rafId = requestAnimationFrame(render);
910
+ }
911
+
912
+ var io = new IntersectionObserver(function(entries) {
913
+ entries.forEach(function(e) { isVisible = e.isIntersecting; });
914
+ if (isVisible && !rafScheduled) {
915
+ rafScheduled = true;
916
+ rafId = requestAnimationFrame(render);
917
+ }
918
+ }, { threshold: 0 });
919
+ io.observe(canvas);
920
+
921
+ rafScheduled = true;
922
+ rafId = requestAnimationFrame(render);
923
+
924
+ function setMouse(cx, cy) {
925
+ var rect = canvas.getBoundingClientRect();
926
+ if (!rect.width || !rect.height) return;
927
+ mouse.x = (cx - rect.left) * (canvas.width / rect.width);
928
+ mouse.y = (cy - rect.top) * (canvas.height / rect.height);
929
+ mouse.has = true;
930
+ }
931
+
932
+ window.addEventListener('mousemove', function(e) { setMouse(e.clientX, e.clientY); }, { passive: true });
933
+ canvas.addEventListener('touchmove', function(e) { var t = e.touches[0]; if (t) setMouse(t.clientX, t.clientY); }, { passive: true });
934
+ canvas.addEventListener('touchend', function() { mouse.has = false; }, { passive: true });
935
+ canvas.addEventListener('touchcancel', function() { mouse.has = false; }, { passive: true });
936
+ document.addEventListener('mouseleave', function() { mouse.has = false; });
937
+ };
938
+
939
+ img.src = svgUrl;
940
+ })();
941
+ </script>`;
942
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atharv-mandlavdiya",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "description": "Made With Love By Atharv Mandlavdiya",
5
5
  "type": "module",
6
6
  "main": "atharvmandlavdiya.js",