Skip to content

Commit b970bb0

Browse files
committed
progress
1 parent c10ae04 commit b970bb0

File tree

6 files changed

+59
-7
lines changed

6 files changed

+59
-7
lines changed

src/pg/inputPixelEditor/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ A complete JSON storage for a 10x10 image.
135135

136136
## Layer Type
137137

138-
There are currently 5 differnet layer types.
138+
There are currently 6 differnet layer types.
139139

140140
- `pixel` - Raster artboard of pixels.
141141
- `path` - pixels
@@ -157,4 +157,7 @@ There are currently 5 differnet layer types.
157157
- `end: [x, y]`
158158
- `transform: [1, 0, 0, 0.5, 0, 0]` to create ellipses
159159
- `stops: [[stop, colorIndex], [stop, colorIndex]]`
160-
- `dither: 'bayer4' | 'bayer8' | 'bayer16'`
160+
- `dither: 'bayer4' | 'bayer8' | 'bayer16'`
161+
- `text` - Text, maybe???
162+
- `id` - file uuid
163+
- `value` - string

src/pg/inputPixelEditor/__examples__/basic/basic.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import template from './basic.html';
99
import style from './basic.css';
1010

1111
const IconTrash = 'M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z';
12+
const IconLayerEdit = 'M4.63 10.27L3 9L12 2L19.94 8.17L12.5 15.61L12 16L4.63 10.27M10 18.94V18.11L10.59 17.53L10.63 17.5L4.62 12.81L3 14.07L10 19.5V18.94M21.7 12.58L20.42 11.3C20.21 11.09 19.86 11.09 19.65 11.3L18.65 12.3L20.7 14.35L21.7 13.35C21.91 13.14 21.91 12.79 21.7 12.58M12 21H14.06L20.11 14.93L18.06 12.88L12 18.94V21Z';
1213

1314
@Component({
1415
selector: 'x-pg-input-pixel-editor-basic',
@@ -159,13 +160,46 @@ export default class XPgInputPixelEditorBasic extends HTMLElement {
159160
label: 'Selected',
160161
key: 'selected',
161162
hideLabel: true,
163+
}, {
164+
label: 'Select',
165+
key: 'select',
166+
hideLabel: true,
162167
}];
168+
this.$layers.data = [
169+
createTableItem({
170+
name: 'Layer 1',
171+
type: 'pixel',
172+
selected: true,
173+
select: {
174+
type: PgTableCellButtonIcon,
175+
icon: IconLayerEdit,
176+
value: 0,
177+
}
178+
})
179+
];
180+
this.$layers.addEventListener('action', (e: any) => {
181+
const { getColumn, getRows, key } = e.detail;
182+
switch(key) {
183+
case 'select':
184+
getRows().forEach(({ getColumn }) => {
185+
getColumn('selected').value = false;
186+
});
187+
getColumn('selected').value = true;
188+
this.$input.selectLayer(getColumn('select').value);
189+
break;
190+
}
191+
});
163192
this.$addLayer.addEventListener('click', () => {
164193
this.$layers.data.push(
165194
createTableItem({
166-
name: 'Layer 1',
195+
name: 'Layer 2',
167196
type: 'pixel',
168-
selected: true,
197+
selected: false,
198+
select: {
199+
type: PgTableCellButtonIcon,
200+
icon: IconLayerEdit,
201+
value: 1,
202+
}
169203
})
170204
);
171205
this.$input.addLayer();

src/pg/inputPixelEditor/inputPixelEditor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,14 +1023,18 @@ export default class PgInputPixelEditor extends HTMLElement {
10231023
this.#data.push(fillGrid(this.width, this.height));
10241024
}
10251025

1026+
/**
1027+
* Remove layer.
1028+
* @param index Layer index to remove
1029+
*/
10261030
removeLayer(index) {
10271031
this.#data.splice(index, 1);
10281032
}
10291033

10301034
/**
10311035
* Flatten layers, first index determines the color
10321036
*/
1033-
flattenLayers(layerIndexes: number[]) {
1037+
flattenLayers(indexes: number[]) {
10341038

10351039
}
10361040

src/pg/table/table.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export default class PgTable extends HTMLElement {
6060
if (this.columns.length === 0) {
6161
throw 'columns must be set before data';
6262
}
63+
$item.rows = this.data;
6364
$item.columns = this.columns;
6465
$item.addEventListener('action', (e: any) => {
6566
e.stopPropagation();

src/pg/tableCellButtonIcon/tableCellButtonIcon.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import style from './tableCellButtonIcon.css';
1212
template
1313
})
1414
export default class PgTableCellButtonIcon extends HTMLElement {
15-
@Prop() value: boolean = false;
15+
@Prop() value: any = null;
1616
@Prop() icon: string = '';
1717

1818
@Part() $button: PgButton;

src/pg/tableRow/tableRow.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const types = new Map<string, any>([
2020
})
2121
export default class PgTableRow extends HTMLElement {
2222
@Prop() index: number;
23+
@Prop() rows: any[] = [];
2324
@Prop() items: any[] = [];
2425
@Prop() key: string = '';
2526
@Prop() columns: any[] = [];
@@ -50,12 +51,21 @@ export default class PgTableRow extends HTMLElement {
5051
...e.detail,
5152
index: this.index,
5253
key: item.key,
54+
getRows: () => {
55+
return this.rows.map((row) => {
56+
return {
57+
getColumn: (key: string) => {
58+
return row.items.find(x => x.key === key);
59+
},
60+
};
61+
});
62+
},
5363
getRow() {
5464
return this.items;
5565
},
5666
getColumn: (key: string) => {
5767
return this.items.find(x => x.key === key);
58-
}
68+
},
5969
},
6070
}));
6171
});

0 commit comments

Comments
 (0)