-
Notifications
You must be signed in to change notification settings - Fork 10
/
handleSelection.js
59 lines (51 loc) · 1.41 KB
/
handleSelection.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import preSelect from './select';
import { assign } from 'lodash';
const Select = assign(
preSelect.Layers,
preSelect.TextLayers,
preSelect.LayerTypes
);
export default (callback, context) => {
let sketch = context.api();
let document = sketch.selectedDocument;
let selection = document.selectedLayers;
let selectAllAtrboards = callback.SelectAllAtrboards;
let selectOption = callback.SelectOption;
let count = 0;
selection.iterate(layer => {
if (count > 0) return;
selection.clear();
let parentArtboard = (selectAllAtrboards)
? selectArtboard(layer, 'isPage')
: selectArtboard(layer, 'isArtboard');
selectSubElement(parentArtboard, layer, selectOption)
count++;
});
context.document.showMessage('🖱 Select Layers!');
}
function selectArtboard(layer, type) {
let artboard = layer.container;
if (artboard[type] === false) {
return selectArtboard(artboard, type);
}
return artboard;
}
function selectSubElement(group, configLayer, selectOption) {
if (group.isGroup || group.isArtboard) {
group.iterate(layer => {
selectSubElement(layer, configLayer, selectOption);
});
} else {
let ifSelect = true;
selectOption.forEach(fnName => {
try {
if (!Select[fnName](group.sketchObject, configLayer.sketchObject)) ifSelect = false;
} catch (e) {
ifSelect = false;
}
});
if (ifSelect) {
group.sketchObject.select_byExpandingSelection(true, true);
}
}
}