message: optimize StructureRepresentationInteractionBehavior by using bundle
diff: @@ -72,8 +72,8 @@ export class StructureRepresentationInteractionBehavior extends PluginBehavior.W
  // Selections
  if (!refs[Tags.ResidueSel]) {
  - refs[Tags.ResidueSel] = builder.to(refs['structure-interaction-group']).apply(StateTransforms.Model.StructureSelectionFromExpression,
  - { expression: { } as any, label: 'Residue' }, { tags: Tags.ResidueSel }).ref;
  + refs[Tags.ResidueSel] = builder.to(refs['structure-interaction-group']).apply(StateTransforms.Model.StructureSelectionFromBundle,
  + { bundle: { } as any, label: 'Residue' }, { tags: Tags.ResidueSel }).ref;
  }
  if (!refs[Tags.SurrSel]) {
  @@ -166,19 +166,18 @@ export class StructureRepresentationInteractionBehavior extends PluginBehavior.W
  lastLoci = loci;
  - const core = MS.struct.modifier.wholeResidues([
  - StructureElement.Loci.toExpression(loci)
  - ]);
  + const residueLoci = StructureElement.Loci.extendToWholeResidues(loci)
  + const residueBundle = StructureElement.Bundle.fromLoci(residueLoci)
  const surroundings = MS.struct.modifier.includeSurroundings({
  - 0: core,
  + 0: StructureElement.Bundle.toExpression(residueBundle),
  radius: 5,
  'as-whole-residues': true
  });
  const { state, builder, refs } = this.ensureShape(parent);
  - builder.to(refs[Tags.ResidueSel]!).update(StateTransforms.Model.StructureSelectionFromExpression, old => ({ ...old, expression: core }));
  + builder.to(refs[Tags.ResidueSel]!).update(StateTransforms.Model.StructureSelectionFromBundle, old => ({ ...old, bundle: residueBundle }));
  builder.to(refs[Tags.SurrSel]!).update(StateTransforms.Model.StructureSelectionFromExpression, old => ({ ...old, expression: surroundings }));
  PluginCommands.State.Update.dispatch(this.plugin, { state, tree: builder, options: { doNotLogTiming: true, doNotUpdateCurrent: true } });
  