-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmontage-inspector.js
123 lines (103 loc) · 3.89 KB
/
montage-inspector.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
function getMontageComponentProperties() {
var properties = Object.create(null),
component = $0.component,
propertyNames = [
"ownerComponent",
"parentComponent",
"childComponents",
"_template",
"_element",
"_needsDraw",
"_canDraw",
"_canDrawGate",
"_blockDrawGate"
];
for (var i = 0, propertyName; propertyName = propertyNames[i]; i++) {
properties[propertyName] = component[propertyName];
}
properties.prototype = component._montage_metadata.moduleId + "[" + component._montage_metadata.objectName + "]";
return properties;
}
function getMontageComponentTree(rootComponent) {
var name;
if (!rootComponent) {
rootComponent = montageRequire('ui/component').__root__;
}
var childComponents = rootComponent.childComponents;
if (childComponents.length > 0) {
var components = Object.create(null);
for (var i = 0, component; component = childComponents[i]; i++) {
name = component._montage_metadata.label || component._montage_metadata.objectName;
components[name] = getMontageComponentTree(component);
}
return components;
}
}
function getMontageComponentBindings() {
var properties = Object.create(null),
bindingDescriptors = $0.component.getBindings(),
bindingDescriptor,
bindingName,
binding;
for (var propertyName in bindingDescriptors) {
if (bindingDescriptors.hasOwnProperty(propertyName)) {
bindingDescriptor = bindingDescriptors[propertyName];
binding = Object.create(null);
if ("<-" in bindingDescriptor) {
bindingName = propertyName + " <- " + bindingDescriptor["<-"];
} else if ("<->" in bindingDescriptor) {
bindingName = propertyName + " <-> " + bindingDescriptor["<->"];
} else { // doesn't come from a serialization
bindingName = propertyName;
}
binding.source = bindingDescriptor.source;
binding.sourcePath = bindingDescriptor.sourcePath;
if ("converter" in bindingDescriptor) {
binding.converter = bindingDescriptor.converter;
}
properties[bindingName] = binding;
}
}
return properties;
}
chrome.devtools.panels.elements.createSidebarPane(
"Montage Component",
function (sidebar) {
function updateMontageComponentProperties() {
chrome.devtools.inspectedWindow.eval("!!$0.component", function(component) {
if (component) {
sidebar.setExpression("(" + getMontageComponentProperties.toString() + ")()");
} else {
sidebar.setObject();
}
})
}
sidebar.setObject();
chrome.devtools.panels.elements.onSelectionChanged.addListener(updateMontageComponentProperties);
}
);
chrome.devtools.panels.elements.createSidebarPane(
"Montage Component Bindings",
function (sidebar) {
function updateMontageComponentBindings() {
chrome.devtools.inspectedWindow.eval("!!$0.component", function(component) {
if (component) {
sidebar.setExpression("(" + getMontageComponentBindings.toString() + ")()");
} else {
sidebar.setObject();
}
})
}
sidebar.setObject();
chrome.devtools.panels.elements.onSelectionChanged.addListener(updateMontageComponentBindings);
}
);
chrome.devtools.panels.elements.createSidebarPane(
"Montage Component Tree",
function (sidebar) {
function updateComponentTree() {
sidebar.setExpression("(" + getMontageComponentTree.toString() + ")()", "root");
}
updateComponentTree();
}
);