shiftItem(id) {
        if (this.#frozen) {
            return;
        }
        if (this.lastSelectedId === null) {
            // Do a normal toggle
            this.toggleItem(id);
            return;
        }

        // Unselect last selected items
        for (const item of this.lastShiftSelectionGroup) {
            if (this.inverted) {
                this.selectedIds.add(item);
            } else {
                this.selectedIds.delete(item);
            }
        }
        this.lastShiftSelectionGroup = new Set();

        let running = false;
        const modelOrder = ['scheduledInfinityModel', 'draftInfinityModel', 'publishedAndSentInfinityModel'];
        const models = this.infinityModel;

        for (const modelKey of modelOrder) {
            const model = models[modelKey];
            if (!model?.content || model.content.length === 0) {
                continue;
            }

            for (const item of model.content) {
                if (item.id === this.lastSelectedId || item.id === id) {
                    if (!running) {
                        running = true;
                        if (item.id === this.lastSelectedId) {
                            continue;
                        }
                    } else {
                        this.lastShiftSelectionGroup.add(item.id);
                        this.inverted ? this.selectedIds.delete(item.id) : this.selectedIds.add(item.id);
                        running = false;
                        break;
                    }
                }

                if (running) {
                    this.lastShiftSelectionGroup.add(item.id);
                    this.inverted ? this.selectedIds.delete(item.id) : this.selectedIds.add(item.id);
                }
            }
        }

        // Force update
        // eslint-disable-next-line no-self-assign
        this.selectedIds = this.selectedIds;
    }
Select all items between the last selection or the first one if none