import { APP_STATE } from "./core/enums/app-state-enum"; import { stages as Stages } from "./core/application/stages"; import { objects as Objects } from "./core/application/objects"; import { state as State } from "./core/application/state"; import { selector as Selector } from "./core/application/selector"; import { menu as Menu } from "./core/application/menu"; export const app = (function() { let _selectedTool = []; function _bootstrap() { Selector.bootstrap(); requireAll(require.context("./component-registry/", true, /\.js$/)); _refreshMenu(); } function _currentLayer() { return Stages.getCurrentLayer(); } 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() { const stage = Stages.getCurrentKonvaStage(); return stage.getPointerPosition(); } function _setStatus(status) { document.getElementById("status").innerHTML = status; } function _pushObject(object) { Objects.add(object); } function _getObjects() { return Objects.get(); } function _setState(e) { State.setState(e); } function _refreshMenu() { Menu.refresh(); } function requireAll(r) { r.keys().forEach(r); } _bootstrap(); return { stage: Stages.getCurrentKonvaStage, currentLayer: _currentLayer, bootstrap: _bootstrap, setSelectedTool: _setSelectedTool, clearSelectedTool: _clearSelectedTool, getSelectedTool: _getSelectedTool, pos: _getRelativePointerPosition, setStatus: _setStatus, pushObject: _pushObject, getObjects: _getObjects, setState: _setState }; })();