src/app/app.js
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();
$("body").on("mouseenter", ".li-content", e => $(e.currentTarget).parent().find('.level-1').css("background-color", "#d4d4d4"));
$("body").on("mouseleave", ".li-content", e => $(e.currentTarget).parent().find('.level-1').css("background-color", "transparent"));
;
}
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
};
})();