OptionalalignOptionalanchorWhere on the object: a point of its box in its model's axes as Annotation.anchor (default the template's, else "center"), or a function of its bounds in viewer coordinates
OptionalclusteringWhether overlapping annotations of the layer merge into one with a count; default true
OptionaldotBeyond this distance a row is a 10 px dot in its status colour with its label as the title, and the template is not called; hovered, it shows the template. It turns back nearer than 90 % of the distance. Default: never
OptionalexpandWhen an expandable template's card shows: "hover" (after 250 ms; a click, tap or Enter pins it), "click", or "none". Default: "none" for a layer shown only on hover (visibility "hover"), else the template's default, else "hover"
OptionalfilterOptionalgroupAnnotation group name; default "layer:" + template name + a counter
OptionaljoinWith a query: "query" (default) shows only objects the query returned, "union" also application rows it did not
OptionalkeyWhat identifies a row: the object's qid (default), or its IFC GlobalId for data from outside. With a query the layer gets attribute.GlobalId and joins on it (a string query returns it as a globalId column); without one it finds the GlobalIds' objects in one query, and again for GlobalIds it has not seen and for models loaded later
OptionallimitAt most this many annotations of the layer show, the nearest (Annotation.groupLimit)
OptionalmaxOptionalocclusionAs Annotation.occlusion; default "hide"
OptionalonA click on an element with data-action="
OptionalonA click on an annotation, or Enter/Space on it; makes the annotations focusable buttons
OptionalqueryData from BQL, fetched in one batch on the loaded models (and on models loaded later). A string is sent as it
is and its data keeps the records' shape (d.attribute.Name); {where, get} asks for the template's fields and
get's as their keys: GET qid, type,
OptionalrowsData from the application, joined to the query's rows by key (the application's fields win)
OptionalscaleThe template, or the name it is registered under
Optionalvisibility"hover": shown only while its object is hovered, fading in after a moment and out quickly. Without onClick, onAction or a card (expand), the pointer goes through it to the objects below, and Viewer3D draws it beside its object's footprint on screen
Which side of the anchor the compact box is drawn on, as Annotation.align; default the template's origin