Skip to content

Commit 506a517

Browse files
committed
bug fixes
1 parent 1ced725 commit 506a517

File tree

6 files changed

+64
-56
lines changed

6 files changed

+64
-56
lines changed

package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"private": true,
33
"name": "@pictogrammers/components",
44
"type": "module",
5-
"version": "0.3.3",
5+
"version": "0.4.0",
66
"license": "MIT",
77
"author": "Austin Andrews",
88
"scripts": {
@@ -27,7 +27,7 @@
2727
"devDependencies": {
2828
"@pictogrammers/element": "0.0.67",
2929
"@pictogrammers/element-jest": "^0.1.10",
30-
"@pictogrammers/element-webpack": "^0.1.53",
30+
"@pictogrammers/element-webpack": "^0.1.55",
3131
"cross-env": "^7.0.3",
3232
"npm-run-all": "^4.1.5",
3333
"raw-loader": "^4.0.2",

src/pg/app/app.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454

5555
[part=side] {
5656
display: flex;
57+
flex-direction: column;
5758
grid-column: 1;
5859
grid-row: 2;
5960
min-width: 10rem;
@@ -62,6 +63,7 @@
6263

6364
slot[name=main] {
6465
display: flex;
66+
flex-direction: column;
6567
grid-column: 3;
6668
grid-row: 2;
6769
}
@@ -84,6 +86,7 @@ slot[name=main] {
8486

8587
[part=home] {
8688
display: flex;
89+
flex-direction: column;
8790
grid-column: 1 / 4;
8891
grid-row: 2;
8992
background-color: #fff;

src/pg/inputPixelEditor/inputPixelEditor.ts

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,6 @@ export default class PgInputPixelEditor extends HTMLElement {
146146
'pointerdown',
147147
this.handlePointerDown.bind(this)
148148
);
149-
this.$canvas.addEventListener(
150-
'pointerup',
151-
this.handlePointerUp.bind(this)
152-
);
153-
this.$canvas.addEventListener(
154-
'pointermove',
155-
this.handlePointerMove.bind(this)
156-
);
157149
this.$canvas.addEventListener(
158150
'pointerenter',
159151
this.handlePointerEnter.bind(this)
@@ -266,11 +258,13 @@ export default class PgInputPixelEditor extends HTMLElement {
266258
};
267259

268260
#setPixel(x: number, y: number, color: number) {
269-
if (x > this.width) {
270-
throw new Error(`Invalid x; ${x} > ${this.width}`);
261+
if (x >= this.width || x < 0) {
262+
return;
263+
// throw new Error(`Invalid x; ${x} > ${this.width} or ${x} < 0`);
271264
}
272-
if (y > this.height) {
273-
throw new Error(`Invalid y; ${y} > ${this.height}`);
265+
if (y >= this.height || y < 0) {
266+
return;
267+
// throw new Error(`Invalid y; ${y} > ${this.height} or ${x} < 0`);
274268
}
275269
const totalSize = this.size + this.gridSize;
276270
// Edit Layer
@@ -306,7 +300,6 @@ export default class PgInputPixelEditor extends HTMLElement {
306300
x * totalSize, y * totalSize, this.size + 2, this.size + 2,
307301
x * totalSize, y * totalSize, this.size + 2, this.size + 2
308302
);
309-
console.log('draw pixel(x, y, color, data):', x, y, color, this.#data[this.#layer][y][x]);
310303
// Verify this is the only place setting pixel data!
311304
this.#data[this.#layer][y][x] = color;
312305
this.#delayedChange();
@@ -411,6 +404,9 @@ export default class PgInputPixelEditor extends HTMLElement {
411404
event?.preventDefault();
412405
}
413406

407+
#handlePointerMoveCache;
408+
#handlePointerUpCache;
409+
414410
handlePointerDown(event: MouseEvent) {
415411
if (event.buttons !== 1 && event.buttons !== 32) {
416412
event.preventDefault();
@@ -443,18 +439,40 @@ export default class PgInputPixelEditor extends HTMLElement {
443439
break;
444440
}
445441
console.log(this.#inputMode, newX, newY);
442+
// track movement
443+
this.#handlePointerMoveCache = this.handlePointerMove.bind(this);
444+
document.addEventListener('pointermove', this.#handlePointerMoveCache);
445+
// pointer outside
446+
this.#handlePointerUpCache = this.handlePointerUp.bind(this);
447+
document.addEventListener('pointerup', this.#handlePointerUpCache);
448+
}
449+
450+
#pointerOutside = false;
451+
handlePointerUpGlobal() {
452+
if (this.#pointerOutside) {
453+
this.handlePointerUp({
454+
clientX: 100,
455+
clientY: 100
456+
} as any);
457+
this.cleanupPointerGlobal();
458+
}
459+
}
460+
461+
cleanupPointerGlobal() {
462+
document.removeEventListener('pointermove', this.#handlePointerMoveCache);
463+
document.removeEventListener('pointerup', this.#handlePointerUpCache);
446464
}
447465

448466
handlePointerUp(event: MouseEvent) {
449467
const rect = this.$canvas.getBoundingClientRect();
450468
const totalSize = this.size + this.gridSize;
451469
let newX = Math.floor((event.clientX - rect.left) / totalSize);
452470
let newY = Math.floor((event.clientY - rect.top) / totalSize);
453-
if (newX >= this.width) { newX = this.width - 1; }
454-
if (newY >= this.height) { newY = this.height - 1; }
455-
if (this.#startX === -1 && this.#startY === -1) {
456-
return;
457-
}
471+
//if (newX >= this.width) { newX = this.width - 1; }
472+
//if (newY >= this.height) { newY = this.height - 1; }
473+
//if (this.#startX === -1 && this.#startY === -1) {
474+
// return;
475+
//}
458476
// Single Tap
459477
if (newX === this.#startX && newY === this.#startY && this.#startColor === 1) {
460478
switch (this.#inputMode) {
@@ -495,6 +513,7 @@ export default class PgInputPixelEditor extends HTMLElement {
495513
this.#x = -1;
496514
this.#y = -1;
497515
this.#isPressed = false;
516+
this.cleanupPointerGlobal();
498517
}
499518

500519
handlePointerMove(event: PointerEvent) {
@@ -518,7 +537,7 @@ export default class PgInputPixelEditor extends HTMLElement {
518537
for (const evt of events) {
519538
let tX = Math.floor((evt.clientX - rect.left) / totalSize);
520539
let tY = Math.floor((evt.clientY - rect.top) / totalSize);
521-
if (tX >= this.width || tY >= this.height || (tX === x && tY === y)) {
540+
if (tX === x && tY === y) {
522541
continue;
523542
}
524543
points.push([tX, tY]);
@@ -527,8 +546,6 @@ export default class PgInputPixelEditor extends HTMLElement {
527546
let newX = Math.floor((event.clientX - rect.left) / totalSize);
528547
let newY = Math.floor((event.clientY - rect.top) / totalSize);
529548
if (newX === x && newY === y) { return; }
530-
if (newX >= this.width) { newX = this.width - 1; }
531-
if (newY >= this.height) { newY = this.height - 1; }
532549
points.push([newX, newY]);
533550
}
534551
// Is Eraser
@@ -575,6 +592,7 @@ export default class PgInputPixelEditor extends HTMLElement {
575592
// editing layer to main canvas
576593
this.#context.drawImage(this.#isEditing ? this.#editLayer : this.#noEditLayer, 0, 0);
577594
}
595+
this.#pointerOutside = false;
578596
}
579597

580598
handlePointerLeave(event: MouseEvent) {
@@ -584,6 +602,8 @@ export default class PgInputPixelEditor extends HTMLElement {
584602
this.#context.drawImage(this.#baseLayer, 0, 0);
585603
// editing layer to main canvas
586604
this.#context.drawImage(this.#isEditing ? this.#editLayer : this.#noEditLayer, 0, 0);
605+
} else if (this.#isEditing) {
606+
this.#pointerOutside = true;
587607
}
588608
}
589609

src/pg/markdown/markdown.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
:host {
2-
display: block;
2+
display: contents;
33
color: #453C4F;
44
}
55

6+
[part=content] {
7+
display: contents;
8+
}
9+
610
h1 {
711
font-size: 2rem;
812
margin-top: 1rem;

webpack.publish.config.js

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,15 @@ export default config({
1313
return createIndex(components, mode);
1414
},
1515
watch: [],
16-
copy: [
17-
{ from: "src/theme-ui3.css", to: `theme-ui3.css` }
18-
],
16+
//copy: [
17+
//{ from: "src/theme-ui3.css", to: `theme-ui3.css` }
18+
//],
1919
before: (components, args, mode) => {
2020
// Components + GreenText(# of Components)
2121
console.log('Components', bold(green(components.length)));
22-
const filteredComponents = args;
23-
if (filteredComponents.length) {
24-
let exists = [], invalid = [];
25-
components.forEach(({ name }) => {
26-
if (filteredComponents.includes(name)) {
27-
exists.push(name);
28-
} else {
29-
invalid.push(name);
30-
}
31-
});
32-
console.log(' +', ...(exists.map(name => green(name))));
33-
console.log(' -', ...(invalid.map(name => red(name))));
34-
// Remove invalid components
35-
for(let i = components.length - 1; i >= 0; i--) {
36-
if (invalid.includes(components[i].name)) {
37-
components.splice(i, 1);
38-
}
39-
}
40-
}
4122
},
4223
after: (components, args, mode) => {
43-
// Nothing
24+
import('./scripts/publish.js');
4425
}
4526
});
4627

0 commit comments

Comments
 (0)