Skip to content

Commit 2481e97

Browse files
committed
Remove GA and demo clean up.
1 parent 9534f3a commit 2481e97

68 files changed

Lines changed: 2032 additions & 1700 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

assets/cover.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,16 @@ window.demoDescription = "In a field of bouncing particles, rotate a centered pa
314314
action: (type, px, py, event) => {
315315
// A mouse remains over the canvas after a drag ends. Touch and pen input
316316
// do not, so their drop should remove the collider until the next contact.
317+
// An overlay can also cause `pointerout` while the pointer is still inside
318+
// the canvas bounds (notably when pointer capture ends over the header).
319+
// In that case its header listener keeps the same collider active.
317320
if (
318-
type === "out" ||
319-
(type === "drop" && event && event.pointerType !== "mouse")
321+
type === "out" &&
322+
(!Num.within(px, 0, space.width) || !Num.within(py, 0, space.height))
320323
) {
321324
deactivatePointer();
325+
} else if (type === "drop" && event && event.pointerType !== "mouse") {
326+
deactivatePointer();
322327
} else if (type === "move" || type === "drag" || type === "down" || type === "over") {
323328
movePointer( px, py );
324329
}

demo/canvasform.composite.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Pts.quickStart( "#pt", "#666" );
4646

4747
// Use pointer position to change background and speed
4848
let speed = space.pointer.$subtract( space.center ).divide( space.center ).abs();
49+
let radius = space.size.minValue().value;
4950

5051
let gr = speed.x * 100; // background gray
5152
form.fill( `rgb(${gr+80},${gr+80},${gr+80})` ).rect( space.innerBound );
@@ -60,8 +61,8 @@ Pts.quickStart( "#pt", "#666" );
6061

6162
for (let k=0, klen=nps.length; k<klen; k++) {
6263
for (let i=0; i<nums; i++) {
63-
let c1 = Circle.fromCenter( nps[k][i], space.size.minValue().value * 0.2 );
64-
let c2 = Circle.fromCenter( nps[k][i], space.size.minValue().value * 0.7 );
64+
let c1 = Circle.fromCenter( nps[k][i], radius * 0.2 );
65+
let c2 = Circle.fromCenter( nps[k][i], radius * 0.7 );
6566
let grad = gradients[ k===0 ? i : nums-i-1 ];
6667
form.fillOnly( grad( c1, c2 ) ).circle( c2 );
6768
}

demo/canvasform.gradient.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ window.demoDescription = "Grid cells filled with simple linear gradient, over a
99

1010
// Pts quick start mode.
1111
var run = Pts.quickStart( "#pt", "#123" );
12+
var linear = form.gradient( ["rgba(255,255,255,1)", "rgba(255,255,255,0)"] );
1213

1314
run( (time, ftime) => {
1415
let scale = space.center.$subtract( space.pointer ).divide( space.center ).abs();
@@ -31,8 +32,7 @@ window.demoDescription = "Grid cells filled with simple linear gradient, over a
3132

3233
// Fill every other grid cells with a simple linear gradient
3334
for (let i=0, len=cells.length; i<len; i++) {
34-
let grad = form.gradient( ["rgba(255,255,255,1)", "rgba(255,255,255,0)"] );
35-
form.fillOnly( i%2 === 0 ? grad( cells[i] ) : "rgba(0,0,0,0)" ).rect( cells[i].subtract(0, offy) );
35+
form.fillOnly( i%2 === 0 ? linear( cells[i] ) : "rgba(0,0,0,0)" ).rect( cells[i].subtract(0, offy) );
3636
}
3737
});
3838

demo/color.LABtoRGB.js

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ Pts.quickStart( "#pt", "#96bfed" );
1616

1717
function init() {
1818
let ratio = space.size.x/space.size.y;
19-
grid = Create.gridCells( space.innerBound, 20*ratio, 20 );
19+
grid = Create.gridCells( space.innerBound, 20*ratio, 20 );
20+
grid.forEach( (cell) => cell[1].ceil() );
2021
}
2122

2223

@@ -25,19 +26,13 @@ Pts.quickStart( "#pt", "#96bfed" );
2526
resize: init,
2627

2728
animate: (time, ftime) => {
28-
29-
// get LAB color string, given a point position
30-
let color = (p) => {
31-
let p1 = p.$divide(space.size);
32-
let p2 = space.pointer.$divide(space.size);
33-
let c1 = cu.$multiply( Pt.make( 4, 1 ).to( p2.x, p1.x-0.5, p1.y-0.5 ) );
34-
return Color.LABtoRGB( c1 ).toString("rgb");
35-
}
29+
let size = space.size;
30+
let pointer = space.pointer.$divide( size );
3631

3732
for (let i=0, len=grid.length; i<len; i++) {
38-
grid[i][1].ceil();
39-
let c = grid[i].interpolate( Num.cycle( (time+i*60)%1000/1000 ) );
40-
form.fillOnly( color( c ) ).rect( grid[i] );
33+
let p = grid[i].interpolate( Num.cycle( (time+i*60)%1000/1000 ) ).divide( size );
34+
let c = cu.$multiply( new Pt( pointer.x, p.x-0.5, p.y-0.5, 1 ) );
35+
form.fillOnly( Color.LABtoRGB( c ).toString("rgb") ).rect( grid[i] );
4136
}
4237
},
4338

demo/create.delaunay.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ Pts.quickStart( "#pt", "#123" );
1818

1919
// A simple function to repel the points if they are too close
2020
let repel = (size) => {
21+
let sizeSq = size*size;
2122
for (let k=0, len=de.length; k<len; k++) {
22-
for (let i=0, len=de.length; i<len; i++) {
23-
if ( i !== k ) {
24-
let d = de[k].$subtract( de[i] );
25-
if ( d.magnitudeSq() < size*size ) {
26-
de[k].subtract( d.$divide( -size/3 ) );
27-
de[i].subtract( d.$divide( size/3 ) );
28-
}
23+
for (let i=k+1; i<len; i++) {
24+
let d = de[k].$subtract( de[i] );
25+
if ( d.magnitudeSq() < sizeSq ) {
26+
let push = d.$divide( size/6 );
27+
de[k].add( push );
28+
de[i].subtract( push );
2929
}
3030
}
3131
}
@@ -58,7 +58,7 @@ Pts.quickStart( "#pt", "#123" );
5858

5959
// Guides: Show the neighbor cells of the point nearest to pointer
6060
let nearIndex = Polygon.nearestPt( de, space.pointer );
61-
de.neighbors( nearIndex, true ).map( (n) => {
61+
de.neighbors( nearIndex, true ).forEach( (n) => {
6262
form.strokeOnly("rgba(255,255,0, .9)", 3).polygon( n.triangle );
6363
form.strokeOnly("rgba(255,255,0,.3)", 1).circle( n.circle );
6464
form.fillOnly("#fe6", 1).point( n.circle[0], 2 );

demo/create.gridcells.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ Pts.quickStart( "#pt", "#123" );
2424
form.stroke("#123");
2525

2626
// calculate the size and color of each cell based on its distance to the pointer
27-
let rects = pts.map( (p) => {
28-
let mag = follower.$subtract( Rectangle.center( p ) ).magnitude()
27+
pts.forEach( (p) => {
28+
let c = Rectangle.center( p );
29+
let mag = follower.$subtract( c ).magnitude();
2930
let scale = Math.min( 1, Math.abs( 1 - ( 0.7 * mag / space.center.y ) ) );
30-
let r = Rectangle.fromCenter( Rectangle.center(p), Rectangle.size(p).multiply( scale ) );
31+
let r = Rectangle.fromCenter( c, Rectangle.size(p).multiply( scale ) );
3132
form.fill( Color.HSLtoRGB( Color.hsl( scale*270, 1, 0.5 ) ).hex ).rect( r );
32-
})
33-
33+
});
34+
3435
form.fillOnly("#fff").point( space.pointer, 10, "circle" );
3536
}
3637

demo/create.noisePts.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ Pts.quickStart( "#pt", "#f1f5f9" );
2929
let speed = space.pointer.$subtract( space.center ).divide( space.center ).abs();
3030

3131
// Generate noise in a grid
32-
noiseGrid.map( (p) => {
32+
form.fillOnly("#123");
33+
noiseGrid.forEach( (p) => {
3334
p.step( 0.01*speed.x, 0.01*(1-speed.y) );
34-
form.fillOnly("#123").point( p, Math.abs( p.noise2D() * space.size.x/18 ) );
35+
form.point( p, Math.abs( p.noise2D() * space.size.x/18 ) );
3536
});
3637

3738
// Generate noise in a line

demo/css/style.css

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ html * {
9898
#page {
9999
padding: 0 10px 0 40px;
100100
position: relative;
101-
user-select: none;
102101
}
103102

104103
#cover {
@@ -163,6 +162,12 @@ html * {
163162
background: #42e;
164163
}
165164

165+
#hint.error {
166+
background: #f34;
167+
color: #fff;
168+
padding: 5px 8px;
169+
}
170+
166171
#hint a {
167172
display: block;
168173
border: none;
@@ -200,7 +205,6 @@ a:hover {
200205
}
201206

202207
.demo, .section {
203-
cursor: pointer;
204208
font-size: 12px;
205209
line-height: 2;
206210
margin: 0;
@@ -210,14 +214,27 @@ a:hover {
210214
text-overflow: ellipsis;
211215
}
212216

217+
.demo {
218+
cursor: pointer;
219+
display: block;
220+
}
221+
213222
.demo > span {
214223
/* font-weight: bold; */
215224
color: #678
216225
}
217226
.demo > strong {
218227
font-weight: 400;
219228
}
220-
.demo:hover, .demo:hover > span { color: #42e;}
229+
.demo:hover, .demo:hover > span,
230+
.demo:focus-visible, .demo:focus-visible > span { color: #42e;}
231+
232+
.demo:focus-visible,
233+
#topmenu > a:focus-visible,
234+
#hint a:focus-visible {
235+
outline: 2px solid #42e;
236+
outline-offset: 2px;
237+
}
221238

222239
.section {
223240
font-weight: 600;
@@ -338,9 +355,4 @@ a:hover {
338355
.demo {
339356
padding: 3px 0;
340357
}
341-
342-
343-
#hint {
344-
display: none;
345-
}
346358
}

0 commit comments

Comments
 (0)