{
    "$schema": "../../../node_modules/@itwin/presentation-common/Ruleset.schema.json",
    "id": "presentation-frontend/HiliteRules",
    "rules": [
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"Subject\", \"BisCore\")",
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "ContentRelatedInstances",
                    "relationshipPaths": [
                        [
                            {
                                "relationship": {
                                    "schemaName": "BisCore",
                                    "className": "ElementOwnsChildElements"
                                },
                                "direction": "Forward",
                                "targetClass": {
                                    "schemaName": "BisCore",
                                    "className": "Subject"
                                },
                                "count": "*"
                            },
                            {
                                "relationship": {
                                    "schemaName": "BisCore",
                                    "className": "ElementOwnsChildElements"
                                },
                                "direction": "Forward",
                                "targetClass": {
                                    "schemaName": "BisCore",
                                    "className": "PhysicalPartition"
                                }
                            }
                        ]
                    ]
                }
            ]
        },
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"Model\", \"BisCore\")",
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "SelectedNodeInstances"
                }
            ]
        },
        {
            "ruleType": "ExtendedData",
            "condition": "ThisNode.IsOfClass(\"Model\", \"BisCore\") ORELSE ThisNode.IsOfClass(\"PhysicalPartition\", \"BisCore\")",
            "items": {
                "isModel": "true"
            }
        },
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"Category\", \"BisCore\")",
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "ContentRelatedInstances",
                    "relationshipPaths": [
                        {
                            "relationship": {
                                "schemaName": "BisCore",
                                "className": "CategoryOwnsSubCategories"
                            },
                            "direction": "Forward"
                        }
                    ]
                }
            ]
        },
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"SubCategory\", \"BisCore\")",
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "SelectedNodeInstances"
                }
            ]
        },
        {
            "ruleType": "ExtendedData",
            "condition": "ThisNode.IsOfClass(\"SubCategory\", \"BisCore\")",
            "items": {
                "isSubCategory": "true"
            }
        },
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"GroupInformationElement\", \"BisCore\")",
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "ContentRelatedInstances",
                    "relationshipPaths": [
                        [
                            {
                                "relationship": {
                                    "schemaName": "BisCore",
                                    "className": "ElementGroupsMembers"
                                },
                                "direction": "Forward"
                            },
                            {
                                "relationship": {
                                    "schemaName": "BisCore",
                                    "className": "ElementOwnsChildElements"
                                },
                                "direction": "Forward",
                                "count": "*"
                            }
                        ]
                    ],
                    "instanceFilter": "this.IsOfClass(\"GeometricElement\", \"BisCore\")"
                }
            ]
        },
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"GeometricElement\", \"BisCore\")",
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "ContentRelatedInstances",
                    "relationshipPaths": [
                        {
                            "relationship": {
                                "schemaName": "BisCore",
                                "className": "ElementOwnsChildElements"
                            },
                            "direction": "Forward",
                            "count": "*"
                        }
                    ],
                    "instanceFilter": "this.IsOfClass(\"GeometricElement\", \"BisCore\")"
                },
                {
                    "specType": "SelectedNodeInstances"
                }
            ]
        },
        {
            "ruleType": "Content",
            "condition": "ContentDisplayType = \"Graphics\" ANDALSO SelectedNode.IsOfClass(\"Element\", \"BisCore\")",
            "priority": 0,
            "onlyIfNotHandled": true,
            "specifications": [
                {
                    "specType": "ContentRelatedInstances",
                    "relationshipPaths": [
                        {
                            "relationship": {
                                "schemaName": "BisCore",
                                "className": "ElementOwnsChildElements"
                            },
                            "direction": "Forward",
                            "count": "*"
                        }
                    ],
                    "instanceFilter": "this.IsOfClass(\"GeometricElement\", \"BisCore\")"
                }
            ]
        }
    ]
}
