Saxonberg Server API
    Preparing search index...
    • Mixin that adds hierarchical detail system to objects.

      Type Parameters

      Parameters

      Returns {
          _mixinName: string;
          instructionFields: string[];
          markupAugmenters: MarkupAugmenter[];
          persistentFields: string[];
          prototype: __type<any>;
          subscribableFields: SubscribableFieldDescriptor[];
          new (...args: any[]): __type;
      } & TBase

        • new (...args: any[]): __type
        • Parameters

          • ...args: any[]

          Returns __type

      • _mixinName: string
      • instructionFields: string[]

        Instruction-field applier roster. details is consumed by applyDetails (Phase 2 of PersistentHydrator). The declarative YAML shape (a plain object keyed by detail name) differs from the runtime Map<DetailId, Detail> shape, so the applier sits between them — it owns the conversion. The applier runs AFTER the persistent bracket-assign in Phase 1 (which would otherwise leave this.details as a plain object and break getDetailEntries); the applier resets the Map up front to undo that.

      • markupAugmenters: MarkupAugmenter[]

        Markup-augmenter contribution. The wrapper-style augmenter narrows the host to Detailed at runtime, then runs the existing wrapDetailKeywords regex pass. Picked up by VisibleMixin.getMarkupLong(viewer) via the prototype-chain walker — non-Detailed hosts never see this augmenter; hosts with Detailed-but-empty detail maps no-op cheaply inside the helper.

      • persistentFields: string[]

        Persistent fields declared by this mixin. Used by PersistApi for automatic synchronization.

      • prototype: __type<any>
      • subscribableFields: SubscribableFieldDescriptor[]

        Live-query subscribable fields. The descriptor's dependsOnFields defaults to ['details'] (descriptor name = source field name), so FieldChangedEvent { field: 'details' } from setDetail / removeDetail triggers re-projection automatically. The ShadowChangedEvent entry covers future visible-detail shadows that override projected entries without firing a field change.

        One descriptor carries both projection layers: read enumerates the alias-grouped top-level entries (flat mode); perDetailRead extracts a single entry's slice for focus- mode subscriptions.