import store from '../store' ; export interface PLIMutationInterface { add ( { parent } ) : void ; delete ( { pli , deleteItems } ) : void ; empty ( { pli } ) : void ; addPart ( { pli , part } ) : void ; removePart ( { pli , part } ) : void ; toggleVisibility ( { visible } ) : void ; syncContent ( { pli , doLayout } ) : void ; } export const PLIMutations = { add ( { parent } ) { return store . mutations . item . add < PLI > ( { item : { type : 'pli' , id : - 1 , parent , pliItems : [ ] , x : 0 , y : 0 , width : 0 , height : 0 , innerContentOffset : { x : 0 , y : 0 } , borderOffset : { x : 0 , y : 0 } , } , parent } ) ; } , delete ( { pli , deleteItems = false } ) { const item = store . get . pli ( pli ) ; if ( item == null ) { return ; } if ( ! deleteItems && item . pliItems && item . pliItems . length ) { throw 'Cannot delete a PLI with items' ; } store . mutations . item . deleteChildList ( { item , listType : 'pliItem' } ) ; store . mutations . item . delete ( { item } ) ; } , empty ( { pli } ) { const item = store . get . pli ( pli ) ; store . mutations . item . deleteChildList ( { item , listType : 'pliItem' } ) ; } , addPart ( { pli , part } ) { const item = store . get . pli ( pli ) ; if ( item == null || part == null || part . colorCode == null ) { return ; } const pliItem = store . get . matchingPLIItem ( item , part ) ; if ( pliItem ) { pliItem . quantity ++ ; } else { store . mutations . pliItem . add ( { parent : item , filename : part . filename , colorCode : part . colorCode , } ) ; } } , removePart ( { pli , part } ) { const item = store . get . pli ( pli ) ; if ( item == null ) { return ; } const pliItem = store . get . matchingPLIItem ( item , part ) ; if ( pliItem ) { if ( pliItem . quantity === 1 ) { store . mutations . pliItem . delete ( { pliItem } ) ; } else { pliItem . quantity -- ; } } } , toggleVisibility ( { visible } ) { store . state . plisVisible = visible ; store . mutations . page . markAllDirty ( ) ; } , syncContent ( { pli , doLayout } ) { const item = store . get . lookupToItem ( pli ) ; if ( item == null ) { return ; } const step = store . get . parent ( item ) ; if ( step == null ) { return ; } const parts = store . get . partsInStep ( step ) ; store . mutations . pli . empty ( { pli : item } ) ; parts . forEach ( part => store . mutations . pli . addPart ( { pli : item , part } ) ) ; if ( doLayout ) { store . mutations . page . layout ( { page : store . get . pageForItem ( item ) } ) ; } } , } ;