On application initialization:
WidgetsRules.oss rules are loaded. Build-in rules are already precompiled and are part of the @ngx-metaui/rules
UI Library Built-in
WidgetsRules.oss rules are loaded
If global application rule exists the
Application.oss then its loaded inside
ValueQueriedObserver and there can only be one for the entire application.
On first reference to class name in the MetaUI context:
Introspection rules are created and they are loaded from
Application code can call
Meta APIs to programmatically load rules files or register rules.
Matching rules are applied in rank order to build the property map.
Rules from system (default rules) have lowest rank, then introspection rules, then application rules.
Rank is (roughly) the order of appearance in the .oss file (later == higher rank)
When multiple rules update the same property, type and key-specific merge rules are applied:
Maps and trait lists are merged
visible, editable, and valid expressions are chained with AND semantics (except if override value is used -
Other values are overridden