diff --git a/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts b/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts index f7a75b4eb3db6037af5dca91910f0e1bccf679e0..bae42eab982fc11273ff71b67ace2cd0dfb7c0a1 100644 --- a/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts +++ b/src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts @@ -134,7 +134,7 @@ export function PolymerTraceVisual(): UnitsVisual<PolymerTraceProps> { const { objectId, instanceId, elementId } = pickingId if (renderObject.id === objectId) { const unit = currentGroup.units[instanceId] - const indices = OrderedSet.ofSingleton(elementId as StructureElement.Index); + const indices = OrderedSet.ofSingleton(elementId as StructureElement.UnitIndex); return StructureElement.Loci([{ unit, indices }]) } return EmptyLoci diff --git a/src/mol-geo/representation/structure/visual/util/element.ts b/src/mol-geo/representation/structure/visual/util/element.ts index 95b0ab5a8b38ff0eb8a8fad53070821f2f65144f..50a44321e32420b54cf80f80a4ab28f2cbc140e7 100644 --- a/src/mol-geo/representation/structure/visual/util/element.ts +++ b/src/mol-geo/representation/structure/visual/util/element.ts @@ -96,7 +96,7 @@ export function getElementLoci(id: number, group: Unit.SymmetryGroup, pickingId: const { objectId, instanceId, elementId } = pickingId if (id === objectId) { const unit = group.units[instanceId] - const indices = OrderedSet.ofSingleton(elementId as StructureElement.Index); + const indices = OrderedSet.ofSingleton(elementId as StructureElement.UnitIndex); return StructureElement.Loci([{ unit, indices }]) } return EmptyLoci diff --git a/src/mol-model/structure/query/selection.ts b/src/mol-model/structure/query/selection.ts index fe4ed816818eac459d2469f75a5f79a5002c763d..72ab29106a7b81a30cef2ebcac96c8a83ebb17ac 100644 --- a/src/mol-model/structure/query/selection.ts +++ b/src/mol-model/structure/query/selection.ts @@ -36,12 +36,12 @@ namespace Selection { } export function toLoci(sel: Selection): StructureElement.Loci { - const loci: { unit: Unit, indices: OrderedSet<StructureElement.Index> }[] = []; + const loci: { unit: Unit, indices: OrderedSet<StructureElement.UnitIndex> }[] = []; const { unitMap } = sel.source; for (const unit of unionStructure(sel).units) { if (unit === unitMap.get(unit.id)) { - loci[loci.length] = { unit, indices: OrderedSet.ofBounds(0 as StructureElement.Index, unit.elements.length as StructureElement.Index) }; + loci[loci.length] = { unit, indices: OrderedSet.ofBounds(0 as StructureElement.UnitIndex, unit.elements.length as StructureElement.UnitIndex) }; } else { loci[loci.length] = { unit, diff --git a/src/mol-model/structure/structure/element.ts b/src/mol-model/structure/structure/element.ts index 1bbaf84b62041f450ce646d0f531f941c1bf39b1..f8e35caff577b023e4d64ef5c19abf1822ac3bc3 100644 --- a/src/mol-model/structure/structure/element.ts +++ b/src/mol-model/structure/structure/element.ts @@ -17,10 +17,11 @@ interface StructureElement<U = Unit> { namespace StructureElement { export function create(unit?: Unit, element?: ElementIndex): StructureElement { return { unit: unit as any, element: element || (0 as ElementIndex) }; } + // TODO: when nominal types are available, make this indexed by UnitIndex export type Set = SortedArray<ElementIndex> /** Index into Unit.elements */ - export type Index = { readonly '@type': 'element-index' } & number + export type UnitIndex = { readonly '@type': 'structure-element-index' } & number export interface Property<T> { (location: StructureElement): T } export interface Predicate extends Property<boolean> { } @@ -46,11 +47,11 @@ namespace StructureElement { * Indices into the unit.elements array. * Can use OrderedSet.forEach to iterate (or OrderedSet.size + OrderedSet.getAt) */ - indices: OrderedSet<Index> + indices: OrderedSet<UnitIndex> }> } - export function Loci(elements: ArrayLike<{ unit: Unit, indices: OrderedSet<Index> }>): Loci { + export function Loci(elements: ArrayLike<{ unit: Unit, indices: OrderedSet<UnitIndex> }>): Loci { return { kind: 'element-loci', elements: elements as Loci['elements'] }; }