/* * Copyright 2020 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ import {Key} from '@react-types/shared'; /** * A Selection is a special Set containing Keys, which also has an anchor * and current selected key for use when range selecting. */ export class Selection extends Set { anchorKey: Key | null; currentKey: Key | null; constructor(keys?: Iterable | Selection, anchorKey?: Key | null, currentKey?: Key | null) { super(keys); if (keys instanceof Selection) { this.anchorKey = anchorKey ?? keys.anchorKey; this.currentKey = currentKey ?? keys.currentKey; } else { this.anchorKey = anchorKey ?? null; this.currentKey = currentKey ?? null; } } }