var app = (function() { let _tools = []; let _menu = []; let _selectedTool = []; let _objects = []; let _state = APP_STATE.NONE; let _stage = _createStage(); function _bootstrap() { configureStageEvents(); _layer = _currentLayer(); selector.bootstrap(); } function _createStage() { return stages.create(); } function _currentLayer() { return stages.getCurrentLayer(); } function configureStageEvents() { _stage.on("mousedown ", function(e) { if (e.target === _stage) { _setState(APP_STATE.NONE); return; } if (e.target.id != undefined) { _setState(APP_STATE.OBJECT_SELECTED); return; } }); _stage.on("click tap", function(e) { let tool = _getSelectedTool(); if (tool != undefined) { tool.draw(); return; } if (e.target === _stage) { _setState(APP_STATE.NONE); return; } }); } function _setSelectedTool(tool) { _clearSelectedTool(); _setState(APP_STATE.TOOL_SELECTED); if (tool.id != undefined) { document.getElementById("btn-" + tool.id).disabled = true; } _selectedTool.push(tool); } function _clearSelectedTool() { let tool = _getSelectedTool(); if (tool != undefined) { if (tool.id != undefined) { document.getElementById("btn-" + tool.id).disabled = false; } } _selectedTool = []; _setStatus(""); _setState(APP_STATE.NONE); } function _getSelectedTool() { if (_selectedTool.length > 0) return _selectedTool[0]; return undefined; } function _getRelativePointerPosition() { return _stage.getPointerPosition(); } function _setStatus(status) { document.getElementById("status").innerHTML = status; } function _pushObject(object) { _objects.push(object); } function _getObjects() { return _objects; } function _setState(state) { _state = state; } function _getState() { return _state; } function _menuClick(e) { _setState(APP_STATE.TOOL_SELECTED); if (e.click()); } return { stage: _stage, currentLayer: _currentLayer, bootstrap: _bootstrap, tools: _tools, setSelectedTool: _setSelectedTool, clearSelectedTool: _clearSelectedTool, getSelectedTool: _getSelectedTool, pos: _getRelativePointerPosition, setStatus: _setStatus, pushObject: _pushObject, getObjects: _getObjects, setState: _setState, getState: _getState, menuClick: _menuClick }; })();