mirror of
				https://github.com/gpxstudio/gpx.studio.git
				synced 2025-11-04 05:21:09 +00:00 
			
		
		
		
	fix copied & cut stores
This commit is contained in:
		@@ -71,7 +71,7 @@
 | 
			
		||||
    } from '$lib/logic/file-actions';
 | 
			
		||||
    import { fileStateCollection } from '$lib/logic/file-state';
 | 
			
		||||
    import { fileActionManager } from '$lib/logic/file-action-manager';
 | 
			
		||||
    import { selection } from '$lib/logic/selection';
 | 
			
		||||
    import { copied, selection } from '$lib/logic/selection';
 | 
			
		||||
 | 
			
		||||
    const {
 | 
			
		||||
        distanceUnits,
 | 
			
		||||
@@ -317,10 +317,10 @@
 | 
			
		||||
                            <Shortcut key="X" ctrl={true} />
 | 
			
		||||
                        </Menubar.Item>
 | 
			
		||||
                        <Menubar.Item
 | 
			
		||||
                            disabled={selection.copied === undefined ||
 | 
			
		||||
                                selection.copied.length === 0 ||
 | 
			
		||||
                            disabled={$copied === undefined ||
 | 
			
		||||
                                $copied.length === 0 ||
 | 
			
		||||
                                ($selection.size > 0 &&
 | 
			
		||||
                                    !allowedPastes[selection.copied[0].level].includes(
 | 
			
		||||
                                    !allowedPastes[$copied[0].level].includes(
 | 
			
		||||
                                        $selection.getSelected().pop()?.level
 | 
			
		||||
                                    ))}
 | 
			
		||||
                            onclick={pasteSelection}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
    import { settings } from '$lib/logic/settings';
 | 
			
		||||
    import { fileStateCollection } from '$lib/logic/file-state';
 | 
			
		||||
    import { createFile, pasteSelection } from '$lib/logic/file-actions';
 | 
			
		||||
    import { selection } from '$lib/logic/selection';
 | 
			
		||||
    import { selection, copied } from '$lib/logic/selection';
 | 
			
		||||
 | 
			
		||||
    let {
 | 
			
		||||
        orientation,
 | 
			
		||||
@@ -86,9 +86,9 @@
 | 
			
		||||
                    </ContextMenu.Item>
 | 
			
		||||
                    <ContextMenu.Separator />
 | 
			
		||||
                    <ContextMenu.Item
 | 
			
		||||
                        disabled={selection.copied === undefined ||
 | 
			
		||||
                            selection.copied.length === 0 ||
 | 
			
		||||
                            !allowedPastes[selection.copied[0].level].includes(ListLevel.ROOT)}
 | 
			
		||||
                        disabled={$copied === undefined ||
 | 
			
		||||
                            $copied.length === 0 ||
 | 
			
		||||
                            !allowedPastes[$copied[0].level].includes(ListLevel.ROOT)}
 | 
			
		||||
                        onclick={pasteSelection}
 | 
			
		||||
                    >
 | 
			
		||||
                        <ClipboardPaste size="16" class="mr-1" />
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@
 | 
			
		||||
    import { editStyle } from '$lib/components/file-list/style/utils.svelte';
 | 
			
		||||
    import { waypointPopup } from '$lib/components/map/gpx-layer/GPXLayerPopup';
 | 
			
		||||
    import { getSymbolKey, symbols } from '$lib/assets/symbols';
 | 
			
		||||
    import { selection } from '$lib/logic/selection';
 | 
			
		||||
    import { selection, copied, cut } from '$lib/logic/selection';
 | 
			
		||||
    import { map } from '$lib/components/map/map';
 | 
			
		||||
    import { fileActions, pasteSelection } from '$lib/logic/file-actions';
 | 
			
		||||
 | 
			
		||||
@@ -151,8 +151,7 @@
 | 
			
		||||
            <span
 | 
			
		||||
                class="w-full text-left truncate py-1 flex flex-row items-center {hidden
 | 
			
		||||
                    ? 'text-muted-foreground'
 | 
			
		||||
                    : ''} {selection.cut &&
 | 
			
		||||
                selection.copied?.some((i) => i.getFullId() === item.getFullId())
 | 
			
		||||
                    : ''} {$cut && $copied?.some((i) => i.getFullId() === item.getFullId())
 | 
			
		||||
                    ? 'text-muted-foreground'
 | 
			
		||||
                    : ''}"
 | 
			
		||||
                oncontextmenu={(e) => {
 | 
			
		||||
@@ -310,9 +309,9 @@
 | 
			
		||||
                <Shortcut key="X" ctrl={true} />
 | 
			
		||||
            </ContextMenu.Item>
 | 
			
		||||
            <ContextMenu.Item
 | 
			
		||||
                disabled={selection.copied === undefined ||
 | 
			
		||||
                    selection.copied.length === 0 ||
 | 
			
		||||
                    !allowedPastes[selection.copied[0].level].includes(item.level)}
 | 
			
		||||
                disabled={$copied === undefined ||
 | 
			
		||||
                    $copied.length === 0 ||
 | 
			
		||||
                    !allowedPastes[$copied[0].level].includes(item.level)}
 | 
			
		||||
                onclick={pasteSelection}
 | 
			
		||||
            >
 | 
			
		||||
                <ClipboardPaste size="16" class="mr-1" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import { fileStateCollection } from '$lib/logic/file-state';
 | 
			
		||||
import { fileActionManager } from '$lib/logic/file-action-manager';
 | 
			
		||||
import { selection } from '$lib/logic/selection';
 | 
			
		||||
import { copied, cut, selection } from '$lib/logic/selection';
 | 
			
		||||
import { currentTool, Tool } from '$lib/components/toolbar/tools';
 | 
			
		||||
import type { SplitType } from '$lib/components/toolbar/tools/scissors/scissors';
 | 
			
		||||
import {
 | 
			
		||||
@@ -927,7 +927,7 @@ export const fileActions = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function pasteSelection() {
 | 
			
		||||
    let fromItems = selection.copied;
 | 
			
		||||
    let fromItems = get(copied);
 | 
			
		||||
    if (fromItems === undefined || fromItems.length === 0) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
@@ -1007,7 +1007,7 @@ export function pasteSelection() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (fromItems.length === toItems.length) {
 | 
			
		||||
        moveItems(fromParent, toParent, fromItems, toItems, selection.cut);
 | 
			
		||||
        moveItems(fromParent, toParent, fromItems, toItems, get(cut));
 | 
			
		||||
        selection.resetCopied();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -212,6 +212,8 @@ export class Selection {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const selection = new Selection();
 | 
			
		||||
export const copied = selection.copied;
 | 
			
		||||
export const cut = selection.cut;
 | 
			
		||||
 | 
			
		||||
export function applyToOrderedItemsFromFile(
 | 
			
		||||
    selectedItems: ListItem[],
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user