import { APP_STATE } from "./core/enums/app-state-enum"; import { stageManager as Stages } from "./core/application/stage-manager"; 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"; import Konva from "konva"; import { COMPONENT_TYPE } from "./core/enums/component-type-enum"; import { headerMenu } from "./core/application/header-menu"; export const app = (function() { let _selectedTool = []; function _bootstrap() { Konva.showWarnings = false; headerMenu.bootstrap(); Selector.bootstrap(); requireAll(require.context("./component-registry/", true, /\.js$/)); _refreshMenu(); } function _currentLayer() { return Stages.getCurrentKonvaLayer(); } function _setSelectedTool(tool) { _clearSelectedTool(tool != undefined); _setState(APP_STATE.TOOL_SELECTED); if (tool.options.id != undefined) { document.getElementById("btn-" + tool.options.id).disabled = true; } _selectedTool.push(tool); } function _clearSelectedTool(force) { let tool = _getSelectedTool(); if (tool != undefined) { if (!force && tool.options.type == COMPONENT_TYPE.SELECTOR) { return; } if (tool.options.id != undefined) { document.getElementById("btn-" + tool.options.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) { return; 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 }; })();