handleCollectClassNames method
void
handleCollectClassNames(
- int? id,
- Map<String, dynamic> params
)
Implementation
void handleCollectClassNames(int? id, Map<String, dynamic> params) {
final ctx = dbgContext;
if (ctx == null) {
sendToFrontend(id, null);
return;
}
final dynamic rawStyleSheetId = params['styleSheetId'];
int? nodeId;
if (rawStyleSheetId is int) {
nodeId = ctx.getTargetIdByNodeId(rawStyleSheetId);
} else if (rawStyleSheetId is String) {
String sid = rawStyleSheetId;
if (sid.startsWith('inline:')) {
final String rest = sid.substring('inline:'.length);
final int? nid = int.tryParse(rest);
if (nid != null) nodeId = ctx.getTargetIdByNodeId(nid);
} else {
final int? nid = int.tryParse(sid);
if (nid != null) nodeId = ctx.getTargetIdByNodeId(nid);
}
}
final Set<String> classNames = <String>{};
if (nodeId != null) {
final BindingObject? obj = ctx.getBindingObject(Pointer.fromAddress(nodeId));
if (obj is Element && obj is StyleElementMixin) {
CSSStyleSheet? sheet = (obj as StyleElementMixin).styleSheet;
// If sheet not parsed yet, parse from text content
if (sheet == null) {
final String? text = obj.collectElementChildText();
if (text != null) {
sheet = CSSParser(text).parse(
windowWidth: obj.windowWidth,
windowHeight: obj.windowHeight,
isDarkMode: obj.ownerView.rootController.isDarkMode);
}
}
if (sheet != null) {
_collectClassesFromRules(sheet.cssRules, classNames);
}
}
}
sendToFrontend(id, JSONEncodableMap({'classNames': classNames.toList()}));
}