import { AddonArea } from "@flowide/flo-icons/dist/plugin/addon-area/AddonArea"; import { LeafletArgs, PlayBackEvent } from "../EventInterface"; export namespace IconAddon { export const NAME = 'FLO_ICON_ADDON'; export interface EventArgs { id:string; icon:string; side : 'right' | 'left'; iconColor?: string; color?:string; slot?:number; } export class AddEvent implements PlayBackEvent{ name: string = NAME + "_ADD"; do(leafletArgs: LeafletArgs, args: EventArgs): void { const addonSide = this.getSide(leafletArgs,args); addonSide.setIcon(args.icon,args.slot); if(args.color) { addonSide.setColor(args.color,args.slot); } if (args.iconColor) { addonSide.setIconColor(args.iconColor, args.slot) } addonSide.show(args.slot); } undo(leafletArgs: LeafletArgs, args: EventArgs): void { const addonSide = this.getSide(leafletArgs,args); addonSide.hide(args.slot); } private getSide(leafletArgs:LeafletArgs,args:EventArgs) : AddonArea { const marker = leafletArgs.playback.getMarkerById(args.id); return args.side === 'left' ? marker.floIcon.Left : marker.floIcon.Right; } } export class RemoveEvent extends AddEvent { name = NAME + "_REMOVE"; do(leafletArgs:LeafletArgs,args:EventArgs) { super.undo(leafletArgs,args); } undo(leafletArgs:LeafletArgs,args:EventArgs) { super.do(leafletArgs,args); } } }