{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/common/actionState.js"],"names":["SelectAction","FilterAction","ColorAction","InspectAction","NullAction","SelectActionType","FilterActionType","ColorActionType","NullActionType","InspectActionType","DataProcessorType","ColorStoreType","GeoDataType","deepCopy","State","constructor","filterAction","setIncludeStop","selectAction","colorAction","inspectAction","localActions","dataProcessor","colorStore","geoData","fromState","state","newState","updateState","element","getType","_applyColorAction","_applySelectAction","_applyFilterAction","_applyNewDataProcessor","_applyNewColorStore","_applyNewGeoData","_applyNewInspectAction","updateLocalActions","action","getAddedFilters","forEach","filter","addFilter","getRemovedFilters","removeFilter","setCombinationLogic","getCombinationLogic","setDataProcessor","setColorStore"],"mappings":"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","file":"actionState.js","sourcesContent":["import {\n  SelectAction,\n  FilterAction, \n  ColorAction, \n  InspectAction,\n  NullAction,\n  SelectActionType,\n  FilterActionType, \n  ColorActionType, \n  NullActionType,\n  InspectActionType\n} from \"./actions.js\"\n\nimport { DataProcessorType } from \"./data-processor.js\"\nimport { ColorStoreType } from \"./color-store.js\"\nimport { GeoDataType } from \"../../../geodata/geoData.js\"\n\nimport { deepCopy } from \"./utils.js\"\n\nexport class State {\n  constructor () {\n    this.filterAction = new FilterAction()\n    this.filterAction.setIncludeStop(false)\n    this.selectAction = new SelectAction()\n    this.colorAction = new ColorAction()\n    this.inspectAction = new InspectAction()\n    this.localActions = []\n    this.dataProcessor = {}\n    this.colorStore = {}\n    this.geoData = {}\n  }\n  \n  static fromState(state) {\n    let newState = new State()\n    newState.filterAction = deepCopy(state.filterAction)\n    newState.selectAction = deepCopy(state.selectAction)\n    newState.colorAction = deepCopy(state.colorAction)\n    newState.inspectAction = state.inspectAction // deepCopy not needed?\n    newState.localActions = deepCopy(state.localActions)\n    newState.colorStore = state.colorStore\n    newState.dataProcessor = state.dataProcessor\n    newState.geoData = state.geoData\n    \n    return newState\n  }\n  \n  updateState(element) {\n    \n    switch(element.getType()) {\n      case (ColorActionType):\n        this._applyColorAction(deepCopy(element))\n        break\n      case (SelectActionType):\n        this._applySelectAction(deepCopy(element))\n        break\n      case (FilterActionType):\n        this._applyFilterAction(deepCopy(element))\n        break\n      case (DataProcessorType):\n        this._applyNewDataProcessor(element)\n        break\n      case (ColorStoreType):\n        this._applyNewColorStore(element)\n        break\n      case (GeoDataType):\n        this._applyNewGeoData(element)\n        break\n      case (InspectActionType):\n        this._applyNewInspectAction(element)\n        break\n      default:\n        break\n    }\n  }\n  \n  updateLocalActions(localActions) {\n    this.localActions = deepCopy(localActions)\n  }\n  \n  _applyNewInspectAction(action) {\n    this.inspectAction = action\n  }\n  \n  _applyColorAction(action) {\n    this.colorAction = action\n  }\n  \n  _applySelectAction(action) {\n    action.getAddedFilters().forEach(filter => {\n      this.selectAction.addFilter(filter)\n    })\n    action.getRemovedFilters().forEach(filter => {\n      this.selectAction.removeFilter(filter)\n    })\n    \n    this.selectAction.setCombinationLogic(action.getCombinationLogic())\n  }\n  \n  _applyFilterAction(action) {    \n    action.getAddedFilters().forEach(filter => {\n      this.filterAction.addFilter(filter)\n    }) \n    action.getRemovedFilters().forEach(filter => {\n      this.filterAction.removeFilter(filter)\n    })\n    // anything else that needs to be transferred? DataProcessor?\n    this.filterAction.setCombinationLogic(action.getCombinationLogic())\n  }\n  \n  _applyNewDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor\n    if (!this.filterAction.dataProcessor) {\n      this.filterAction.setDataProcessor(dataProcessor)\n    }\n    if (!this.selectAction.dataProcessor) {\n      this.selectAction.setDataProcessor(dataProcessor)\n    }\n    if (!this.colorAction.dataProcessor) {\n      this.colorAction.setDataProcessor(dataProcessor)\n    }\n    if (!this.inspectAction.dataProcessor) {\n      this.inspectAction.setDataProcessor(dataProcessor)\n    }\n  }\n  \n  _applyNewColorStore(colorStore) {\n    this.colorStore = colorStore\n    \n    if (!this.selectAction.colorStore) {\n      this.selectAction.setColorStore(colorStore)\n    }\n    if (!this.colorAction.colorStore) {\n      this.colorAction.setColorStore(colorStore)\n    }\n    if (!this.inspectAction.colorStore) {\n      this.inspectAction.setColorStore(colorStore)\n    }\n  }\n  \n  _applyNewGeoData(geoData) {\n    this.geoData = geoData\n  }\n\n\n}"]}