diff --git a/app-latest-build/main.js b/app-latest-build/main.js index 0bcbbde..3498a14 100644 --- a/app-latest-build/main.js +++ b/app-latest-build/main.js @@ -6241,9 +6241,9 @@ class HeaderButtonsComponent { openDownloadDialog() { if (this.exportService.isDomainStoryExportable()) { const SVGDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('SVG', 'Download an SVG-Image with the Domain-Story embedded. Can be used to save and share your Domain-Story.', (withTitle, useWhiteBackground) => this.exportService.downloadSVG(withTitle, useWhiteBackground)); - const EGNDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('EGN', 'Download an EGN-File with the Domain-Story. Can be used to save and share your Domain-Story.', (withTitle, useWhiteBackground) => this.exportService.downloadDST()); - const PNGDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('PNG', 'Donwload a PNG-Image of the DOmain-Story. This does not include the Domain-Story!', (withTitle, useWhiteBackground) => this.exportService.downloadPNG(withTitle)); - const HTMLDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('HTML-Presentation', 'Download an HTML-Presentation. This does not include the Domain-Story!', (withTitle, useWhiteBackground) => this.exportService.downloadHTMLPresentation()); + const EGNDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('EGN', 'Download an EGN-File with the Domain-Story. Can be used to save and share your Domain-Story.', () => this.exportService.downloadDST()); + const PNGDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('PNG', 'Download a PNG-Image of the Domain-Story. This does not include the Domain-Story!', withTitle => this.exportService.downloadPNG(withTitle)); + const HTMLDownloadOption = new _Domain_Dialog_exportDialogData__WEBPACK_IMPORTED_MODULE_0__.ExportOption('HTML-Presentation', 'Download an HTML-Presentation. This does not include the Domain-Story!', () => this.exportService.downloadHTMLPresentation()); const config = new _angular_material_dialog__WEBPACK_IMPORTED_MODULE_17__.MatDialogConfig(); config.disableClose = false; config.autoFocus = true; @@ -6281,6 +6281,7 @@ class HeaderButtonsComponent { createNewDomainStory() { this.titleService.reset(); this.renderService.reset(); + this.dirtyFlagService.makeClean(); } /** Replay functions **/ startReplay() { diff --git a/app-latest-build/main.js.map b/app-latest-build/main.js.map index 2f99430..2c6fc3f 100644 --- a/app-latest-build/main.js.map +++ b/app-latest-build/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/Modeler/index.js","./src/app/Modeler/modeler/change-icon/replace.js","./src/app/Modeler/modeler/change-icon/replaceMenuProvider.js","./src/app/Modeler/modeler/change-icon/replaceOptions.js","./src/app/Modeler/modeler/context-pad/domainStoryContextPadProvider.js","./src/app/Modeler/modeler/domainStoryElementFactory.js","./src/app/Modeler/modeler/domainStoryIdFactory.js","./src/app/Modeler/modeler/domainStoryRenderer.js","./src/app/Modeler/modeler/domainStoryRules.js","./src/app/Modeler/modeler/domainStoryUpdater.js","./src/app/Modeler/modeler/index.js","./src/app/Modeler/modeler/labeling/dsLabelEditingPreview.js","./src/app/Modeler/modeler/labeling/dsLabelEditingProvider.js","./src/app/Modeler/modeler/labeling/dsLabelUtil.js","./src/app/Modeler/modeler/labeling/index.js","./src/app/Modeler/modeler/labeling/position.js","./src/app/Modeler/modeler/modeling/dSModeling.js","./src/app/Modeler/modeler/modeling/index.js","./src/app/Modeler/modeler/numbering/numbering.js","./src/app/Modeler/modeler/palette/domainStoryPalette.js","./src/app/Modeler/modeler/updateHandler/activityUpdateHandlers.js","./src/app/Modeler/modeler/updateHandler/elementUpdateHandler.js","./src/app/Modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js","./src/app/Modeler/modeler/updateHandler/massRenameHandler.js","./src/app/Modeler/modeler/updateHandler/updateLabelHandler.js","./src/app/Modeler/modeler/util.js","./src/app/Service/Export/exportUtil.js","./src/app/Domain/Common/businessObject.ts","./src/app/Domain/Common/configuration.ts","./src/app/Domain/Common/constants.ts","./src/app/Domain/Common/dictionary/dictionary.ts","./src/app/Domain/Common/domainConfiguration.ts","./src/app/Domain/Common/elementTypes.ts","./src/app/Domain/Common/iconConfiguration.ts","./src/app/Domain/Dialog/activityDialogData.ts","./src/app/Domain/Dialog/exportDialogData.ts","./src/app/Domain/Dialog/infoDialogData.ts","./src/app/Domain/DomManipulation/replayConstants.ts","./src/app/Domain/Domain-Configuration/allIcons.ts","./src/app/Domain/Domain-Configuration/iconFilterEnum.ts","./src/app/Domain/Export/configAndDst.ts","./src/app/Domain/Export/exportConstants.ts","./src/app/Modules/autosave-settings.module.ts","./src/app/Modules/domain-story-modeler-module.module.ts","./src/app/Modules/settings.module.ts","./src/app/Presentation/Autosave/AutosaveOptions/autosave-options.component.ts","./src/app/Presentation/Autosave/AutosaveOptions/autosave-options.component.html","./src/app/Presentation/Autosave/AutosaveSettings/autosave-settings.component.ts","./src/app/Presentation/Autosave/AutosaveSettings/autosave-settings.component.html","./src/app/Presentation/Autosave/AutosavedDrafts/autosaved-drafts.component.ts","./src/app/Presentation/Autosave/AutosavedDrafts/autosaved-drafts.component.html","./src/app/Presentation/Canvas/modeler.component.ts","./src/app/Presentation/Canvas/modeler.component.html","./src/app/Presentation/Dialog/activity-dialog/activity-dialog.component.ts","./src/app/Presentation/Dialog/activity-dialog/activity-dialog.component.html","./src/app/Presentation/Dialog/export-dialog/export-dialog.component.ts","./src/app/Presentation/Dialog/export-dialog/export-dialog.component.html","./src/app/Presentation/Dialog/header-dialog/header-dialog.component.ts","./src/app/Presentation/Dialog/header-dialog/header-dialog.component.html","./src/app/Presentation/Dialog/info-dialog/info-dialog.component.ts","./src/app/Presentation/Dialog/info-dialog/info-dialog.component.html","./src/app/Presentation/Dialog/label-dictionary-dialog/label-dictionary-dialog.component.ts","./src/app/Presentation/Dialog/label-dictionary-dialog/label-dictionary-dialog.component.html","./src/app/Presentation/DomainConfiguration/details-list-item/details-list-item.component.ts","./src/app/Presentation/DomainConfiguration/details-list-item/details-list-item.component.html","./src/app/Presentation/DomainConfiguration/domain-configuration.component.ts","./src/app/Presentation/DomainConfiguration/domain-configuration.component.html","./src/app/Presentation/DomainConfiguration/domain-details/domain-details.component.ts","./src/app/Presentation/DomainConfiguration/domain-details/domain-details.component.html","./src/app/Presentation/DomainConfiguration/icon-list-item/icon-list-item.component.ts","./src/app/Presentation/DomainConfiguration/icon-list-item/icon-list-item.component.html","./src/app/Presentation/Header/header-buttons.component.ts","./src/app/Presentation/Header/header-buttons.component.html","./src/app/Presentation/Header/header.component.ts","./src/app/Presentation/Header/header.component.html","./src/app/Presentation/LabelDictionary/label-dictionary.component.ts","./src/app/Presentation/LabelDictionary/label-dictionary.component.html","./src/app/Presentation/Settings/General/general-settings.component.ts","./src/app/Presentation/Settings/General/general-settings.component.html","./src/app/Presentation/Settings/settings.component.ts","./src/app/Presentation/Settings/settings.component.html","./src/app/Service/Autosave/autosave-configuration.service.ts","./src/app/Service/Autosave/autosave.service.ts","./src/app/Service/BrowserStorage/storage.service.ts","./src/app/Service/CommandStack/command-stack.service.ts","./src/app/Service/Dialog/dialog.service.ts","./src/app/Service/DirtyFlag/dirty-flag.service.ts","./src/app/Service/DomManipulation/dom-manipulation.service.ts","./src/app/Service/DomainConfiguration/domain-configuration.service.ts","./src/app/Service/DomainConfiguration/domain-customization.service.ts","./src/app/Service/DomainConfiguration/icon-dictionary.service.ts","./src/app/Service/ElementRegistry/element-registry.service.ts","./src/app/Service/Export/export.service.ts","./src/app/Service/Export/html-presentation.service.ts","./src/app/Service/Export/png.service.ts","./src/app/Service/Export/svg.service.ts","./src/app/Service/Import/import-domain-story.service.ts","./src/app/Service/Import/import-repair.service.ts","./src/app/Service/LabelDictionary/label-dictionary.service.ts","./src/app/Service/LabelDictionary/mass-naming.service.ts","./src/app/Service/Modeler/initializer.service.ts","./src/app/Service/Modeler/modeler.service.ts","./src/app/Service/Renderer/renderer.service.ts","./src/app/Service/Replay/replay-state.service.ts","./src/app/Service/Replay/replay.service.ts","./src/app/Service/Replay/storyCreator/story-creator.service.ts","./src/app/Service/Settings/settings.service.ts","./src/app/Service/Title/title.service.ts","./src/app/Utils/mathExtensions.ts","./src/app/Utils/naming.ts","./src/app/Utils/sanitizer.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/material.module.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import Modeler from \"bpmn-js/lib/Modeler\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport { assign, isArray } from \"min-dash\";\nimport inherits from \"inherits\";\n\nimport DomainStoryModule from \"./modeler\";\nimport LabelEditingModule from \"./modeler/labeling\";\nimport ModelingModule from \"./modeler/modeling\";\nimport { elementTypes } from \"../Domain/Common/elementTypes\";\n\nexport default function DomainStoryModeler(options) {\n Modeler.call(this, options);\n\n this._customElements = [];\n this._groupElements = [];\n}\n\ninherits(DomainStoryModeler, Modeler);\n\nDomainStoryModeler.prototype._modules = [].concat(\n DomainStoryModeler.prototype._modules,\n [DomainStoryModule, LabelEditingModule, ModelingModule],\n [ResizeModule]\n);\n\n/**\n * add a single custom element to the underlying diagram\n *\n * @param {Object} customElement\n */\nDomainStoryModeler.prototype._addCustomShape = function (customElement) {\n let parentId = customElement.parent;\n delete customElement.children;\n delete customElement.parent;\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n let customShape = elementFactory.create(\"shape\", customAttrs);\n\n if (isGroup(customElement)) {\n this._groupElements[customElement.id] = customShape;\n }\n\n if (parentId) {\n let parentShape = this._groupElements[parentId];\n\n if (isGroup(parentShape)) {\n return canvas.addShape(customShape, parentShape, parentShape.id);\n }\n }\n return canvas.addShape(customShape);\n};\n\nDomainStoryModeler.prototype._addCustomConnection = function (customElement) {\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\"),\n elementRegistry = this.get(\"elementRegistry\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n\n let connection = elementFactory.create(\n \"connection\",\n assign(customAttrs, {\n source: elementRegistry.get(customElement.source),\n target: elementRegistry.get(customElement.target),\n }),\n elementRegistry.get(customElement.source).parent\n );\n\n return canvas.addConnection(connection);\n};\n\n//** We import BusinessObjects, not the whole Canvas Object!!!!!!!!\nDomainStoryModeler.prototype.importCustomElements = function (elements) {\n this.get(\"eventBus\").fire(\"diagram.clear\", {});\n this._customElements = [];\n this._groupElements = [];\n\n this.addCustomElements(elements);\n};\n\n/**\n * add a number of custom elements and connections to the underlying diagram.\n *\n * @param {Array} customElements\n */\nDomainStoryModeler.prototype.addCustomElements = function (customElements) {\n if (!isArray(customElements)) {\n throw new Error(\"argument must be an array\");\n }\n\n let shapes = [],\n connections = [],\n groups = [];\n\n customElements.forEach(function (customElement) {\n if (isConnection(customElement)) {\n connections.push(customElement);\n } else if (isGroup(customElement)) {\n groups.push(customElement);\n } else {\n shapes.push(customElement);\n }\n });\n\n // add groups before shapes and shapes before connections so that connections\n // can already rely on the shapes being part of the diagram\n groups.forEach(this._addCustomShape, this);\n shapes.forEach(this._addCustomShape, this);\n connections.forEach(this._addCustomConnection, this);\n};\n\n/**\n * get custom elements with their current status.\n *\n * @return {Array} custom elements on the diagram\n */\nDomainStoryModeler.prototype.getCustomElements = function () {\n return this._customElements;\n};\n\n// override standard function to prevent default elements on canvas\nDomainStoryModeler.prototype.createDiagram = function (done) {};\n\nfunction isConnection(element) {\n return (\n element.type === elementTypes.ACTIVITY ||\n element.type === elementTypes.CONNECTION\n );\n}\n\nfunction isGroup(element) {\n return element && element.type === elementTypes.GROUP;\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\n/**\n * service that allow replacing of elements.\n */\nexport default function Replace(modeling) {\n this._modeling = modeling;\n}\n\n/**\n * @param {Element} oldElement - element to be replaced\n * @param {Object} newElementData - containing information about the new Element, for example height, width, type.\n * @param modeling\n */\nfunction replaceElement(oldElement, newElementData, modeling) {\n // let modeling = this._modeling;\n\n let newElement = setCenterOfElement(newElementData, oldElement, modeling);\n let outgoingActivities = newElement.outgoing;\n let incomingActivities = newElement.incoming;\n\n outgoingActivities.forEach((element) => {\n element.businessObject.source = newElement.id;\n });\n\n incomingActivities.forEach((element) => {\n element.businessObject.target = newElement.id;\n });\n\n return newElement;\n}\n\nfunction setCenterOfElement(newElementData, oldElement, modeling) {\n newElementData.x = Math.ceil(\n oldElement.x + (newElementData.width || oldElement.width) / 2\n );\n newElementData.y = Math.ceil(\n oldElement.y + (newElementData.height || oldElement.height) / 2\n );\n\n assign(newElementData, { name: oldElement.businessObject.name });\n\n return modeling.replaceShape(oldElement, newElementData, {});\n}\n\nReplace.prototype.replaceElement = replaceElement;\n","\"use strict\";\n\nimport Replace from \"./replace\";\nimport * as replaceOptions from \"./replaceOptions\";\n\nimport { forEach } from \"min-dash\";\n\n/**\n * This module is an element agnostic replace menu provider for the popup menu.\n */\nexport default function ReplaceMenuProvider(modeling) {\n this._dsReplace = new Replace(modeling);\n this._modeling = modeling;\n}\n\nReplaceMenuProvider.$inject = [\"modeling\"];\n\n/**\n * Get all entries from replaceOptions for the given element and apply filters\n * on them. Get for example only elements, which are different from the current one.\n *\n * @param {djs.model.Base} element\n *\n * @return {Array} a list of menu entry items\n */\nReplaceMenuProvider.prototype.getEntries = function (element) {\n let entries;\n if (element.type.includes(\"actor\")) {\n entries = replaceOptions.actorReplaceOptions(element.type);\n } else if (element.type.includes(\"workObject\")) {\n entries = replaceOptions.workObjectReplaceOptions(element.type);\n }\n\n return this._createEntries(element, entries);\n};\n\n/**\n * Creates an array of menu entry objects for a given element and filters the replaceOptions\n * according to a filter function.\n *\n * @param {djs.model.Base} element\n * @param {Object} replaceOptions\n *\n * @return {Array} a list of menu items\n */\nReplaceMenuProvider.prototype._createEntries = function (\n element,\n replaceOptions\n) {\n let menuEntries = [];\n\n let self = this;\n\n forEach(replaceOptions, function (definition) {\n let entry = self._createMenuEntry(definition, element);\n\n menuEntries.push(entry);\n });\n\n return menuEntries;\n};\n\n/**\n * Creates and returns a single menu entry item.\n *\n * @param {Object} definition a single replace options definition object\n * @param {djs.model.Base} element\n * @param {Function} [action] an action callback function which gets called when\n * the menu entry is being triggered.\n *\n * @return {Object} menu entry item\n */\nReplaceMenuProvider.prototype._createMenuEntry = function (\n definition,\n element,\n action\n) {\n let replaceElement = this._dsReplace.replaceElement;\n let modeling = this._modeling;\n let replaceAction = function () {\n return replaceElement(element, definition.target, modeling);\n };\n\n action = action || replaceAction;\n\n return {\n label: definition.label,\n className: definition.className,\n id: definition.actionName,\n action: action,\n };\n};\n","import { elementTypes } from \"src/app/Domain/Common/elementTypes\";\n\nlet iconDictionaryService;\n\nexport function initializeReplaceOptions(iconDictionary) {\n iconDictionaryService = iconDictionary;\n}\n\nexport function actorReplaceOptions(name) {\n const actorTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.ACTOR\n );\n\n let replaceOption = {};\n let i = 0;\n\n actorTypes.keysArray().forEach((actorType) => {\n if (!name.includes(actorType)) {\n const typeName = actorType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName.toLowerCase(),\n className: iconDictionaryService.getIconForBPMN(\n elementTypes.ACTOR,\n actorType\n ),\n target: {\n type: `${elementTypes.ACTOR}${actorType}`,\n },\n };\n i++;\n }\n });\n return replaceOption;\n}\n\nexport function workObjectReplaceOptions(name) {\n const workObjectTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.WORKOBJECT\n );\n\n let replaceOption = {};\n let i = 0;\n\n workObjectTypes.keysArray().forEach((workObjectType) => {\n if (!name.includes(workObjectType)) {\n const typeName = workObjectType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName,\n className: iconDictionaryService.getIconForBPMN(\n elementTypes.WORKOBJECT,\n workObjectType\n ),\n target: {\n type: `${elementTypes.WORKOBJECT}${workObjectType}`,\n },\n };\n }\n i++;\n });\n return replaceOption;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport ContextPadProvider from \"bpmn-js/lib/features/context-pad/ContextPadProvider\";\n\nimport { assign, bind } from \"min-dash\";\nimport { generateAutomaticNumber } from \"../numbering/numbering\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { getAllStandardIconKeys } from \"src/app/Domain/Domain-Configuration/allIcons\";\n\nlet dirtyFlagService;\nlet iconDictionaryService;\n\nexport function initializeContextPadProvider(dirtyFlag, iconDictionary) {\n dirtyFlagService = dirtyFlag;\n iconDictionaryService = iconDictionary;\n}\n\nexport default function DomainStoryContextPadProvider(\n injector,\n connect,\n translate,\n elementFactory,\n create,\n canvas,\n contextPad,\n popupMenu,\n replaceMenuProvider,\n commandStack,\n eventBus,\n modeling\n) {\n let startConnect;\n let selectedElement;\n\n injector.invoke(ContextPadProvider, this);\n let autoPlace = injector.get(\"autoPlace\", false);\n\n let cached = bind(this.getContextPadEntries, this);\n\n const colorPicker = document.getElementById(\"colorPicker\");\n colorPicker.onchange = (ev) => {\n const context = {\n businessObject: selectedElement.businessObject,\n newColor: ev.target.value,\n element: selectedElement,\n };\n\n commandStack.execute(\"element.colorChange\", context);\n dirtyFlagService.makeDirty();\n };\n\n popupMenu.registerProvider(\"ds-replace\", replaceMenuProvider);\n popupMenu.registerProvider(\"bpmn-replace\", replaceMenuProvider);\n\n this.getContextPadEntries = function (element) {\n const allStandardIconKeys = getAllStandardIconKeys();\n let actions = cached(element);\n\n startConnect = function (event, element, autoActivate) {\n connect.start(event, element, autoActivate);\n };\n\n if (element.type.includes(elementTypes.WORKOBJECT)) {\n if (\n allStandardIconKeys.includes(\n element.type.replace(elementTypes.WORKOBJECT, \"\")\n )\n ) {\n addColorChange(actions);\n }\n addConnectWithActivity(actions, startConnect);\n addTextAnnotation(actions);\n addActors(appendAction, actions);\n addWorkObjects(appendAction, actions);\n addChangeWorkObjectTypeMenu(actions);\n } else if (element.type.includes(elementTypes.ACTOR)) {\n if (\n allStandardIconKeys.includes(\n element.type.replace(elementTypes.ACTOR, \"\")\n )\n ) {\n addColorChange(actions);\n }\n addConnectWithActivity(actions, startConnect);\n addTextAnnotation(actions);\n addWorkObjects(appendAction, actions);\n addChangeActorTypeMenu(actions);\n } else if (element.type.includes(elementTypes.GROUP)) {\n delete actions.delete;\n addTextAnnotation(actions);\n assign(actions, {\n deleteGroup: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove Group without Child-Elements\",\n action: {\n click: function (event, element) {\n modeling.removeGroup(element);\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n addColorChange(actions);\n } else if (element.type.includes(elementTypes.ACTIVITY)) {\n moveDeleteActionToEndOfArray(actions);\n\n addColorChange(actions);\n\n assign(actions, {\n delete: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove\",\n action: {\n click: function (event, element) {\n modeling.removeElements({ element });\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n }\n\n return actions;\n };\n\n function moveDeleteActionToEndOfArray(actions) {\n delete actions.delete;\n\n assign(actions, {\n changeDirection: {\n group: \"edit\",\n className: \"icon-domain-story-changeDirection\",\n title: translate(\"Change direction\"),\n action: {\n // event needs to be addressed\n click: function (event, element) {\n changeDirection(element);\n },\n },\n },\n });\n }\n\n function addChangeActorTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function addColorChange(actions) {\n assign(actions, {\n colorChange: {\n group: \"edit\",\n className: \"icon-domain-story-color-picker\",\n title: translate(\"Change color\"),\n action: {\n click: function (event, element) {\n selectedElement = element;\n colorPicker.click();\n },\n },\n },\n });\n }\n\n function addTextAnnotation(actions) {\n assign(actions, {\n \"append.text-annotation\": appendAction(\n elementTypes.TEXTANNOTATION,\n \"bpmn-icon-text-annotation\",\n \"textannotation\",\n \"connect\"\n ),\n });\n }\n\n function addConnectWithActivity(actions, startConnect) {\n assign(actions, {\n connect: {\n group: \"connect\",\n className: \"bpmn-icon-connection\",\n title: translate(\"Connect with activity\"),\n action: {\n click: startConnect,\n dragstart: startConnect,\n },\n },\n });\n }\n\n function addWorkObjects(appendAction, actions) {\n let workObjectTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.WORKOBJECT\n );\n workObjectTypes.keysArray().forEach((workObjectType) => {\n let name = workObjectType;\n let icon = iconDictionaryService.getIconForBPMN(\n elementTypes.WORKOBJECT,\n workObjectType\n );\n let action = [];\n action[\"append.workObject\" + name] = appendAction(\n `${elementTypes.WORKOBJECT}${workObjectType}`,\n icon,\n name,\n \"workObjects\"\n );\n assign(actions, action);\n });\n }\n\n function addActors(appendAction, actions) {\n let actorTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.ACTOR\n );\n actorTypes.keysArray().forEach((actorType) => {\n let name = actorType;\n let icon = iconDictionaryService.getIconForBPMN(\n elementTypes.ACTOR,\n actorType\n );\n let action = [];\n action[\"append.actor\" + name] = appendAction(\n `${elementTypes.ACTOR}${actorType}`,\n icon,\n name,\n \"actors\"\n );\n assign(actions, action);\n });\n }\n\n function addChangeWorkObjectTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function changeDirection(element) {\n let context;\n let businessObject = element.businessObject;\n let newNumber;\n\n if (element.source.type.includes(elementTypes.ACTOR)) {\n newNumber = 0;\n } else {\n newNumber = generateAutomaticNumber(element, commandStack);\n }\n context = {\n businessObject: businessObject,\n newNumber: newNumber,\n element: element,\n };\n commandStack.execute(\"activity.directionChange\", context);\n }\n\n function getReplaceMenuPosition(element) {\n let Y_OFFSET = 5;\n\n let diagramContainer = canvas.getContainer(),\n pad = contextPad.getPad(element).html;\n\n let diagramRect = diagramContainer.getBoundingClientRect(),\n padRect = pad.getBoundingClientRect();\n\n let top = padRect.top - diagramRect.top;\n let left = padRect.left - diagramRect.left;\n\n return {\n x: left,\n y: top + padRect.height + Y_OFFSET,\n };\n }\n\n /**\n * create an append action\n *\n * @param {String} type\n * @param {String} className\n * @param {String} [title]\n * @param {String} group\n * @param {Object} [options]\n *\n * @return {Object} descriptor\n */\n function appendAction(type, className, title, group, options) {\n if (typeof title !== \"string\") {\n options = title;\n title = translate(\"{type}\", { type: type.replace(/^domainStory:/, \"\") });\n }\n\n function appendStart(event, element) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n let context = {\n elements: [shape],\n hints: {},\n source: element,\n };\n create.start(event, shape, context);\n }\n\n return {\n group: group,\n className: className,\n title: \"Append \" + title,\n action: {\n dragstart: startConnect,\n click: appendStart,\n },\n };\n }\n}\n\ninherits(DomainStoryContextPadProvider, ContextPadProvider);\n\nDomainStoryContextPadProvider.$inject = [\n \"injector\",\n \"connect\",\n \"translate\",\n \"elementFactory\",\n \"create\",\n \"canvas\",\n \"contextPad\",\n \"popupMenu\",\n \"replaceMenuProvider\",\n \"commandStack\",\n \"eventBus\",\n \"modeling\",\n];\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport BpmnElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\n\nimport { DEFAULT_LABEL_SIZE } from \"bpmn-js/lib/util/LabelUtil\";\n\nimport DomainStoryIdFactory from \"./domainStoryIdFactory\";\n\n/**\n * A custom factory that knows how to create BPMN _and_ custom elements.\n */\nexport default function DomainStoryElementFactory(bpmnFactory, moddle) {\n BpmnElementFactory.call(this, bpmnFactory, moddle);\n\n let self = this;\n let domainStoryIdFactory = new DomainStoryIdFactory();\n\n /**\n * create a diagram-js element with the given type (any of shape, connection, label).\n *\n * @param {String} elementType\n * @param {Object} attrs\n *\n * @return {djs.model.Base}\n */\n this.create = function (elementType, attrs) {\n let type = attrs.type;\n\n if (elementType === \"label\") {\n return self.baseCreate(\n elementType,\n assign({ type: \"label\" }, DEFAULT_LABEL_SIZE, attrs)\n );\n }\n\n // add type to businessObject if custom\n if (/^domainStory:/.test(type)) {\n if (!attrs.businessObject) {\n attrs.businessObject = {\n type: type,\n name: attrs.name ? attrs.name : \"\",\n };\n }\n\n if (attrs.id) {\n domainStoryIdFactory.registerId(attrs.id);\n } else {\n attrs.id = domainStoryIdFactory.getId(elementType);\n }\n assign(attrs.businessObject, {\n id: attrs.id,\n });\n\n let id = attrs.id;\n attrs.businessObject.get = function (key) {\n if (key === \"id\") {\n return id;\n }\n };\n attrs.businessObject.set = function (key, value) {\n if (key === \"id\") {\n assign(attrs.businessObject, { id: value });\n }\n };\n\n if (!attrs.businessObject.$type) {\n assign(attrs.businessObject, { $type: \"Element\" });\n }\n assign(attrs.businessObject, { di: {} });\n if (!attrs.businessObject.$descriptor) {\n assign(attrs.businessObject, { $descriptor: {} });\n }\n\n // add width and height if shape\n if (\n (!/:activity$/.test(type) || !/:connection$/.test(type)) &&\n !((/:group$/.test(type) && attrs.height) || attrs.width)\n ) {\n assign(attrs, self._getCustomElementSize(type));\n }\n\n if (!(\"$instanceOf\" in attrs.businessObject)) {\n // ensure we can use ModelUtil#is for type checks\n Object.defineProperty(attrs.businessObject, \"$instanceOf\", {\n value: function (type) {\n return this.type === type;\n },\n });\n }\n\n return self.baseCreate(elementType, attrs);\n }\n\n return self.createBpmnElement(elementType, attrs);\n };\n}\n\ninherits(DomainStoryElementFactory, BpmnElementFactory);\n\nDomainStoryElementFactory.$inject = [\"bpmnFactory\", \"moddle\"];\n\n/**\n * returns the default size of custom shapes.\n *\n * the following example shows an interface on how\n * to setup the custom shape's dimensions.\n * *\n * @param {String} type\n *\n * @return {Dimensions} a {width, height} object representing the size of the element\n */\nDomainStoryElementFactory.prototype._getCustomElementSize = function (type) {\n let shapes = {\n __default: { width: 75, height: 75 },\n \"domainStory:textAnnotation\": { width: 100, height: 30 },\n \"domainStory:group\": { width: 525, height: 275 },\n };\n\n return shapes[type] || shapes.__default;\n};\n\nclass Dimensions {\n width;\n height;\n}\n","\"use strict\";\n\nlet idList = [];\n\nexport default function DomainStoryIdFactory() {}\n\nDomainStoryIdFactory.prototype.getId = function (type) {\n return generateId(type);\n};\n\nDomainStoryIdFactory.prototype.registerId = function (id) {\n idList.push(id);\n};\n\nfunction generateId(type) {\n let idNumber = fourDigitsId();\n\n let id = type + \"_\" + idSuffix(idNumber);\n\n while (containsId(id)) {\n idNumber++;\n\n id = type + \"_\" + idSuffix(idNumber);\n }\n\n idList.push(id);\n return id;\n}\n\nfunction idSuffix(idNumber) {\n let id;\n if (idNumber > 9999) {\n id = 0;\n } else if (idNumber < 10) {\n id = \"000\" + idNumber;\n } else if (idNumber < 100) {\n id = \"00\" + idNumber;\n } else if (idNumber < 1000) {\n id = \"0\" + idNumber;\n } else {\n id = \"\" + idNumber;\n }\n return id;\n}\n\nfunction fourDigitsId() {\n return Math.floor(Math.random() * 10000);\n}\n\nexport function containsId(id) {\n let same = false;\n idList.forEach((element) => {\n if (id === element) {\n same = true;\n }\n });\n return same;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\nimport Ids from \"ids\";\nimport { getAnnotationBoxHeight } from \"./labeling/dsLabelEditingPreview\";\nimport { componentsToPath, createLine } from \"diagram-js/lib/util/RenderUtil\";\nimport {\n append as svgAppend,\n attr as svgAttr,\n classes as svgClasses,\n create as svgCreate,\n} from \"tiny-svg\";\nimport { query as domQuery } from \"min-dom\";\nimport { assign, isObject } from \"min-dash\";\nimport { getNumberStash } from \"./labeling/dsLabelEditingProvider\";\nimport {\n addNumberToRegistry,\n generateAutomaticNumber,\n numberBoxDefinitions,\n} from \"./numbering/numbering\";\n\nimport { calculateTextWidth } from \"./labeling/dsLabelUtil\";\nimport { countLines, labelPosition } from \"./labeling/position\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { angleBetween } from \"../../Utils/mathExtensions\";\nimport { getNameFromType } from \"../../Utils/naming\";\n\nlet RENDERER_IDS = new Ids();\nlet numbers = [];\nconst DEFAULT_COLOR = \"black\";\n\n/**\n * a renderer that knows how to render custom elements.\n */\nlet iconDictionary;\nlet elementRegistry;\nlet dirtyFlag;\n\nexport function initializeRenderer(\n iconDictionaryService,\n elementRegistryService,\n dirtyFlagService\n) {\n iconDictionary = iconDictionaryService;\n elementRegistry = elementRegistryService;\n dirtyFlag = dirtyFlagService;\n}\n\nexport default function DomainStoryRenderer(\n eventBus,\n styles,\n canvas,\n textRenderer,\n pathMap,\n commandStack\n) {\n BaseRenderer.call(this, eventBus, 2000);\n\n let rendererId = RENDERER_IDS.next();\n let markers = {};\n let computeStyle = styles.computeStyle;\n\n // generate the automatic Number for an activity originating from an actor\n function generateActivityNumber(parentGfx, element, box) {\n // whenever we want to edit an activity, it gets redrawn as a new object\n // and the custom information is lost,\n // so we stash it before the editing occurs and set the value here\n\n let numberStash = getNumberStash();\n let semantic = element.businessObject;\n\n if (numberStash.use) {\n semantic.number = numberStash.number;\n }\n\n numbers[semantic.number] = true;\n\n let newRenderedNumber = renderNumber(\n parentGfx,\n semantic.number,\n numberStyle(box),\n element.type\n );\n addNumberToRegistry(newRenderedNumber, semantic.number);\n }\n\n // style functions\n function numberStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n position: \"absolute\",\n }),\n };\n }\n\n function backgroundBoxStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n fontSize: 50,\n position: \"absolute\",\n fontFamily: \"Courier New\",\n }),\n };\n }\n\n function backgroundDotStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"white\",\n fontSize: 150,\n position: \"absolute\",\n fontFamily: \"Courier\",\n }),\n };\n }\n\n // render functions\n // render label associated with actors and workobjects\n function renderEmbeddedLabel(parentGfx, element, align, padding) {\n let businessObject = element.businessObject;\n return renderLabel(\n parentGfx,\n businessObject.name,\n {\n box: element,\n align: align,\n padding: padding ? padding : 0,\n style: {\n fill: \"#000000\",\n },\n },\n element.type\n );\n }\n\n // render label associated with activities\n function renderExternalLabel(parentGfx, element) {\n let semantic = element.businessObject;\n let waypoints = element.waypoints;\n let lines = countLines(semantic.name);\n\n if (element.waypoints != null) {\n let position = labelPosition(waypoints, lines);\n let startPoint = element.waypoints[position.selected];\n let endPoint = element.waypoints[position.selected + 1];\n let angle = angleBetween(startPoint, endPoint);\n let alignment = \"left\";\n let boxWidth = 500;\n let xStart = position.x;\n\n // if the activity is horizontal, we want to center the label\n if (angle === 0 || angle === 180) {\n boxWidth = Math.abs(startPoint.x - endPoint.x);\n alignment = \"center\";\n xStart =\n (startPoint.x + endPoint.x) / 2 - calculateTextWidth(semantic.name);\n }\n\n let box = {\n textAlign: alignment,\n width: boxWidth,\n height: 30,\n x: xStart,\n y: position.y,\n };\n\n if (semantic.name && semantic.name.length) {\n return renderLabel(\n parentGfx,\n semantic.name,\n {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n hyphens: \"auto\",\n }),\n },\n element.type\n );\n }\n }\n }\n\n // render the number associated with an activity\n function renderExternalNumber(parentGfx, element) {\n if (element && element.source) {\n let semantic = element.businessObject;\n\n let box = numberBoxDefinitions(element);\n\n if (\n semantic.number == null &&\n element.source.type &&\n element.source.type.includes(elementTypes.ACTOR)\n ) {\n generateAutomaticNumber(element, commandStack);\n }\n\n // render the background for the number\n if (semantic.number && element.source.type.includes(elementTypes.ACTOR)) {\n generateActivityNumber(parentGfx, element, box);\n } else {\n semantic.number = null;\n }\n }\n }\n\n // render a number on the canvas\n function renderNumber(parentGfx, number, options, type) {\n if (number < 10) {\n number = String(number);\n }\n number = String(number);\n let text = textRenderer.createText(number || \"\", options);\n let height = 0;\n\n svgClasses(text).add(\"djs-labelNumber\");\n\n setCoordinates(type, text, options, height, parentGfx);\n\n svgAppend(parentGfx, text);\n\n drawCircle(parentGfx, options, number.length);\n\n return text;\n }\n\n function drawCircle(parentGfx, options, textLength) {\n const circle = svgCreate(\"circle\");\n svgAttr(circle, {\n cx: options.box.x + 15 + textLength * 3,\n cy: options.box.y - 4,\n r: \"10\",\n style: \"fill:transparent;stroke:black;stroke-width:1\",\n });\n svgAppend(parentGfx, circle);\n }\n\n // the coordinates of the activity label must be set directly and will not be taken from the box\n function setCoordinates(type, text, options, height, parentGfx) {\n if (/:activity$/.test(type)) {\n text.innerHTML = manipulateInnerHTMLXLabel(\n text.children,\n options.box.x,\n 0\n );\n text.innerHTML = manipulateInnerHTMLYLabel(\n text.children,\n options.box.y,\n 0\n );\n } else if (/:actor/.test(type)) {\n height = parentGfx.firstChild.attributes.height.nodeValue;\n text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 0);\n } else if (/:workObject/.test(type)) {\n height = parentGfx.firstChild.attributes.height.nodeValue;\n text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 26);\n }\n }\n\n // render a label on the canvas\n function renderLabel(parentGfx, label, options, type) {\n let text = textRenderer.createText(label || \"\", options);\n let height = 0;\n\n svgClasses(text).add(\"djs-label\");\n setCoordinates(type, text, options, height, parentGfx);\n\n svgAppend(parentGfx, text);\n return text;\n }\n\n // determine the Y-coordinate of the label / number to be rendered\n function manipulateInnerHTMLYLabel(children, y, offset) {\n if (children) {\n let result = \"\";\n for (let i = 0; i < children.length; i++) {\n result += children[i].outerHTML.replace(\n /y=\"-?\\d*.\\d*\"/,\n 'y=\"' + (Number(y) + offset + 14 * i) + '\"'\n );\n }\n return result;\n }\n }\n\n // determine the X-coordinate of the label / number to be rendered\n function manipulateInnerHTMLXLabel(children, x, offset) {\n if (children) {\n let result = \"\";\n for (let i = 0; i < children.length; i++) {\n result += children[i].outerHTML.replace(\n /x=\"-?\\d*.\\d*\"/,\n 'x=\"' + (Number(x) + offset + 14) + '\"'\n );\n }\n return result;\n }\n }\n\n // draw functions\n this.drawGroup = function (parentGfx, element) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = DEFAULT_COLOR;\n }\n let rect = drawRect(\n parentGfx,\n element.width,\n element.height,\n 0,\n assign(\n {\n fill: \"none\",\n stroke: element.businessObject.pickedColor,\n },\n element.attrs\n )\n );\n renderEmbeddedLabel(parentGfx, element, \"left-top\", 8);\n\n return rect;\n };\n\n function useColorForElement(element, iconSRC) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = DEFAULT_COLOR;\n }\n const match = iconSRC.match(/fill=\".*?\"/);\n if (match && match.length > 1) {\n return iconSRC.replace(\n /fill=\".*?\"/,\n 'fill=\"' + element.businessObject.pickedColor + '\"'\n );\n } else {\n const index = iconSRC.indexOf(\"' +\n ''\n );\n } else {\n return useColorForElement(element, iconSRC);\n }\n }\n\n this.drawActor = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width,\n height: element.height,\n },\n actor;\n let iconSRC = iconDictionary.getTypeIconSRC(\n elementTypes.ACTOR,\n getNameFromType(element.type)\n );\n iconSRC = getIconSrc(iconSRC, element);\n actor = svgCreate(iconSRC);\n\n svgAttr(actor, svgDynamicSizeAttributes);\n svgAppend(parent, actor);\n\n renderEmbeddedLabel(parent, element, \"center\", -5);\n return actor;\n };\n\n this.drawWorkObject = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width * 0.65,\n height: element.height * 0.65,\n x: element.width / 2 - 25,\n y: element.height / 2 - 25,\n },\n workObject;\n let iconSRC = iconDictionary.getTypeIconSRC(\n elementTypes.WORKOBJECT,\n getNameFromType(element.type)\n );\n iconSRC = getIconSrc(iconSRC, element);\n workObject = svgCreate(iconSRC);\n\n svgAttr(workObject, svgDynamicSizeAttributes);\n svgAppend(parent, workObject);\n renderEmbeddedLabel(parent, element, \"center\", -5);\n\n return workObject;\n };\n\n function useColorForActivity(element) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = \"black\";\n }\n let attrs = \"\";\n return computeStyle(attrs, {\n stroke: element.businessObject.pickedColor,\n fill: \"none\",\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n markerEnd: marker(\n \"activity\",\n \"black\",\n element.businessObject.pickedColor\n ),\n });\n }\n\n this.drawActivity = function (p, element) {\n adjustForTextOverlap(element);\n\n if (element) {\n let attrs = useColorForActivity(element);\n\n let x = svgAppend(p, createLine(element.waypoints, attrs));\n renderExternalLabel(p, element);\n renderExternalNumber(p, element);\n\n // just adjusting the start- and endpoint of the connection-element moves only the drawn connection,\n // not the interactive line. This can be fixed by manually overriding the points of the interactive polyline\n // in the HTMl with the points of the drawn one.\n // this however does not adjust the surrounding box of the connection.\n fixConnectionInHTML(p.parentElement);\n\n return x;\n }\n };\n\n function checkIfPointOverlapsText(point, source) {\n if (point.y > source.y + 60) {\n if (point.x > source.x + 3 && point.x < source.x + 72) {\n let lineOffset = getLineOffset(source);\n if (source.y + 75 + lineOffset > point.y) {\n point.y += lineOffset;\n }\n }\n }\n }\n\n function adjustForTextOverlap(element) {\n let source = element.source;\n let target = element.target;\n\n let waypoints = element.waypoints;\n let startPoint = waypoints[0];\n let endPoint = waypoints[waypoints.length - 1];\n\n if (startPoint && endPoint && source && target) {\n checkIfPointOverlapsText(startPoint, source);\n checkIfPointOverlapsText(endPoint, source);\n }\n }\n\n function getLineOffset(element) {\n let id = element.id;\n let offset = 0;\n\n let objects = document.getElementsByClassName(\"djs-element djs-shape\");\n for (let i = 0; i < objects.length; i++) {\n let data_id = objects.item(i).getAttribute(\"data-element-id\");\n if (data_id === id) {\n let object = objects.item(i);\n let text = object.getElementsByTagName(\"text\")[0];\n let tspans = text.getElementsByTagName(\"tspan\");\n let tspan = tspans[tspans.length - 1];\n offset = tspan.getAttribute(\"y\");\n }\n }\n return offset - 70;\n }\n\n function fixConnectionInHTML(wantedConnection) {\n if (wantedConnection) {\n let polylines = wantedConnection.getElementsByTagName(\"polyline\");\n if (polylines.length > 1) {\n polylines[1].setAttribute(\n \"points\",\n polylines[0].getAttribute(\"points\")\n );\n }\n }\n }\n\n this.drawDSConnection = function (p, element) {\n let attrs = \"\";\n attrs = computeStyle(attrs, {\n stroke: \"#000000\",\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n strokeDasharray: \"5, 5\",\n });\n\n return svgAppend(p, createLine(element.waypoints, attrs));\n };\n\n this.drawAnnotation = function (parentGfx, element) {\n let style = {\n fill: \"none\",\n stroke: \"none\",\n };\n\n let text = element.businessObject.text || \"\";\n if (element.businessObject.text) {\n let height = getAnnotationBoxHeight();\n\n if (height === 0 && element.businessObject.number) {\n height = element.businessObject.number;\n }\n assign(element, {\n height: height,\n });\n\n // for some reason the keyword height is not exported, so we use another, which we know will be exported,\n // to ensure persistent annotation heights between sessions\n assign(element.businessObject, {\n number: height,\n });\n }\n\n let textElement = drawRect(\n parentGfx,\n element.width,\n element.height,\n 0,\n 0,\n style\n );\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n drawPath(parentGfx, textPathData, {\n stroke: \"black\",\n });\n\n renderLabel(parentGfx, text, {\n box: element,\n align: \"left-top\",\n padding: 5,\n style: {\n fill: \"black\",\n },\n });\n\n return textElement;\n };\n\n // draw helper functions\n function drawPath(parentGfx, d, attrs) {\n attrs = computeStyle(attrs, [\"no-fill\"], {\n strokeWidth: 2,\n stroke: \"black\",\n });\n\n let path = svgCreate(\"path\");\n svgAttr(path, { d: d });\n svgAttr(path, attrs);\n\n svgAppend(parentGfx, path);\n\n return path;\n }\n\n function drawRect(parentGfx, width, height, r, offset, attrs) {\n if (isObject(offset)) {\n attrs = offset;\n offset = 0;\n }\n\n offset = offset || 0;\n attrs = computeStyle(attrs, {\n stroke: \"black\",\n strokeWidth: 2,\n fill: \"white\",\n });\n\n let rect = svgCreate(\"rect\");\n svgAttr(rect, {\n x: offset,\n y: offset,\n width: width - offset * 2,\n height: height - offset * 2,\n rx: r,\n ry: r,\n });\n\n svgAttr(rect, attrs);\n svgAppend(parentGfx, rect);\n\n return rect;\n }\n\n // marker functions\n function marker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (!markers[id]) {\n createMarker(type, fill, stroke);\n }\n return \"url(#\" + id + \")\";\n }\n\n function createMarker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (type === \"activity\") {\n let sequenceflowEnd = svgCreate(\"path\");\n svgAttr(sequenceflowEnd, { d: \"M 1 5 L 11 10 L 1 15 Z\" });\n\n addMarker(id, {\n element: sequenceflowEnd,\n ref: { x: 11, y: 10 },\n scale: 0.5,\n attrs: {\n fill: stroke,\n stroke: stroke,\n },\n });\n }\n }\n\n function addMarker(id, options) {\n let attrs = assign(\n {\n fill: \"black\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeDasharray: \"none\",\n },\n options.attrs\n );\n\n let ref = options.ref || { x: 0, y: 0 };\n let scale = options.scale || 1;\n\n // resetting stroke dash array\n if (attrs.strokeDasharray === \"none\") {\n attrs.strokeDasharray = [10000, 1];\n }\n\n let marker = svgCreate(\"marker\");\n\n svgAttr(options.element, attrs);\n svgAppend(marker, options.element);\n svgAttr(marker, {\n id: id,\n viewBox: \"0 0 20 20\",\n refX: ref.x,\n refY: ref.y,\n markerWidth: 20 * scale,\n markerHeight: 20 * scale,\n orient: \"auto\",\n });\n\n let defs = domQuery(\"defs\", canvas._svg);\n if (!defs) {\n defs = svgCreate(\"defs\");\n svgAppend(canvas._svg, defs);\n }\n svgAppend(defs, marker);\n markers[id] = marker;\n }\n\n // path functions\n this.getWorkObjectPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getGroupPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getActivityPath = function (connection) {\n let waypoints = connection.waypoints.map(function (p) {\n return p.original || p;\n });\n\n let activityPath = [[\"M\", waypoints[0].x, waypoints[0].y]];\n\n waypoints.forEach(function (waypoint, index) {\n if (index !== 0) {\n activityPath.push([\"L\", waypoint.x, waypoint.y]);\n }\n });\n return componentsToPath(activityPath);\n };\n\n this.getActorPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n}\n\ninherits(DomainStoryRenderer, BaseRenderer);\n\nDomainStoryRenderer.$inject = [\n \"eventBus\",\n \"styles\",\n \"canvas\",\n \"textRenderer\",\n \"pathMap\",\n \"commandStack\",\n];\n\nDomainStoryRenderer.prototype.canRender = function (element) {\n return /^domainStory:/.test(element.type);\n};\n\nDomainStoryRenderer.prototype.drawShape = function (p, element) {\n // polyfill for tests\n if (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n }\n\n let type = element.type;\n element.businessObject.type = type;\n\n elementRegistry.correctInitialize();\n dirtyFlag.makeDirty();\n\n if (type.includes(elementTypes.ACTOR)) {\n return this.drawActor(p, element);\n } else if (type.includes(elementTypes.WORKOBJECT)) {\n return this.drawWorkObject(p, element);\n } else if (type.includes(elementTypes.TEXTANNOTATION)) {\n return this.drawAnnotation(p, element);\n } else if (type.includes(elementTypes.GROUP)) {\n return this.drawGroup(p, element);\n }\n};\n\nDomainStoryRenderer.prototype.getShapePath = function (shape) {\n let type = shape.type;\n\n if (type.includes(elementTypes.ACTOR)) {\n return this.getActorPath(shape);\n } else if (type.includes(elementTypes.WORKOBJECT)) {\n return this.getWorkObjectPath(shape);\n } else if (type.includes(elementTypes.GROUP)) {\n return this.getGroupPath(shape);\n }\n};\n\nDomainStoryRenderer.prototype.drawConnection = function (p, element) {\n let type = element.type;\n\n dirtyFlag.makeDirty();\n\n // fixes activities that were copy-pasted\n if (!element.businessObject.type) {\n element.businessObject.type = type;\n }\n if (type === elementTypes.ACTIVITY) {\n return this.drawActivity(p, element);\n } else if (type === elementTypes.CONNECTION) {\n return this.drawDSConnection(p, element);\n }\n};\n\n// creates a SVG path that describes a rectangle which encloses the given shape.\nfunction getRectPath(shape) {\n let offset = 5;\n let x = shape.x,\n y = shape.y,\n width = shape.width / 2 + offset,\n height = shape.height / 2 + offset;\n\n return [\n [\"M\", x, y],\n [\"l\", width, 0],\n [\"l\", width, height],\n [\"l\", -width, height],\n [\"l\", -width, 0],\n [\"z\"],\n ];\n}\n","\"use strict\";\n\nimport { assign, every, reduce } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport RuleProvider from \"diagram-js/lib/features/rules/RuleProvider\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { is } from \"./util\";\n\nconst HIGH_PRIORITY = 1500;\nconst MIN_SIZE = 125;\n\nfunction isDomainStory(element) {\n return element && /^domainStory:/.test(element.type);\n}\n\nfunction isDomainStoryGroup(element) {\n return element && /^domainStory:group/.test(element.type);\n}\n\nfunction isActor(element) {\n return element && /^domainStory:actor\\w*/.test(element.type);\n}\n\nfunction isWorkObject(element) {\n return element && /^domainStory:workObject/.test(element.type);\n}\n\nfunction isActivity(element) {\n return element && /^domainStory:activity/.test(element.type);\n}\n\nfunction isConnection(element) {\n return element && /^domainStory:connection/.test(element.type);\n}\n\nfunction isAnnotation(element) {\n return element && /^domainStory:textAnnotation/.test(element.type);\n}\n\n/**\n * can source and target be connected?\n */\nfunction canConnect(source, target) {\n // only judge about two custom elements\n if (\n isDomainStoryGroup(target) ||\n !isDomainStory(source) ||\n !isDomainStory(target)\n ) {\n return;\n }\n\n // do not allow a connection from one element to itself\n if (source === target) {\n return;\n }\n\n // do not allow a connection between two actors\n if (isActor(source) && isActor(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an activity\n if (isActivity(source) || isActivity(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an annotation connection\n if (isConnection(source) || isConnection(target)) {\n return;\n }\n\n // do not allow a connection to a connection(the special type of connection between an element and a comment box)\n // when the target is an annotation, the connection type is an annotation connection instead of an activity\n if (isAnnotation(target)) {\n return { type: elementTypes.CONNECTION };\n }\n\n return { type: elementTypes.ACTIVITY };\n}\n\nfunction canResize(shape, newBounds) {\n if (is(shape, elementTypes.GROUP)) {\n if (newBounds) {\n let lowerLeft = { x: shape.x, y: shape.y + shape.height };\n let lowerRight = { x: shape.x + shape.width, y: shape.y + shape.height };\n let upperRight = { x: shape.x + shape.width, y: shape.y };\n\n if (newBounds.x !== shape.x && newBounds.y !== shape.y) {\n // upper left\n if (newBounds.x > lowerRight.x - MIN_SIZE) {\n assign(newBounds, { x: lowerRight.x - MIN_SIZE });\n }\n if (newBounds.y > lowerRight.y - MIN_SIZE) {\n assign(newBounds, { y: lowerRight.y - MIN_SIZE });\n }\n }\n\n if (newBounds.x !== shape.x && newBounds.y === shape.y) {\n // lower left\n if (newBounds.x > upperRight.x - MIN_SIZE) {\n assign(newBounds, { x: upperRight.x - MIN_SIZE });\n }\n }\n\n if (newBounds.x === shape.x && newBounds.y !== shape.y) {\n // upper right\n if (newBounds.y > lowerLeft.y - MIN_SIZE) {\n assign(newBounds, { y: lowerLeft.y - MIN_SIZE });\n }\n }\n\n if (newBounds.height < MIN_SIZE) {\n assign(newBounds, {\n height: MIN_SIZE,\n });\n }\n if (newBounds.width < MIN_SIZE) {\n assign(newBounds, {\n width: MIN_SIZE,\n });\n }\n }\n return true;\n }\n\n return false;\n}\n\nfunction canAttach(elements, target, source) {\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n // disallow appending as boundary event\n if (source) {\n return false;\n }\n\n // only (re-)attach one element at a time\n if (elements.length !== 1) {\n return false;\n }\n\n // allow default move operation\n if (!target) {\n return true;\n }\n\n // only allow drop on DomainStory Elements\n if (!isDomainStory(target)) {\n return false;\n }\n\n return \"attach\";\n}\n\nfunction canConnectToAnnotation(source, target, connection) {\n // do not allow an activity connect to an annotation\n if (isActivity(connection) && isAnnotation(target)) {\n return false;\n }\n\n // do not allow an annotation connection between two annotations\n if (\n isConnection(connection) &&\n isAnnotation(source) &&\n isAnnotation(target)\n ) {\n return false;\n }\n\n // do not allow an annotation connection between an actor or workObject and anything except an annotation\n return !(\n isConnection(connection) &&\n !isAnnotation(target) &&\n (isActor(source) || isWorkObject(source))\n );\n}\n\n/**\n * specific rules for custom elements\n */\nexport default function DomainStoryRules(eventBus) {\n RuleProvider.call(this, eventBus);\n}\n\ninherits(DomainStoryRules, RuleProvider);\n\nDomainStoryRules.$inject = [\"eventBus\"];\n\nDomainStoryRules.prototype.init = function () {\n /**\n * can shape be created on target container?\n */\n function canCreate(shape, target) {\n // only judge about custom elements\n if (!isDomainStory(shape)) {\n return;\n }\n\n // allow creation just on groups\n return !isDomainStory(target) || isDomainStoryGroup(target);\n }\n\n this.addRule(\"elements.create\", function (context) {\n const elements = context.elements,\n position = context.position,\n target = context.target;\n\n return every(elements, function (element) {\n if (isConnection(element)) {\n return canConnect(element.source, element.target, element);\n }\n\n if (element.host) {\n return canAttach(element, element.host, null, position);\n }\n\n return canCreate(element, target, null, position);\n });\n });\n\n this.addRule(\"elements.move\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shapes = context.shapes;\n\n let type;\n\n // do not allow mixed movements of custom / BPMN shapes\n // if any shape cannot be moved, the group cannot be moved, too\n\n // reject, if we have at least one\n // custom element that cannot be moved\n return reduce(\n shapes,\n function (result, s) {\n if (type === undefined) {\n type = isDomainStory(s);\n }\n\n if (type !== isDomainStory(s) || result === false) {\n return false;\n }\n\n return canCreate(s, target);\n },\n undefined\n );\n });\n\n this.addRule(\"shape.create\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shape = context.shape;\n\n return canCreate(shape, target);\n });\n\n this.addRule(\"connection.create\", HIGH_PRIORITY, function (context) {\n let source = context.source,\n target = context.target;\n\n return canConnect(source, target);\n });\n\n this.addRule(\"connection.reconnect\", HIGH_PRIORITY, function (context) {\n let connection = context.connection,\n source = context.hover || context.source,\n target = context.target;\n\n // --------------------------------------------------------------\n let result = canConnectToAnnotation(source, target, connection);\n\n if (!result) {\n return;\n }\n\n // --------------------------------------------------------------\n\n return canConnect(source, target, connection);\n });\n\n this.addRule(\"shape.resize\", function (context) {\n let shape = context.shape,\n newBounds = context.newBounds;\n\n return canResize(shape, newBounds);\n });\n};\n\nDomainStoryRules.prototype.canConnect = canConnect;\nDomainStoryRules.prototype.canAttach = canAttach;\nDomainStoryRules.prototype.isDomainStory = isDomainStory;\nDomainStoryRules.prototype.canResize = canResize;\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport { pick, assign } from \"min-dash\";\n\nimport CommandInterceptor from \"diagram-js/lib/command/CommandInterceptor\";\n\nimport {\n add as collectionAdd,\n remove as collectionRemove,\n} from \"diagram-js/lib/util/Collections\";\n\nimport { reworkGroupElements } from \"./util\";\nimport { elementTypes } from \"../../Domain/Common/elementTypes\";\n\n/**\n * a handler responsible for updating the custom element's businessObject\n * once changes on the diagram happen.\n */\nexport default function DomainStoryUpdater(eventBus, bpmnjs) {\n CommandInterceptor.call(this, eventBus);\n\n function updateCustomElement(e) {\n let context = e.context,\n shape = context.shape,\n businessObject = shape.businessObject;\n\n if (!shape || !shape.type.includes(elementTypes.DOMAINSTORY)) {\n return;\n }\n\n let parent = shape.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // save custom element position\n assign(businessObject, pick(shape, [\"x\", \"y\"]));\n\n // save custom element size if resizable\n if (shape.type === elementTypes.GROUP) {\n assign(businessObject, pick(shape, [\"height\", \"width\"]));\n\n // rework the child-parent relations if a group was moved, such that all Objects that are visually in the group are also associated with it\n // since we do not have access to the standard-canvas object here, we cannot use the function correctGroupChildren() from DSLabelUtil\n if (parent != null) {\n reworkGroupElements(parent, shape);\n }\n }\n if (\n shape &&\n shape.parent &&\n \"type\" in shape.parent &&\n shape.parent.type === elementTypes.GROUP\n ) {\n assign(businessObject, {\n parent: shape.parent.id,\n });\n }\n }\n\n function updateCustomConnection(e) {\n let context = e.context,\n connection = context.connection,\n source = connection.source,\n target = connection.target,\n businessObject = connection.businessObject;\n\n if (e.newTarget) {\n target = e.newTarget;\n }\n if (e.newSource) {\n source = e.newSource;\n }\n\n let parent = connection.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // update waypoints\n assign(businessObject, {\n waypoints: copyWaypoints(connection),\n });\n\n if (source) {\n if (!businessObject.source) {\n assign(businessObject, { source: source.id });\n } else {\n businessObject.source = source.id;\n }\n }\n if (target) {\n if (!businessObject.target) {\n assign(businessObject, { target: target.id });\n } else {\n businessObject.target = target.id;\n }\n }\n }\n\n function copyWaypoints(connection) {\n return connection.waypoints.map(function (p) {\n if (p.original) {\n return {\n original: {\n x: p.original.x,\n y: p.original.y,\n },\n x: p.x,\n y: p.y,\n };\n } else {\n return {\n x: p.x,\n y: p.y,\n };\n }\n });\n }\n\n this.executed(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement)\n );\n\n this.reverted(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement)\n );\n\n this.executed(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection)\n );\n\n this.reverted(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection)\n );\n}\n\n// check if element in the context of an event is a domainStory element\nfunction ifDomainStoryElement(fn) {\n return (event) => {\n const context = event.context;\n const element = context.shape || context.connection;\n\n if (isDomainStory(element)) {\n fn(event);\n }\n };\n}\n\nfunction isDomainStory(element) {\n return element && /domainStory:/.test(element.type);\n}\n\ninherits(DomainStoryUpdater, CommandInterceptor);\n\nDomainStoryUpdater.$inject = [\"eventBus\", \"bpmnjs\"];\n","\"use strict\";\n\nimport DomainStoryElementFactory from \"./domainStoryElementFactory\";\nimport DomainStoryRenderer from \"./domainStoryRenderer\";\nimport DomainStoryPalette from \"./palette/domainStoryPalette\";\nimport DomainStoryRules from \"./domainStoryRules\";\nimport DomainStoryUpdater from \"./domainStoryUpdater\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"./updateHandler/updateLabelHandler\";\nimport headlineAndDescriptionUpdateHandler from \"./updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryContextPadProvider from \"./context-pad/domainStoryContextPadProvider\";\nimport ReplaceMenuProvider from \"./change-icon/replaceMenuProvider\";\nimport DSModeling from \"./modeling/dSModeling\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n remove as svgRemove,\n} from \"tiny-svg\";\n\nimport { translate } from \"diagram-js/lib/util/SvgTransformUtil\";\nimport { elementTypes } from \"../../../Domain/Common/elementTypes\";\nimport { is } from \"../util\";\n\nconst MARKER_HIDDEN = \"djs-element-hidden\",\n MARKER_LABEL_HIDDEN = \"djs-label-hidden\";\n\nlet annotationBoxHeight = 0;\n\nexport function getAnnotationBoxHeight() {\n return annotationBoxHeight;\n}\n\nexport default function DSLabelEditingPreview(eventBus, canvas, pathMap) {\n let self = this;\n\n let defaultLayer = canvas.getDefaultLayer();\n let element, absoluteElementBBox, gfx;\n\n eventBus.on(\"directEditing.activate\", function (context) {\n let activeProvider = context.active;\n\n element = activeProvider.element.label || activeProvider.element;\n\n // text annotation\n if (is(element, elementTypes.TEXTANNOTATION)) {\n absoluteElementBBox = canvas.getAbsoluteBBox(element);\n\n gfx = svgCreate(\"g\");\n\n annotationBoxHeight = element.height;\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n let path = (self.path = svgCreate(\"path\"));\n\n svgAttr(path, {\n d: textPathData,\n strokeWidth: 2,\n stroke: getStrokeColor(element),\n });\n\n svgAppend(gfx, path);\n\n svgAppend(defaultLayer, gfx);\n\n translate(gfx, element.x, element.y);\n }\n\n if (is(element, elementTypes.TEXTANNOTATION) || element.labelTarget) {\n canvas.addMarker(element, MARKER_HIDDEN);\n } else if (\n element.type.includes(elementTypes.ACTOR) ||\n element.type.includes(elementTypes.WORKOBJECT) ||\n element.type.includes(elementTypes.ACTIVITY) ||\n element.type.includes(elementTypes.GROUP)\n ) {\n canvas.addMarker(element, MARKER_LABEL_HIDDEN);\n }\n });\n\n eventBus.on(\"directEditing.resize\", function (context) {\n // text annotation\n if (is(element, elementTypes.TEXTANNOTATION)) {\n let height = context.height,\n dy = context.dy;\n\n let newElementHeight = Math.max(\n (element.height / absoluteElementBBox.height) * (height + dy),\n 0\n );\n annotationBoxHeight = newElementHeight;\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: newElementHeight,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n svgAttr(self.path, {\n d: textPathData,\n });\n }\n });\n\n eventBus.on(\n [\"directEditing.complete\", \"directEditing.cancel\"],\n function (context) {\n let activeProvider = context.active;\n\n if (activeProvider) {\n canvas.removeMarker(\n activeProvider.element.label || activeProvider.element,\n MARKER_HIDDEN\n );\n canvas.removeMarker(element, MARKER_LABEL_HIDDEN);\n }\n\n element = undefined;\n absoluteElementBBox = undefined;\n\n if (gfx) {\n svgRemove(gfx);\n\n gfx = undefined;\n }\n }\n );\n}\n\nDSLabelEditingPreview.$inject = [\"eventBus\", \"canvas\", \"pathMap\"];\n\n// helpers ///////////////////\n\nfunction getStrokeColor() {\n return \"black\";\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport { autocomplete, getLabel } from \"./dsLabelUtil\";\n\nimport { isAny } from \"bpmn-js/lib/features/modeling/util/ModelingUtil\";\n\nimport {\n getExternalLabelMid,\n hasExternalLabel,\n isLabel,\n isLabelExternal,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { elementTypes } from \"../../../Domain/Common/elementTypes\";\nimport { is } from \"../util\";\n\nlet dictionaryService;\n\nlet numberStash = 0;\nlet stashUse = false;\n\nexport function initializeLabelEditingProvider(labelingDictionary) {\n dictionaryService = labelingDictionary;\n}\n\nexport function getNumberStash() {\n let number = { use: stashUse, number: numberStash };\n stashUse = false;\n return number;\n}\n\nexport function toggleStashUse(use) {\n stashUse = use;\n}\n\nexport function focusElement(element) {\n // Opening a Angular Dialog seems to mess with the focus logic somehow.\n // My guess is that is makes the mousedown event passive, which prevents \"preventDefault\" from intercepting.\n // I am not sure how to fix it, but this seems to be a workaround.\n setTimeout(() => element.focus(), 0);\n}\n\nexport default function DSLabelEditingProvider(\n eventBus,\n canvas,\n directEditing,\n modeling,\n resizeHandles,\n textRenderer,\n updateLabelHandler\n) {\n this._canvas = canvas;\n this._modeling = modeling;\n this._textRenderer = textRenderer;\n this._updateLabelHandler = updateLabelHandler;\n\n directEditing.registerProvider(this);\n\n // listen to dblclick on non-root elements\n eventBus.on(\"element.dblclick\", function (event) {\n activateDirectEdit(event.element, true);\n if (is(event.element, elementTypes.ACTIVITY)) {\n // if we edit an activity, we do not want the standard editing box\n numberStash = event.element.businessObject.number;\n stashUse = true;\n directEditing.complete();\n }\n });\n\n // complete on followup canvas operation\n eventBus.on(\n [\n \"element.mousedown\",\n \"drag.init\",\n \"canvas.viewbox.changing\",\n \"autoPlace\",\n \"popupMenu.open\",\n ],\n function () {\n if (directEditing.isActive()) {\n directEditing.complete();\n }\n }\n );\n\n // cancel on command stack changes\n eventBus.on([\"commandStack.changed\"], function () {\n if (directEditing.isActive()) {\n directEditing.cancel();\n }\n });\n\n eventBus.on(\"directEditing.activate\", function (event) {\n resizeHandles.removeResizers();\n let element = event.active.element;\n createAutocomplete(element);\n });\n\n eventBus.on(\"create.end\", 500, function (event) {\n let element = event.shape,\n canExecute = event.context.canExecute,\n isTouch = event.isTouch;\n\n if (isTouch) {\n return;\n }\n\n if (!canExecute) {\n return;\n }\n if (!is(element, elementTypes.ACTIVITY)) {\n activateDirectEdit(element);\n }\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\"\n );\n focusElement(editingBox.item(0));\n });\n\n eventBus.on(\"autoPlace.end\", 500, function (event) {\n activateDirectEdit(event.shape);\n });\n\n function activateDirectEdit(element, force) {\n if (\n force ||\n isAny(element, [elementTypes.TEXTANNOTATION]) ||\n element.businessObject.type.includes(elementTypes.DOMAINSTORY)\n ) {\n directEditing.activate(element);\n }\n }\n\n function createAutocomplete(element) {\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\"\n );\n focusElement(editingBox.item(0));\n autocomplete(\n editingBox[0],\n dictionaryService.getUniqueWorkObjectNames(),\n element,\n eventBus\n );\n }\n}\n\nDSLabelEditingProvider.$inject = [\n \"eventBus\",\n \"canvas\",\n \"directEditing\",\n \"modeling\",\n \"resizeHandles\",\n \"textRenderer\",\n \"updateLabelHandler\",\n];\n\n/**\n * activate direct editing for activities and text annotations.\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object with properties bounds (position and size), text and options\n */\nDSLabelEditingProvider.prototype.activate = function (element) {\n // text\n if (element.id === \"__implicitrootbase\") {\n return;\n }\n let text = getLabel(element);\n\n if (text === undefined) {\n return;\n }\n\n let context = {\n text: text,\n };\n\n // bounds\n let bounds = this.getEditingBBox(element);\n\n assign(context, bounds);\n\n let options = {};\n\n // external labels\n if (isLabelExternal(element)) {\n assign(options, {\n autoResize: true,\n });\n }\n\n // text annotations\n if (is(element, elementTypes.TEXTANNOTATION)) {\n assign(options, {\n resizable: true,\n autoResize: true,\n });\n }\n\n assign(context, {\n options: options,\n });\n\n return context;\n};\n\n/**\n * get the editing bounding box based on the element's size and position\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object containing information about position\n * and size (fixed or minimum and/or maximum)\n */\nDSLabelEditingProvider.prototype.getEditingBBox = function (element) {\n let canvas = this._canvas;\n\n let target = element.label || element;\n\n let bbox = canvas.getAbsoluteBBox(target);\n\n let mid = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2,\n };\n\n // default position\n let bounds = { x: bbox.x, y: bbox.y };\n\n /** The cavnas is an Object from BPMN, the IDE might say, that zoom is deprecated,\n * because it thinks canvas is the standard HTMLElement. -> Needs to stay toom **/\n let zoom = canvas.zoom();\n let defaultStyle = this._textRenderer.getDefaultStyle(),\n externalStyle = this._textRenderer.getExternalStyle();\n\n // take zoom into account\n let externalFontSize = externalStyle.fontSize * zoom,\n externalLineHeight = externalStyle.lineHeight,\n defaultFontSize = defaultStyle.fontSize * zoom,\n defaultLineHeight = defaultStyle.lineHeight;\n\n let style = {\n fontFamily: this._textRenderer.getDefaultStyle().fontFamily,\n fontWeight: this._textRenderer.getDefaultStyle().fontWeight,\n };\n\n // adjust for groups\n if (is(element, elementTypes.GROUP)) {\n assign(bounds, {\n minWidth: bbox.width / 2.5 > 125 ? bbox.width / 2.5 : 125,\n maxWidth: bbox.width,\n minHeight: 30 * zoom,\n x: bbox.x,\n y: bbox.y,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n textAlign: \"left\",\n });\n }\n\n // internal labels for tasks and collapsed call activities,\n // sub processes and participants\n if (\n /^domainStory:actor\\w*/.test(element.type) ||\n /^domainStory:workObject\\w*/.test(element.type)\n ) {\n assign(bounds, {\n width: bbox.width,\n minHeight: 30,\n y: bbox.y + bbox.height - 20,\n x: bbox.x,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n });\n }\n\n let width = 90 * zoom,\n paddingTop = 7 * zoom,\n paddingBottom = 4 * zoom;\n\n // external labels for events, data elements, gateways and connections\n if (target.labelTarget) {\n assign(bounds, {\n width: width,\n height: bbox.height + paddingTop + paddingBottom,\n x: mid.x - width / 2,\n y: bbox.y - paddingTop,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // external label not yet created\n if (\n isLabelExternal(target) &&\n !hasExternalLabel(target) &&\n !isLabel(target)\n ) {\n let externalLabelMid = getExternalLabelMid(element);\n\n let absoluteBBox = canvas.getAbsoluteBBox({\n x: externalLabelMid.x,\n y: externalLabelMid.y,\n width: 0,\n height: 0,\n });\n\n let height = externalFontSize + paddingTop + paddingBottom;\n\n assign(bounds, {\n width: width,\n height: height,\n x: absoluteBBox.x - width / 2,\n y: absoluteBBox.y - height / 2,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // text annotations\n if (is(element, elementTypes.TEXTANNOTATION)) {\n assign(bounds, {\n width: bbox.width,\n height: bbox.height,\n minWidth: 30 * zoom,\n minHeight: 10 * zoom,\n });\n\n assign(style, {\n textAlign: \"left\",\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n });\n }\n\n return { bounds: bounds, style: style };\n};\n\nDSLabelEditingProvider.prototype.update = function (\n element,\n newLabel,\n activeContextText,\n bounds\n) {\n let newBounds, bbox;\n\n if (is(element, elementTypes.TEXTANNOTATION)) {\n bbox = this._canvas.getAbsoluteBBox(element);\n\n newBounds = {\n x: element.x,\n y: element.y,\n width: (element.width / bbox.width) * bounds.width,\n height: (element.height / bbox.height) * bounds.height,\n };\n }\n\n this._modeling.updateLabel(element, newLabel, newBounds);\n};\n","\"use strict\";\n\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { is } from \"../util\";\n\nfunction getLabelAttr(semantic) {\n if (\n semantic.type.includes(elementTypes.ACTOR) ||\n semantic.type.includes(elementTypes.WORKOBJECT) ||\n semantic.type.includes(elementTypes.ACTIVITY) ||\n semantic.type.includes(elementTypes.GROUP)\n ) {\n return \"name\";\n }\n\n if (is(semantic, elementTypes.TEXTANNOTATION)) {\n return \"text\";\n }\n}\n\nfunction getNumberAttr(semantic) {\n if (is(semantic, elementTypes.ACTIVITY)) {\n return \"number\";\n }\n}\n\nexport function getLabel(element) {\n let semantic;\n if (element.businessObject) {\n semantic = element.businessObject;\n } else {\n semantic = element;\n }\n let attr = getLabelAttr(semantic);\n if (attr && semantic) {\n return semantic[attr] || \"\";\n }\n}\n\nexport function getNumber(element) {\n let semantic = element.businessObject,\n attr = getNumberAttr(semantic);\n\n if (attr) {\n return semantic[attr] || \"\";\n }\n}\n\nexport function setLabel(element, text) {\n let semantic;\n if (element.businessObject) {\n semantic = element.businessObject;\n } else {\n semantic = element;\n }\n let attr = getLabelAttr(semantic);\n\n if (attr) {\n semantic[attr] = text;\n }\n return element;\n}\n\nexport function setNumber(element, textNumber) {\n let semantic = element.businessObject,\n attr = getNumberAttr(semantic);\n\n if (attr) {\n semantic[attr] = textNumber;\n }\n\n return element;\n}\n\n// select at which part of the activity the label should be attached to\nexport function selectPartOfActivity(waypoints, angleActivity) {\n let selectedActivity = 0;\n let linelength = 49;\n\n for (let i = 0; i < waypoints.length; i++) {\n if (angleActivity[i] === 0 || angleActivity[i] === 180) {\n let length = Math.abs(waypoints[i].x - waypoints[i + 1].x);\n if (length > linelength) {\n selectedActivity = i;\n }\n }\n }\n return selectedActivity;\n}\n\n// approximate the width of the label text, standard fontsize: 11\nexport function calculateTextWidth(text) {\n if (!text) {\n return 0;\n }\n\n let fontsize = text.length * 5.1;\n fontsize = fontsize / 2;\n\n // add an initial offset to the absolute middle of the activity\n fontsize += 20;\n return fontsize;\n}\n\n/**\n * copied from https://www.w3schools.com/howto/howto_js_autocomplete.asp on 18.09.2018\n */\nexport function autocomplete(input, workObjectNames, element, eventBus) {\n closeAllLists();\n\n /* the autocomplete function takes three arguments,\n the text field element and an array of possible autocompleted values and an optional element to which it is appended:*/\n let currentFocus, filteredWorkObjectNames;\n\n /* execute a function when someone writes in the text field:*/\n input.addEventListener(\"input\", function () {\n if (workObjectNames.length === 0) {\n return;\n }\n\n /* the direct editing field of actors and workobjects is a recycled html-element and has old values that need to be overridden*/\n if (element.type.includes(elementTypes.WORKOBJECT)) {\n this.value = this.innerHTML;\n }\n let autocompleteList,\n autocompleteItem,\n val = this.value;\n\n /* close any already open lists of autocompleted values*/\n closeAllLists();\n currentFocus = -1;\n\n /* create a DIV element that will contain the items (values):*/\n autocompleteList = document.createElement(\"DIV\");\n autocompleteList.setAttribute(\"id\", \"autocomplete-list\");\n autocompleteList.setAttribute(\"class\", \"autocomplete-items\");\n\n /* append the DIV element as a child of the autocomplete container:*/\n this.parentNode.appendChild(autocompleteList);\n\n /* for each item in the array...*/\n filteredWorkObjectNames = [];\n for (const name of workObjectNames) {\n /* check if the item starts with the same letters as the text field value:*/\n if (val) {\n if (name.substring(0, val.length).toUpperCase() === val.toUpperCase()) {\n /* create a DIV element for each matching element:*/\n autocompleteItem = document.createElement(\"DIV\");\n\n /* make the matching letters bold:*/\n autocompleteItem.innerHTML =\n \"\" +\n name.substring(0, val.length) +\n \"\" +\n name.substring(val.length);\n\n /* insert an input field that will hold the current name:*/\n autocompleteItem.innerHTML +=\n \"\";\n autocompleteList.appendChild(autocompleteItem);\n\n filteredWorkObjectNames.push(name);\n }\n }\n }\n\n // if we edit an actor, we do not want auto-complete, since actors generally are unique\n if (element.type.includes(elementTypes.ACTOR)) {\n autocompleteList.style.visibility = \"hidden\";\n }\n });\n\n /* execute a function presses a key on the keyboard:*/\n input.onkeydown = function (e) {\n let autocompleteList = document.getElementById(\"autocomplete-list\");\n if (autocompleteList) {\n autocompleteList = autocompleteList.getElementsByTagName(\"div\");\n }\n if (e.keyCode === 40) {\n /* If the arrow DOWN key is pressed,\n increase the currentFocus letiable:*/\n currentFocus++;\n\n /* and and make the current item more visible:*/\n addActive(autocompleteList);\n } else if (e.keyCode === 38) {\n // up\n /* If the arrow UP key is pressed,\n decrease the currentFocus letiable:*/\n currentFocus--;\n\n /* and and make the current item more visible:*/\n addActive(autocompleteList);\n } else if (e.keyCode === 13) {\n e.preventDefault();\n /* If the ENTER key is pressed, prevent the form from being submitted,*/\n if (currentFocus > -1) {\n element.businessObject.name = filteredWorkObjectNames[currentFocus];\n eventBus.fire(\"element.changed\", { element });\n }\n }\n };\n\n function addActive(autocompleteList) {\n /* a function to classify an item as \"active\":*/\n if (!autocompleteList || autocompleteList.length < 1) return false;\n\n /* start by removing the \"active\" class on all items:*/\n removeActive(autocompleteList);\n if (currentFocus >= autocompleteList.length) currentFocus = 0;\n if (currentFocus < 0) currentFocus = autocompleteList.length - 1;\n\n /* add class \"autocomplete-active\":*/\n autocompleteList[currentFocus].classList.add(\"autocomplete-active\");\n }\n\n function removeActive(autocompleteList) {\n /* a function to remove the \"active\" class from all autocomplete items:*/\n if (autocompleteList.length > 1) {\n for (const item of autocompleteList) {\n item.classList.remove(\"autocomplete-active\");\n }\n }\n }\n\n function closeAllLists(survivor) {\n /* close all autocomplete lists in the document,\n except the one passed as an argument:*/\n let autocompleteList =\n document.getElementsByClassName(\"autocomplete-items\");\n for (const item of autocompleteList) {\n if (survivor != item && survivor != input) {\n item.parentNode.removeChild(item);\n }\n }\n }\n\n /* execute a function when someone clicks in the document:*/\n document.addEventListener(\"click\", function (e) {\n closeAllLists(e.target);\n });\n}\n","\"use strict\";\n\nimport ChangeSupportModule from \"diagram-js/lib/features/change-support\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport DirectEditingModule from \"diagram-js-direct-editing\";\n\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"../updateHandler/updateLabelHandler\";\nimport DSLabelEditingPreview from \"./dsLabelEditingPreview\";\nimport DSLabelEditingProvider from \"./dsLabelEditingProvider\";\nimport DSModeling from \"../modeling/dSModeling\";\n\nexport default {\n __depends__: [ChangeSupportModule, ResizeModule, DirectEditingModule],\n __init__: [\"dSlabelEditingProvider\", \"dSlabelEditingPreview\"],\n dSlabelEditingProvider: [\"type\", DSLabelEditingProvider],\n dSlabelEditingPreview: [\"type\", DSLabelEditingPreview],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n commandStack: [\"type\", CommandStack],\n modeling: [\"type \", DSModeling],\n};\n","\"use strict\";\n\nimport { selectPartOfActivity } from \"./dsLabelUtil\";\nimport { angleBetween } from \"../../../Utils/mathExtensions\";\n\nexport function countLines(str) {\n return str.split(/\\r\\n|\\r|\\n/).length;\n}\n\n// determine the position of the label at the activity\nexport function labelPosition(waypoints, lines = 1) {\n let amountWaypoints = waypoints.length;\n let determinedPosition;\n let xPos;\n let yPos;\n\n if (amountWaypoints > 2) {\n let angleActivity = new Array(amountWaypoints - 1);\n for (let i = 0; i < amountWaypoints - 1; i++) {\n // calculate the angles of the activities\n angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]);\n }\n\n let selectedActivity = selectPartOfActivity(waypoints, angleActivity);\n\n xPos = labelPositionX(\n waypoints[selectedActivity],\n waypoints[selectedActivity + 1]\n );\n yPos = labelPositionY(\n waypoints[selectedActivity],\n waypoints[selectedActivity + 1],\n lines\n );\n\n determinedPosition = {\n x: xPos,\n y: yPos,\n selected: selectedActivity,\n };\n\n return determinedPosition;\n } else {\n xPos = labelPositionX(waypoints[0], waypoints[1]);\n yPos = labelPositionY(waypoints[0], waypoints[1], lines);\n\n determinedPosition = {\n x: xPos,\n y: yPos,\n selected: 0,\n };\n\n return determinedPosition;\n }\n}\n\n// calculate the X position of the label\nexport function labelPositionX(startPoint, endPoint) {\n let angle = angleBetween(startPoint, endPoint);\n let offsetX = 0;\n let scaledAngle = 0;\n if (angle === 0 || angle === 180 || angle === 90 || angle === 270) {\n offsetX = 0;\n } else if (angle > 0 && angle < 90) {\n // endpoint in upper right quadrant\n offsetX = 5 - angle / 6;\n } else if (angle > 90 && angle < 180) {\n // endpoint in upper left quadrant\n scaledAngle = angle - 90;\n offsetX = 5 - scaledAngle / 18;\n } else if (angle > 180 && angle < 270) {\n // endpoint in lower left quadrant\n scaledAngle = angle - 180;\n offsetX = scaledAngle / 18;\n } else if (angle > 270) {\n // endpoint in lower right quadrant\n scaledAngle = angle - 270;\n offsetX = 5 - scaledAngle / 6;\n }\n return offsetX + (startPoint.x + endPoint.x) / 2;\n}\n\n// calculate the Y position of the label\nexport function labelPositionY(startPoint, endPoint, lines = 1) {\n let angle = angleBetween(startPoint, endPoint);\n let offsetY = 0;\n let scaledAngle = 0;\n\n if (angle === 0 || angle === 180) {\n offsetY = 15;\n } else if (angle === 90 || angle === 270) {\n offsetY = 0;\n } else if (angle > 0 && angle < 90) {\n // endpoint in upper right quadrant\n offsetY = 15 - angle / 6;\n } else if (angle > 90 && angle < 180) {\n // endpoint in upper left quadrant\n scaledAngle = angle - 90;\n offsetY = (-scaledAngle / 9) * lines;\n } else if (angle > 180 && angle < 270) {\n // endpoint in lower left quadrant\n scaledAngle = angle - 180;\n offsetY = 15 - scaledAngle / 3;\n } else if (angle > 270) {\n // endpoint in lower right quadrant\n scaledAngle = angle - 270;\n offsetY = (-scaledAngle / 9) * lines;\n }\n return offsetY + (startPoint.y + endPoint.y) / 2;\n}\n","\"use strict\";\n\nimport Modeling from \"bpmn-js/lib/features/modeling/Modeling\";\n\nimport { inherits } from \"util\";\n\nexport default function DSModeling(\n eventBus,\n elementFactory,\n commandStack,\n domainStoryRules\n) {\n Modeling.call(this, eventBus, elementFactory, commandStack, domainStoryRules);\n}\n\nModeling.prototype.updateLabel = function (element, newLabel, newBounds) {\n if (\n element.businessObject\n ? newLabel !== element.businessObject.name\n : newLabel !== element.name\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.updateNumber = function (element, newNumber, newBounds) {\n if (\n element.businessObject\n ? newNumber !== element.businessObject.number\n : newNumber !== element.number\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.replaceShape = function (oldShape, newShape, hints) {\n let context = {\n oldShape: oldShape,\n newData: newShape,\n hints: hints || {},\n };\n\n this._commandStack.execute(\"shape.replace\", context);\n return context.newShape;\n};\n\nModeling.prototype.removeGroup = function (element) {\n this._commandStack.execute(\"shape.removeGroupWithoutChildren\", {\n element: element,\n });\n this.removeElements({ element });\n};\n\ninherits(DSModeling, Modeling);\n\nDSModeling.$inject = [\n \"eventBus\",\n \"elementFactory\",\n \"commandStack\",\n \"domainStoryRules\",\n];\n","\"use strict\";\n\nimport DomainStoryPalette from \"../palette/domainStoryPalette\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"../updateHandler/updateLabelHandler\";\nimport DomainStoryUpdater from \"../domainStoryUpdater\";\nimport DomainStoryElementFactory from \"../domainStoryElementFactory\";\nimport headlineAndDescriptionUpdateHandler from \"../updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryRenderer from \"../domainStoryRenderer\";\nimport DSModeling from \"./dSModeling\";\nimport DomainStoryRules from \"../domainStoryRules\";\nimport ReplaceMenuProvider from \"../change-icon/replaceMenuProvider\";\nimport DomainStoryContextPadProvider from \"../context-pad/domainStoryContextPadProvider\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport { labelPosition } from \"../labeling/position\";\nimport { angleBetween } from \"../../../Utils/mathExtensions\";\n\nlet numberRegistry = [];\nlet multipleNumberRegistry = [false];\n\nlet canvasElementRegistry;\n\nexport function initializeNumbering(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\n// defines the box for activity numbers\nexport function numberBoxDefinitions(element) {\n let alignment = \"center\";\n let boxWidth = 30;\n let boxHeight = 30;\n let position = labelPosition(element.waypoints);\n let angle = 0;\n if (element.waypoints.length > 1) {\n angle = angleBetween(\n element.waypoints[element.waypoints.length - 2],\n element.waypoints[element.waypoints.length - 1]\n );\n }\n let x = position.x;\n let y = position.y;\n\n // TODO: Use trigonometric functions to make the positioning more consistent.\n // This would require to touch the label code as well.\n if (angle >= 0 && angle <= 45) {\n y = y - 30 + angle / 2;\n x = x - 25 - angle / 2;\n } else if (angle <= 90) {\n y = y - 10 + (angle - 45) / 4.5;\n x = x - 35 - angle / 9;\n } else if (angle <= 145) {\n y = y + angle / 7.25;\n x = x - 45 - angle / 14.5;\n } else if (angle < 180) {\n y = y + 20 + angle / 9;\n x = x - 50 + angle / 4.5;\n } else if (angle <= 225) {\n y = y - 45 + angle / 12.25;\n x = x + 10 - angle / 6.125;\n } else if (angle <= 270) {\n y = y - 80 + angle / 3.375;\n x = x - 5 - angle / 6.125;\n } else if (angle <= 315) {\n y = y - 135 + angle / 2;\n x = x - 50;\n } else {\n y = y + 22.5 + (angle - 315) / 6;\n x = x - 50 + (angle - 315) / 1.8;\n }\n\n return {\n textAlign: alignment,\n width: boxWidth,\n height: boxHeight,\n x: x,\n y: y,\n };\n}\n\n// determine the next available number that is not yet used\nexport function generateAutomaticNumber(elementActivity, commandStack) {\n const semantic = elementActivity.businessObject;\n const usedNumbers = [0];\n let wantedNumber = -1;\n\n const activitiesFromActors = canvasElementRegistry.getActivitiesFromActors();\n\n activitiesFromActors.forEach((element) => {\n if (element.businessObject.number) {\n usedNumbers.push(+element.businessObject.number);\n }\n });\n for (let i = 0; i < usedNumbers.length; i++) {\n if (!usedNumbers.includes(i)) {\n if (!usedNumbers.includes(i)) {\n wantedNumber = i;\n i = usedNumbers.length;\n }\n }\n }\n if (wantedNumber === -1) {\n wantedNumber = usedNumbers.length;\n }\n\n updateExistingNumbersAtGeneration(\n activitiesFromActors,\n wantedNumber,\n commandStack\n );\n semantic.number = wantedNumber;\n return wantedNumber;\n}\n\n// update the numbers at the activities when generating a new activity\nexport function updateExistingNumbersAtGeneration(\n activitiesFromActors,\n wantedNumber,\n commandStack\n) {\n activitiesFromActors.forEach((element) => {\n let number = +element.businessObject.number;\n\n if (number >= wantedNumber) {\n wantedNumber++;\n setTimeout(function () {\n commandStack.execute(\"activity.changed\", {\n businessObject: element.businessObject,\n newLabel: element.businessObject.name,\n newNumber: number,\n element: element,\n });\n }, 10);\n }\n });\n}\n\n// update the numbers at the activities when editing an activity\nexport function updateExistingNumbersAtEditing(\n activitiesFromActors,\n wantedNumber,\n eventBus\n) {\n // get a sorted list of all activities that could need changing\n let sortedActivities = [[]];\n activitiesFromActors.forEach((activity) => {\n if (!sortedActivities[activity.businessObject.number]) {\n sortedActivities[activity.businessObject.number] = [];\n }\n sortedActivities[activity.businessObject.number].push(activity);\n });\n\n // set the number of each activity to the next highest number, starting from the number, we overrode\n let currentNumber = wantedNumber;\n for (\n currentNumber;\n currentNumber < sortedActivities.length;\n currentNumber++\n ) {\n if (sortedActivities[currentNumber]) {\n wantedNumber++;\n setNumberOfActivity(\n sortedActivities[currentNumber],\n wantedNumber,\n eventBus\n );\n }\n }\n}\n\n// get the IDs of activities with their associated number, only returns activities that are originating from an actor\nexport function getNumbersAndIDs() {\n let iDWithNumber = [];\n let activities = canvasElementRegistry.getActivitiesFromActors();\n\n for (let i = activities.length - 1; i >= 0; i--) {\n let id = activities[i].businessObject.id;\n let number = activities[i].businessObject.number;\n iDWithNumber.push({ id: id, number: number });\n }\n return iDWithNumber;\n}\n\nexport function addNumberToRegistry(renderedNumber, number) {\n numberRegistry[number] = renderedNumber;\n}\n\nexport function setNumberIsMultiple(number, multi) {\n multipleNumberRegistry[number] = multi;\n}\n\n/**\n * @returns copy of registry\n */\nexport function getNumberRegistry() {\n return numberRegistry.slice(0);\n}\n\nexport function getMultipleNumberRegistry() {\n return multipleNumberRegistry.slice(0);\n}\n\nfunction setNumberOfActivity(elementArray, wantedNumber, eventBus) {\n if (elementArray) {\n elementArray.forEach((element) => {\n if (element) {\n let businessObject = element.businessObject;\n if (businessObject) {\n businessObject.number = wantedNumber;\n }\n eventBus.fire(\"element.changed\", { element });\n }\n });\n }\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\nimport { overrideAppendedIcons } from \"src/app/Domain/Domain-Configuration/allIcons\";\nimport { Dictionary } from \"src/app/Domain/Common/dictionary/dictionary\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { APPENDED_ICONS_TAG } from \"../../../Domain/Common/constants\";\n\n/**\n * A palette that allows you to create BPMN _and_ custom elements.\n */\n\nlet iconDictionary;\nlet configuration;\n\nexport function initializePalette(iconDictionaryService, configurationService) {\n iconDictionary = iconDictionaryService;\n configuration = configurationService;\n}\n\nexport default function PaletteProvider(\n palette,\n create,\n elementFactory,\n spaceTool,\n lassoTool\n) {\n this._create = create;\n this._elementFactory = elementFactory;\n this._spaceTool = spaceTool;\n this._lassoTool = lassoTool;\n\n palette.registerProvider(this);\n}\n\nPaletteProvider.$inject = [\n \"palette\",\n \"create\",\n \"elementFactory\",\n \"spaceTool\",\n \"lassoTool\",\n \"modeling\",\n];\n\nPaletteProvider.prototype.getPaletteEntries = function () {\n let actions = {},\n create = this._create,\n elementFactory = this._elementFactory,\n spaceTool = this._spaceTool,\n lassoTool = this._lassoTool;\n\n function createAction(type, group, className, title, options) {\n function createListener(event) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n\n assign(shape.businessObject, {\n id: shape.id,\n });\n\n if (options) {\n shape.businessObject.di.isExpanded = options.isExpanded;\n }\n\n create.start(event, shape);\n }\n\n let shortType = type.replace(/^domainStory:/, \"\");\n\n return {\n group: group,\n className: className,\n title: \"Create \" + title || \"Create \" + shortType,\n action: {\n dragstart: createListener,\n click: createListener,\n },\n };\n }\n\n return initPalette(actions, spaceTool, lassoTool, createAction);\n};\n\nfunction appendCSSStyleCheat(customIcons) {\n const sheetEl = document.createElement(\"style\");\n document.head.appendChild(sheetEl);\n\n let customIconDict = new Dictionary();\n\n customIconDict.appendDict(customIcons);\n let customIconDictKeys = customIconDict.keysArray();\n\n customIconDictKeys.forEach((name) => {\n if (iconDictionary.getAppendedIconDictionary().has(name)) {\n let src = customIconDict.get(name);\n\n const iconStyle =\n \".icon-domain-story-\" +\n name.toLowerCase() +\n \"::before{\" +\n \" display: block;\" +\n ' content: url(\"data:image/svg+xml;utf8,' +\n wrapSRCInSVG(src) +\n '\");' +\n \" margin: 3px;}\";\n sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n }\n });\n}\n\nfunction initPalette(actions, spaceTool, lassoTool, createAction) {\n let config = iconDictionary?.getCurrentIconConfigurationForBPMN();\n\n let customIcons = localStorage.getItem(APPENDED_ICONS_TAG);\n\n if (customIcons) {\n customIcons = JSON.parse(customIcons);\n if (customIconsLegacy(customIcons)) {\n customIcons = convertLegacyAppendedIconsToDict(customIcons);\n }\n if (customIcons.entries && customIcons.entries.forEach) {\n const customIconsDict = new Dictionary();\n customIcons.entries.forEach((entry) => {\n customIconsDict.putEntry(entry);\n });\n overrideAppendedIcons(customIconsDict);\n appendCSSStyleCheat(customIcons);\n }\n }\n\n iconDictionary?.initTypeDictionaries(config.actors, config.workObjects);\n\n let actorTypes = iconDictionary?.getTypeDictionary(elementTypes.ACTOR);\n\n actorTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n elementTypes.ACTOR\n );\n });\n\n assign(actions, {\n \"actor-separator\": {\n group: \"actor\",\n separator: true,\n },\n });\n\n let workObjectTypes = iconDictionary?.getTypeDictionary(\n elementTypes.WORKOBJECT\n );\n\n workObjectTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n elementTypes.WORKOBJECT\n );\n });\n\n assign(actions, {\n \"workObject-separator\": {\n group: \"workObject\",\n separator: true,\n },\n \"domainStory-group\": createAction(\n elementTypes.GROUP,\n \"group\",\n \"icon-domain-story-tool-group\",\n \"group\"\n ),\n \"group-separator\": {\n group: \"group\",\n separator: true,\n },\n \"lasso-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-lasso-tool\",\n title: \"Activate the lasso tool\",\n action: {\n click: function (event) {\n lassoTool.activateSelection(event);\n },\n },\n },\n \"space-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-space-tool\",\n title: \"Activate the create/remove space tool\",\n action: {\n click: function (event) {\n spaceTool.activateSelection(event);\n },\n },\n },\n });\n\n return actions;\n}\n\nfunction addCanvasObjectTypes(\n name,\n createAction,\n actions,\n className,\n elementType\n) {\n let icon = iconDictionary.getIconForBPMN(elementType, name);\n\n let action = [];\n action[\"domainStory-\" + className + name] = createAction(\n `${elementType}${name}`,\n className,\n icon,\n name\n );\n assign(actions, action);\n}\n\nfunction customIconsLegacy(customIcons) {\n return !(\n Object.keys(customIcons).length === 1 &&\n Object.keys(customIcons)[0] === \"entries\"\n );\n}\n\nfunction convertLegacyAppendedIconsToDict(customIcons) {\n let dict = new Dictionary();\n Object.keys(customIcons).forEach((key) => {\n dict.set(key, customIcons[key]);\n });\n return dict;\n}\n\n// For some reason its important to use ' in the content for the Palette and ContextPad\n// Do not change!\nfunction wrapSRCInSVG(src) {\n return (\n \"\" +\n \"\"\n );\n}\n","\"use strict\";\n\nimport { getNumbersAndIDs } from \"../numbering/numbering\";\n\n/**\n * commandStack Handler for changes at activities\n */\n\nlet canvasElementRegistry;\nexport function initializeActivityUpdateHandler(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\nexport default function activityUpdateHandler(commandStack, eventBus) {\n commandStack.registerHandler(\n \"activity.directionChange\",\n activity_directionChange\n );\n commandStack.registerHandler(\"activity.changed\", activity_changed);\n\n // update the activity from the activity-dialog, either with or without number\n // and change other activities too, to keep the numbers consistent\n function activity_changed(modeling) {\n this.preExecute = function (context) {\n context.oldLabel = context.businessObject.name || \" \";\n\n let oldNumbersWithIDs = getNumbersAndIDs();\n modeling.updateLabel(context.businessObject, context.newLabel);\n modeling.updateNumber(context.businessObject, context.newNumber);\n\n context.oldNumber = context.businessObject.number;\n context.oldNumbersWithIDs = oldNumbersWithIDs;\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n\n if (context.newLabel && context.newLabel.length < 1) {\n context.newLabel = \" \";\n }\n\n businessObject.name = context.newLabel;\n businessObject.number = context.newNumber;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n semantic.name = context.oldLabel;\n semantic.number = context.oldNumber;\n\n revertAutomaticNumberGenerationChange(\n context.oldNumbersWithIDs,\n eventBus\n );\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n\n // change the direction of a single activity without affecting other activities\n function activity_directionChange(modeling) {\n this.preExecute = function (context) {\n context.oldNumber = context.businessObject.number;\n context.oldWaypoints = context.element.waypoints;\n context.name = context.businessObject.name;\n\n if (!context.oldNumber) {\n context.oldNumber = 0;\n }\n modeling.updateNumber(context.businessObject, context.newNumber);\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n let newWaypoints = [];\n let waypoints = element.waypoints;\n\n for (let i = waypoints.length - 1; i >= 0; i--) {\n newWaypoints.push(waypoints[i]);\n }\n\n element.source = element.target;\n businessObject.source = businessObject.target;\n element.target = swapSource;\n businessObject.target = swapSource.id;\n\n businessObject.name = context.name;\n businessObject.number = context.newNumber;\n element.waypoints = newWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n\n element.source = element.target;\n semantic.source = semantic.target;\n element.target = swapSource;\n semantic.target = swapSource.id;\n\n semantic.name = context.name;\n\n semantic.number = context.oldNumber;\n element.waypoints = context.oldWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n}\n\n// reverts the automatic changed done by the automatic number-generation at editing\nfunction revertAutomaticNumberGenerationChange(iDWithNumber, eventBus) {\n let activities = canvasElementRegistry?.getActivitesFromActors();\n for (let i = activities.length - 1; i >= 0; i--) {\n for (let j = iDWithNumber.length - 1; j >= 0; j--) {\n if (iDWithNumber[j].id.includes(activities[i].businessObject.id)) {\n let element = activities[i];\n element.businessObject.number = iDWithNumber[j].number;\n j = -5;\n eventBus.fire(\"element.changed\", { element });\n iDWithNumber.splice(j, 1);\n }\n }\n }\n}\n","\"use strict\";\n\nimport { undoGroupRework } from \"../util\";\n\nexport default function elementUpdateHandler(commandStack, eventBus) {\n commandStack.registerHandler(\"element.colorChange\", element_colorChange);\n commandStack.registerHandler(\n \"shape.removeGroupWithoutChildren\",\n removeGroupWithoutChildren\n );\n\n function element_colorChange() {\n this.preExecute = function (context) {\n context.oldColor = context.businessObject.pickedColor;\n };\n\n this.execute = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n\n semantic.pickedColor = context.newColor;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n\n semantic.pickedColor = context.oldColor;\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n\n function removeGroupWithoutChildren() {\n this.preExecute = function (ctx) {\n ctx.parent = ctx.element.parent;\n ctx.children = ctx.element.children.slice();\n };\n\n this.execute = function (ctx) {\n let element = ctx.element;\n ctx.children.forEach((child) => {\n undoGroupRework(element, child);\n eventBus.fire(\"element.changed\", { element: child });\n });\n eventBus.fire(\"shape.remove\", { element });\n };\n\n this.revert = function (ctx) {\n let element = ctx.element;\n eventBus.fire(\"shape.added\", { element });\n\n ctx.element.children.forEach((child) => {\n reworkGroupElements(element, child);\n });\n };\n }\n}\n","/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function headlineAndDescriptionUpdateHandler(\n commandStack,\n titleService\n) {\n commandStack.registerHandler(\n \"story.updateHeadlineAndDescription\",\n handlerFunction\n );\n\n function handlerFunction() {\n this.execute = function (ctx) {\n ctx.oldTitle = titleService.getTitle();\n ctx.oldDescription = titleService.getDescription();\n\n titleService.updateTitleAndDescription(\n ctx.newTitle,\n ctx.newDescription,\n false\n );\n };\n\n this.revert = function (ctx) {\n titleService.updateTitleAndDescription(\n ctx.oldTitle,\n ctx.oldDescription,\n false\n );\n };\n }\n}\n","\"use strict\";\n\nexport default function DSMassRenameHandler(commandStack, eventBus) {\n commandStack.registerHandler(\"domainStoryObjects.massRename\", massRename);\n\n function massRename(modeling) {\n this.preExecute = function (context) {\n let relevantElements = context.elements;\n\n context.oldLabel = relevantElements[0].businessObject.name;\n\n relevantElements.forEach((element) => {\n modeling.updateLabel(element.businessObject, confirm.newValue);\n });\n };\n\n this.execute = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.newValue;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n\n this.revert = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.oldLabel;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n }\n}\n","\"use strict\";\n\nimport {\n setLabel,\n getLabel,\n setNumber,\n getNumber,\n} from \"../labeling/dsLabelUtil\";\n\nimport {\n getExternalLabelMid,\n isLabelExternal,\n hasExternalLabel,\n isLabel,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { getBusinessObject, is } from \"../util\";\n\nconst NULL_DIMENSIONS = {\n width: 0,\n height: 0,\n};\n\n/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function UpdateLabelHandler(\n modeling,\n textRenderer,\n commandStack\n) {\n commandStack.registerHandler(\"element.updateCustomLabel\", handlerFunction);\n\n function handlerFunction() {\n /**\n * Set the label and return the changed elements.\n *\n * Element parameter can be label itself or connection (i.e. sequence flow).\n *\n * @param {djs.model.Base} element\n * @param {String} text\n */\n\n this.preExecute = function (ctx) {\n let element = ctx.element,\n businessObject = element.businessObject,\n newLabel = ctx.newLabel,\n newNumber = ctx.newNumber;\n\n if (\n !isLabel(element) &&\n isLabelExternal(element) &&\n !hasExternalLabel(element) &&\n (newLabel !== \"\" || newNumber !== \"\")\n ) {\n // create label\n let paddingTop = 7;\n\n let labelCenter = getExternalLabelMid(element);\n\n labelCenter = {\n x: labelCenter.x,\n y: labelCenter.y + paddingTop,\n };\n\n modeling.createLabel(element, labelCenter, {\n id: businessObject.id + \"_label\",\n businessObject: businessObject,\n });\n }\n };\n\n this.execute = function (ctx) {\n ctx.oldLabel = getLabel(ctx.element);\n ctx.oldNumber = getNumber(ctx.element);\n return setText(ctx.element, ctx.newLabel, ctx.newNumber);\n };\n\n this.revert = function (ctx) {\n return setText(ctx.element, ctx.oldLabel, ctx.oldNumber);\n };\n\n this.postExecute = function (ctx) {\n let element = ctx.element,\n label = element.label || element,\n newLabel = ctx.newLabel,\n newBounds = ctx.newBounds;\n\n if (isLabel(label) && newLabel.trim() === \"\") {\n modeling.removeShape(label);\n\n return;\n }\n\n // ignore internal labels for elements except text annotations\n if (\n !isLabelExternal(element) &&\n !is(element, elementTypes.TEXTANNOTATION)\n ) {\n return;\n }\n\n let bo = getBusinessObject(label);\n\n let text = bo.name || bo.text;\n\n // don't resize without text\n if (!text) {\n return;\n }\n\n // resize element based on label _or_ pre-defined bounds\n if (typeof newBounds === \"undefined\") {\n newBounds = textRenderer.getLayoutedBounds(label, text);\n }\n\n // setting newBounds to false or _null_ will\n // disable the postExecute resize operation\n if (newBounds) {\n modeling.resizeShape(label, newBounds, NULL_DIMENSIONS);\n }\n };\n }\n}\n\nfunction setText(element, text, textNumber) {\n // external label if present\n let label = element.label || element;\n\n let number = element.number || element;\n\n let labelTarget = element.labelTarget || element;\n\n let numberTarget = element.numberTarget || element;\n setLabel(label, text);\n setNumber(number, textNumber);\n\n return [label, labelTarget, number, numberTarget];\n}\n\nUpdateLabelHandler.$inject = [\"modeling\", \"textRenderer\", \"commandStack\"];\n","import { some } from \"min-dash\";\n\nexport function is(element, type) {\n const bo = getBusinessObject(element);\n\n return bo && typeof bo.$instanceOf == \"function\" && bo.$instanceOf(type);\n}\n\nexport function getBusinessObject(element) {\n return (element && element.businessObject) || element;\n}\n\nexport function isAny(element, types) {\n return some(types, function (t) {\n return is(element, t);\n });\n}\n\nexport function reworkGroupElements(parent, shape) {\n parent.children.slice().forEach((innerShape) => {\n if (innerShape.id !== shape.id) {\n if (innerShape.x >= shape.x && innerShape.x <= shape.x + shape.width) {\n if (innerShape.y >= shape.y && innerShape.y <= shape.y + shape.height) {\n innerShape.parent = shape;\n if (!shape.children.includes(innerShape)) {\n shape.children.push(innerShape);\n }\n }\n }\n }\n });\n}\n\nexport function undoGroupRework(parent, shape) {\n const superParent = parent.parent;\n\n parent.children.remove(shape);\n superParent.children.add(shape);\n\n shape.parent = superParent;\n\n const svgShape = document.querySelector(\n \"[data-element-id=\" + shape.id + \"]\"\n ).parentElement;\n const svgGroup = svgShape.parentElement;\n const svgGroupParent = svgGroup.parentElement.parentElement;\n svgGroup.removeChild(svgShape);\n svgGroupParent.appendChild(svgShape);\n}\n","import {\n SVG_LINK,\n TEXTSPAN_DESCRIPTION_HEIGHT,\n TEXTSPAN_TITLE_HEIGHT,\n X_OFFSET_UTIL,\n} from \"../../Domain/Export/exportConstants\";\n\nlet extraHeight = 0;\n\n// Has to be js File so we can access te correct non-standard HTML-Properties without excessive usage of ts-ignore\nexport function createTitleAndDescriptionSVGElement(\n title,\n description,\n xLeft,\n yUp,\n width\n) {\n title = title.replace(\"<\", \"\").replace(\">\", \"\");\n\n let titleElement = createTitle(title, width);\n let descriptionElement = createDescription(description, width);\n\n // to display the title and description in the SVG-file, we need to add a container for our text-elements\n let insertText =\n '' +\n titleElement +\n descriptionElement +\n \"\";\n return { insertText, extraHeight };\n}\n\nfunction createTitle(text, width) {\n let tempCanvas = document.createElement(\"canvas\");\n let ctx = tempCanvas.getContext(\"2d\");\n ctx.font = \"30px Arial\";\n\n return createTextSpans(text, width, ctx, 10, TEXTSPAN_TITLE_HEIGHT, 30);\n}\n\nfunction createDescription(text, width) {\n let description = \"\";\n let descriptionParts = text.split(\"
\");\n\n let tempCanvas = document.createElement(\"canvas\");\n let ctx = tempCanvas.getContext(\"2d\");\n ctx.font = \"12px Arial\";\n\n for (let i = 0; i < descriptionParts.length; i++) {\n description += createTextSpans(\n descriptionParts[i],\n width,\n ctx,\n 0,\n TEXTSPAN_DESCRIPTION_HEIGHT,\n 12\n );\n }\n return description;\n}\n\nfunction createTextSpans(text, width, ctx, yOffset, heightOffset, fontSize) {\n let textSpans = \"\";\n let words = text.split(\" \");\n\n let textTag =\n '';\n\n let textSpan = document.createElementNS(SVG_LINK, \"tspan\");\n let textNode = document.createTextNode(words[0]);\n\n textSpan.setAttribute(\"x\", X_OFFSET_UTIL);\n textSpan.setAttribute(\"y\", yOffset + extraHeight);\n textSpan.setAttribute(\"font-size\", fontSize);\n textSpan.appendChild(textNode);\n\n for (let j = 1; j < words.length; j++) {\n if (textSpan.firstChild && textSpan.firstChild.data) {\n let len = textSpan.firstChild.data.length;\n textNode.data += \" \" + words[j];\n\n if (ctx.measureText(textNode.data).width > width - 16) {\n extraHeight += heightOffset;\n textSpan.firstChild.data = textSpan.firstChild.data.slice(0, len); // remove overflow word\n\n textSpans += textTag + textSpan.outerHTML + \"\"; // append line\n\n // create new textspan for line break\n textSpan = document.createElementNS(SVG_LINK, \"tspan\");\n textNode = document.createTextNode(words[j]);\n textSpan.setAttribute(\"x\", X_OFFSET_UTIL);\n textSpan.setAttribute(\"y\", yOffset + extraHeight);\n textSpan.appendChild(textNode);\n }\n }\n }\n extraHeight += heightOffset;\n\n textSpans += textTag + textSpan.outerHTML + \"\";\n return textSpans;\n}\n","import { elementTypes } from './elementTypes';\n\nexport interface BusinessObject {\n $descriptor: any;\n $type: any;\n di: any;\n get: any;\n set: any;\n\n id: string;\n name: string;\n\n type: string;\n\n x: number;\n y: number;\n height: number | undefined;\n width: number | undefined;\n pickedColor: string | undefined;\n}\n\nexport const testBusinessObject: BusinessObject = {\n $descriptor: undefined,\n $type: undefined,\n di: undefined,\n get: undefined,\n set: undefined,\n\n id: 'test',\n name: 'test',\n\n type: elementTypes.WORKOBJECT,\n\n x: 0,\n y: 0,\n height: 38,\n width: 38,\n pickedColor: undefined,\n};\n","export class Configuration {\n actors: string[];\n workObjects: string[];\n\n constructor(actors: string[], workObjects: string[]) {\n this.actors = actors;\n this.workObjects = workObjects;\n }\n}\n","/** DEFAULT VALUES **/\nexport const INITIAL_TITLE = '< title >';\nexport const INITIAL_DESCRIPTION = '';\nexport const INITIAL_DOMAIN_NAME = 'default';\n\n/** LocalStorageTags **/\nexport const APPENDED_ICONS_TAG = 'appendedIcons';\nexport const DOMAIN_CONFIGURATION_TAG = 'domainConfigurationTag';\n\n/** AUTOSAVE DEFAULTS **/\nexport const DEFAULT_AUTOSAVES_ENABLED = true;\nexport const DEFAULT_AUTOSAVES_MAX_DRAFTS = 5;\nexport const DEFAULT_AUTOSAVES_INTERVAL = 30;\n\n/** SNACKBAR **/\nexport const SNACKBAR_DURATION = 2000;\nexport const SNACKBAR_SUCCESS = 'snackbar_success';\nexport const SNACKBAR_ERROR = 'snackbar_error';\nexport const SNACKBAR_INFO = 'snackbar_info';\n\n/** BPMN_RELEVANT_CONSTANTS **/\nexport const IMPLICIT_ROOT_ID = '__implicitroot';\n","export class Dictionary {\n private entries: Entry[];\n\n constructor() {\n this.entries = [];\n }\n\n get length(): number {\n return this.entries.length;\n }\n\n all(): Entry[] {\n return this.entries;\n }\n\n size(): number {\n return this.entries.length;\n }\n\n isEmpty(): boolean {\n return this.entries.length <= 0;\n }\n\n has(key: string): boolean {\n return this.entries.some((entry) => entry.key === key);\n }\n\n set(key: string, value: any): void {\n if (!this.has(key)) {\n this.entries.push(new Entry(value, key));\n }\n }\n\n add(value: any, key: string): void {\n this.set(key, value);\n }\n\n putEntry(entry: Entry): void {\n if (!this.has(entry.key)) {\n this.entries.push(new Entry(entry.value, entry.key));\n }\n }\n\n keysArray(): string[] {\n return this.entries.map((entry) => entry.key);\n }\n\n addEach(object: any): void {\n Object.keys(object).forEach((key) => {\n this.set(key, object[key]);\n });\n }\n\n appendDict(dict: Dictionary): void {\n dict.entries.forEach((entry) => this.putEntry(entry));\n }\n\n clear(): void {\n this.entries = [];\n }\n\n delete(key: string): void {\n this.entries = this.entries.filter((entry) => entry.key !== key);\n }\n\n get(key: string): any {\n const found = this.entries.filter((entry) => entry.key === key);\n return found[0] ? found[0].value : null;\n }\n\n sort(fn: (a: Entry, b: Entry) => number) {\n this.entries.sort(fn);\n }\n\n sortByName() {\n this.entries.sort((a: Entry, b: Entry) => {\n if (a.key.includes('_custom') == b.key.includes('_custom')) {\n if (a.key < b.key) return -1;\n else {\n return 1;\n }\n } else {\n if (a.key.includes('_custom')) {\n return -1;\n } else {\n return 1;\n }\n }\n });\n }\n}\n\nexport class Entry {\n value: any;\n key: string;\n\n constructor(value: any, key: string) {\n this.value = value;\n this.key = key;\n }\n}\n","import { INITIAL_DOMAIN_NAME } from './constants';\nimport { testBusinessObject } from './businessObject';\nimport { elementTypes } from './elementTypes';\nimport { Dictionary } from './dictionary/dictionary';\n\nexport interface DomainConfiguration {\n name: string;\n actors: Dictionary;\n workObjects: Dictionary;\n}\n\nexport interface DomainConfigurationForExport {\n name: string;\n actors: any;\n workObjects: any;\n}\n\nexport interface CustomDomainConfiguration {\n name: string;\n actors: string[];\n workObjects: string[];\n}\nconst actor = structuredClone(testBusinessObject);\nactor.type = elementTypes.ACTOR;\n\nexport const testCustomDomainConfiguration: CustomDomainConfiguration = {\n name: INITIAL_DOMAIN_NAME,\n actors: ['Person'],\n workObjects: ['Document'],\n};\n\nexport function fromConfigurationFromFile(configFromFile: {\n name: string;\n actors: { [p: string]: any };\n workObjects: { [p: string]: any };\n}) {\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n Object.keys(configFromFile.actors).forEach((key) => {\n actorsDict.add(configFromFile.actors[key], key);\n });\n Object.keys(configFromFile.workObjects).forEach((key) => {\n workObjectsDict.add(configFromFile.workObjects[key], key);\n });\n\n return {\n name: configFromFile.name,\n actors: actorsDict,\n workObjects: workObjectsDict,\n };\n}\n","export enum elementTypes {\n ACTIVITY = 'domainStory:activity',\n CONNECTION = 'domainStory:connection',\n ACTOR = 'domainStory:actor',\n WORKOBJECT = 'domainStory:workObject',\n GROUP = 'domainStory:group',\n TEXTANNOTATION = 'domainStory:textAnnotation',\n DOMAINSTORY = 'domainStory:',\n}\n","import { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { overrideAppendedIcons } from 'src/app/Domain/Domain-Configuration/allIcons';\nimport { Configuration } from 'src/app/Domain/Common/configuration';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { INITIAL_DOMAIN_NAME } from './constants';\n\nexport class IconConfiguration {\n domainName = INITIAL_DOMAIN_NAME;\n\n private allIconDictionary: Dictionary;\n\n constructor(allIconDictionary: Dictionary) {\n this.allIconDictionary = allIconDictionary;\n }\n\n /**\n * Select the Iconset which you want to use\n */\n getDefaultConf(): Configuration {\n return defaultConf;\n }\n\n updateAllIconRegistry(allIconDictionary: Dictionary): void {\n this.allIconDictionary = allIconDictionary;\n }\n\n appendSRCFile(\n actors: string[],\n actorsDict: Dictionary,\n workObjects: string[],\n workObjectsDict: Dictionary\n ): void {\n const newAppendedIcons: { [key: string]: any } = {};\n\n actors.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = actorsDict.get(name);\n }\n });\n\n workObjects.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = workObjectsDict.get(name);\n }\n });\n const appen = new Dictionary();\n Object.keys(newAppendedIcons).forEach((key) => {\n appen.set(key, newAppendedIcons[key]);\n });\n\n overrideAppendedIcons(appen);\n }\n\n createCustomConf(domainConfiguration: DomainConfiguration): Configuration {\n this.domainName = domainConfiguration.name;\n\n let actors = domainConfiguration.actors;\n let workObjects = domainConfiguration.workObjects;\n\n this.appendSRCFile(\n actors.keysArray(),\n actors,\n workObjects.keysArray(),\n workObjects\n );\n\n return new Configuration(actors.keysArray(), workObjects.keysArray());\n }\n}\n\n/* eslint no-unused-vars: 0*/\n\n/**\n * All Icons as one Set\n * There are more Icons than fit in the palette.\n * This is just for reference\n */\nconst allIconsConf = {\n actors: ['Person', 'Group', 'System', 'Pet'],\n workObjects: [\n 'Place',\n 'Flag',\n 'World',\n 'Water',\n 'Store',\n 'Theater',\n 'Business',\n 'Meeting-room',\n 'Hotel',\n 'Dining',\n 'Courthouse',\n 'Gas-station',\n 'Car',\n 'Bus',\n 'Train',\n 'Truck',\n 'Taxi',\n 'Bike',\n 'Boat',\n 'Motorcycle',\n 'Plane',\n 'Flight-takeoff',\n 'Flight-landing',\n 'Shuttle',\n 'Walking',\n 'Traffic',\n 'Commute',\n 'Document',\n 'Folder',\n 'Call',\n 'Email',\n 'Copyright',\n 'Briefcase',\n 'Attach',\n 'Ruler',\n 'Sum',\n 'Conversation',\n 'Update',\n 'Cellphone',\n 'Speaker-phone',\n 'Signal',\n 'Key',\n 'Pencil',\n 'How-To-Reg',\n 'Settings',\n 'Grid',\n 'Label',\n 'Receipt',\n 'Calendar',\n 'Wrench',\n 'Headset',\n 'Keyboard',\n 'Mouse',\n 'Microphone',\n 'Router',\n 'Scanner',\n 'Printer',\n 'DNS',\n 'Security',\n 'Cloud',\n 'Desktop',\n 'Tablet',\n 'Assessment',\n 'Dashboard',\n 'Pie-chart',\n 'View-List',\n 'Euro',\n 'Dollar',\n 'Info',\n 'Alarm',\n 'Problem',\n 'Circle-Arrows',\n 'Picture-as-PDF',\n 'Credit-Card',\n 'Shopping',\n 'Favorite',\n 'Gavel',\n 'Blind',\n 'Hourglass',\n 'Time',\n 'Search',\n 'Thumb-up',\n 'Thumb-down',\n 'Thumb-up-down',\n 'Couch',\n 'Education',\n 'Watch',\n ],\n};\n\n/**\n * Default Iconset\n */\nexport const defaultConf = {\n actors: ['Person', 'Group', 'System'],\n workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'],\n};\n","import { ActivityCanvasObject } from '../Common/activityCanvasObject';\n\nexport class ActivityDialogData {\n activity: ActivityCanvasObject;\n numberIsAllowedMultipleTimes: boolean;\n showNumberFields: boolean;\n\n saveFN: any;\n\n constructor(\n activity: ActivityCanvasObject,\n numberIsAllowedMultipleTimes: boolean,\n showNumberFields: boolean,\n saveFN: any\n ) {\n this.activity = activity;\n this.numberIsAllowedMultipleTimes = numberIsAllowedMultipleTimes;\n this.showNumberFields = showNumberFields;\n this.saveFN = saveFN;\n }\n}\n","export class ExportDialogData {\n title: string;\n options: ExportOption[];\n\n constructor(title: string, options: ExportOption[]) {\n this.title = title;\n this.options = options;\n }\n}\n\nexport class ExportOption {\n text: string;\n fn: any;\n tooltip: string;\n\n constructor(text: string, tooltip: string, fn: any) {\n this.text = text;\n this.tooltip = tooltip;\n this.fn = fn;\n }\n}\n","export class InfoDialogData {\n title: string;\n infoText: string;\n isInfo: boolean;\n isLink: boolean;\n linkText: string | undefined;\n\n constructor(\n title: string,\n infoText: string,\n isInfo: boolean,\n isLink: boolean = false,\n linkText?: string\n ) {\n this.title = title;\n this.infoText = infoText;\n this.isInfo = isInfo;\n this.isLink = isLink;\n this.linkText = linkText;\n }\n}\n","export const NUMBER_BACKGROUND_COLOR = 'white';\nexport const NUMBER_COLOR = 'black';\nexport const STROKE_WIDTH = '1.5';\n\nexport const HIGHLIGHT_NUMBER_BACKGROUNG_COLOR = '#43acbf';\nexport const HIGHLIGHT_NUMBER_COLOR = 'black';\nexport const HIGHLIGHT_COLOR = 'black';\nexport const HIGHLIGHT_STROKE_WIDTH = '4';\n","import { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\n\nexport let appendedIcons = new Dictionary();\nexport const allIcons = {\n Person:\n '',\n Group:\n '',\n Pet: '',\n Conversation:\n '',\n World:\n '',\n Store:\n '',\n Theater:\n '',\n Business:\n '',\n Water:\n '',\n Hotel:\n '',\n Dining:\n '',\n 'Gas-station':\n '',\n 'Meeting-room':\n '',\n Courthouse:\n '',\n Flag: '',\n Place:\n '',\n Car: '',\n Bus: '',\n Train:\n '',\n Truck:\n '',\n Taxi: '',\n Bike: '',\n Boat: '',\n Motorcycle:\n '',\n Plane:\n '',\n 'Flight-takeoff':\n '',\n 'Flight-landing':\n '',\n Shuttle:\n '',\n Walking:\n '',\n Traffic:\n '',\n Commute:\n '',\n System:\n '',\n Printer:\n '',\n Document:\n '',\n Folder:\n '',\n Call: '',\n Email:\n '',\n Copyright:\n '',\n DNS: '',\n Settings:\n '',\n Cellphone:\n '',\n Update:\n '',\n Briefcase:\n '',\n Microphone:\n '',\n Signal:\n '',\n Key: '',\n Pencil:\n '',\n Sum: '',\n Headset:\n '',\n Keyboard:\n '',\n Mouse:\n '',\n Router:\n '',\n Scanner:\n '',\n Security:\n '',\n Desktop:\n '',\n 'Speaker-phone':\n '',\n Tablet:\n '',\n Label:\n '',\n Receipt:\n '',\n Calendar:\n '',\n Cloud:\n '',\n Assessment:\n '',\n Dashboard:\n '',\n 'Pie-chart':\n '',\n Problem:\n '',\n 'Picture-as-PDF':\n '',\n Grid: '',\n Watch:\n '',\n Euro: '',\n Dollar:\n '',\n Info: '',\n Alarm:\n '',\n Wrench:\n '',\n 'Circle-Arrows':\n '',\n 'Credit-Card':\n '',\n Favorite:\n '',\n Gavel:\n '',\n Blind:\n '',\n Hourglass:\n '',\n Time: '',\n Search:\n '',\n Shopping:\n '',\n 'Thumb-up':\n '',\n 'Thumb-down':\n '',\n 'Thumb-up-down':\n '',\n Couch:\n '',\n Attach:\n '',\n Ruler:\n '',\n Education:\n '',\n 'How-To-Reg':\n '',\n 'View-List':\n '',\n};\n\nexport function getAllStandardIconKeys(): string[] {\n const allIconsDict = new Dictionary();\n\n allIconsDict.addEach(allIcons);\n\n return allIconsDict.keysArray();\n}\n\nexport function overrideAppendedIcons(newIcons: Dictionary): void {\n appendedIcons = newIcons;\n}\n","export enum IconFilterEnum {\n ICON_FILTER_ACTOR = 'ICON_FILTER_ACTOR',\n ICON_FILTER_WORKOBJECT = 'ICON_FILTER_WORKOBJECT',\n ICON_FILTER_UNASSIGNED = 'ICON_FILTER_UNASSIGNED',\n ICON_FILTER_NONE = 'ICON_FILTER_NONE',\n}\n","export class ConfigAndDST {\n domain: any;\n dst: any;\n\n constructor(domain: any, dst: any) {\n this.domain = domain;\n this.dst = dst;\n }\n}\n\nexport const testConfigAndDst: ConfigAndDST = {\n domain: JSON.parse(\n '{\"name\":\"\",' +\n '\"actors\":{\"Person\":\"' +\n '' +\n '\",' +\n '\"Group\":\"' +\n '' +\n '\",' +\n '\"System\":\"' +\n '\"},' +\n '\"workObjects\":{\"Document\":\"' +\n '\",' +\n '\"Folder\":\"' +\n '' +\n '\",' +\n '\"Call\":\"' +\n '\",' +\n '\"Email\":\"' +\n '\",' +\n '\"Conversation\":\"' +\n '\",' +\n '\"Info\":\"' +\n '' +\n '\"}}'\n ),\n dst:\n '[' +\n '{\"type\":\"domainStory:workObjectDocument\",\"name\":\"\",\"id\":\"shape_3792\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":302,\"y\":102},' +\n '{\"type\":\"domainStory:actorPerson\",\"name\":\"\",\"id\":\"shape_4666\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":103,\"y\":93},' +\n '{\"type\":\"domainStory:activity\",\"name\":\"\",\"id\":\"connection_4884\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"number\":1,' +\n '\"waypoints\":[{\"original\":{\"x\":141,\"y\":131},\"x\":186,\"y\":133},{\"original\":{\"x\":340,\"y\":140},\"x\":302,\"y\":138}],' +\n '\"source\":\"shape_4666\",\"target\":\"shape_3792\"}]',\n};\n","export const SVG_LINK = 'http://www.w3.org/2000/svg';\nexport const X_OFFSET_UTIL = '8';\nexport const TEXTSPAN_TITLE_HEIGHT = 30;\nexport const TEXTSPAN_DESCRIPTION_HEIGHT = 15;\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutosaveSettingsComponent } from '../Presentation/Autosave/AutosaveSettings/autosave-settings.component';\nimport { AutosaveOptionsComponent } from '../Presentation/Autosave/AutosaveOptions/autosave-options.component';\nimport { AutosavedDraftsComponent } from '../Presentation/Autosave/AutosavedDrafts/autosaved-drafts.component';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n declarations: [\n AutosaveSettingsComponent,\n AutosaveOptionsComponent,\n AutosavedDraftsComponent,\n ],\n exports: [AutosaveSettingsComponent],\n imports: [CommonModule, FormsModule, MaterialModule],\n})\nexport class AutosaveSettingsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderButtonsComponent } from '../Presentation/Header/header-buttons.component';\n\n@NgModule({\n declarations: [HeaderButtonsComponent],\n exports: [HeaderButtonsComponent],\n imports: [CommonModule],\n})\nexport class DomainStoryModelerModuleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomainConfigurationComponent } from 'src/app/Presentation/DomainConfiguration/domain-configuration.component';\nimport { IconListItemComponent } from '../Presentation/DomainConfiguration/icon-list-item/icon-list-item.component';\nimport { DetailsListItemComponent } from '../Presentation/DomainConfiguration/details-list-item/details-list-item.component';\nimport { DomainDetailsComponent } from '../Presentation/DomainConfiguration/domain-details/domain-details.component';\nimport { GeneralSettingsComponent } from '../Presentation/Settings/General/general-settings.component';\nimport { LabelDictionaryComponent } from '../Presentation/LabelDictionary/label-dictionary.component';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\nimport { AutosaveSettingsModule } from './autosave-settings.module';\n\n@NgModule({\n declarations: [\n DomainConfigurationComponent,\n GeneralSettingsComponent,\n LabelDictionaryComponent,\n IconListItemComponent,\n DetailsListItemComponent,\n DomainDetailsComponent,\n ],\n exports: [\n GeneralSettingsComponent,\n DomainConfigurationComponent,\n LabelDictionaryComponent,\n ],\n imports: [AutosaveSettingsModule, CommonModule, FormsModule, MaterialModule],\n})\nexport class SettingsModule {}\n","import { Component } from '@angular/core';\nimport { AutosaveConfigurationService } from '../../../Service/Autosave/autosave-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_ERROR,\n SNACKBAR_SUCCESS,\n} from 'src/app/Domain/Common/constants';\n\n@Component({\n selector: 'app-autosave-options',\n templateUrl: './autosave-options.component.html',\n styleUrls: ['./autosave-options.component.scss'],\n})\nexport class AutosaveOptionsComponent {\n constructor(\n protected autosaveConfiguration: AutosaveConfigurationService,\n private snackbar: MatSnackBar\n ) {}\n\n save(activated: boolean, maxDrafts: number, interval: number) {\n if (\n this.autosaveConfiguration.setConfiguration({\n activated,\n maxDrafts,\n interval,\n })\n ) {\n this.snackbar.open('Settings for Autosave saved', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n });\n } else {\n this.snackbar.open(\n 'Unable to save settings for Autosave - please try again',\n undefined,\n {\n duration: 2 * SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\n }\n );\n }\n }\n}\n","\n \n Autosave Options\n \n \n
\n \n Enabled\n
\n
\n Interval [sec]\n \n
\n
\n Max. Drafts\n \n
\n \n Apply\n \n
\n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-autosave-settings',\n templateUrl: './autosave-settings.component.html',\n styleUrls: ['./autosave-settings.component.scss'],\n})\nexport class AutosaveSettingsComponent {}\n","\n\n","import { Component, OnInit } from '@angular/core';\nimport { AutosaveService } from '../../../Service/Autosave/autosave.service';\nimport { Draft } from '../../../Domain/Autosave/draft';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_SUCCESS,\n} from 'src/app/Domain/Common/constants';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-autosaved-drafts',\n templateUrl: './autosaved-drafts.component.html',\n styleUrls: ['./autosaved-drafts.component.scss'],\n})\nexport class AutosavedDraftsComponent implements OnInit {\n drafts: Draft[] = [];\n subscription: Subscription;\n\n constructor(\n private autosaveService: AutosaveService,\n private snackbar: MatSnackBar\n ) {\n this.subscription = this.autosaveService.autosavedDraftsChanged$.subscribe(\n () => this.initDrafts()\n );\n }\n\n ngOnInit(): void {\n this.initDrafts();\n }\n\n initDrafts() {\n this.drafts = this.autosaveService.loadCurrentDrafts();\n }\n\n loadDraft(draft: Draft): void {\n this.autosaveService.loadDraft(draft);\n this.snackbar.open('Draft loaded', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n });\n }\n\n removeAllDrafts() {\n this.autosaveService.removeAllDrafts();\n }\n}\n","\n \n \n History\n \n {{ drafts.length ? drafts.length : \"no\" }}\n {{ drafts.length > 1 ? \"drafts\" : \"draft\" }} available\n \n \n
\n
\n
\n
{{ draft.title }}
\n
{{ draft.date }}
\n
\n \n Load Draft\n \n
\n
\n
\n \n Remove All Drafts\n \n
\n
\n
\n
\n\nNo drafts found.\n","import { Component, OnInit } from '@angular/core';\nimport { ModelerService } from '../../Service/Modeler/modeler.service';\nimport { AutosaveService } from '../../Service/Autosave/autosave.service';\n\n@Component({\n selector: 'app-modeler',\n templateUrl: './modeler.component.html',\n styleUrls: ['./modeler.component.scss'],\n})\nexport class ModelerComponent implements OnInit {\n constructor(\n private modelerService: ModelerService,\n private autosaveService: AutosaveService\n ) {}\n\n ngOnInit(): void {\n this.modelerService.postInit();\n this.autosaveService.loadLatestDraft();\n }\n}\n","
\n","import { AfterViewInit, Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { ActivityDialogData } from 'src/app/Domain/Dialog/activityDialogData';\nimport { ActivityCanvasObject } from '../../../Domain/Common/activityCanvasObject';\n\n@Component({\n selector: 'app-activity-dialog',\n templateUrl: './activity-dialog.component.html',\n styleUrls: ['./activity-dialog.component.scss'],\n})\nexport class ActivityDialogComponent {\n form: UntypedFormGroup;\n activityLabel: string;\n activityNumber: number | undefined;\n numberIsAllowedMultipleTimes: boolean;\n showNumberFields: boolean;\n activity: ActivityCanvasObject;\n\n saveFN: any;\n\n constructor(\n private fb: UntypedFormBuilder,\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: ActivityDialogData\n ) {\n this.activity = data.activity;\n this.activityLabel = data.activity.businessObject.name;\n this.numberIsAllowedMultipleTimes = data.numberIsAllowedMultipleTimes;\n this.activityNumber = data.activity.businessObject.number;\n this.showNumberFields = data.showNumberFields;\n\n this.saveFN = data.saveFN;\n\n this.form = this.fb.group({\n activityLabel: [this.activityLabel, []],\n activityNumber: [this.activityNumber, []],\n multipleNumbers: [this.numberIsAllowedMultipleTimes, []],\n });\n }\n\n onSubmit(): void {\n this.numberIsAllowedMultipleTimes = !this.numberIsAllowedMultipleTimes;\n this.form.patchValue({\n multipleNumbers: this.numberIsAllowedMultipleTimes,\n });\n }\n\n save(): void {\n this.saveFN({\n activity: this.activity,\n ...this.form.value,\n });\n this.dialogRef.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n preventDefault(event: Event) {\n event.preventDefault();\n }\n}\n","\n

Edit Activity

\n
\n
\n \n Number\n \n \n \n multiple\n
\n \n Label\n \n \n
\n
\n\n\n \n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ExportDialogData } from 'src/app/Domain/Dialog/exportDialogData';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n selector: 'app-export-dialog',\n templateUrl: './export-dialog.component.html',\n styleUrls: ['./export-dialog.component.scss'],\n})\nexport class ExportDialogComponent implements OnInit {\n title: string;\n options: {\n text: string;\n tooltip: string;\n fn: any;\n }[];\n withTitle: BehaviorSubject;\n useWhiteBackground: BehaviorSubject;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: ExportDialogData\n ) {\n this.withTitle = new BehaviorSubject(true);\n this.useWhiteBackground = new BehaviorSubject(true);\n this.title = data.title;\n this.options = data.options;\n }\n\n ngOnInit(): void {}\n\n doOption(i: number): void {\n this.options[i].fn(this.withTitle.value, this.useWhiteBackground.value);\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n updateWithTitle($event: Event) {\n // @ts-ignore\n this.withTitle.next($event.target.checked);\n }\n\n updateUseWhiteBackground($event: Event) {\n // @ts-ignore\n this.useWhiteBackground.next($event.target.checked);\n }\n}\n","\n

{{ title }}

\n \n
\n \n
\n\n
\n\n
\n \n \n {{ option.text }}\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { TitleService } from 'src/app/Service/Title/title.service';\n\n@Component({\n selector: 'app-header-dialog',\n templateUrl: './header-dialog.component.html',\n styleUrls: ['./header-dialog.component.scss'],\n})\nexport class HeaderDialogComponent implements OnInit {\n form: UntypedFormGroup;\n title: string;\n description: string;\n\n constructor(\n private fb: UntypedFormBuilder,\n private dialogRef: MatDialogRef,\n private titleService: TitleService\n ) {\n this.title =\n this.titleService.getTitle() === '< name of this Domain Story >'\n ? ''\n : this.titleService.getTitle();\n this.description = this.titleService.getDescription();\n\n this.form = this.fb.group({\n title: [this.title, []],\n description: [this.description, []],\n });\n }\n\n ngOnInit(): void {}\n\n save(): void {\n this.titleService.updateTitleAndDescription(\n this.form.get('title')?.value,\n this.form.get('description')?.value,\n true\n );\n this.dialogRef.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n preventDefault(event: Event) {\n event.preventDefault();\n }\n}\n","\n
\n \n Title\n \n \n
\n \n Description\n \n \n
\n
\n\n\n \n \n\n","import { AfterViewInit, Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { InfoDialogData } from 'src/app/Domain/Dialog/infoDialogData';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './info-dialog.component.html',\n styleUrls: ['./info-dialog.component.scss'],\n})\nexport class InfoDialogComponent implements AfterViewInit {\n title: string;\n infoText: string;\n showConfirmButton: boolean;\n hasLink: boolean;\n linkText: string;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: InfoDialogData\n ) {\n this.title = data.title;\n this.infoText = data.infoText;\n this.showConfirmButton = !data.isInfo;\n this.hasLink = data.isLink;\n this.linkText = data.linkText || '';\n }\n\n ngAfterViewInit() {\n const span = document.getElementsByClassName(\n 'readOnlyText'\n )[0] as HTMLTextAreaElement;\n span.style.height = span.scrollHeight + 'px';\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

{{ title }}

\n {{ infoText }} \n {{ linkText }}\n
\n\n\n \n\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-label-dictionary-dialog',\n templateUrl: './label-dictionary-dialog.component.html',\n styleUrls: ['./label-dictionary-dialog.component.scss'],\n})\nexport class LabelDictionaryDialogComponent {\n constructor(\n private dialogRef: MatDialogRef\n ) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

Label Dictionary

\n \n
\n","import { AfterViewChecked, Component, Input } from '@angular/core';\nimport { IconListItem } from '../../../Domain/Domain-Configuration/iconListItem';\n\n@Component({\n selector: 'app-details-list-item',\n templateUrl: './details-list-item.component.html',\n styleUrls: ['./details-list-item.component.scss'],\n})\nexport class DetailsListItemComponent implements AfterViewChecked {\n @Input()\n icon!: IconListItem;\n\n private iconInitiated = false;\n\n get id(): string {\n return (\n 'domain-configuration-details-icon-' +\n this.icon.name.toLowerCase() +\n '-' +\n (this.icon.isWorkObject ? 'workobject' : 'actor')\n );\n }\n\n get name(): string {\n return this.icon.name;\n }\n\n ngAfterViewChecked(): void {\n this.createIcon();\n }\n\n private createIcon(): void {\n const img = document.getElementById(this.id) as HTMLImageElement;\n if (img && !this.iconInitiated) {\n img.src = '' + this.icon.svg;\n this.iconInitiated = true;\n }\n }\n}\n","
\n \"{{\n {{ icon.name }}\n
\n","import { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport {\n CustomDomainConfiguration,\n fromConfigurationFromFile,\n} from 'src/app/Domain/Common/domainConfiguration';\nimport { DomainConfigurationService } from 'src/app/Service/DomainConfiguration/domain-configuration.service';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { sanitizeIconName } from 'src/app/Utils/sanitizer';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { IconFilterEnum } from '../../Domain/Domain-Configuration/iconFilterEnum';\nimport { DomainCustomizationService } from '../../Service/DomainConfiguration/domain-customization.service';\n\n@Component({\n selector: 'app-domain-configuration',\n templateUrl: './domain-configuration.component.html',\n styleUrls: ['./domain-configuration.component.scss'],\n})\nexport class DomainConfigurationComponent implements OnInit {\n private domainConfigurationTypes: CustomDomainConfiguration;\n\n filter = new BehaviorSubject(IconFilterEnum.ICON_FILTER_NONE);\n\n selectedActors = new BehaviorSubject([]);\n selectedWorkobjects = new BehaviorSubject([]);\n\n allIcons: BehaviorSubject;\n allIconNames = new BehaviorSubject([]);\n allFilteredIconNames = new BehaviorSubject([]);\n\n constructor(\n private configurationService: DomainConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n private domainCustomizationService: DomainCustomizationService,\n private elementRegistryService: ElementRegistryService\n ) {\n this.domainConfigurationTypes =\n this.domainCustomizationService.getDomainConfiguration().value;\n\n this.allIcons = new BehaviorSubject(\n this.iconDictionaryService.getFullDictionary()\n );\n this.allIcons.subscribe((allIcons) => {\n this.allIconNames.next(allIcons.keysArray().sort(this.sortByName));\n });\n\n this.selectedActors = this.domainCustomizationService.selectedActors$;\n this.selectedWorkobjects =\n this.domainCustomizationService.selectedWorkobjects$;\n }\n\n ngOnInit(): void {\n this.filter.subscribe((type) => {\n let allFiltered = this.getFilteredNamesForType(type);\n this.allFilteredIconNames.next(allFiltered.sort(this.sortByName));\n });\n }\n\n private sortByName(a: string, b: string): number {\n if (a.includes('_custom') == b.includes('_custom')) {\n if (a < b) return -1;\n else {\n return 1;\n }\n } else {\n if (a.includes('_custom')) {\n return -1;\n } else {\n return 1;\n }\n }\n }\n\n /** Default Domain **/\n loadMinimalIconConfigurationWithDefaultIcons(): void {\n this.domainCustomizationService.resetDomain();\n }\n\n loadInitialConfiguration(): void {\n this.domainCustomizationService.cancel();\n }\n\n /** Persist Domain **/\n saveDomain(): void {\n this.domainCustomizationService.saveDomain(\n this.elementRegistryService.getUsedIcons()\n );\n }\n\n exportDomain(): void {\n this.domainCustomizationService.exportDomain();\n }\n\n /** Add Custom Icon **/\n startIconUpload(): void {\n document.getElementById('importIcon')?.click();\n }\n\n importIcon(): void {\n // @ts-ignore\n const files = document.getElementById('importIcon').files;\n for (let iconInputFile of files) {\n const reader = new FileReader();\n const name = sanitizeIconName(iconInputFile.name);\n const iconName = name + '_custom';\n\n reader.onloadend = (e: ProgressEvent) => {\n if (e.target) {\n const src: string = e.target.result as unknown as string;\n this.iconDictionaryService.addIMGToIconDictionary(src, iconName);\n // TODO: td: What kind of type is it here?\n this.iconDictionaryService.registerIconForBPMN(\n iconName,\n src,\n elementTypes.ACTOR\n );\n\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n\n this.domainCustomizationService.addNewIcon(iconName);\n }\n };\n reader.readAsDataURL(iconInputFile);\n }\n }\n\n /** Import Domain **/\n startDomainImport(): void {\n document.getElementById('importDomain')?.click();\n }\n\n importDomain(): void {\n // @ts-ignore\n const domainInputFile = document.getElementById('importDomain').files[0];\n const reader = new FileReader();\n\n reader.onloadend = (e: ProgressEvent) => {\n const configFromFile = JSON.parse(\n e.target?.result as unknown as string\n ) as {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n const config = fromConfigurationFromFile(configFromFile);\n this.configurationService.loadConfiguration(config, false);\n\n this.domainCustomizationService.importConfiguration(config);\n };\n\n reader.readAsText(domainInputFile);\n }\n\n /** Filter **/\n filterForActors(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_ACTOR) {\n this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForWorkobjects(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) {\n this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForUnassigned(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) {\n this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterByNameAndType($event: any) {\n const filteredByNameAndType = this.getFilteredNamesForType(\n this.filter.value\n ).filter((name) =>\n name.toLowerCase().includes($event.target.value.toLowerCase())\n );\n this.allFilteredIconNames.next(filteredByNameAndType.sort(this.sortByName));\n }\n\n private getFilteredNamesForType(type: IconFilterEnum): string[] {\n let allFiltered: string[] = [];\n switch (type) {\n case IconFilterEnum.ICON_FILTER_NONE:\n allFiltered = this.allIconNames.value;\n break;\n case IconFilterEnum.ICON_FILTER_ACTOR:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.domainCustomizationService.isIconActor(name)\n );\n break;\n case IconFilterEnum.ICON_FILTER_WORKOBJECT:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.domainCustomizationService.isIconWorkObject(name)\n );\n break;\n case IconFilterEnum.ICON_FILTER_UNASSIGNED:\n allFiltered = this.allIconNames.value.filter(\n (name) =>\n !this.domainCustomizationService.isIconActor(name) &&\n !this.domainCustomizationService.isIconWorkObject(name)\n );\n break;\n }\n return allFiltered;\n }\n}\n","
\n
\n
\n
\n
Filter by assignment:
\n \n None\n \n \n Actors\n \n \n Workobjects\n \n \n
\n
\n \n \n home \n \n \n close\n \n
\n \n
\n \n unarchive\n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n\n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DomainCustomizationService } from 'src/app/Service/DomainConfiguration/domain-customization.service';\nimport { IconListItem } from 'src/app/Domain/Domain-Configuration/iconListItem';\nimport { TitleService } from 'src/app/Service/Title/title.service';\n\n@Component({\n selector: 'app-domain-details',\n templateUrl: './domain-details.component.html',\n styleUrls: ['./domain-details.component.scss'],\n})\nexport class DomainDetailsComponent implements OnInit {\n domainName: Observable;\n\n private draggedList: string = '';\n private draggedIndex = 0;\n\n selectedActors$ = this.customizationService.selectedActors$;\n selectedWorkobjects$ = this.customizationService.selectedWorkobjects$;\n\n constructor(\n private customizationService: DomainCustomizationService,\n titleService: TitleService\n ) {\n this.domainName = titleService.domainName$;\n }\n\n ngOnInit(): void {}\n\n changeName(event: Event): void {\n // @ts-ignore\n this.customizationService.changeName(event.target.value);\n }\n\n getIconForName(iconName: string): IconListItem {\n return this.customizationService.getIconForName(iconName).value;\n }\n\n allowDrop($event: DragEvent, listName: string) {\n if (this.draggedList === listName) {\n $event.preventDefault();\n }\n }\n\n onDrop($event: DragEvent, iconName: string, actors: boolean, index: number) {\n let list;\n if (actors) {\n list = this.selectedActors$;\n } else {\n list = this.selectedWorkobjects$;\n }\n const sortedList = list.value;\n const item = sortedList[this.draggedIndex];\n sortedList.splice(this.draggedIndex, 1);\n sortedList.splice(index, 0, item);\n list.next(sortedList);\n\n if (actors) {\n this.customizationService.setSelectedActors(sortedList);\n } else {\n this.customizationService.setSelectedWorkObject(sortedList);\n }\n }\n\n onDragStart(index: number, draggedList: string) {\n this.draggedList = draggedList;\n this.draggedIndex = index;\n }\n}\n","
\n
\n

Icon Set Name

\n
\n \n \n \n
\n
\n
\n

Order of Actors

\n \n \n \n \n \n
\n
\n

Order of Work Objects

\n \n \n \n \n \n
\n
\n","import { AfterViewChecked, Component, Input, OnInit } from '@angular/core';\nimport { IconListItem } from '../../../Domain/Domain-Configuration/iconListItem';\nimport { BehaviorSubject } from 'rxjs';\nimport { DomainCustomizationService } from '../../../Service/DomainConfiguration/domain-customization.service';\n\n@Component({\n selector: 'app-icon-list-item',\n templateUrl: './icon-list-item.component.html',\n styleUrls: ['./icon-list-item.component.scss'],\n})\nexport class IconListItemComponent implements OnInit, AfterViewChecked {\n @Input()\n iconName: string = '';\n\n private iconInitiated = false;\n\n // @ts-ignore\n icon = new BehaviorSubject({});\n\n isActor: boolean = false;\n isWorkobject: boolean = false;\n isNone: boolean = true;\n\n get name(): string {\n return this.iconName;\n }\n\n get id() {\n return 'domain-configuration-icon-' + this.iconName;\n }\n\n constructor(private domainCustomizationService: DomainCustomizationService) {}\n\n ngOnInit(): void {\n this.icon = this.domainCustomizationService.getIconForName(this.iconName);\n if (!this.icon) {\n return;\n }\n\n this.icon.subscribe((value) => {\n this.isActor = value.isActor;\n this.isWorkobject = value.isWorkObject;\n this.isNone = !(value.isActor || value.isWorkObject);\n });\n this.isActor = this.icon.value.isActor;\n this.isWorkobject = this.icon.value.isWorkObject;\n this.isNone = !(this.icon.value.isActor || this.icon.value.isWorkObject);\n }\n\n ngAfterViewChecked(): void {\n this.createIcon();\n }\n\n private createIcon(): void {\n const img = document.getElementById(this.id) as HTMLImageElement;\n if (img && !this.iconInitiated) {\n img.src = '' + this.icon.value?.svg;\n this.iconInitiated = true;\n }\n }\n\n toggleNone() {\n this.domainCustomizationService.setAsUnassigned(\n this.iconName,\n this.icon.value.isActor\n );\n }\n\n toggleActor(): void {\n this.domainCustomizationService.setAsActor(true, this.iconName);\n }\n\n toggleWorkobject(): void {\n this.domainCustomizationService.setAsWorkobject(true, this.iconName);\n }\n}\n","
\n
\n \"{{\n
{{ name }}
\n
\n
\n \n \n None\n \n \n Actor\n \n \n Workobject\n \n \n
\n
\n","import { Component } from '@angular/core';\nimport { SettingsService } from '../../Service/Settings/settings.service';\nimport { ModelerService } from '../../Service/Modeler/modeler.service';\nimport { Observable } from 'rxjs';\nimport { ReplayStateService } from '../../Service/Replay/replay-state.service';\nimport { DirtyFlagService } from '../../Service/DirtyFlag/dirty-flag.service';\nimport {\n ExportDialogData,\n ExportOption,\n} from '../../Domain/Dialog/exportDialogData';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ExportDialogComponent } from '../Dialog/export-dialog/export-dialog.component';\nimport { InfoDialogData } from '../../Domain/Dialog/infoDialogData';\nimport { InfoDialogComponent } from '../Dialog/info-dialog/info-dialog.component';\nimport { DialogService } from '../../Service/Dialog/dialog.service';\nimport { ReplayService } from '../../Service/Replay/replay.service';\nimport { ExportService } from '../../Service/Export/export.service';\nimport { ImportDomainStoryService } from '../../Service/Import/import-domain-story.service';\nimport { LabelDictionaryDialogComponent } from '../Dialog/label-dictionary-dialog/label-dictionary-dialog.component';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\nimport { AutosaveService } from '../../Service/Autosave/autosave.service';\nimport { TitleService } from '../../Service/Title/title.service';\nimport { RendererService } from '../../Service/Renderer/renderer.service';\n\n@Component({\n selector: 'app-header-buttons',\n templateUrl: './header-buttons.component.html',\n styleUrls: ['./header-buttons.component.scss'],\n})\nexport class HeaderButtonsComponent {\n isReplay$: Observable;\n isDirty$: Observable;\n\n constructor(\n private settingsService: SettingsService,\n private modelerService: ModelerService,\n private replayStateService: ReplayStateService,\n private dirtyFlagService: DirtyFlagService,\n private dialogService: DialogService,\n protected replayService: ReplayService,\n protected exportService: ExportService,\n private importService: ImportDomainStoryService,\n private titleService: TitleService,\n private renderService: RendererService,\n private snackbar: MatSnackBar\n ) {\n this.isReplay$ = this.replayStateService.replayOn$;\n this.isDirty$ = this.dirtyFlagService.dirty$;\n }\n import(): void {\n // @ts-ignore\n const filename = document.getElementById('import').files[0].name;\n if (filename.endsWith('.dst')) {\n this.importService.importDST(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n false\n );\n } else if (filename.endsWith('.dst.svg')) {\n this.importService.importDST(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n true\n );\n } else if (filename.endsWith('.egn')) {\n this.importService.importEGN(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n false\n );\n } else if (filename.endsWith('.egn.svg')) {\n this.importService.importEGN(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n true\n );\n }\n this.modelerService.commandStackChanged();\n }\n\n openSettings(): void {\n this.settingsService.open();\n }\n\n /** Open Dialogs **/\n openDownloadDialog(): void {\n if (this.exportService.isDomainStoryExportable()) {\n const SVGDownloadOption = new ExportOption(\n 'SVG',\n 'Download an SVG-Image with the Domain-Story embedded. Can be used to save and share your Domain-Story.',\n (withTitle: boolean, useWhiteBackground: boolean) =>\n this.exportService.downloadSVG(withTitle, useWhiteBackground)\n );\n const EGNDownloadOption = new ExportOption(\n 'EGN',\n 'Download an EGN-File with the Domain-Story. Can be used to save and share your Domain-Story.',\n (withTitle: boolean, useWhiteBackground: boolean) =>\n this.exportService.downloadDST()\n );\n const PNGDownloadOption = new ExportOption(\n 'PNG',\n 'Donwload a PNG-Image of the DOmain-Story. This does not include the Domain-Story!',\n (withTitle: boolean, useWhiteBackground: boolean) =>\n this.exportService.downloadPNG(withTitle)\n );\n const HTMLDownloadOption = new ExportOption(\n 'HTML-Presentation',\n 'Download an HTML-Presentation. This does not include the Domain-Story!',\n (withTitle: boolean, useWhiteBackground: boolean) =>\n this.exportService.downloadHTMLPresentation()\n );\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = new ExportDialogData('Export', [\n SVGDownloadOption,\n EGNDownloadOption,\n PNGDownloadOption,\n HTMLDownloadOption,\n ]);\n\n this.dialogService.openDialog(ExportDialogComponent, config);\n } else {\n this.snackbar.open('No Domain Story to be exported', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_INFO,\n });\n }\n }\n\n openKeyboardShortcutsDialog(): void {\n const title = 'Keyboard Shortcuts';\n const shortCutText =\n 'Undo:\\t\\t\\t\\t\\tctrl + Z \\n' +\n 'Redo:\\t\\t\\t\\t\\tctrl + Y OR ctrl + shift + Z\\n' +\n 'Select All:\\t\\t\\t\\tctrl + A\\n' +\n 'Export as EGN:\\t\\t\\tctrl + S\\n' +\n 'Import Domain Story: \\t\\tctrl + L\\n' +\n 'Search for text:\\t\\t\\tctrl + F\\n' +\n 'Direct editing:\\t\\t\\tE\\n' +\n 'Hand tool:\\t\\t\\t\\tH\\n' +\n 'Lasso tool:\\t\\t\\t\\tL\\n' +\n 'Space tool:\\t\\t\\t\\tS';\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, shortCutText, true);\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n\n openLabelDictionary(): void {\n if (this.exportService.isDomainStoryExportable()) {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n this.dialogService.openDialog(LabelDictionaryDialogComponent, config);\n } else {\n this.snackbar.open(\n 'There are currently no Elements on the canvas',\n undefined,\n {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n }\n\n createNewDomainStory(): void {\n this.titleService.reset();\n this.renderService.reset();\n }\n\n /** Replay functions **/\n startReplay(): void {\n this.replayService.startReplay();\n }\n\n stopReplay(): void {\n this.replayService.stopReplay();\n }\n\n previousStep(): void {\n this.replayService.previousStep();\n }\n\n nextStep(): void {\n this.replayService.nextStep();\n }\n\n isExportable(): boolean {\n return (\n this.titleService.hasTitleOrDescription() ||\n this.exportService.isDomainStoryExportable()\n );\n }\n}\n","
\n \n play_arrow \n \n \n unarchive \n \n \n \n \n archive\n \n \n archive\n \n \n \n \n spellcheck\n \n \n \n \n keyboard \n \n \n note_add \n \n
\n
\n \n \n \n
\n","import { Component } from '@angular/core';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { TitleService } from '../../Service/Title/title.service';\nimport { ReplayService } from '../../Service/Replay/replay.service';\nimport { ReplayStateService } from '../../Service/Replay/replay-state.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { HeaderDialogComponent } from '../Dialog/header-dialog/header-dialog.component';\nimport { DialogService } from '../../Service/Dialog/dialog.service';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent {\n title$ = this.titleService.title$;\n description$ = this.titleService.description$;\n showDescription$ = this.titleService.showDescription$;\n\n isReplay$: Observable;\n stepDescription$: Observable;\n showDescription: Observable;\n\n constructor(\n private titleService: TitleService,\n private replayService: ReplayService,\n private replayStateService: ReplayStateService,\n private dialogService: DialogService\n ) {\n this.isReplay$ = this.replayStateService.replayOn$;\n\n this.stepDescription$ = combineLatest([\n this.replayService.currentStep$,\n this.replayService.maxStepNumber$,\n ]).pipe(map(([step, count]) => `${step}/${count}`));\n\n this.showDescription = this.titleService.showDescription$;\n }\n\n openHeaderDialog(): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n this.dialogService.openDialog(HeaderDialogComponent, config);\n }\n\n setShowDescription(show: boolean): void {\n this.titleService.setShowDescription(show);\n }\n}\n","\n \n \n \n expand_less\n \n \n \n expand_more\n \n \n \n {{ title$ | async }}\n edit \n \n \n\n \n \n Sentence: {{ stepDescription$ | async }}\n\n \n\n \n \n\n\n {{ description$ | async }}\n\n","import { AfterViewInit, Component, EventEmitter, Output } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { WorkObjectLabelEntry } from '../../Domain/LabelDictionary/workObjectLabelEntry';\nimport { LabelEntry } from '../../Domain/LabelDictionary/labelEntry';\nimport { LabelDictionaryService } from '../../Service/LabelDictionary/label-dictionary.service';\n\n@Component({\n selector: 'app-label-dictionary',\n templateUrl: './label-dictionary.component.html',\n styleUrls: ['./label-dictionary.component.scss'],\n})\nexport class LabelDictionaryComponent implements AfterViewInit {\n workobjectEntriesSubject: BehaviorSubject;\n activityEntriesSubject: BehaviorSubject;\n\n workObjectEntries: WorkObjectLabelEntry[];\n activityEntries: LabelEntry[];\n\n @Output()\n closeEmitter: EventEmitter = new EventEmitter();\n\n constructor(private labelDictionaryService: LabelDictionaryService) {\n this.labelDictionaryService.createLabelDictionaries();\n this.workObjectEntries = this.labelDictionaryService.getWorkObjectLabels();\n this.activityEntries = this.labelDictionaryService.getActivityLabels();\n\n this.workobjectEntriesSubject = new BehaviorSubject(this.workObjectEntries);\n this.activityEntriesSubject = new BehaviorSubject(this.activityEntries);\n }\n\n ngAfterViewInit(): void {\n this.labelDictionaryService.createLabelDictionaries();\n this.workobjectEntriesSubject.next(\n this.labelDictionaryService.getWorkObjectLabels()\n );\n this.activityEntriesSubject.next(\n this.labelDictionaryService.getActivityLabels()\n );\n }\n\n save(): void {\n this.workObjectEntries = this.workobjectEntriesSubject.value;\n this.activityEntries = this.activityEntriesSubject.value;\n\n const activityNames: string[] = [];\n const originalActivityNames: string[] = [];\n\n const workObjectNames: string[] = [];\n const originalWorkObjectNames: string[] = [];\n\n this.activityEntries\n .filter((a) => a.name !== a.originalName)\n .forEach((activity) => {\n activityNames.push(activity.name);\n originalActivityNames.push(activity.originalName);\n });\n\n this.workObjectEntries\n .filter((w) => w.name !== w.originalName)\n .forEach((workobject) => {\n workObjectNames.push(workobject.name);\n originalWorkObjectNames.push(workobject.originalName);\n });\n\n this.labelDictionaryService.massRenameLabels(\n activityNames,\n originalActivityNames,\n workObjectNames,\n originalWorkObjectNames\n );\n this.closeEmitter.emit();\n }\n\n cancel(): void {\n this.workObjectEntries.forEach((w) => {\n w.name = w.originalName;\n });\n this.activityEntries.forEach((a) => {\n a.name = a.originalName;\n });\n\n this.workobjectEntriesSubject.next(this.workObjectEntries);\n this.activityEntriesSubject.next(this.activityEntries);\n }\n\n updateActivityEntry($event: Event, activityEntry: LabelEntry) {\n let entries = this.activityEntriesSubject.value;\n entries.filter(\n (e) => e.originalName === activityEntry.originalName\n // @ts-ignore\n )[0].name = $event.target.value;\n this.activityEntriesSubject.next(entries);\n }\n\n updateWorkobjectEntry($event: Event, workobjectEntry: LabelEntry) {\n let entries = this.workobjectEntriesSubject.value;\n entries.filter(\n (e) => e.originalName === workobjectEntry.originalName\n // @ts-ignore\n )[0].name = $event.target.value;\n this.workobjectEntriesSubject.next(entries);\n }\n\n preventDefault(event: Event): void {\n event.preventDefault();\n }\n\n close(): void {\n this.closeEmitter.emit();\n }\n}\n","\n
\n

Workobjects

\n \n \n \n \n \n \n \n
\n
\n

Activities

\n \n \n \n \n \n \n \n
\n
\n\n \n \n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-general-settings',\n templateUrl: './general-settings.component.html',\n styleUrls: ['./general-settings.component.scss'],\n})\nexport class GeneralSettingsComponent {}\n","
\n \n
\n","import { Component } from '@angular/core';\nimport { SettingsService } from 'src/app/Service/Settings/settings.service';\nimport { ModelerService } from 'src/app/Service/Modeler/modeler.service';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AutosaveConfigurationService } from '../../Service/Autosave/autosave-configuration.service';\nimport { DomainCustomizationService } from '../../Service/DomainConfiguration/domain-customization.service';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent {\n domainConfiguration: DomainConfiguration | undefined;\n showGeneralSettings = new BehaviorSubject(false);\n showDomainCustomization = new BehaviorSubject(true);\n\n constructor(\n private settingsService: SettingsService,\n private modelerService: ModelerService,\n private domainCustomizationService: DomainCustomizationService\n ) {}\n\n close(): void {\n const savedConfiguration =\n this.domainCustomizationService.getAndClearSavedConfiguration();\n if (savedConfiguration) {\n this.modelerService.restart(savedConfiguration);\n }\n this.settingsService.close();\n }\n\n openGeneralSettings() {\n this.showGeneralSettings.next(true);\n this.showDomainCustomization.next(false);\n }\n\n openDomainCustomization() {\n this.showGeneralSettings.next(false);\n this.showDomainCustomization.next(true);\n }\n}\n","
\n \n \n \n
\n \n Customize Icons for Your Domain\n \n \n General Settings\n \n
\n
\n
\n\n \n \n
\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { StorageService } from '../BrowserStorage/storage.service';\nimport { AutosaveConfiguration } from '../../Domain/Autosave/autosave-configuration';\nimport {\n DEFAULT_AUTOSAVES_MAX_DRAFTS,\n DEFAULT_AUTOSAVES_ENABLED,\n DEFAULT_AUTOSAVES_INTERVAL,\n} from 'src/app/Domain/Common/constants';\n\nconst AUTOSAVE_CONFIGURATION_TAG = 'autosaveConfiguration';\n\nconst defaultConfiguration: AutosaveConfiguration = {\n activated: DEFAULT_AUTOSAVES_ENABLED,\n interval: DEFAULT_AUTOSAVES_INTERVAL,\n maxDrafts: DEFAULT_AUTOSAVES_MAX_DRAFTS,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveConfigurationService {\n private configuration = defaultConfiguration;\n\n private readonly configurationSubject =\n new ReplaySubject(1);\n readonly configuration$ = this.configurationSubject.asObservable();\n\n constructor(private storageService: StorageService) {\n this.initializeConfiguration();\n }\n\n private initializeConfiguration() {\n this.loadConfiguration();\n this.configurationSubject.next(this.configuration);\n }\n\n setConfiguration(configuration: AutosaveConfiguration): boolean {\n try {\n this.configuration = configuration;\n this.saveConfiguration();\n this.configurationSubject.next(configuration);\n return true;\n } catch {\n return false;\n }\n }\n\n private loadConfiguration() {\n this.configuration =\n this.storageService.get(AUTOSAVE_CONFIGURATION_TAG) ??\n defaultConfiguration;\n }\n\n private saveConfiguration() {\n this.storageService.set(AUTOSAVE_CONFIGURATION_TAG, this.configuration);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { RendererService } from '../Renderer/renderer.service';\nimport { ExportService } from '../Export/export.service';\nimport { Draft } from '../../Domain/Autosave/draft';\nimport { AutosaveConfigurationService } from './autosave-configuration.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { fromConfigurationFromFile } from '../../Domain/Common/domainConfiguration';\nimport { StorageService } from '../BrowserStorage/storage.service';\nimport { TitleService } from '../Title/title.service';\nimport { AutosaveConfiguration } from '../../Domain/Autosave/autosave-configuration';\nimport { Subject } from 'rxjs';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\nexport const DRAFTS_TAG = 'autosaveDrafts';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveService {\n private autosaveTimer: any;\n autosavedDraftsChanged$ = new Subject();\n\n constructor(\n private autosaveConfiguration: AutosaveConfigurationService,\n private exportService: ExportService,\n private iconDictionaryService: IconDictionaryService,\n private rendererService: RendererService,\n private snackbar: MatSnackBar,\n private storageService: StorageService,\n private titleService: TitleService\n ) {\n this.autosaveConfiguration.configuration$.subscribe((configuration) =>\n this.updateConfiguration(configuration)\n );\n }\n\n loadCurrentDrafts(): Draft[] {\n const drafts = this.readDrafts();\n this.sortDrafts(drafts);\n return drafts;\n }\n\n loadDraft(draft: Draft): void {\n const configFromFile = draft.configAndDST.domain;\n const config = fromConfigurationFromFile(configFromFile);\n const story = JSON.parse(draft.configAndDST.dst);\n\n this.titleService.updateTitleAndDescription(\n draft.title,\n draft.description,\n false\n );\n\n const actorIcons = this.iconDictionaryService.getElementsOfType(\n story,\n elementTypes.ACTOR\n );\n const workObjectIcons = this.iconDictionaryService.getElementsOfType(\n story,\n elementTypes.WORKOBJECT\n );\n this.iconDictionaryService.updateIconRegistries(\n actorIcons,\n workObjectIcons,\n config\n );\n this.rendererService.importStory(story, true, config, false);\n }\n\n removeAllDrafts() {\n this.storageService.set(DRAFTS_TAG, []);\n this.autosavedDraftsChanged$.next();\n }\n\n loadLatestDraft() {\n const drafts = this.readDrafts();\n if (drafts.length === 0) {\n return;\n }\n this.loadDraft(drafts[0]);\n }\n\n private updateConfiguration(configuration: AutosaveConfiguration) {\n this.stopTimer();\n\n if (configuration.activated) {\n this.startTimer(configuration.interval, configuration.maxDrafts);\n }\n }\n\n private stopTimer(): void {\n if (this.autosaveTimer) {\n clearInterval(this.autosaveTimer);\n this.autosaveTimer = undefined;\n }\n }\n\n private startTimer(interval: number, maxDrafts: number): void {\n this.autosaveTimer = setInterval(() => {\n const savedDrafts = this.loadCurrentDrafts();\n const newDraft = this.createDraft();\n let isChanged = maxDrafts > 0;\n if (savedDrafts.length > 0) {\n isChanged = isChanged && !this.isSame(newDraft, savedDrafts[0]);\n }\n if (isChanged && !this.isDraftEmpty(newDraft)) {\n savedDrafts.unshift(newDraft);\n while (savedDrafts.length > maxDrafts) {\n savedDrafts.pop();\n }\n this.writeDrafts(savedDrafts);\n this.snackbar.open('Draft Saved', undefined, {\n panelClass: SNACKBAR_INFO,\n duration: SNACKBAR_DURATION,\n });\n this.autosavedDraftsChanged$.next();\n }\n }, interval * 1000);\n }\n\n private isDraftEmpty(draft: Draft) {\n return (\n draft.title === INITIAL_TITLE &&\n draft.description === INITIAL_DESCRIPTION &&\n JSON.parse(draft.configAndDST.dst).length === 0\n );\n }\n\n private isSame(a: Draft, b: Draft) {\n return (\n a.title === b.title &&\n a.description === b.description &&\n JSON.stringify(a.configAndDST) === JSON.stringify(b.configAndDST)\n );\n }\n\n private writeDrafts(drafts: Draft[]) {\n this.storageService.set(DRAFTS_TAG, drafts);\n }\n\n private readDrafts(): Draft[] {\n return this.storageService.get(DRAFTS_TAG) ?? [];\n }\n\n private createDraft(): Draft {\n const dst = JSON.stringify(this.rendererService.getStory(), null, 2);\n const configAndDST = this.exportService.createConfigAndDST(dst);\n\n const date = new Date().toString().slice(0, 25);\n\n return {\n title: this.titleService.getTitle(),\n description: this.titleService.getDescription(),\n configAndDST,\n date,\n };\n }\n\n private sortDrafts(drafts: Draft[]): void {\n drafts.sort((a: Draft, b: Draft) => {\n const aDate = Date.parse(a.date);\n const bDate = Date.parse(b.date);\n return aDate > bDate ? 0 : 1;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DOMAIN_CONFIGURATION_TAG } from '../../Domain/Common/constants';\nimport {\n DomainConfiguration,\n fromConfigurationFromFile,\n} from '../../Domain/Common/domainConfiguration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StorageService {\n set(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n get(key: string): any {\n const json = localStorage.getItem(key);\n if (json) {\n return JSON.parse(json);\n }\n return null;\n }\n\n removeItem(key: string) {\n localStorage.removeItem(key);\n }\n\n checkValidityOfConfiguration(configuratioFromFile: DomainConfiguration) {\n return (\n configuratioFromFile.actors.keysArray().length > 1 &&\n configuratioFromFile.workObjects.keysArray().length > 1 &&\n !configuratioFromFile.actors\n .all()\n .some((e) => typeof e.value !== 'string') &&\n !configuratioFromFile.workObjects\n .all()\n .some((e) => typeof e.value !== 'string')\n );\n }\n\n getStoredDomainConfiguration(): DomainConfiguration | undefined {\n const domainString = localStorage.getItem(DOMAIN_CONFIGURATION_TAG);\n\n if (!domainString) {\n return;\n } else {\n const configuratioFromFile = fromConfigurationFromFile(\n JSON.parse(domainString)\n );\n if (this.checkValidityOfConfiguration(configuratioFromFile)) {\n return configuratioFromFile;\n }\n }\n return;\n }\n\n setStoredDomainConfiguration(config: DomainConfiguration): void {\n const actors: {\n [p: string]: any;\n } = {};\n config.actors.keysArray().forEach((key) => {\n actors[key] = config.actors.get(key);\n });\n const workObjects: {\n [p: string]: any;\n } = {};\n config.workObjects.keysArray().forEach((key) => {\n workObjects[key] = config.workObjects.get(key);\n });\n\n const configForStorage = {\n name: config.name,\n actors: actors,\n workObjects: workObjects,\n };\n\n localStorage.setItem(\n DOMAIN_CONFIGURATION_TAG,\n JSON.stringify(configForStorage, null, 2)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CommandStackService {\n private commandStack: any;\n\n constructor() {}\n\n setCommandStack(commandStack: any): void {\n this.commandStack = commandStack;\n }\n\n execute(action: string, payload: any) {\n this.commandStack.execute(action, payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/overlay';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private matDialog: MatDialog) {}\n\n openDialog(dialog: ComponentType, config: MatDialogConfig): void {\n this.matDialog.open(dialog, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DirtyFlagService {\n private isDirtySubject = new BehaviorSubject(false);\n dirty$ = this.isDirtySubject.asObservable();\n\n makeDirty(): void {\n this.isDirtySubject.next(true);\n }\n\n makeClean(): void {\n this.isDirtySubject.next(false);\n }\n\n get dirty(): boolean {\n return this.isDirtySubject.value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { StoryStep } from 'src/app/Domain/Replay/storyStep';\nimport {\n HIGHLIGHT_COLOR,\n HIGHLIGHT_NUMBER_BACKGROUNG_COLOR,\n HIGHLIGHT_NUMBER_COLOR,\n HIGHLIGHT_STROKE_WIDTH,\n NUMBER_BACKGROUND_COLOR,\n NUMBER_COLOR,\n STROKE_WIDTH,\n} from '../../Domain/DomManipulation/replayConstants';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Manipulates the DOM during replay to only show the elements of the current Step\n */\nexport class DomManipulationService {\n constructor(private elementRegistryService: ElementRegistryService) {}\n\n showAll(): void {\n this.removeHighlights();\n this.elementRegistryService\n .getAllCanvasObjects()\n .slice()\n .concat(this.elementRegistryService.getAllGroups().slice())\n .map((e) => e.businessObject)\n .forEach((element) => {\n const domObject = document.querySelector(\n '[data-element-id=' + element.id + ']'\n );\n // @ts-ignore\n domObject.style.display = 'block';\n });\n }\n\n showStep(replayStep: StoryStep, previousStep?: StoryStep): void {\n this.removeHighlights();\n const notShown = this.getAllNotShown(replayStep.objects);\n\n notShown.forEach((element) => {\n const domObject = document.querySelector(\n '[data-element-id=' + element.id + ']'\n );\n if (domObject) {\n // @ts-ignore\n domObject.style.display = 'none';\n }\n });\n\n this.hightlightStep(\n previousStep\n ? replayStep.objects.filter((o) => !previousStep.objects.includes(o))\n : replayStep.objects\n );\n\n replayStep.objects.forEach((element) => {\n const domObject = document.querySelector(\n '[data-element-id=' + element.id + ']'\n );\n if (domObject) {\n // @ts-ignore\n domObject.style.display = 'block';\n }\n });\n }\n\n getNumberDomForActivity(activity: SVGPolylineElement): any {\n const numberDOMS = activity.parentElement?.getElementsByClassName(\n 'djs-labelNumber'\n ) || ['', ''];\n return {\n numberBackgroundDom: numberDOMS[0],\n numberTextDom: numberDOMS[1],\n };\n }\n\n private removeHighlights(): void {\n const allActivities = this.elementRegistryService.getAllActivities();\n const allConnections = this.elementRegistryService.getAllConnections();\n\n allActivities.forEach((activity) => {\n const querySelector = document.querySelector(\n '[data-element-id=' + activity.id + ']'\n );\n if (querySelector) {\n const activityDomObject =\n querySelector.getElementsByTagName('polyline')[0];\n\n activityDomObject.style.stroke =\n activity.businessObject.pickedColor || 'black';\n activityDomObject.style.strokeWidth = STROKE_WIDTH;\n\n const { numberBackgroundDom, numberTextDom } =\n this.getNumberDomForActivity(activityDomObject);\n if (numberBackgroundDom && numberTextDom) {\n numberBackgroundDom.style.fill = NUMBER_BACKGROUND_COLOR;\n numberTextDom.style.fill = NUMBER_COLOR;\n }\n }\n });\n\n allConnections.forEach((connection) => {\n // @ts-ignore\n const connectionDomObject = document\n .querySelector('[data-element-id=' + connection.id + ']')\n .getElementsByTagName('polyline')[0];\n\n connectionDomObject.style.stroke =\n connection.businessObject.pickedColor || 'black';\n connectionDomObject.style.strokeWidth = '1.5';\n });\n }\n\n private hightlightStep(stepObjects: BusinessObject[]): void {\n stepObjects\n .filter((e) => e.type === elementTypes.ACTIVITY)\n .forEach((activity) => {\n const querySelector = document.querySelector(\n '[data-element-id=' + activity.id + ']'\n );\n if (querySelector) {\n const activityDomObject =\n querySelector.getElementsByTagName('polyline')[0];\n\n activityDomObject.style.stroke = HIGHLIGHT_COLOR;\n activityDomObject.style.strokeWidth = HIGHLIGHT_STROKE_WIDTH;\n\n const { numberBackgroundDom, numberTextDom } =\n this.getNumberDomForActivity(activityDomObject);\n if (numberTextDom && numberBackgroundDom) {\n numberBackgroundDom.style.fill = HIGHLIGHT_NUMBER_BACKGROUNG_COLOR;\n numberTextDom.style.fill = HIGHLIGHT_NUMBER_COLOR;\n }\n }\n });\n }\n\n private getAllNotShown(shownElements: BusinessObject[]): BusinessObject[] {\n const notShownElements: BusinessObject[] = [];\n const allObjects = this.elementRegistryService\n .getAllCanvasObjects()\n .concat(this.elementRegistryService.getAllGroups());\n\n allObjects.forEach((element) => {\n if (!shownElements.includes(element.businessObject)) {\n if (element.type.includes(elementTypes.CONNECTION)) {\n // @ts-ignore\n if (!element.source.type.includes(elementTypes.GROUP)) {\n notShownElements.push(element.businessObject);\n } else {\n // @ts-ignore\n shownElements.push(element.target);\n }\n } else {\n notShownElements.push(element.businessObject);\n }\n }\n });\n return notShownElements;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport {\n CustomDomainConfiguration,\n DomainConfiguration,\n DomainConfigurationForExport,\n} from 'src/app/Domain/Common/domainConfiguration';\nimport { defaultConf } from '../../Domain/Common/iconConfiguration';\nimport { TitleService } from '../Title/title.service';\nimport { INITIAL_DOMAIN_NAME } from '../../Domain/Common/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DomainConfigurationService {\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private titleService: TitleService\n ) {}\n\n setDomainName(domainName: string): void {\n this.titleService.setDomainName(\n domainName ? domainName : INITIAL_DOMAIN_NAME\n );\n }\n\n exportConfiguration(): void {\n const domainConfiguration = this.getCurrentConfigurationForExport();\n if (!domainConfiguration) {\n return;\n }\n\n const configJSONString = JSON.stringify(domainConfiguration, null, 2);\n const filename = this.titleService.getDomainName();\n const element = document.createElement('a');\n\n element.setAttribute(\n 'href',\n 'data:text/plain;charset=utf-8,' + encodeURIComponent(configJSONString)\n );\n element.setAttribute('download', filename + '.domain');\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n loadConfiguration(\n customConfig: DomainConfiguration,\n updateDomainName = true\n ): void {\n let actorDict = new Dictionary();\n let workObjectDict = new Dictionary();\n\n if (customConfig.actors.keysArray()) {\n actorDict = customConfig.actors;\n workObjectDict = customConfig.workObjects;\n } else {\n actorDict.addEach(customConfig.actors);\n workObjectDict.addEach(customConfig.workObjects);\n }\n\n const actorKeys = actorDict.keysArray();\n const workObjectKeys = workObjectDict.keysArray();\n\n this.iconDictionaryService.updateIconRegistries([], [], customConfig);\n\n this.iconDictionaryService\n .getIconConfiguration()\n .appendSRCFile(actorKeys, actorDict, workObjectKeys, workObjectDict);\n\n this.iconDictionaryService.addIconsFromDomainConfiguration(\n elementTypes.ACTOR,\n actorKeys.map((a) => elementTypes.ACTOR + a)\n );\n this.iconDictionaryService.addIconsFromDomainConfiguration(\n elementTypes.WORKOBJECT,\n workObjectKeys.map((w) => elementTypes.WORKOBJECT + w)\n );\n\n if (updateDomainName) {\n const configurationName = customConfig.name;\n this.setDomainName(configurationName);\n }\n }\n\n getCurrentConfiguration(): DomainConfiguration | undefined {\n const actors = this.iconDictionaryService.getActorsDictionary();\n const workObjects = this.iconDictionaryService.getWorkObjectsDictionary();\n\n let domainConfiguration;\n\n if (actors.size() > 0 && workObjects.size() > 0) {\n domainConfiguration = this.createConfigFromDictionaries(\n actors,\n workObjects\n );\n }\n return domainConfiguration;\n }\n\n getCurrentConfigurationForExport(): DomainConfigurationForExport | undefined {\n const currentConfiguration = this.getCurrentConfiguration();\n\n if (currentConfiguration) {\n const actors: any = {};\n const workObjects: any = {};\n\n currentConfiguration.actors.all().forEach((entry) => {\n actors[entry.key] = entry.value;\n });\n currentConfiguration.workObjects.all().forEach((entry) => {\n workObjects[entry.key] = entry.value;\n });\n\n return {\n name: currentConfiguration.name,\n actors: actors,\n workObjects: workObjects,\n };\n }\n return;\n }\n\n getCurrentConfigurationNamesWithoutPrefix(): CustomDomainConfiguration {\n return {\n name: this.titleService.getDomainName() || INITIAL_DOMAIN_NAME,\n actors: this.iconDictionaryService\n .getActorsDictionary()\n .keysArray()\n .map((a) => a.replace(elementTypes.ACTOR, '')),\n workObjects: this.iconDictionaryService\n .getWorkObjectsDictionary()\n .keysArray()\n .map((w) => w.replace(elementTypes.WORKOBJECT, '')),\n };\n }\n\n createMinimalConfigurationWithDefaultIcons(): DomainConfiguration {\n const minimalConfig = this.createConfigFromCanvas();\n\n defaultConf.actors.forEach((iconName) => {\n minimalConfig.actors.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName\n );\n });\n defaultConf.workObjects.forEach((iconName) => {\n minimalConfig.workObjects.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName\n );\n });\n\n return minimalConfig;\n }\n\n private createConfigFromDictionaries(\n actorsDict: Dictionary,\n workObjectsDict: Dictionary\n ): DomainConfiguration {\n const actorNames = actorsDict.keysArray();\n const workobjectNames = workObjectsDict.keysArray();\n const newActors = new Dictionary();\n const newWorkobjects = new Dictionary();\n\n // Fill Configuration from Canvas-Objects\n actorNames.forEach((actor) => {\n newActors.add(\n actorsDict.get(actor),\n actor.replace(elementTypes.ACTOR, '')\n );\n });\n workobjectNames.forEach((workObject) => {\n newWorkobjects.add(\n workObjectsDict.get(workObject),\n workObject.replace(elementTypes.WORKOBJECT, '')\n );\n });\n\n return {\n name: this.titleService.getDomainName(),\n actors: newActors,\n workObjects: newWorkobjects,\n };\n }\n\n private createConfigFromCanvas(): DomainConfiguration {\n const config = {\n name: INITIAL_DOMAIN_NAME,\n actors: new Dictionary(),\n workObjects: new Dictionary(),\n };\n\n let allCanvasObjects = this.elementRegistryService.getAllCanvasObjects();\n\n allCanvasObjects\n .map((e) => e.businessObject)\n .forEach((element) => {\n const type = element.type\n .replace(elementTypes.ACTOR, '')\n .replace(elementTypes.WORKOBJECT, '');\n if (element.type.includes(elementTypes.ACTOR)) {\n let src = this.iconDictionaryService.getIconSource(type) || '';\n config.actors.add(src, type);\n } else if (element.type.includes(elementTypes.WORKOBJECT)) {\n let src = this.iconDictionaryService.getIconSource(type) || '';\n config.workObjects.add(src, type);\n }\n });\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject } from 'rxjs';\nimport { UsedIconList } from 'src/app/Domain/Domain-Configuration/UsedIconList';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n SNACKBAR_SUCCESS,\n} from '../../Domain/Common/constants';\nimport { Dictionary } from '../../Domain/Common/dictionary/dictionary';\nimport {\n CustomDomainConfiguration,\n DomainConfiguration,\n} from '../../Domain/Common/domainConfiguration';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { IconListItem } from '../../Domain/Domain-Configuration/iconListItem';\nimport { getNameFromType } from '../../Utils/naming';\nimport { StorageService } from '../BrowserStorage/storage.service';\nimport { ImportDomainStoryService } from '../Import/import-domain-story.service';\nimport { TitleService } from '../Title/title.service';\nimport { DomainConfigurationService } from './domain-configuration.service';\nimport { IconDictionaryService } from './icon-dictionary.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DomainCustomizationService {\n private readonly domainConfigurationTypes: BehaviorSubject;\n\n private allIconListItems = new Dictionary();\n\n private configurationHasChanged = false;\n\n selectedActors$ = new BehaviorSubject([]);\n selectedWorkobjects$ = new BehaviorSubject([]);\n private changedDomainConfiguration: DomainConfiguration | undefined;\n\n constructor(\n private configurationService: DomainConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n private importService: ImportDomainStoryService,\n private titleService: TitleService,\n private storageService: StorageService,\n private elementRegistryService: ElementRegistryService,\n private snackbar: MatSnackBar\n ) {\n this.domainConfigurationTypes = new BehaviorSubject(\n this.configurationService.getCurrentConfigurationNamesWithoutPrefix()\n );\n\n this.selectedWorkobjects$.next(\n this.domainConfigurationTypes.value.workObjects\n );\n this.selectedActors$.next(this.domainConfigurationTypes.value.actors);\n\n iconDictionaryService\n .getAllIconDictionary()\n .keysArray()\n .forEach((iconName) => {\n this.addIconToAllIconList(iconName);\n });\n\n importService.importedConfigurationEvent.subscribe((config) => {\n this.importConfiguration(config);\n });\n const storedDomainConfiguration =\n this.storageService.getStoredDomainConfiguration();\n if (storedDomainConfiguration) {\n this.importConfiguration(storedDomainConfiguration, false);\n }\n const importedConfiguration = this.importService.getImportedConfiguration();\n if (importedConfiguration) {\n this.importConfiguration(importedConfiguration, false);\n }\n }\n\n importConfiguration(\n customConfig: DomainConfiguration,\n saveDomain = true\n ): void {\n const actorKeys = customConfig.actors.keysArray();\n const workObjectKeys = customConfig.workObjects.keysArray();\n\n this.changeName(customConfig.name);\n actorKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedActorNames = this.selectedActors$.value;\n if (!selectedActorNames.includes(iconName)) {\n this.selectActor(iconName);\n }\n });\n workObjectKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedWorkobjectNames = this.selectedWorkobjects$.value;\n if (!selectedWorkobjectNames.includes(iconName)) {\n this.selectWorkObject(iconName);\n }\n });\n if (saveDomain) {\n this.saveDomain(this.elementRegistryService.getUsedIcons(), true);\n }\n }\n\n /** Getter & Setter **/\n getDomainConfiguration(): BehaviorSubject {\n return this.domainConfigurationTypes;\n }\n\n getIconForName(iconName: string): BehaviorSubject {\n return this.allIconListItems.get(iconName);\n }\n\n isIconActor(iconName: string): boolean {\n return (\n this.domainConfigurationTypes.value.actors.filter(\n (actor: string) => actor === iconName\n ).length > 0\n );\n }\n\n isIconWorkObject(iconName: string): boolean {\n return (\n this.domainConfigurationTypes.value.workObjects.filter(\n (workObject: string) => workObject === iconName\n ).length > 0\n );\n }\n\n changeName(domainName: string): void {\n this.titleService.setDomainName(domainName);\n const changedDomain = this.domainConfigurationTypes.value;\n changedDomain.name = domainName;\n this.domainConfigurationTypes.next(changedDomain);\n }\n\n /** Selected Icons **/\n setAsUnassigned(iconName: string, isActor: boolean): void {\n if (isActor) {\n this.deselectActor(iconName);\n } else {\n this.deselectWorkobject(iconName);\n }\n this.updateIcon(false, false, iconName);\n }\n\n setAsActor(isActor: boolean, actor: string): void {\n if (isActor) {\n this.updateIcon(true, false, actor);\n this.selectActor(actor);\n this.deselectWorkobject(actor);\n } else {\n this.deselectActor(actor);\n this.updateIcon(false, false, actor);\n }\n }\n\n setAsWorkobject(isWorkobject: boolean, workobject: string): void {\n if (isWorkobject) {\n this.updateIcon(false, true, workobject);\n this.selectWorkObject(workobject);\n this.deselectActor(workobject);\n } else {\n this.deselectWorkobject(workobject);\n this.updateIcon(false, false, workobject);\n }\n }\n\n selectActor(actor: string): void {\n const value = this.domainConfigurationTypes.value;\n if (!value.actors.includes(actor)) {\n value.actors.push(actor);\n this.domainConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n }\n\n selectWorkObject(workObject: string): void {\n const value = this.domainConfigurationTypes.value;\n if (!value.workObjects.includes(workObject)) {\n value.workObjects.push(workObject);\n this.domainConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n }\n\n deselectActor(actor: string): void {\n if (this.domainConfigurationTypes) {\n this.domainConfigurationTypes.next({\n name: this.domainConfigurationTypes.value.name,\n actors: this.domainConfigurationTypes.value.actors.filter(\n (a: string) => !a.includes(actor)\n ),\n workObjects: this.domainConfigurationTypes.value.workObjects,\n });\n }\n this.updateActorSubject();\n }\n\n deselectWorkobject(workobject: string): void {\n if (this.domainConfigurationTypes) {\n this.domainConfigurationTypes.next({\n name: this.domainConfigurationTypes.value.name,\n actors: this.domainConfigurationTypes.value.actors,\n workObjects: this.domainConfigurationTypes.value.workObjects.filter(\n (w: string) => !w.includes(workobject)\n ),\n });\n }\n this.updateWorkObjectSubject();\n }\n\n setSelectedWorkObject(sortedList: string[]): void {\n const value = this.domainConfigurationTypes.value;\n value.workObjects = sortedList;\n this.domainConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n\n setSelectedActors(sortedList: string[]): void {\n const value = this.domainConfigurationTypes.value;\n value.actors = sortedList;\n this.domainConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n\n private updateActorSubject(): void {\n this.selectedActors$.next(this.domainConfigurationTypes.value.actors);\n this.configurationHasChanged = true;\n }\n\n private updateWorkObjectSubject(): void {\n this.selectedWorkobjects$.next(\n this.domainConfigurationTypes.value.workObjects\n );\n this.configurationHasChanged = true;\n }\n\n /** Revert Domain **/\n resetDomain(): void {\n const defaultConfig =\n this.configurationService.createMinimalConfigurationWithDefaultIcons();\n\n this.selectedWorkobjects$.value.forEach((workObjectName) => {\n if (!defaultConfig.workObjects.has(workObjectName)) {\n this.deselectWorkobject(workObjectName);\n }\n });\n this.selectedActors$.value.forEach((actorName) => {\n if (!defaultConfig.actors.has(actorName)) {\n this.deselectActor(actorName);\n }\n });\n\n this.domainConfigurationTypes.next({\n name: defaultConfig.name,\n actors: defaultConfig.actors.keysArray(),\n workObjects: defaultConfig.workObjects.keysArray(),\n } as CustomDomainConfiguration);\n\n this.updateAllIconBehaviourSubjects();\n }\n\n cancel(): void {\n this.domainConfigurationTypes.next(\n this.configurationService.getCurrentConfigurationNamesWithoutPrefix()\n );\n this.updateAllIconBehaviourSubjects();\n this.resetToInitialConfiguration();\n }\n\n private resetToInitialConfiguration(): void {\n this.updateActorSubject();\n this.updateWorkObjectSubject();\n }\n\n /** Persist Domain **/\n saveDomain(usedIcons: UsedIconList, imported = false): void {\n const changedActors: string[] = [];\n const changedWorkobjects: string[] = [];\n if (this.configurationHasChanged) {\n const changedDomain = this.createDomainConfiguration();\n\n const configurationActors = changedDomain.actors.keysArray();\n usedIcons?.actors.forEach((actor) => {\n if (\n !configurationActors?.includes(actor) &&\n !changedActors.includes(actor)\n ) {\n changedActors.push(actor);\n }\n });\n const configurationWorkobjects = changedDomain.workObjects.keysArray();\n usedIcons?.workobjects.forEach((workobject) => {\n if (\n !configurationWorkobjects?.includes(workobject) &&\n !changedWorkobjects.includes(workobject)\n ) {\n changedWorkobjects.push(workobject);\n }\n });\n\n if (!changedActors.length && !changedWorkobjects.length) {\n this.changedDomainConfiguration = changedDomain;\n\n this.updateIcons(changedDomain);\n\n this.storageService.setStoredDomainConfiguration(\n this.changedDomainConfiguration\n );\n this.snackbar.open(\n imported\n ? 'Configuration imported successfully'\n : 'Configuration saved successfully',\n undefined,\n {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n }\n );\n }\n } else {\n this.snackbar.open(\n imported\n ? 'No configuration to be imported'\n : 'No configuration to be saved',\n undefined,\n {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n if (changedActors.length || changedWorkobjects.length) {\n if (changedActors.length) {\n const actors = changedActors.join(', ');\n this.snackbar.open(\n `The following icons are already in use as actors and cannot be changed: ${actors}`,\n undefined,\n {\n duration: SNACKBAR_DURATION * 3,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n if (changedWorkobjects.length) {\n const workobjects = changedWorkobjects.join(', ');\n this.snackbar.open(\n `The following icons are already in use as workobjects and cannot be changed: ${workobjects}`,\n undefined,\n {\n duration: SNACKBAR_DURATION * 3,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n }\n }\n\n exportDomain(): void {\n this.configurationService.exportConfiguration();\n }\n\n getAndClearSavedConfiguration(): DomainConfiguration | undefined {\n const temp = this.changedDomainConfiguration;\n this.changedDomainConfiguration = undefined;\n\n return temp;\n }\n\n private createDomainConfiguration(): DomainConfiguration {\n const actors = new Dictionary();\n const workObjects = new Dictionary();\n\n this.domainConfigurationTypes.value.actors.forEach((name: string) => {\n actors.add(this.iconDictionaryService.getIconSource(name), name);\n });\n this.domainConfigurationTypes.value.workObjects.forEach((name: string) => {\n workObjects.add(this.iconDictionaryService.getIconSource(name), name);\n });\n\n return {\n name: this.domainConfigurationTypes.value.name || '',\n actors,\n workObjects,\n };\n }\n\n /** Update Icons **/\n addNewIcon(iconName: string): void {\n const iconDict = new Dictionary();\n iconDict.add(this.getSrcForIcon(iconName), iconName);\n this.iconDictionaryService.addIconsToCss(iconDict);\n this.addIconToAllIconList(iconName);\n }\n\n private addIconToAllIconList(iconName: string): void {\n this.allIconListItems.add(\n new BehaviorSubject({\n name: iconName,\n svg: this.getSrcForIcon(iconName),\n isActor: this.isIconActor(iconName),\n isWorkObject: this.isIconWorkObject(iconName),\n }),\n iconName\n );\n }\n\n private updateIcon(\n isActor: boolean,\n isWorkobject: boolean,\n iconName: string\n ) {\n const iconBehaviourSubject = this.getIconForName(iconName);\n const icon = iconBehaviourSubject.value;\n icon.isActor = isActor;\n icon.isWorkObject = isWorkobject;\n\n iconBehaviourSubject.next(icon);\n }\n\n private updateAllIconBehaviourSubjects(): void {\n const customDomainConfiguration = this.domainConfigurationTypes.value;\n this.allIconListItems.keysArray().forEach((iconName) => {\n if (customDomainConfiguration.actors.includes(iconName)) {\n this.updateIcon(true, false, iconName);\n } else if (customDomainConfiguration.workObjects.includes(iconName)) {\n this.updateIcon(false, true, iconName);\n } else {\n this.updateIcon(false, false, iconName);\n }\n });\n }\n\n private getSrcForIcon(name: string): string {\n let iconName: string;\n if (name.includes(elementTypes.DOMAINSTORY)) {\n // TODO: td: This returns empty every time!\n iconName = getNameFromType(name);\n } else {\n iconName = name;\n }\n const rawSrc = this.iconDictionaryService.getIconSource(iconName);\n\n if (!rawSrc) {\n return '';\n }\n\n if (rawSrc.startsWith('data')) {\n return rawSrc;\n } else {\n return 'data:image/svg+xml,' + rawSrc;\n }\n }\n\n private updateIcons(changedDomain: DomainConfiguration) {\n this.allIconListItems\n .keysArray()\n .forEach((item) => this.setAsUnassigned(item, this.isIconActor(item)));\n changedDomain.actors.keysArray().forEach((actor) => {\n this.iconDictionaryService.registerIconForType(\n elementTypes.ACTOR,\n actor,\n this.iconDictionaryService.getFullDictionary().get(actor)\n );\n this.iconDictionaryService.unregisterIconForType(\n elementTypes.WORKOBJECT,\n actor\n );\n this.setAsActor(true, actor);\n });\n changedDomain.workObjects.keysArray().forEach((workObject) => {\n this.iconDictionaryService.registerIconForType(\n elementTypes.WORKOBJECT,\n workObject,\n this.iconDictionaryService.getFullDictionary().get(workObject)\n );\n this.iconDictionaryService.unregisterIconForType(\n elementTypes.ACTOR,\n workObject\n );\n this.setAsWorkobject(true, workObject);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { Configuration } from 'src/app/Domain/Common/configuration';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport {\n defaultConf,\n IconConfiguration,\n} from 'src/app/Domain/Common/iconConfiguration';\nimport {\n allIcons,\n appendedIcons,\n} from 'src/app/Domain/Domain-Configuration/allIcons';\nimport { getNameFromType } from '../../Utils/naming';\nimport { sanitizeIconName } from '../../Utils/sanitizer';\n\nexport const ICON_PREFIX = 'icon-domain-story-';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconDictionaryService {\n private actorIconDictionary = new Dictionary();\n private workObjectDictionary = new Dictionary();\n\n private allIconDictionary = new Dictionary();\n private iconDictionaryForBPMN = new Dictionary();\n\n private customConfiguration?: DomainConfiguration;\n\n private readonly iconConfig: IconConfiguration;\n\n constructor() {\n this.allIconDictionary.addEach(allIcons);\n this.iconConfig = new IconConfiguration(this.allIconDictionary);\n }\n\n initTypeDictionaries(actors: string[], workObjects: string[]): void {\n if (!actors || actors.length == 0) {\n actors = defaultConf.actors;\n }\n if (!workObjects || workObjects.length == 0) {\n workObjects = defaultConf.workObjects;\n }\n\n const allTypes = new Dictionary();\n allTypes.addEach(allIcons);\n allTypes.appendDict(this.getAppendedIconDictionary());\n\n this.initDictionary(\n actors,\n allTypes,\n this.actorIconDictionary,\n elementTypes.ACTOR\n );\n this.initDictionary(\n workObjects,\n allTypes,\n this.workObjectDictionary,\n elementTypes.WORKOBJECT\n );\n }\n\n private initDictionary(\n keys: string[],\n allTypes: Dictionary,\n dictionary: Dictionary,\n elementType: elementTypes\n ) {\n dictionary.clear();\n for (const key of keys) {\n dictionary.add(allTypes.get(key), key);\n }\n\n dictionary.keysArray().forEach((name) => {\n this.registerIconForBPMN(\n name,\n ICON_PREFIX + sanitizeIconName(name.toLowerCase()),\n elementType\n );\n });\n }\n\n getCurrentIconConfigurationForBPMN(): Configuration {\n if (this.customConfiguration) {\n return this.iconConfig.createCustomConf(this.customConfiguration);\n }\n return this.iconConfig.getDefaultConf();\n }\n\n allInTypeDictionary(type: elementTypes, elements: BusinessObject[]): boolean {\n let collection: Dictionary;\n if (type === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n\n let allIn = true;\n if (elements) {\n elements.forEach((element) => {\n if (!collection.has(getNameFromType(element.type))) {\n allIn = false;\n }\n });\n } else {\n return false;\n }\n return allIn;\n }\n\n /** Load Icons from Configuration **/\n\n addIconsFromDomainConfiguration(\n dictionaryType: elementTypes,\n iconTypes: string[]\n ): void {\n let collection: Dictionary;\n if (dictionaryType === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (dictionaryType === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n\n const allTypes = new Dictionary();\n allTypes.addEach(allIcons);\n allTypes.appendDict(appendedIcons);\n\n iconTypes.forEach((name) => {\n if (!collection.has(name)) {\n const src = allTypes.get(name);\n if (src) {\n this.registerIconForType(dictionaryType, name, src);\n this.registerIconForBPMN(\n name,\n sanitizeIconName(ICON_PREFIX + name.toLowerCase()),\n dictionaryType\n );\n }\n }\n });\n }\n\n /** Add Icon(s) to Dictionary **/\n registerIconForBPMN(\n name: string,\n src: string,\n elementType: elementTypes\n ): void {\n if (name.includes(elementType)) {\n throw new Error('Should not include elementType');\n }\n\n this.iconDictionaryForBPMN.set(`${elementType}${name}`, src);\n }\n\n addIconsToTypeDictionary(\n actorIcons: BusinessObject[],\n workObjectIcons: BusinessObject[]\n ) {\n if (!this.allInTypeDictionary(elementTypes.ACTOR, actorIcons)) {\n this.addIconsFromDomainConfiguration(\n elementTypes.ACTOR,\n actorIcons.map((element) => getNameFromType(element.type))\n );\n }\n if (!this.allInTypeDictionary(elementTypes.WORKOBJECT, workObjectIcons)) {\n this.addIconsFromDomainConfiguration(\n elementTypes.WORKOBJECT,\n workObjectIcons.map((element) => getNameFromType(element.type))\n );\n }\n }\n\n registerIconForType(type: elementTypes, name: string, src: string): void {\n if (name.includes(type)) {\n throw new Error('Name should not include type!');\n }\n\n let collection = new Dictionary();\n if (type === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n collection.add(src, name);\n }\n\n unregisterIconForType(type: elementTypes, name: string): void {\n if (name.includes(type)) {\n throw new Error('Name should not include type!');\n }\n\n let collection = new Dictionary();\n if (type === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n collection.delete(name);\n }\n\n updateIconRegistries(\n actors: BusinessObject[],\n workObjects: BusinessObject[],\n config: DomainConfiguration\n ): void {\n const elements: BusinessObject[] = [];\n\n actors.forEach((a) => elements.push(a));\n workObjects.forEach((w) => elements.push(w));\n\n const customIcons = new Dictionary();\n\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n config.actors.keysArray().forEach((key) => {\n actorsDict.set(key, config.actors.get(key));\n });\n config.workObjects.keysArray().forEach((key) => {\n workObjectsDict.set(key, config.workObjects.get(key));\n });\n\n this.extractCustomIconsFromDictionary(actorsDict, customIcons);\n this.extractCustomIconsFromDictionary(workObjectsDict, customIcons);\n\n elements.forEach((element) => {\n const name = sanitizeIconName(\n element.type\n .replace(elementTypes.ACTOR, '')\n .replace(elementTypes.WORKOBJECT, '')\n );\n if (\n (element.type.includes(elementTypes.ACTOR) ||\n element.type.includes(elementTypes.WORKOBJECT)) &&\n !this.getFullDictionary().has(name)\n ) {\n let elementType;\n if (element.type.includes(elementTypes.ACTOR)) {\n elementType = elementTypes.ACTOR;\n } else {\n elementType = elementTypes.WORKOBJECT;\n }\n this.registerIconForBPMN(\n ICON_PREFIX + name.toLowerCase(),\n getNameFromType(element.type),\n elementType\n );\n }\n });\n\n this.addNewIconsToDictionary(customIcons);\n this.addIconsToTypeDictionary(actors, workObjects);\n }\n\n private extractCustomIconsFromDictionary(\n elementDictionary: Dictionary,\n customIcons: Dictionary\n ) {\n elementDictionary.keysArray().forEach((name) => {\n const sanitizedName = sanitizeIconName(name);\n if (!this.getFullDictionary().has(sanitizedName)) {\n customIcons.add(elementDictionary.get(name), sanitizedName);\n }\n });\n }\n\n /** Add new Icon(s) **/\n\n addNewIconsToDictionary(customIcons: Dictionary) {\n customIcons.keysArray().forEach((key) => {\n const custom = customIcons.get(key);\n this.addIMGToIconDictionary(custom.src, key);\n });\n this.addIconsToCss(customIcons);\n }\n\n addIMGToIconDictionary(input: string, name: string): void {\n appendedIcons.set(name, input);\n }\n\n addIconsToCss(customIcons: Dictionary) {\n const sheetEl = document.getElementById('iconsCss');\n customIcons.keysArray().forEach((key) => {\n const src = customIcons.get(key);\n const iconStyle =\n '.' +\n ICON_PREFIX +\n sanitizeIconName(key.toLowerCase()) +\n '::before{ content: url(\"data:image/svg+xml;utf8,' +\n this.wrapSRCInSVG(src) +\n '\"); margin: 3px;}';\n // @ts-ignore\n sheetEl?.sheet?.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n });\n }\n\n private wrapSRCInSVG(src: string): string {\n return (\n \"\"\n );\n }\n\n /** Getter & Setter **/\n\n getFullDictionary(): Dictionary {\n const fullDictionary = new Dictionary();\n fullDictionary.appendDict(this.allIconDictionary);\n fullDictionary.appendDict(this.getAppendedIconDictionary());\n return fullDictionary;\n }\n\n getAppendedIconDictionary(): Dictionary {\n const appendedDict = new Dictionary();\n appendedIcons.keysArray().forEach((key) => {\n if (!this.allIconDictionary.has(key)) {\n appendedDict.set(key, appendedIcons.get(key));\n }\n });\n return appendedDict;\n }\n\n getTypeDictionary(type: elementTypes): Dictionary {\n if (type === elementTypes.ACTOR) {\n return this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n return this.workObjectDictionary;\n }\n return new Dictionary();\n }\n\n getTypeDictionaryKeys(type: elementTypes): string[] {\n return this.getTypeDictionary(type).keysArray();\n }\n\n getTypeIconSRC(type: elementTypes, name: string): string | null {\n if (type === elementTypes.ACTOR) {\n return this.actorIconDictionary.get(name);\n } else if (type === elementTypes.WORKOBJECT) {\n return this.workObjectDictionary.get(name);\n }\n return null;\n }\n\n getIconForBPMN(elementType: elementTypes, name: string): string | null {\n return this.iconDictionaryForBPMN.get(`${elementType}${name}`);\n }\n\n getIconSource(name: string): string | null {\n if (this.allIconDictionary.has(name)) {\n return this.allIconDictionary.get(name);\n } else if (appendedIcons.has(name)) {\n return appendedIcons.get(name);\n }\n return null;\n }\n\n getElementsOfType(\n elements: BusinessObject[],\n type: elementTypes\n ): BusinessObject[] {\n const elementOfType: any = [];\n elements.forEach((element) => {\n if (element.type.includes(type)) {\n elementOfType.push(element);\n }\n });\n return elementOfType;\n }\n\n getAllIconDictionary(): Dictionary {\n return this.allIconDictionary;\n }\n\n getActorsDictionary(): Dictionary {\n return this.actorIconDictionary;\n }\n\n getWorkObjectsDictionary(): Dictionary {\n return this.workObjectDictionary;\n }\n\n getIconConfiguration(): IconConfiguration {\n return this.iconConfig;\n }\n\n setCustomConfiguration(customConfiguration: DomainConfiguration): void {\n this.customConfiguration = customConfiguration;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { CanvasObject } from 'src/app/Domain/Common/canvasObject';\nimport { GroupCanvasObject } from '../../Domain/Common/groupCanvasObject';\nimport { ActivityCanvasObject } from '../../Domain/Common/activityCanvasObject';\nimport { UsedIconList } from 'src/app/Domain/Domain-Configuration/UsedIconList';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElementRegistryService {\n private registry: any;\n private fullyInitialized = false;\n\n /**\n * Initially the registry has only the root-Element.\n * Once the canvas has bees initialized, we adjust the reference to point to the elements on the canvas for convenience\n */\n correctInitialize(): void {\n if (!this.fullyInitialized) {\n if (this.registry.__implicitroot) {\n this.registry = this.registry.__implicitroot.element.children;\n this.fullyInitialized = true;\n }\n }\n }\n\n setElementRegistry(registry: any): void {\n this.registry = registry._elements;\n }\n\n clear(): void {\n this.registry = null;\n this.fullyInitialized = false;\n }\n\n createObjectListForDSTDownload(): CanvasObject[] {\n if (this.registry) {\n const allObjectsFromCanvas = this.getAllCanvasObjects();\n const groups = this.getAllGroups();\n\n const objectList: CanvasObject[] = [];\n\n this.fillListOfCanvasObjects(allObjectsFromCanvas, objectList, groups);\n\n return objectList;\n }\n return [];\n }\n\n private fillListOfCanvasObjects(\n allObjectsFromCanvas: CanvasObject[],\n objectList: CanvasObject[],\n groups: GroupCanvasObject[]\n ): void {\n allObjectsFromCanvas.forEach((canvasElement) => {\n if (canvasElement.type === elementTypes.ACTIVITY) {\n objectList.push(canvasElement);\n }\n\n // ensure that Activities are always after Actors, Workobjects and Groups in .dst files\n else {\n if (canvasElement.type === elementTypes.TEXTANNOTATION) {\n canvasElement.businessObject.width = canvasElement.width;\n canvasElement.businessObject.height = canvasElement.height;\n }\n if (!objectList.includes(canvasElement)) {\n objectList.unshift(canvasElement);\n }\n }\n });\n\n groups.forEach((group) => {\n objectList.push(group);\n });\n }\n\n getAllActivities(): ActivityCanvasObject[] {\n const activities: ActivityCanvasObject[] = [];\n\n this.getAllCanvasObjects().forEach((element) => {\n if (element.type.includes(elementTypes.ACTIVITY)) {\n activities.push(element as ActivityCanvasObject);\n }\n });\n return activities;\n }\n\n getAllConnections(): ActivityCanvasObject[] {\n const connections: ActivityCanvasObject[] = [];\n this.getAllCanvasObjects().forEach((element) => {\n const type = element.type;\n if (type === elementTypes.CONNECTION) {\n connections.push(element as ActivityCanvasObject);\n }\n });\n return connections;\n }\n\n getAllCanvasObjects(): CanvasObject[] {\n const allObjects: CanvasObject[] = [];\n const groupObjects: GroupCanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n // for each memorized group, remove it from the group-array and check its children, whether they are groups or not\n // if a child is a group, memorize it in the group-array\n // other children should already be in the allObjects list\n let i = groupObjects.length - 1;\n while (groupObjects.length >= 1) {\n const currentGroup = groupObjects.pop();\n // @ts-ignore\n currentGroup.children.forEach((child: CanvasObject) => {\n const type = child.type;\n if (type.includes(elementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n i = groupObjects.length - 1;\n }\n return allObjects;\n }\n\n // returns all groups on the canvas and inside other groups\n getAllGroups(): GroupCanvasObject[] {\n const groupObjects: GroupCanvasObject[] = [];\n const allObjects: CanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n for (const group of groupObjects) {\n group.children?.forEach((child: CanvasObject) => {\n if (child.type.includes(elementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n }\n return groupObjects;\n }\n\n private checkChildForGroup(\n groupObjects: GroupCanvasObject[],\n allObjects: CanvasObject[]\n ): void {\n const registryElementNames = Object.keys(this.registry);\n for (let name of registryElementNames) {\n const entry = this.registry[name].element;\n if (entry.businessObject) {\n const type = entry.type;\n if (type && type.includes(elementTypes.GROUP)) {\n // if it is a group, memorize this for later\n groupObjects.push(entry);\n } else if (type) {\n allObjects.push(entry);\n }\n }\n }\n }\n\n // get a list of activities, that originate from an actor-type\n getActivitiesFromActors(): ActivityCanvasObject[] {\n const activitiesFromActors: ActivityCanvasObject[] = [];\n const activities = this.getAllActivities();\n\n activities.forEach((activity: ActivityCanvasObject) => {\n if (activity.source?.type.includes(elementTypes.ACTOR)) {\n activitiesFromActors.push(activity);\n }\n });\n return activitiesFromActors;\n }\n\n getUsedIcons(): UsedIconList {\n const actors = this.getAllActors();\n const workobjects = this.getAllWorkobjects();\n\n return {\n actors: actors.map((a) => a.type.replace(elementTypes.ACTOR, '')),\n workobjects: workobjects.map((w) =>\n w.type.replace(elementTypes.WORKOBJECT, '')\n ),\n };\n }\n\n private getAllActors() {\n return this.getAllCanvasObjects().filter((co) =>\n co.type.includes(elementTypes.ACTOR)\n );\n }\n\n getAllWorkobjects() {\n return this.getAllCanvasObjects().filter((co) =>\n co.type.includes(elementTypes.WORKOBJECT)\n );\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { DomainConfigurationService } from 'src/app/Service/DomainConfiguration/domain-configuration.service';\nimport { sanitizeForDesktop } from 'src/app/Utils/sanitizer';\nimport { TitleService } from 'src/app/Service/Title/title.service';\nimport { ConfigAndDST } from 'src/app/Domain/Export/configAndDst';\nimport { DirtyFlagService } from 'src/app/Service/DirtyFlag/dirty-flag.service';\nimport { PngService } from 'src/app/Service/Export/png.service';\nimport { SvgService } from 'src/app/Service/Export/svg.service';\nimport { Subscription } from 'rxjs';\nimport { RendererService } from '../Renderer/renderer.service';\nimport { HtmlPresentationService } from './html-presentation.service';\nimport { formatDate } from '@angular/common';\nimport { environment } from '../../../environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ExportService implements OnDestroy {\n titleSubscription: Subscription;\n descriptionSubscription: Subscription;\n\n title = '';\n description = '';\n\n constructor(\n private configurationService: DomainConfigurationService,\n private titleService: TitleService,\n private dirtyFlagService: DirtyFlagService,\n private pngService: PngService,\n private svgService: SvgService,\n private htmlPresentationService: HtmlPresentationService,\n private rendererService: RendererService\n ) {\n this.titleSubscription = this.titleService.title$.subscribe(\n (title: string) => {\n this.title = title;\n }\n );\n this.descriptionSubscription = this.titleService.description$.subscribe(\n (description: string) => {\n this.description = description;\n }\n );\n }\n\n ngOnDestroy(): void {\n this.titleSubscription.unsubscribe();\n this.descriptionSubscription.unsubscribe();\n }\n\n isDomainStoryExportable(): boolean {\n return this.rendererService.getStory().length >= 1;\n }\n\n createConfigAndDST(DomainStory: any): ConfigAndDST {\n return new ConfigAndDST(\n this.configurationService.getCurrentConfigurationForExport(),\n DomainStory\n );\n }\n\n downloadDST(): void {\n const dst = this.getStoryForDownload();\n const configAndDST = this.createConfigAndDST(dst);\n const json = JSON.stringify(configAndDST, null, 2);\n\n const filename = sanitizeForDesktop(\n this.title + '_' + this.getCurrentDateString()\n );\n\n this.downloadFile(\n json,\n 'data:text/plain;charset=utf-8,',\n filename,\n '.egn',\n true\n );\n }\n\n private downloadFile(\n data: string,\n datatype: string,\n filename: string,\n fileEnding: string,\n makeClean: boolean\n ) {\n const element = document.createElement('a');\n element.setAttribute('href', datatype + encodeURIComponent(data));\n element.setAttribute('download', filename + fileEnding);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n if (makeClean) {\n this.dirtyFlagService.makeClean();\n }\n\n document.body.removeChild(element);\n }\n\n downloadSVG(withTitle: boolean, useWhiteBackground: boolean): void {\n const story = this.getStoryForDownload();\n const dst = this.createConfigAndDST(story);\n\n const svgData = this.svgService.createSVGData(\n this.title,\n this.description,\n dst,\n withTitle,\n useWhiteBackground\n );\n\n this.downloadFile(\n svgData,\n 'data:application/bpmn20-xml;charset=UTF-8,',\n sanitizeForDesktop(this.title + '_' + this.getCurrentDateString()),\n '.egn.svg',\n true\n );\n }\n\n downloadPNG(withTitle: boolean): void {\n const canvas = document.getElementById('canvas');\n if (canvas) {\n const container = canvas.getElementsByClassName('djs-container');\n const svgElements = container[0].getElementsByTagName('svg');\n const outerSVGElement = svgElements[0];\n const viewport = outerSVGElement.getElementsByClassName('viewport')[0];\n const layerBase = viewport.getElementsByClassName('layer-base')[0];\n\n const image = document.createElement('img');\n\n // removes unwanted black dots in image\n let svg = this.pngService.extractSVG(viewport, outerSVGElement);\n\n svg = this.pngService.prepareSVG(\n svg,\n layerBase,\n this.description,\n this.title,\n withTitle\n );\n\n image.onload = () => {\n const tempCanvas = document.createElement('canvas');\n\n // add a 10px buffer to the right and lower boundary\n tempCanvas.width = this.pngService.getWidth() + 10;\n tempCanvas.height = this.pngService.getHeight() + 10;\n\n const ctx = tempCanvas.getContext('2d');\n if (ctx) {\n // fill with white background\n ctx.rect(0, 0, tempCanvas.width, tempCanvas.height);\n ctx.fillStyle = 'white';\n ctx.fill();\n\n ctx.drawImage(image, 0, 0);\n }\n\n const png64 = tempCanvas.toDataURL('image/png');\n const ele = document.createElement('a');\n ele.setAttribute(\n 'download',\n sanitizeForDesktop(this.title) +\n '_' +\n this.getCurrentDateString() +\n '.png'\n );\n ele.setAttribute('href', png64);\n document.body.appendChild(ele);\n ele.click();\n document.body.removeChild(ele);\n\n // image source has to be removed to circumvent browser caching\n image.src = '';\n };\n image.onchange = image.onload;\n\n image.width = this.pngService.getWidth();\n image.height = this.pngService.getHeight();\n\n image.src = 'data:image/svg+xml,' + svg;\n }\n }\n\n downloadHTMLPresentation(): void {\n const filename = sanitizeForDesktop(\n this.title + '_' + this.getCurrentDateString()\n );\n this.htmlPresentationService.downloadHTMLPresentation(filename).then();\n }\n\n private getStoryForDownload(): unknown[] {\n const story = this.rendererService.getStory() as unknown[];\n story.push({ info: this.titleService.getDescription() });\n story.push({ version: environment.version });\n return story;\n }\n\n private getCurrentDateString(): string {\n return formatDate(new Date(), 'YYYY-MM-dd', 'en-GB');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { sanitizeForDesktop } from '../../Utils/sanitizer';\nimport { ReplayService } from '../Replay/replay.service';\n// @ts-ignore\nimport doT from 'dot';\nimport { TitleService } from '../Title/title.service';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Initial idea and PR from https://github.com/indika-dev\n */\nexport class HtmlPresentationService {\n constructor(\n private replayService: ReplayService,\n private titleService: TitleService\n ) {}\n\n private multiplexSecret: any;\n private multiplexId: any;\n\n private modeler: any;\n\n setModelerClasses(canvas: any, selection: any, modeler: any): void {\n this.modeler = modeler;\n }\n\n private static viewBoxCoordinates(svg: any): any {\n const ViewBoxCoordinate =\n /width=\"([^\"]+)\"\\s+height=\"([^\"]+)\"\\s+viewBox=\"([^\"]+)\"/;\n const match = svg.match(ViewBoxCoordinate);\n return match[3];\n }\n\n /*\n ---------------------------\n SVG handling starts here\n ----------------------------\n */\n\n async downloadHTMLPresentation(filename: string): Promise {\n const svgData = [];\n // export all sentences of domain story\n this.replayService.startReplay();\n try {\n const result = await this.modeler.saveSVG({});\n this.fixActivityMarkersForEachStep(\n result,\n this.replayService.getCurrentStepNumber()\n );\n svgData.push({\n content: HtmlPresentationService.createSVGData(result.svg),\n transition: 'slide',\n });\n } catch (err) {\n alert('There was an error exporting the SVG.\\n' + err);\n }\n while (\n this.replayService.getCurrentStepNumber() <\n this.replayService.getMaxStepNumber()\n ) {\n this.replayService.nextStep();\n try {\n const result = await this.modeler.saveSVG({});\n this.fixActivityMarkersForEachStep(\n result,\n this.replayService.getCurrentStepNumber()\n );\n svgData.push({\n content: HtmlPresentationService.createSVGData(result.svg),\n transition: 'slide',\n });\n } catch (err) {\n alert('There was an error exporting the SVG.\\n' + err);\n }\n }\n this.replayService.stopReplay();\n\n // create download for presentation\n const revealjsTemplate = document.getElementById('revealjs-template');\n const dots = doT.template(revealjsTemplate?.innerHTML);\n const revealjsData = {\n script: 'script',\n title: this.titleService.getTitle(),\n description: this.titleService.getDescription(),\n sentences: svgData,\n multiplexSecret: this.multiplexSecret,\n multiplexId: this.multiplexId,\n };\n const element = document.createElement('a');\n element.setAttribute(\n 'href',\n 'data:text/html;charset=UTF-8,' +\n this.fixMalformedHtmlScript(dots, revealjsData)\n );\n element.setAttribute('download', sanitizeForDesktop(filename) + '.html');\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n private fixMalformedHtmlScript(\n dots: any,\n revealjsData: {\n multiplexId: any;\n sentences: any[];\n multiplexSecret: any;\n description: string;\n title: string;\n script: string;\n }\n ) {\n return dots(revealjsData).replace(''),\n result.svg.indexOf('') + 7\n );\n const split = defs.split(' {\n const idToReplace = id.substring(4, id.length - 1);\n const newId =\n idToReplace.slice(0, id.length - 5) +\n 'customId' +\n sectionIndex +\n idToReplace.slice(idToReplace.length - 2);\n // @ts-ignore\n result.svg = result.svg.replaceAll(idToReplace, newId);\n });\n newDefs += '= 72) {\n fix = true;\n // https://www.chromestatus.com/features/5656049583390720\n }\n } else if (name.includes('Firefox')) {\n fix = true;\n\n // versionNumber of implementation unknown\n }\n if (fix) {\n while (svg.includes('#')) {\n svg = svg.replace('#', '%23');\n }\n }\n return svg;\n }\n\n findMostOuterElements(svg: HTMLElement): Box {\n let xLeft = 0;\n let xRight = 0;\n let yUp = 0;\n let yDown = 0;\n\n const elements = svg.getElementsByClassName('djs-group');\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const sub = element.children;\n\n let elXLeft: number;\n let elXRight: number;\n let elYUp: number;\n let elYDown: number;\n\n const transform = sub[0].getAttribute('transform');\n if (transform) {\n let nums;\n\n if (transform.includes('matrix')) {\n transform.replace('matrix(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[4]);\n elYUp = parseInt(nums[5]);\n } else {\n transform.replace('translate(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[0]);\n elYUp = parseInt(nums[1]);\n }\n\n const rects = sub[0].getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const width = outerRect.getAttribute('width');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + sub[0].getBoundingClientRect().height;\n } else {\n const rects = element.getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const x = outerRect.getAttribute('x');\n const y = outerRect.getAttribute('y');\n\n elXLeft = parseInt(x != null ? x : '0');\n elYUp = parseInt(y != null ? y : '0');\n\n const width = outerRect.getAttribute('width');\n const height = outerRect.getAttribute('height');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + parseInt(height != null ? height : '0') + 20; // Add 20 px as Padding for text at the bottom\n }\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elXRight > xRight) {\n xRight = elXRight;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n if (elYDown > yDown) {\n yDown = elYDown;\n }\n }\n\n yUp -= 75; // we need to adjust yUp to have space for the title and description\n\n return {\n xLeft,\n xRight,\n yUp,\n yDown,\n };\n }\n\n prepareSVG(\n svg: string,\n layerBase: any,\n description: string,\n title: string,\n withTitle: boolean\n ): string {\n const box = this.findMostOuterElements(layerBase);\n let viewBoxIndex = svg.indexOf('width=\"');\n\n this.calculateWidthAndHeight(box);\n\n const { insertText, extraHeight } = createTitleAndDescriptionSVGElement(\n title,\n description,\n box.xLeft + 10,\n box.yUp + 20,\n this.width\n );\n if (withTitle) {\n this.height += extraHeight;\n }\n\n const bounds = this.createBounds(box, extraHeight);\n\n const dataStart = svg.substring(0, viewBoxIndex);\n viewBoxIndex = svg.indexOf('style=\"');\n\n const dataEnd = svg.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n svg = dataStart + bounds + dataEnd;\n\n const insertIndex = svg.indexOf('') + 20;\n\n if (withTitle) {\n svg = [\n svg.slice(0, insertIndex),\n insertText,\n svg.slice(insertIndex),\n ].join('');\n }\n svg = this.URIHashtagFix(svg);\n\n return svg;\n }\n\n private createBounds(box: Box, extraHeight: number) {\n return (\n 'width=\"' +\n this.width +\n '\" height=\"' +\n this.height +\n '\" viewBox=\" ' +\n box.xLeft +\n ' ' +\n (box.yUp - extraHeight) +\n ' ' +\n this.width +\n ' ' +\n this.height +\n '\" '\n );\n }\n\n /**\n * Calculate the Width and Height of the Bounding Box for the PNG so no Parts are cut off\n */\n private calculateWidthAndHeight(box: Box): [number, number] {\n if (box.xLeft < 0) {\n if (box.xRight < 0) {\n this.width = Math.abs(box.xLeft - box.xRight);\n } else {\n this.width = Math.abs(box.xLeft) + box.xRight;\n }\n } else {\n this.width = box.xRight - box.xLeft;\n }\n\n if (box.yUp < 0) {\n if (box.yDown < 0) {\n this.height = Math.abs(box.yUp - box.yDown);\n } else {\n this.height = Math.abs(box.yUp) + box.yDown;\n }\n } else {\n this.height = box.yDown - box.yUp;\n }\n\n // if the domain-Story is smaller than 300px in width or height, increase its dimensions\n if (this.height < 300) {\n this.height += 300;\n box.yUp -= 150;\n box.yDown += 150;\n }\n if (this.width < 300) {\n this.width += 300;\n box.xLeft -= 150;\n box.xRight += 150;\n }\n return [this.height, this.width];\n }\n\n extractSVG(viewport: any, outerSVGElement: any): string {\n const layerResizers = viewport.getElementsByClassName('layer-resizers');\n const layerOverlays = viewport.getElementsByClassName('layer-overlays');\n const transform = viewport.getAttribute('transform');\n const translate = viewport.getAttribute('translate');\n\n if (layerResizers[0]) {\n layerResizers[0].parentNode.removeChild(layerResizers[0]);\n }\n if (layerOverlays[0]) {\n layerOverlays[0].parentNode.removeChild(layerOverlays[0]);\n }\n\n // remove canvas scrolling and scaling before serializeToString of SVG\n if (transform) {\n viewport.removeAttribute('transform');\n }\n if (translate) {\n viewport.removeAttribute('translate');\n }\n\n const svg = new XMLSerializer().serializeToString(outerSVGElement);\n\n // re-add canvas scrolling and scaling\n if (transform) {\n viewport.setAttribute('transform', transform);\n }\n if (translate) {\n viewport.setAttribute('translate', translate);\n }\n return svg;\n }\n\n getWidth(): number {\n return this.width;\n }\n\n getHeight(): number {\n return this.height;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigAndDST } from 'src/app/Domain/Export/configAndDst';\nimport { createTitleAndDescriptionSVGElement } from 'src/app/Service/Export/exportUtil';\nimport { ModelerService } from '../Modeler/modeler.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SvgService {\n private cacheData = '';\n\n constructor(private modelerService: ModelerService) {}\n\n createSVGData(\n title: string,\n description: string,\n dst: ConfigAndDST,\n withTitle: boolean,\n useWhiteBackground: boolean\n ): string {\n this.cacheData = this.modelerService.getEncoded();\n\n let data = structuredClone(this.cacheData);\n\n let viewBoxIndex = data.indexOf('width=\"');\n\n let { width, height, viewBox } = this.viewBoxCoordinates(data);\n\n let xLeft: number;\n let xRight: number;\n let yUp: number;\n let yDown: number;\n const splitViewBox = viewBox.split(/\\s/);\n\n xLeft = +splitViewBox[0];\n yUp = +splitViewBox[1];\n xRight = +splitViewBox[2];\n yDown = +splitViewBox[3];\n\n if (xRight < 300) {\n xRight += 300;\n width += 300;\n }\n\n const { insertText } = createTitleAndDescriptionSVGElement(\n title,\n description,\n xLeft,\n yUp,\n width\n );\n\n const bounds = this.createBounds(\n width,\n height,\n xLeft,\n yUp,\n xRight,\n yDown,\n withTitle\n );\n\n const dataStart = data.substring(0, viewBoxIndex);\n viewBoxIndex = data.indexOf('\" version');\n\n const dataEnd = data.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n data = dataStart + bounds + dataEnd;\n\n const insertIndex = this.findIndexToInsertData(data);\n\n if (withTitle) {\n data = data.slice(0, insertIndex) + insertText + data.slice(insertIndex);\n }\n\n if (useWhiteBackground) {\n const svgIndex = data.indexOf('width=\"');\n const backgroundColorWhite = 'style=\"background-color:white\" ';\n data =\n data.slice(0, svgIndex) + backgroundColorWhite + data.slice(svgIndex);\n }\n\n return this.appendDST(data, dst);\n }\n\n private findIndexToInsertData(data: string) {\n let insertIndex = data.indexOf('');\n if (insertIndex < 0) {\n insertIndex = data.indexOf('version=\"1.2\">') + 14;\n } else {\n insertIndex += 7;\n }\n return insertIndex;\n }\n\n private createBounds(\n width: number,\n height: number,\n xLeft: number,\n yUp: number,\n xRight: number,\n yDown: number,\n withTitle: boolean\n ): string {\n return (\n 'width=\"' +\n width +\n '\" height=\" ' +\n height +\n '\" viewBox=\"' +\n xLeft +\n ' ' +\n (withTitle ? yUp - 80 : yUp) +\n ' ' +\n xRight +\n ' ' +\n (yDown + 30)\n );\n }\n\n private viewBoxCoordinates(svg: string): {\n width: number;\n height: number;\n viewBox: string;\n } {\n const ViewBoxCoordinate =\n /width=\"([^\"]+)\"\\s+height=\"([^\"]+)\"\\s+viewBox=\"([^\"]+)\"/;\n const match = svg.match(ViewBoxCoordinate);\n if (match) {\n return { width: +match[1], height: +match[2], viewBox: match[3] };\n }\n return { width: 0, height: 0, viewBox: '' };\n }\n\n private appendDST(data: string, dst: ConfigAndDST): string {\n data += '\\n';\n return data;\n }\n}\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { TitleService } from 'src/app/Service/Title/title.service';\nimport { ImportRepairService } from 'src/app/Service/Import/import-repair.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { RendererService } from 'src/app/Service/Renderer/renderer.service';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport {\n DomainConfiguration,\n fromConfigurationFromFile,\n} from 'src/app/Domain/Common/domainConfiguration';\nimport { DialogService } from '../Dialog/dialog.service';\nimport { InfoDialogComponent } from '../../Presentation/Dialog/info-dialog/info-dialog.component';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { InfoDialogData } from '../../Domain/Dialog/infoDialogData';\nimport { restoreTitleFromFileName } from '../../Utils/sanitizer';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\nimport { DomainConfigurationService } from '../DomainConfiguration/domain-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImportDomainStoryService implements OnDestroy {\n titleSubscription: Subscription;\n descriptionSubscription: Subscription;\n\n title = INITIAL_TITLE;\n description = INITIAL_DESCRIPTION;\n private importedConfiguration: DomainConfiguration | null = null;\n\n private importedConfigurationEmitter =\n new EventEmitter();\n\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private importRepairService: ImportRepairService,\n private titleService: TitleService,\n private rendererService: RendererService,\n private dialogService: DialogService,\n private domainConfigurationService: DomainConfigurationService,\n private snackbar: MatSnackBar\n ) {\n this.titleSubscription = this.titleService.title$.subscribe(\n (title: string) => {\n this.title = title;\n }\n );\n this.descriptionSubscription = this.titleService.description$.subscribe(\n (description: string) => {\n this.description = description;\n }\n );\n }\n\n ngOnDestroy(): void {\n this.titleSubscription.unsubscribe();\n this.descriptionSubscription.unsubscribe();\n }\n\n get importedConfigurationEvent(): Observable {\n return this.importedConfigurationEmitter.asObservable();\n }\n\n getImportedConfiguration(): DomainConfiguration {\n const config: DomainConfiguration = {\n name: this.importedConfiguration?.name || '',\n actors: this.importedConfiguration?.actors || new Dictionary(),\n workObjects: this.importedConfiguration?.workObjects || new Dictionary(),\n };\n this.importedConfiguration = null;\n return config;\n }\n\n importDST(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, false);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n importEGN(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, true);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n private fileReaderFunction(\n text: string | ArrayBuffer | null,\n isSVG: boolean,\n isEGN: boolean\n ): void {\n let dstText;\n if (typeof text === 'string') {\n if (isSVG) {\n dstText = this.removeXMLComments(text);\n } else {\n dstText = text;\n }\n\n let elements: any[];\n let config: DomainConfiguration;\n let configFromFile: {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n\n let dstAndConfig = this.extractDstAndConfig(dstText, isSVG);\n if (dstAndConfig == null) {\n return;\n }\n\n // current implementation\n if (dstAndConfig.domain) {\n configFromFile = isEGN\n ? dstAndConfig.domain\n : JSON.parse(dstAndConfig.domain);\n config = fromConfigurationFromFile(configFromFile);\n elements = isEGN ? dstAndConfig.dst : JSON.parse(dstAndConfig.dst);\n } else {\n // legacy implementation\n if (dstAndConfig.config) {\n configFromFile = JSON.parse(dstAndConfig.config);\n config = fromConfigurationFromFile(configFromFile);\n elements = JSON.parse(dstAndConfig.dst);\n } else {\n // implementation prior to configuration\n elements = JSON.parse(dstText);\n config =\n this.domainConfigurationService.createMinimalConfigurationWithDefaultIcons();\n }\n }\n\n const configChanged = this.checkConfigForChanges(config);\n\n let lastElement = elements[elements.length - 1];\n if (!lastElement.id) {\n lastElement = elements.pop();\n let importVersionNumber = lastElement;\n\n // if the last element has the importedVersionNumber has the tag version,\n // then there exists another meta tag 'info' for the description\n if (importVersionNumber.version) {\n lastElement = elements.pop();\n }\n\n if (importVersionNumber.version) {\n importVersionNumber = importVersionNumber.version as string;\n } else {\n importVersionNumber = '?';\n this.snackbar.open(`The version number is unreadable.`, undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\n });\n }\n elements = this.handleVersionNumber(importVersionNumber, elements);\n }\n\n if (\n !this.importRepairService.checkForUnreferencedElementsInActivitiesAndRepair(\n elements\n )\n ) {\n this.showBrokenImportDialog(isSVG ? 'SVG' : 'DST');\n }\n\n this.titleService.updateTitleAndDescription(\n null,\n lastElement.info,\n false\n );\n\n this.importRepairService.adjustPositions(elements);\n\n this.updateIconRegistries(elements, config);\n this.rendererService.importStory(elements, configChanged, config);\n }\n }\n\n private handleVersionNumber(\n importVersionNumber: string,\n elements: BusinessObject[]\n ): BusinessObject[] {\n const versionPrefix = +importVersionNumber.substring(\n 0,\n importVersionNumber.lastIndexOf('.')\n );\n if (versionPrefix <= 0.5) {\n elements =\n this.importRepairService.updateCustomElementsPreviousV050(elements);\n this.showPreviousV050Dialog(versionPrefix);\n }\n return elements;\n }\n\n private extractDstAndConfig(dstText: string, isSVG: boolean) {\n let dstAndConfig = null;\n try {\n dstAndConfig = JSON.parse(dstText);\n } catch (e) {\n this.showBrokenImportDialog(isSVG ? 'SVG' : 'DST');\n }\n return dstAndConfig;\n }\n\n private removeXMLComments(xmlText: string): string {\n xmlText = xmlText.substring(xmlText.indexOf(''));\n while (xmlText.includes('')) {\n xmlText = xmlText.replace('', '');\n }\n xmlText = xmlText.replace('', '');\n xmlText = xmlText.replace('', '');\n return xmlText;\n }\n\n checkConfigForChanges(domainConfiguration: DomainConfiguration): boolean {\n const newActorKeys = domainConfiguration.actors.keysArray();\n const newWorkObjectKeys = domainConfiguration.workObjects.keysArray();\n\n const currentActorKeys = this.iconDictionaryService.getTypeDictionaryKeys(\n elementTypes.ACTOR\n );\n const currentWorkobjectKeys =\n this.iconDictionaryService.getTypeDictionaryKeys(elementTypes.WORKOBJECT);\n\n let changed = false;\n\n if (\n newActorKeys.length !== currentActorKeys.length ||\n newWorkObjectKeys.length !== currentWorkobjectKeys.length\n ) {\n return true;\n }\n\n for (let i = 0; i < newActorKeys.length; i++) {\n changed =\n this.clearName(currentActorKeys[i]) !== this.clearName(newActorKeys[i]);\n if (changed) {\n i = newActorKeys.length;\n }\n }\n if (changed) {\n return changed;\n }\n for (let i = 0; i < newWorkObjectKeys.length; i++) {\n changed =\n this.clearName(currentWorkobjectKeys[i]) !==\n this.clearName(newWorkObjectKeys[i]);\n if (changed) {\n i = newWorkObjectKeys.length;\n }\n }\n return changed;\n }\n\n private clearName(name: string): string {\n return name\n .replace(elementTypes.ACTOR, '')\n .replace(elementTypes.WORKOBJECT, '');\n }\n\n private updateIconRegistries(\n elements: BusinessObject[],\n config: DomainConfiguration\n ): void {\n const actorIcons = this.iconDictionaryService.getElementsOfType(\n elements,\n elementTypes.ACTOR\n );\n const workObjectIcons = this.iconDictionaryService.getElementsOfType(\n elements,\n elementTypes.WORKOBJECT\n );\n this.iconDictionaryService.updateIconRegistries(\n actorIcons,\n workObjectIcons,\n config\n );\n\n this.setImportedConfigurationAndEmit(config);\n }\n\n private showPreviousV050Dialog(version: number): void {\n const title = 'Compatability-Warning';\n const text =\n 'The uploaded Domain-Story is from version ' +\n version +\n '. There may be problems with the default actors or workobjects contained in the story.';\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, text, true);\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n\n private setImportedConfigurationAndEmit(config: DomainConfiguration) {\n this.importedConfiguration = config;\n this.importedConfigurationEmitter.emit(config);\n }\n\n private showBrokenImportDialog(type: string) {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = new InfoDialogData(\n 'Error during import',\n 'The uploaded ' +\n type +\n ' is not complete, there could be elements missing from the canvas.',\n true,\n false\n );\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { Waypoint } from 'src/app/Domain/Common/waypoint';\nimport { ActivityBusinessObject } from '../../Domain/Common/activityBusinessObject';\n\n/**\n * Repairs broken Domain Stories so that it can be rendered onto the canvas\n * by removing activities and connections that reference elements that don't exists\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ImportRepairService {\n checkForUnreferencedElementsInActivitiesAndRepair(\n elements: BusinessObject[]\n ): boolean {\n const activities: ActivityBusinessObject[] = [];\n const objectIDs: string[] = [];\n\n let complete = true;\n\n elements.forEach((element) => {\n const type = element.type;\n if (type === elementTypes.ACTIVITY || type === elementTypes.CONNECTION) {\n activities.push(element as ActivityBusinessObject);\n } else {\n objectIDs.push(element.id);\n }\n });\n\n activities.forEach((activity) => {\n const source = activity.source;\n const target = activity.target;\n if (!objectIDs.includes(source) || !objectIDs.includes(target)) {\n complete = false;\n const activityIndex = elements.indexOf(activity);\n elements = elements.splice(activityIndex, 1);\n }\n });\n return complete;\n }\n\n /**\n * Ensure backwards compatibility.\n * Previously Document had no special name and was just addressed as workObject\n * Bubble was renamed to Conversation\n */\n updateCustomElementsPreviousV050(\n elements: BusinessObject[]\n ): BusinessObject[] {\n for (const element of elements) {\n if (element.type === elementTypes.WORKOBJECT) {\n element.type = elementTypes.WORKOBJECT + 'Document';\n } else if (element.type === elementTypes.WORKOBJECT + 'Bubble') {\n element.type = elementTypes.WORKOBJECT + 'Conversation';\n }\n }\n return elements;\n }\n\n /**\n * Adjusts Positions of Elements to ensure the Domain Story starts in the visible parts of the canvas\n */\n adjustPositions(elements: BusinessObject[]): void {\n let xLeft = 0;\n let yUp = 0;\n let isFirst = true;\n\n this.findFirstElement(elements, isFirst, xLeft, yUp);\n\n if (xLeft < 75 || xLeft > 150 || yUp < 0 || yUp > 50) {\n // add Padding for the Palette and the top\n xLeft -= 75;\n yUp -= 50;\n\n elements.forEach((element) =>\n this.adjustElementPosition(element, xLeft, yUp)\n );\n }\n }\n\n private adjustElementPosition(\n element: BusinessObject,\n xLeft: number,\n yUp: number\n ): void {\n if (\n element.type === elementTypes.ACTIVITY ||\n element.type === elementTypes.CONNECTION\n ) {\n const waypoints = (element as ActivityBusinessObject).waypoints;\n waypoints.forEach((point: Waypoint) => {\n point.x -= xLeft;\n point.y -= yUp;\n\n if (point.original) {\n point.original.x = point.x;\n point.original.y = point.y;\n }\n });\n } else {\n element.x -= xLeft;\n element.y -= yUp;\n }\n }\n\n private findFirstElement(\n elements: BusinessObject[],\n isFirst: boolean,\n xLeft: number,\n yUp: number\n ) {\n elements.forEach((element) => {\n let elXLeft;\n let elYUp;\n if (\n element.type !== elementTypes.ACTIVITY &&\n element.type !== elementTypes.CONNECTION\n ) {\n if (isFirst) {\n xLeft = element.x;\n yUp = element.y;\n isFirst = false;\n }\n elXLeft = element.x;\n elYUp = element.y;\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { MassNamingService } from 'src/app/Service/LabelDictionary/mass-naming.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { WorkObjectLabelEntry } from '../../Domain/LabelDictionary/workObjectLabelEntry';\nimport { LabelEntry } from '../../Domain/LabelDictionary/labelEntry';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LabelDictionaryService {\n activityLabels: LabelEntry[] = [];\n workObjektLabels: WorkObjectLabelEntry[] = [];\n\n constructor(\n private massNamingService: MassNamingService,\n private elementRegistryService: ElementRegistryService,\n private iconDictionaryService: IconDictionaryService\n ) {}\n\n createLabelDictionaries(): void {\n this.activityLabels = [];\n this.workObjektLabels = [];\n\n const allObjects = this.elementRegistryService.getAllCanvasObjects();\n\n allObjects.forEach((element) => {\n const name = element.businessObject.name;\n if (\n name &&\n name.length > 0 &&\n element.type.includes(elementTypes.ACTIVITY) &&\n !this.activityLabels.map((a) => a.name).includes(name)\n ) {\n this.activityLabels.push({\n name,\n originalName: name,\n });\n } else if (\n name &&\n name.length > 0 &&\n element.type.includes(elementTypes.WORKOBJECT) &&\n !this.workObjektLabels.map((e) => e.name).includes(name)\n ) {\n const iconName = element.type.replace(elementTypes.WORKOBJECT, '');\n let icon = this.iconDictionaryService.getIconSource(iconName);\n if (!icon) {\n return;\n }\n if (!icon.startsWith('data')) {\n icon = 'data:image/svg+xml,' + icon;\n }\n this.workObjektLabels.push({\n name,\n originalName: name,\n icon,\n });\n }\n });\n this.activityLabels.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n this.workObjektLabels.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n }\n\n getActivityLabels(): LabelEntry[] {\n return this.activityLabels.slice();\n }\n\n getWorkObjectLabels(): WorkObjectLabelEntry[] {\n return this.workObjektLabels.slice();\n }\n\n getUniqueWorkObjectNames(): String[] {\n const workObjects = this.elementRegistryService.getAllWorkobjects();\n return [\n ...new Set(\n workObjects\n .filter((workObject) => {\n return !!workObject.businessObject.name;\n })\n .map((workObject) => workObject.businessObject.name)\n ),\n ];\n }\n\n massRenameLabels(\n activityNames: string[],\n originalActivityNames: string[],\n workObjectNames: string[],\n originalWorkObjectNames: string[]\n ): void {\n for (let i = 0; i < originalActivityNames.length; i++) {\n if (!activityNames[i]) {\n activityNames[i] = '';\n }\n if (!(activityNames[i] == originalActivityNames[i])) {\n this.massNamingService.massChangeNames(\n originalActivityNames[i],\n activityNames[i],\n elementTypes.ACTIVITY\n );\n }\n }\n for (let i = 0; i < originalWorkObjectNames.length; i++) {\n if (!workObjectNames[i]) {\n workObjectNames[i] = '';\n }\n if (!(workObjectNames[i] == originalWorkObjectNames[i])) {\n this.massNamingService.massChangeNames(\n originalWorkObjectNames[i],\n workObjectNames[i],\n elementTypes.WORKOBJECT\n );\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { CanvasObject } from 'src/app/Domain/Common/canvasObject';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { CommandStackService } from '../CommandStack/command-stack.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MassNamingService {\n constructor(\n private elementRegistryService: ElementRegistryService,\n private commandStackService: CommandStackService\n ) {}\n\n massChangeNames(\n oldValue: string,\n newValue: string,\n type: elementTypes\n ): void {\n const allRelevantObjects: CanvasObject[] = [];\n\n this.elementRegistryService.getAllCanvasObjects().forEach((element) => {\n if (\n element.type.includes(type) &&\n element.businessObject.name === oldValue\n ) {\n allRelevantObjects.push(element);\n }\n });\n\n const context = {\n elements: allRelevantObjects,\n newValue,\n };\n\n this.commandStackService.execute('domainStoryObjects.massRename', context);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { initializeContextPadProvider } from '../../Modeler/modeler/context-pad/domainStoryContextPadProvider';\nimport {\n getMultipleNumberRegistry,\n getNumberRegistry,\n initializeNumbering,\n setNumberIsMultiple,\n updateExistingNumbersAtEditing,\n} from '../../Modeler/modeler/numbering/numbering';\nimport { initializePalette } from '../../Modeler/modeler/palette/domainStoryPalette';\nimport { initializeRenderer } from '../../Modeler/modeler/domainStoryRenderer';\nimport {\n initializeLabelEditingProvider,\n toggleStashUse,\n} from '../../Modeler/modeler/labeling/dsLabelEditingProvider';\nimport { initializeReplaceOptions } from '../../Modeler/modeler/change-icon/replaceOptions';\n\nimport { DirtyFlagService } from '../DirtyFlag/dirty-flag.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { ElementRegistryService } from '../ElementRegistry/element-registry.service';\nimport { DomainConfigurationService } from '../DomainConfiguration/domain-configuration.service';\nimport { LabelDictionaryService } from '../LabelDictionary/label-dictionary.service';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { ReplayStateService } from '../Replay/replay-state.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ActivityDialogData } from '../../Domain/Dialog/activityDialogData';\nimport { ActivityDialogComponent } from '../../Presentation/Dialog/activity-dialog/activity-dialog.component';\nimport { DialogService } from '../Dialog/dialog.service';\nimport massRenameHandler from '../../Modeler/modeler/updateHandler/massRenameHandler';\nimport headlineAndDescriptionUpdateHandler from '../../Modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler';\nimport { TitleService } from '../Title/title.service';\nimport { ActivityCanvasObject } from '../../Domain/Common/activityCanvasObject';\nimport { HtmlPresentationService } from '../Export/html-presentation.service';\nimport { positionsMatch } from '../../Utils/mathExtensions';\nimport activityUpdateHandler, {\n initializeActivityUpdateHandler,\n} from '../../Modeler/modeler/updateHandler/activityUpdateHandlers';\nimport elementUpdateHandler from '../../Modeler/modeler/updateHandler/elementUpdateHandler';\nimport { CommandStackService } from '../CommandStack/command-stack.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializerService {\n constructor(\n private dirtyFlagService: DirtyFlagService,\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private configurationService: DomainConfigurationService,\n private labelDictionaryService: LabelDictionaryService,\n private replayStateService: ReplayStateService,\n private dialogService: DialogService,\n private commandStackService: CommandStackService,\n private titleService: TitleService,\n private htmlPresentationService: HtmlPresentationService\n ) {}\n\n initializeDomainStoryModelerClasses(): void {\n initializeContextPadProvider(\n this.dirtyFlagService,\n this.iconDictionaryService\n );\n /** The Palette and the Context Menu need the Icons present in the Domain,\n * so the IconDictionaryService and the DomainConfigurationService needs to be given to the Palette **/\n initializePalette(this.iconDictionaryService, this.configurationService);\n initializeRenderer(\n this.iconDictionaryService,\n this.elementRegistryService,\n this.dirtyFlagService\n );\n initializeLabelEditingProvider(this.labelDictionaryService);\n initializeReplaceOptions(this.iconDictionaryService);\n initializeNumbering(this.elementRegistryService);\n initializeActivityUpdateHandler(this.elementRegistryService);\n }\n\n propagateDomainStoryModelerClassesToServices(\n commandStack: any,\n elementRegistry: any,\n canvas: any,\n selection: any,\n modeler: any\n ): void {\n this.commandStackService.setCommandStack(commandStack);\n this.elementRegistryService.setElementRegistry(elementRegistry);\n this.htmlPresentationService.setModelerClasses(canvas, selection, modeler);\n }\n\n initializeDomainStoryModelerEventHandlers(\n commandStack: any,\n eventBus: any\n ): void {\n activityUpdateHandler(commandStack, eventBus);\n massRenameHandler(commandStack, eventBus);\n elementUpdateHandler(commandStack, eventBus);\n headlineAndDescriptionUpdateHandler(commandStack, this.titleService);\n }\n\n initiateEventBusListeners(eventBus: any, commandStack: any): void {\n eventBus.on('element.dblclick', (e: any) => {\n if (!this.replayStateService.getReplayOn()) {\n const element = e.element;\n if (element.type === elementTypes.ACTIVITY) {\n // override the doubleClickListener on activities\n this.activityDoubleClick(element, eventBus, commandStack);\n } else {\n const renderedNumberRegistry = getNumberRegistry();\n\n // add a DoubleClickListener to the number on activities\n if (renderedNumberRegistry.length > 1) {\n const allActivities =\n this.elementRegistryService.getActivitiesFromActors();\n\n if (allActivities.length > 0) {\n const htmlCanvas = document.getElementById('canvas');\n if (htmlCanvas) {\n const container =\n htmlCanvas.getElementsByClassName('djs-container');\n const svgElements = container[0].getElementsByTagName('svg');\n const outerSVGElement = svgElements[0];\n const viewport =\n outerSVGElement.getElementsByClassName('viewport')[0];\n let transform = viewport.getAttribute('transform');\n\n let transformX = 0;\n let transformY = 0;\n let zoomX = 1;\n let zoomY = 1;\n let nums;\n\n const clickX = e.originalEvent.offsetX;\n const clickY = e.originalEvent.offsetY;\n\n // adjust for zoom and panning\n if (transform) {\n transform = transform.replace('matrix(', '');\n transform.replace(')', '');\n nums = transform.split(',');\n zoomX = parseFloat(nums[0]);\n zoomY = parseFloat(nums[3]);\n transformX = parseInt(nums[4], undefined);\n transformY = parseInt(nums[5], undefined);\n }\n\n const width = 25 * zoomX;\n const height = 22 * zoomY;\n\n for (let i = 1; i < renderedNumberRegistry.length; i++) {\n const currentNum = renderedNumberRegistry[i];\n if (currentNum) {\n const tspan = currentNum.getElementsByTagName('tspan')[0];\n const tx = tspan.getAttribute('x');\n const ty = tspan.getAttribute('y');\n const tNumber = parseInt(tspan.innerHTML, undefined);\n\n const elementX = Math.floor(\n tx * zoomX + (transformX - 11 * zoomX)\n );\n const elementY = Math.floor(\n ty * zoomY + (transformY - 15 * zoomY)\n );\n\n allActivities.forEach((activity: ActivityCanvasObject) => {\n const activityNumber = activity.businessObject.number;\n if (activityNumber === tNumber) {\n if (\n positionsMatch(\n width,\n height,\n elementX,\n elementY,\n clickX,\n clickY\n )\n ) {\n this.activityDoubleClick(\n activity,\n eventBus,\n commandStack\n );\n }\n }\n });\n }\n }\n }\n }\n }\n }\n }\n });\n\n // when in replay, do not allow any interaction on the canvas\n eventBus.on(\n [\n 'element.click',\n 'element.dblclick',\n 'element.mousedown',\n 'drag.init',\n 'canvas.viewbox.changing',\n 'autoPlace',\n 'popupMenu.open',\n ],\n 10000000000,\n (event: any) => {\n if (this.replayStateService.getReplayOn()) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n );\n }\n\n /** Overrrides for Canvas Functions **/\n private activityDoubleClick(\n activity: ActivityCanvasObject,\n eventBus: any,\n commandStack: any\n ): void {\n const source = activity.source;\n\n // ensure the right number when changing the direction of an activity\n toggleStashUse(false);\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n if (\n activity.businessObject.number &&\n source &&\n source.type.includes(elementTypes.ACTOR)\n ) {\n config.data = new ActivityDialogData(\n activity,\n getMultipleNumberRegistry()[activity.businessObject.number],\n true,\n (data: any) => this.saveActivityInputLabel(data, eventBus, commandStack)\n );\n } else if (source && source.type.includes(elementTypes.WORKOBJECT)) {\n config.data = new ActivityDialogData(\n activity,\n false,\n false,\n (activityData: any) =>\n this.saveActivityInputLabel(activityData, eventBus, commandStack)\n );\n }\n this.dialogService.openDialog(ActivityDialogComponent, config);\n }\n\n private saveActivityInputLabel(\n activityData: any,\n eventBus: any,\n commandStack: any\n ): void {\n const label = activityData.activityLabel;\n const hasNumber = activityData.activityNumber ?? false;\n const activityNumber = activityData.activityNumber;\n const multipleNumberAllowed = activityData.multipleNumbers ?? false;\n const element = activityData.activity;\n\n const activitiesFromActors =\n this.elementRegistryService.getActivitiesFromActors();\n const index = activitiesFromActors.indexOf(element);\n\n activitiesFromActors.splice(index, 1);\n if (hasNumber) {\n setNumberIsMultiple(activityNumber, multipleNumberAllowed);\n }\n element.businessObject.multipleNumberAllowed = multipleNumberAllowed;\n\n let options: any;\n if (hasNumber) {\n options = {\n businessObject: element.businessObject,\n newLabel: label,\n newNumber: activityNumber,\n element,\n };\n } else {\n options = {\n businessObject: element.businessObject,\n newLabel: label,\n element,\n };\n }\n\n commandStack.execute('activity.changed', options);\n if (element.businessObject.multipleNumberAllowed !== false) {\n if (getMultipleNumberRegistry()[activityNumber] === false) {\n updateExistingNumbersAtEditing(\n activitiesFromActors,\n activityNumber,\n eventBus\n );\n }\n } else if (element.businessObject.multipleNumberAllowed === false) {\n updateExistingNumbersAtEditing(\n activitiesFromActors,\n activityNumber,\n eventBus\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { assign } from 'min-dash';\nimport DomainStoryModeler from 'src/app/Modeler';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { InitializerService } from './initializer.service';\nimport { ElementRegistryService } from '../ElementRegistry/element-registry.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { DomainConfigurationService } from '../DomainConfiguration/domain-configuration.service';\nimport { BusinessObject } from '../../Domain/Common/businessObject';\nimport { StorageService } from '../BrowserStorage/storage.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelerService {\n constructor(\n private initializerService: InitializerService,\n private elementRegistryService: ElementRegistryService,\n private iconDictionaryService: IconDictionaryService,\n private domainConfigurationService: DomainConfigurationService,\n private storageService: StorageService\n ) {}\n\n private modeler: any;\n private canvas: any;\n private elementRegistry: any;\n private commandStack: any;\n private selection: any;\n private eventBus: any;\n\n private encoded: string | undefined;\n\n postInit(): void {\n const storedDomainConfiguration =\n this.storageService.getStoredDomainConfiguration();\n if (storedDomainConfiguration) {\n this.iconDictionaryService.setCustomConfiguration(\n storedDomainConfiguration\n );\n this.domainConfigurationService.loadConfiguration(\n storedDomainConfiguration\n );\n }\n this.initializerService.initializeDomainStoryModelerClasses();\n this.modeler = new DomainStoryModeler({\n container: '#canvas',\n keyboard: {\n bindTo: document,\n },\n\n // Disable BPMN-SearchModule and re-enable browser Search\n additionalModules: [\n {\n bpmnSearch: ['value', 'foo'],\n },\n ],\n });\n\n if (this.modeler.get) {\n this.canvas = this.modeler.get('canvas');\n this.elementRegistry = this.modeler.get('elementRegistry');\n this.eventBus = this.modeler.get('eventBus');\n this.commandStack = this.modeler.get('commandStack');\n this.selection = this.modeler.get('selection');\n }\n\n this.initializerService.initializeDomainStoryModelerEventHandlers(\n this.commandStack,\n this.eventBus\n );\n this.initializerService.propagateDomainStoryModelerClassesToServices(\n this.commandStack,\n this.elementRegistry,\n this.canvas,\n this.selection,\n this.modeler\n );\n\n const exportArtifacts = this.debounce(this.saveSVG, 500);\n if (this.modeler.get) {\n this.modeler.on('commandStack.changed', exportArtifacts);\n }\n\n this.initializerService.initiateEventBusListeners(\n this.eventBus,\n this.commandStack\n );\n\n this.modeler.createDiagram();\n // expose bpmnjs to window for debugging purposes\n assign(window, { bpmnjs: this.modeler });\n\n this.startDebounce();\n }\n\n restart(\n domainConfiguration?: DomainConfiguration,\n domainStory?: BusinessObject[]\n ): void {\n const currentStory =\n domainStory != undefined\n ? domainStory\n : this.elementRegistryService\n .createObjectListForDSTDownload()\n .map((e) => e.businessObject);\n if (!domainConfiguration) {\n domainConfiguration = this.storageService.getStoredDomainConfiguration();\n }\n if (domainConfiguration) {\n this.storageService.setStoredDomainConfiguration(domainConfiguration);\n this.iconDictionaryService.setCustomConfiguration(domainConfiguration);\n this.domainConfigurationService.loadConfiguration(domainConfiguration);\n }\n\n this.elementRegistryService.clear();\n this.modeler?.destroy();\n this.postInit();\n if (currentStory && this.modeler.get) {\n this.modeler.importCustomElements(currentStory);\n }\n }\n\n /** Interactions with the Modeler **/\n getModeler(): any {\n return this.modeler;\n }\n\n commandStackChanged(): void {\n // to update the title of the svg, we need to tell the command stack, that a value has changed\n this.eventBus.fire(\n 'commandStack.changed',\n this.debounce(this.saveSVG, 500)\n );\n }\n\n startDebounce(): void {\n this.debounce(this.saveSVG, 500);\n }\n\n debounce(fn: any, timeout: number): any {\n return () => {\n let timer;\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n // tslint:disable-next-line:no-unused-expression\n fn(this.modeler).then((svg: string) => {\n this.encoded = svg;\n }) as Promise;\n }, timeout);\n };\n }\n\n getEncoded(): string {\n return this.encoded ? this.encoded : '';\n }\n\n async saveSVG(modeler: any): Promise {\n try {\n const result = await modeler.saveSVG();\n return result.svg;\n } catch (err) {\n alert('There was an error saving the SVG.\\n' + err);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModelerService } from 'src/app/Service/Modeler/modeler.service';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { DirtyFlagService } from 'src/app/Service/DirtyFlag/dirty-flag.service';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RendererService {\n constructor(\n private modelerService: ModelerService,\n private elementRegistryService: ElementRegistryService,\n private dirtyFlagService: DirtyFlagService\n ) {}\n\n renderStory(domainStory: BusinessObject[]): void {\n this.modelerService.getModeler().importCustomElements(domainStory);\n }\n\n reset(): void {\n this.renderStory([]);\n }\n\n importStory(\n domainStory: BusinessObject[],\n configurationChange: boolean,\n config?: DomainConfiguration,\n makeClean = true\n ): void {\n this.modelerService.restart(config, domainStory);\n this.renderStory(domainStory);\n\n this.elementRegistryService.correctInitialize();\n\n this.modelerService.commandStackChanged();\n this.modelerService.startDebounce();\n\n if (makeClean) {\n this.dirtyFlagService.makeClean();\n }\n }\n\n getStory(): BusinessObject[] {\n return this.elementRegistryService\n .createObjectListForDSTDownload()\n .map((c) => c.businessObject);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplayStateService {\n private replayOnSubject = new BehaviorSubject(false);\n\n replayOn$ = this.replayOnSubject.asObservable();\n\n setReplayState(state: boolean): void {\n this.replayOnSubject.next(state);\n }\n\n getReplayOn(): boolean {\n return this.replayOnSubject.value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplayStateService } from 'src/app/Service/Replay/replay-state.service';\nimport { DomManipulationService } from 'src/app/Service/DomManipulation/dom-manipulation.service';\nimport { StoryStep } from 'src/app/Domain/Replay/storyStep';\nimport { StoryCreatorService } from './storyCreator/story-creator.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplayService {\n private story: StoryStep[] = [];\n private currentStep = new BehaviorSubject(-1);\n private maxStepNumber = new BehaviorSubject(0);\n\n currentStep$ = this.currentStep.asObservable();\n maxStepNumber$ = this.maxStepNumber.asObservable();\n\n constructor(\n private replayStateService: ReplayStateService,\n private domManipulationService: DomManipulationService,\n private storyCreatorService: StoryCreatorService,\n private snackbar: MatSnackBar\n ) {}\n\n isReplayable(): boolean {\n return this.storyCreatorService.traceActivitiesAndCreateStory().length > 0;\n }\n\n initializeReplay(): void {\n this.currentStep.next(1);\n this.story = this.storyCreatorService.traceActivitiesAndCreateStory();\n this.maxStepNumber.next(this.story.length);\n }\n\n getCurrentStepNumber(): number {\n return this.currentStep.value;\n }\n\n getMaxStepNumber(): number {\n return this.maxStepNumber.value;\n }\n\n nextStep(): void {\n if (this.currentStep.value < this.story.length) {\n this.currentStep.next(this.currentStep.value + 1);\n this.showCurrentStep();\n }\n }\n\n previousStep(): void {\n if (this.currentStep.value > 1) {\n this.currentStep.next(this.currentStep.value - 1);\n this.showCurrentStep();\n }\n }\n\n private showCurrentStep() {\n this.domManipulationService.showStep(\n this.story[this.currentStep.value - 1],\n this.currentStep.value > 1\n ? this.story[this.currentStep.value - 2]\n : undefined\n );\n }\n\n startReplay(): void {\n this.initializeReplay();\n if (this.story?.length) {\n const missingSteps = this.storyCreatorService.getMissingSteps(this.story);\n if (missingSteps.length === 0) {\n this.replayStateService.setReplayState(true);\n this.domManipulationService.showStep(\n this.story[this.currentStep.getValue() - 1]\n );\n } else {\n const steps = missingSteps.join(', ');\n this.snackbar.open(\n steps.length === 1\n ? `The Domain Story is not complete. Step ${steps} is missing.`\n : `The Domain Story is not complete. Steps ${steps} are missing.`,\n undefined,\n {\n duration: SNACKBAR_DURATION * 2,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n } else {\n this.snackbar.open('You need a Domain Story for replay.', undefined, {\n duration: SNACKBAR_DURATION * 2,\n panelClass: SNACKBAR_INFO,\n });\n }\n }\n\n stopReplay(): void {\n this.currentStep.next(-1);\n this.maxStepNumber.next(0);\n this.replayStateService.setReplayState(false);\n this.domManipulationService.showAll();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { elementTypes } from '../../../Domain/Common/elementTypes';\nimport { ActivityCanvasObject } from '../../../Domain/Common/activityCanvasObject';\nimport { BusinessObject } from '../../../Domain/Common/businessObject';\nimport { CanvasObject } from '../../../Domain/Common/canvasObject';\nimport { ElementRegistryService } from '../../ElementRegistry/element-registry.service';\nimport { StoryStep } from '../../../Domain/Replay/storyStep';\nimport { Dictionary } from '../../../Domain/Common/dictionary/dictionary';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StoryCreatorService {\n constructor(private elementRegistryService: ElementRegistryService) {}\n\n traceActivitiesAndCreateStory(): StoryStep[] {\n const tracedActivityMap = new Dictionary();\n const story: StoryStep[] = [];\n const activities = this.elementRegistryService.getActivitiesFromActors();\n\n activities.forEach((activity) => {\n const activityNumber = Number(activity.businessObject.number); // Sometimes the activityNumber is a string for some reason\n const tracedItem = tracedActivityMap.get(`${activityNumber - 1}`)\n ? tracedActivityMap.get(`${activityNumber - 1}`)\n : [];\n tracedItem.push(activity);\n tracedActivityMap.set(`${activityNumber - 1}`, tracedItem);\n });\n\n for (\n let i = 0;\n i <= Math.max(...tracedActivityMap.keysArray().map((it) => Number(it)));\n i++\n ) {\n this.createStep(tracedActivityMap, i, story);\n }\n this.addGroupStep(story);\n return story;\n }\n\n private createStep(\n tracedActivityMap: Dictionary,\n i: number,\n story: StoryStep[]\n ): void {\n const stepObjects = this.getStepObjects(\n tracedActivityMap.get(`${i}`) || []\n );\n const highlightedElements = stepObjects.map((t) => t.id);\n if (i > 0) {\n story[i - 1].objects.forEach((object) => {\n if (!stepObjects.includes(object)) {\n stepObjects.push(object);\n }\n });\n }\n story[i] = {\n highlightedObjects: highlightedElements,\n objects: stepObjects,\n };\n }\n\n getMissingSteps(story: StoryStep[]): number[] {\n if (!story || story.length === 0) {\n return [];\n }\n\n const missingSteps: number[] = [];\n for (let i = 0; i < story.length; i++) {\n if (\n !story[i] ||\n !(story[i].objects.length > 0) ||\n story[i].highlightedObjects.length === 0 ||\n story[i].objects.filter(\n (element) => element.type === elementTypes.ACTIVITY\n ).length <= 0\n ) {\n missingSteps.push(i + 1);\n }\n }\n return missingSteps;\n }\n\n private getStepObjects(\n tracedActivity: ActivityCanvasObject[]\n ): BusinessObject[] {\n const initialSource: CanvasObject[] = [];\n const activities = tracedActivity;\n const targetObjects: CanvasObject[] = [];\n\n tracedActivity.forEach((parallelStep: ActivityCanvasObject) => {\n initialSource.push(parallelStep.source);\n\n const firstTarget = parallelStep.target;\n targetObjects.push(firstTarget);\n\n // check the outgoing activities for each target\n for (const checkTarget of targetObjects) {\n if (\n checkTarget.businessObject &&\n !checkTarget.businessObject.type.includes('actor') &&\n checkTarget.outgoing\n ) {\n // check the target for each outgoing activity\n checkTarget.outgoing.forEach((activity: ActivityCanvasObject) => {\n activities.push(activity);\n const activityTarget = activity.target;\n if (activityTarget && !targetObjects.includes(activityTarget)) {\n targetObjects.push(activityTarget);\n }\n });\n }\n }\n });\n return initialSource\n .map((e) => e.businessObject)\n .concat(activities.map((a) => a.businessObject))\n .concat(targetObjects.map((t) => t.businessObject));\n }\n\n /** Groups should be shown at the End of the Story **/\n private addGroupStep(story: StoryStep[]): void {\n const groups = this.elementRegistryService.getAllGroups() as CanvasObject[];\n if (groups.length > 0) {\n story.push({\n highlightedObjects: [],\n objects: groups\n .map((g) => g.businessObject)\n .concat(story[story.length - 1].objects),\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n private showSettings = new BehaviorSubject(false);\n showSettings$ = this.showSettings.asObservable();\n\n close(): void {\n this.showSettings.next(false);\n }\n\n open(): void {\n this.showSettings.next(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from '../../../environments/environment';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_DOMAIN_NAME,\n INITIAL_TITLE,\n} from '../../Domain/Common/constants';\nimport { CommandStackService } from '../CommandStack/command-stack.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TitleService {\n private titleSubject = new BehaviorSubject(INITIAL_TITLE);\n private descriptionSubject = new BehaviorSubject(INITIAL_DESCRIPTION);\n private domainNameSubject = new BehaviorSubject(INITIAL_DOMAIN_NAME);\n private showDescriptionSubject = new BehaviorSubject(true);\n\n title$ = this.titleSubject.asObservable();\n description$ = this.descriptionSubject.asObservable();\n showDescription$ = this.showDescriptionSubject.asObservable();\n domainName$ = this.domainNameSubject.asObservable();\n\n constructor(private commandStackService: CommandStackService) {}\n\n updateTitleAndDescription(\n title: string | null,\n description: string | null,\n allowUndo: boolean\n ): void {\n if (allowUndo) {\n this.fireTitleAndDescriptionUpdate(title, description);\n } else {\n this.updateTitle(title);\n this.updateDescription(description);\n }\n }\n\n reset(): void {\n this.updateTitleAndDescription(INITIAL_TITLE, INITIAL_DESCRIPTION, false);\n }\n\n private updateTitle(inputTitle: string | null): void {\n const title =\n !inputTitle || inputTitle.trim().length === 0\n ? INITIAL_TITLE\n : inputTitle;\n\n this.titleSubject.next(title);\n document.title = title === INITIAL_TITLE ? 'egon.io' : title;\n }\n\n private updateDescription(description: string | null): void {\n this.descriptionSubject.next(description ?? this.descriptionSubject.value);\n }\n\n setShowDescription(show: boolean): void {\n this.showDescriptionSubject.next(show);\n }\n\n setDomainName(name: string): void {\n this.domainNameSubject.next(name);\n }\n\n getTitle(): string {\n return this.titleSubject.value;\n }\n\n getDescription(): string {\n return this.descriptionSubject.value;\n }\n\n getDomainName(): string {\n return this.domainNameSubject.value;\n }\n\n getVersion(): string {\n return environment.version;\n }\n\n hasTitleOrDescription(): boolean {\n return (\n (this.getTitle().trim().length > 0 &&\n this.getTitle() !== INITIAL_TITLE) ||\n (this.getDescription().trim().length > 0 &&\n this.getDescription() !== INITIAL_DESCRIPTION)\n );\n }\n\n private fireTitleAndDescriptionUpdate(\n newTitle: string | null,\n newDescription: string | null\n ): void {\n const context = {\n newTitle,\n newDescription,\n };\n this.commandStackService.execute(\n 'story.updateHeadlineAndDescription',\n context\n );\n }\n}\n","'use strict';\n\n// convert rad to deg\nexport function degrees(radians: number): number {\n return (radians * 180) / Math.PI;\n}\n\n// calculate the angle between two points in 2D\nexport function angleBetween(\n startPoint: Point,\n endPoint: Point\n): number | undefined {\n let quadrant;\n\n // determine in which quadrant we are\n if (startPoint.x <= endPoint.x) {\n if (startPoint.y >= endPoint.y) {\n quadrant = 0;\n } // upper right quadrant\n else {\n quadrant = 3;\n } // lower right quadrant\n } else {\n if (startPoint.y >= endPoint.y) {\n quadrant = 1;\n } // upper left Quadrant\n else {\n quadrant = 2;\n } // lower left quadrant\n }\n\n const adjacent = Math.abs(startPoint.y - endPoint.y);\n const opposite = Math.abs(startPoint.x - endPoint.x);\n\n // since the arcus-tangens only gives values between 0 and 90, we have to adjust for the quadrant we are in\n\n if (quadrant === 0) {\n return 90 - degrees(Math.atan2(opposite, adjacent));\n }\n if (quadrant === 1) {\n return 90 + degrees(Math.atan2(opposite, adjacent));\n }\n if (quadrant === 2) {\n return 270 - degrees(Math.atan2(opposite, adjacent));\n }\n if (quadrant === 3) {\n return 270 + degrees(Math.atan2(opposite, adjacent));\n }\n return undefined;\n}\n\nexport function positionsMatch(\n width: number,\n height: number,\n elementX: number,\n elementY: number,\n clickX: number,\n clickY: number\n): boolean {\n if (clickX > elementX && clickX < elementX + width) {\n if (clickY > elementY && clickY < elementY + height) {\n return true;\n }\n }\n return false;\n}\n\nexport class Point {\n y = 0;\n x = 0;\n}\n","import { elementTypes } from 'src/app/Domain/Common/elementTypes';\n\n// TODO: td: This can cause a lot of errors\nexport function getNameFromType(type: string): string {\n if (type.includes(elementTypes.ACTOR)) {\n return type.replace(elementTypes.ACTOR, '');\n } else if (type.includes(elementTypes.WORKOBJECT)) {\n return type.replace(elementTypes.WORKOBJECT, '');\n }\n return '';\n}\n","'use strict';\n\n// sanitize user-Input to be Desktop-Filename safe\nexport function sanitizeForDesktop(str: string): string {\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n };\n const reg = /[/\\\\:*?\"<>|]/gi;\n return str ? str.replace(reg, (match) => map[match]) : '';\n}\n\nexport function sanitizeIconName(name: string): string {\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n '(': '',\n ')': '',\n ' ': '-',\n '.': '_',\n };\n const reg = /[/\\\\:*?\"<>|() .]/gi;\n return name\n ? name.replace(reg, (match) => {\n return map[match];\n })\n : '';\n}\n\nexport function restoreTitleFromFileName(\n filename: string,\n isSVG: boolean\n): string {\n let title;\n\n const domainStoryRegex = /_\\d+-\\d+-\\d+( ?_?-?\\(\\d+\\))?(-?\\d)?(.dst|.egn)/;\n const svgRegex = /_\\d+-\\d+-\\d+( ?_?-?\\(\\d+\\))?(-?\\d)?(.dst|.egn).svg/;\n\n const egnSuffix = '.egn';\n const dstSuffix = '.dst';\n const svgSuffix = '.svg';\n\n let filenameWithoutDateSuffix = filename.replace(\n isSVG ? svgRegex : domainStoryRegex,\n ''\n );\n if (filenameWithoutDateSuffix.includes(isSVG ? svgSuffix : dstSuffix)) {\n filenameWithoutDateSuffix = filenameWithoutDateSuffix\n .replace(svgSuffix, '')\n .replace(dstSuffix, '')\n .replace(egnSuffix, '');\n }\n title = filenameWithoutDateSuffix;\n return title;\n}\n","import { Component, OnInit } from '@angular/core';\nimport { SettingsService } from 'src/app/Service/Settings/settings.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DialogService } from './Service/Dialog/dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { InfoDialogData } from './Domain/Dialog/infoDialogData';\nimport { InfoDialogComponent } from './Presentation/Dialog/info-dialog/info-dialog.component';\nimport { TitleService } from './Service/Title/title.service';\nimport { ExportService } from './Service/Export/export.service';\nimport { ReplayStateService } from './Service/Replay/replay-state.service';\nimport { ReplayService } from './Service/Replay/replay.service';\nimport { environment } from '../environments/environment';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent implements OnInit {\n showSettings$: Observable | BehaviorSubject;\n showDescription$: Observable;\n version: string = environment.version;\n\n constructor(\n private settingsService: SettingsService,\n private dialogService: DialogService,\n private titleService: TitleService,\n private exportService: ExportService,\n private replayStateService: ReplayStateService,\n replayService: ReplayService\n ) {\n this.showSettings$ = new BehaviorSubject(false);\n this.showDescription$ = new BehaviorSubject(true);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.ctrlKey && e.key === 's') {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadDST();\n }\n }\n if (e.ctrlKey && e.key === 'l') {\n e.preventDefault();\n e.stopPropagation();\n document.getElementById('import')?.click();\n }\n if (\n (e.key === 'ArrowRight' || e.key === 'ArrowUp') &&\n this.replayStateService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.nextStep();\n }\n if (\n (e.key === 'ArrowLeft' || e.key === 'ArrowDown') &&\n this.replayStateService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.previousStep();\n }\n });\n }\n\n ngOnInit(): void {\n this.showDescription$ = this.titleService.showDescription$;\n this.showSettings$ = this.settingsService.showSettings$;\n }\n\n openLinkDialog(link: string, title: string, text: string): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, text, true, true, link);\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n}\n","
\n \n \n \n\n \n \n
\n\n \n \n \"Egon\n egon.io\n version: \n {{ version }}\n by \n \"WPS\n WPS\n \n\n \n Privacy\n \n\n \n Imprint\n \n \n\n","import { ApplicationRef, DoBootstrap, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport {\n MAT_CHECKBOX_DEFAULT_OPTIONS,\n MatCheckboxDefaultOptions,\n} from '@angular/material/checkbox';\n\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { HeaderComponent } from 'src/app/Presentation/Header/header.component';\nimport { SettingsComponent } from 'src/app/Presentation/Settings/settings.component';\nimport { AppComponent } from 'src/app/app.component';\nimport { ExportService } from 'src/app/Service/Export/export.service';\nimport { ImportDomainStoryService } from 'src/app/Service/Import/import-domain-story.service';\nimport { ImportRepairService } from 'src/app/Service/Import/import-repair.service';\nimport { ModelerService } from 'src/app/Service/Modeler/modeler.service';\nimport { TitleService } from 'src/app/Service/Title/title.service';\nimport { LabelDictionaryService } from 'src/app/Service/LabelDictionary/label-dictionary.service';\nimport { ReplayService } from 'src/app/Service/Replay/replay.service';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { DomainConfigurationService } from 'src/app/Service/DomainConfiguration/domain-configuration.service';\nimport { MassNamingService } from 'src/app/Service/LabelDictionary/mass-naming.service';\nimport { InfoDialogComponent } from 'src/app/Presentation/Dialog/info-dialog/info-dialog.component';\nimport { ExportDialogComponent } from 'src/app/Presentation/Dialog/export-dialog/export-dialog.component';\nimport { ActivityDialogComponent } from 'src/app/Presentation/Dialog/activity-dialog/activity-dialog.component';\nimport { UntypedFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { HeaderDialogComponent } from 'src/app/Presentation/Dialog/header-dialog/header-dialog.component';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { ModelerComponent } from 'src/app/Presentation/Canvas/modeler.component';\nimport { SettingsModule } from 'src/app/Modules/settings.module';\nimport { AutosaveService } from './Service/Autosave/autosave.service';\nimport { DomainStoryModelerModuleModule } from './Modules/domain-story-modeler-module.module';\nimport { LabelDictionaryDialogComponent } from './Presentation/Dialog/label-dictionary-dialog/label-dictionary-dialog.component';\nimport { MaterialModule } from './material.module';\n\n@NgModule({\n declarations: [\n HeaderComponent,\n SettingsComponent,\n AppComponent,\n InfoDialogComponent,\n ExportDialogComponent,\n ActivityDialogComponent,\n HeaderDialogComponent,\n ModelerComponent,\n LabelDictionaryDialogComponent,\n ],\n imports: [\n BrowserModule,\n NoopAnimationsModule,\n ReactiveFormsModule,\n SettingsModule,\n DomainStoryModelerModuleModule,\n MaterialModule,\n ],\n providers: [\n AutosaveService,\n ExportService,\n ImportDomainStoryService,\n ImportRepairService,\n IconDictionaryService,\n TitleService,\n LabelDictionaryService,\n ReplayService,\n ElementRegistryService,\n DomainConfigurationService,\n ModelerService,\n MassNamingService,\n UntypedFormBuilder,\n {\n provide: MAT_CHECKBOX_DEFAULT_OPTIONS,\n useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions,\n },\n ],\n})\nexport class AppModule implements DoBootstrap {\n constructor(private autosaveService: AutosaveService) {\n // autosaveService wird so automatisch initialisiert, auf keinen Fall entfernen!\n }\n\n ngDoBootstrap(app: ApplicationRef): void {\n const componentElement = document.createElement('app-root');\n document.body.append(componentElement);\n app.bootstrap(AppComponent);\n }\n}\n","import { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatListModule } from '@angular/material/list';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatButtonToggleModule,\n MatListModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatGridListModule,\n MatInputModule,\n MatToolbarModule,\n MatExpansionModule,\n MatSnackBarModule,\n MatCardModule,\n ],\n exports: [\n MatButtonModule,\n MatButtonToggleModule,\n MatListModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatGridListModule,\n MatInputModule,\n MatToolbarModule,\n MatExpansionModule,\n MatSnackBarModule,\n MatCardModule,\n ],\n})\nexport class MaterialModule {}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n version: '2.0.0-dev',\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n"],"names":["Modeler","ResizeModule","assign","isArray","inherits","DomainStoryModule","LabelEditingModule","ModelingModule","elementTypes","DomainStoryModeler","options","call","_customElements","_groupElements","prototype","_modules","concat","_addCustomShape","customElement","parentId","parent","children","push","canvas","get","elementFactory","customAttrs","businessObject","customShape","create","isGroup","id","parentShape","addShape","_addCustomConnection","elementRegistry","connection","source","target","addConnection","importCustomElements","elements","fire","addCustomElements","customElements","Error","shapes","connections","groups","forEach","isConnection","getCustomElements","createDiagram","done","element","type","ACTIVITY","CONNECTION","GROUP","Replace","modeling","_modeling","replaceElement","oldElement","newElementData","newElement","setCenterOfElement","outgoingActivities","outgoing","incomingActivities","incoming","x","Math","ceil","width","y","height","name","replaceShape","replaceOptions","ReplaceMenuProvider","_dsReplace","$inject","getEntries","entries","includes","actorReplaceOptions","workObjectReplaceOptions","_createEntries","menuEntries","self","definition","entry","_createMenuEntry","action","replaceAction","label","className","actionName","iconDictionaryService","initializeReplaceOptions","iconDictionary","actorTypes","getTypeDictionary","ACTOR","replaceOption","i","keysArray","actorType","typeName","toLowerCase","getIconForBPMN","workObjectTypes","WORKOBJECT","workObjectType","ContextPadProvider","bind","generateAutomaticNumber","getAllStandardIconKeys","dirtyFlagService","initializeContextPadProvider","dirtyFlag","DomainStoryContextPadProvider","injector","connect","translate","contextPad","popupMenu","replaceMenuProvider","commandStack","eventBus","startConnect","selectedElement","invoke","autoPlace","cached","getContextPadEntries","colorPicker","document","getElementById","onchange","ev","context","newColor","value","execute","makeDirty","registerProvider","allStandardIconKeys","actions","event","autoActivate","start","replace","addColorChange","addConnectWithActivity","addTextAnnotation","addActors","appendAction","addWorkObjects","addChangeWorkObjectTypeMenu","addChangeActorTypeMenu","delete","deleteGroup","group","title","click","removeGroup","moveDeleteActionToEndOfArray","removeElements","changeDirection","position","getReplaceMenuPosition","cursor","open","colorChange","TEXTANNOTATION","dragstart","icon","newNumber","Y_OFFSET","diagramContainer","getContainer","pad","getPad","html","diagramRect","getBoundingClientRect","padRect","top","left","appendStart","shape","createShape","hints","BpmnElementFactory","DEFAULT_LABEL_SIZE","DomainStoryIdFactory","DomainStoryElementFactory","bpmnFactory","moddle","domainStoryIdFactory","elementType","attrs","baseCreate","test","registerId","getId","key","set","$type","di","$descriptor","_getCustomElementSize","Object","defineProperty","createBpmnElement","__default","Dimensions","idList","generateId","idNumber","fourDigitsId","idSuffix","containsId","floor","random","same","BaseRenderer","Ids","getAnnotationBoxHeight","componentsToPath","createLine","append","svgAppend","attr","svgAttr","classes","svgClasses","svgCreate","query","domQuery","isObject","getNumberStash","addNumberToRegistry","numberBoxDefinitions","calculateTextWidth","countLines","labelPosition","angleBetween","getNameFromType","RENDERER_IDS","numbers","DEFAULT_COLOR","initializeRenderer","elementRegistryService","DomainStoryRenderer","styles","textRenderer","pathMap","rendererId","next","markers","computeStyle","generateActivityNumber","parentGfx","box","numberStash","semantic","use","number","newRenderedNumber","renderNumber","numberStyle","fitBox","style","getExternalStyle","fill","backgroundBoxStyle","fontSize","fontFamily","backgroundDotStyle","renderEmbeddedLabel","align","padding","renderLabel","renderExternalLabel","waypoints","lines","startPoint","selected","endPoint","angle","alignment","boxWidth","xStart","abs","textAlign","length","wordWrap","overflowWrap","hyphens","renderExternalNumber","String","text","createText","add","setCoordinates","drawCircle","textLength","circle","cx","cy","r","innerHTML","manipulateInnerHTMLXLabel","manipulateInnerHTMLYLabel","firstChild","attributes","nodeValue","offset","result","outerHTML","Number","drawGroup","pickedColor","rect","drawRect","stroke","useColorForElement","iconSRC","match","index","indexOf","substring","getIconSrc","startsWith","drawActor","svgDynamicSizeAttributes","actor","getTypeIconSRC","drawWorkObject","workObject","useColorForActivity","strokeWidth","strokeLinejoin","markerEnd","marker","drawActivity","p","adjustForTextOverlap","fixConnectionInHTML","parentElement","checkIfPointOverlapsText","point","lineOffset","getLineOffset","objects","getElementsByClassName","data_id","item","getAttribute","object","getElementsByTagName","tspans","tspan","wantedConnection","polylines","setAttribute","drawDSConnection","strokeDasharray","drawAnnotation","textElement","textPathData","getScaledPath","xScaleFactor","yScaleFactor","containerWidth","containerHeight","mx","my","drawPath","d","path","rx","ry","createMarker","sequenceflowEnd","addMarker","ref","scale","strokeLinecap","viewBox","refX","refY","markerWidth","markerHeight","orient","defs","_svg","getWorkObjectPath","rectangle","getRectPath","getGroupPath","getActivityPath","map","original","activityPath","waypoint","getActorPath","canRender","drawShape","search","pos","correctInitialize","getShapePath","drawConnection","every","reduce","RuleProvider","is","HIGH_PRIORITY","MIN_SIZE","isDomainStory","isDomainStoryGroup","isActor","isWorkObject","isActivity","isAnnotation","canConnect","canResize","newBounds","lowerLeft","lowerRight","upperRight","canAttach","Array","canConnectToAnnotation","DomainStoryRules","init","canCreate","addRule","host","s","undefined","hover","pick","CommandInterceptor","collectionAdd","remove","collectionRemove","reworkGroupElements","DomainStoryUpdater","bpmnjs","updateCustomElement","e","DOMAINSTORY","updateCustomConnection","newTarget","newSource","copyWaypoints","executed","ifDomainStoryElement","reverted","fn","DomainStoryPalette","ElementFactory","CreateModule","PathMap","PopupMenuModule","ContextPadModule","CommandStack","UpdateLabelHandler","headlineAndDescriptionUpdateHandler","DSModeling","__depends__","__init__","domainStoryRenderer","paletteProvider","domainStoryRules","domainStoryUpdater","contextPadProvider","elementFactoryBpmn","updateLabelHandler","svgRemove","MARKER_HIDDEN","MARKER_LABEL_HIDDEN","annotationBoxHeight","DSLabelEditingPreview","defaultLayer","getDefaultLayer","absoluteElementBBox","gfx","on","activeProvider","active","getAbsoluteBBox","getStrokeColor","labelTarget","dy","newElementHeight","max","removeMarker","autocomplete","getLabel","isAny","getExternalLabelMid","hasExternalLabel","isLabel","isLabelExternal","dictionaryService","stashUse","initializeLabelEditingProvider","labelingDictionary","toggleStashUse","focusElement","setTimeout","focus","DSLabelEditingProvider","directEditing","resizeHandles","_canvas","_textRenderer","_updateLabelHandler","activateDirectEdit","complete","isActive","cancel","removeResizers","createAutocomplete","canExecute","isTouch","editingBox","force","activate","getUniqueWorkObjectNames","bounds","getEditingBBox","autoResize","resizable","bbox","mid","zoom","defaultStyle","getDefaultStyle","externalStyle","externalFontSize","externalLineHeight","lineHeight","defaultFontSize","defaultLineHeight","fontWeight","minWidth","maxWidth","minHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","externalLabelMid","absoluteBBox","update","newLabel","activeContextText","updateLabel","getLabelAttr","getNumberAttr","getNumber","setLabel","setNumber","textNumber","selectPartOfActivity","angleActivity","selectedActivity","linelength","fontsize","input","workObjectNames","closeAllLists","currentFocus","filteredWorkObjectNames","addEventListener","autocompleteList","autocompleteItem","val","createElement","parentNode","appendChild","toUpperCase","visibility","onkeydown","keyCode","addActive","preventDefault","removeActive","classList","survivor","removeChild","ChangeSupportModule","DirectEditingModule","dSlabelEditingProvider","dSlabelEditingPreview","str","split","amountWaypoints","determinedPosition","xPos","yPos","labelPositionX","labelPositionY","offsetX","scaledAngle","offsetY","Modeling","_commandStack","updateNumber","oldShape","newShape","newData","numberRegistry","multipleNumberRegistry","canvasElementRegistry","initializeNumbering","canvasElementRegistryService","boxHeight","elementActivity","usedNumbers","wantedNumber","activitiesFromActors","getActivitiesFromActors","updateExistingNumbersAtGeneration","updateExistingNumbersAtEditing","sortedActivities","activity","currentNumber","setNumberOfActivity","getNumbersAndIDs","iDWithNumber","activities","renderedNumber","setNumberIsMultiple","multi","getNumberRegistry","slice","getMultipleNumberRegistry","elementArray","overrideAppendedIcons","Dictionary","APPENDED_ICONS_TAG","configuration","initializePalette","configurationService","PaletteProvider","palette","spaceTool","lassoTool","_create","_elementFactory","_spaceTool","_lassoTool","getPaletteEntries","createAction","createListener","isExpanded","shortType","initPalette","appendCSSStyleCheat","customIcons","sheetEl","head","customIconDict","appendDict","customIconDictKeys","getAppendedIconDictionary","has","src","iconStyle","wrapSRCInSVG","sheet","insertRule","cssRules","config","getCurrentIconConfigurationForBPMN","localStorage","getItem","JSON","parse","customIconsLegacy","convertLegacyAppendedIconsToDict","customIconsDict","putEntry","initTypeDictionaries","actors","workObjects","addCanvasObjectTypes","separator","activateSelection","keys","dict","initializeActivityUpdateHandler","activityUpdateHandler","registerHandler","activity_directionChange","activity_changed","preExecute","oldLabel","oldNumbersWithIDs","oldNumber","revert","revertAutomaticNumberGenerationChange","oldWaypoints","swapSource","newWaypoints","getActivitesFromActors","j","splice","undoGroupRework","elementUpdateHandler","element_colorChange","removeGroupWithoutChildren","oldColor","ctx","child","titleService","handlerFunction","oldTitle","getTitle","oldDescription","getDescription","updateTitleAndDescription","newTitle","newDescription","DSMassRenameHandler","massRename","relevantElements","confirm","newValue","getBusinessObject","NULL_DIMENSIONS","labelCenter","createLabel","setText","postExecute","trim","removeShape","bo","getLayoutedBounds","resizeShape","numberTarget","some","$instanceOf","types","t","innerShape","superParent","svgShape","querySelector","svgGroup","svgGroupParent","SVG_LINK","TEXTSPAN_DESCRIPTION_HEIGHT","TEXTSPAN_TITLE_HEIGHT","X_OFFSET_UTIL","extraHeight","createTitleAndDescriptionSVGElement","description","xLeft","yUp","titleElement","createTitle","descriptionElement","createDescription","insertText","tempCanvas","getContext","font","createTextSpans","descriptionParts","yOffset","heightOffset","textSpans","words","textTag","textSpan","createElementNS","textNode","createTextNode","data","len","measureText","testBusinessObject","Configuration","constructor","INITIAL_TITLE","INITIAL_DESCRIPTION","INITIAL_DOMAIN_NAME","DOMAIN_CONFIGURATION_TAG","DEFAULT_AUTOSAVES_ENABLED","DEFAULT_AUTOSAVES_MAX_DRAFTS","DEFAULT_AUTOSAVES_INTERVAL","SNACKBAR_DURATION","SNACKBAR_SUCCESS","SNACKBAR_ERROR","SNACKBAR_INFO","IMPLICIT_ROOT_ID","all","size","isEmpty","Entry","addEach","clear","filter","found","sort","sortByName","a","b","structuredClone","testCustomDomainConfiguration","fromConfigurationFromFile","configFromFile","actorsDict","workObjectsDict","IconConfiguration","allIconDictionary","domainName","getDefaultConf","defaultConf","updateAllIconRegistry","appendSRCFile","newAppendedIcons","appen","createCustomConf","domainConfiguration","allIconsConf","ActivityDialogData","numberIsAllowedMultipleTimes","showNumberFields","saveFN","ExportDialogData","ExportOption","tooltip","InfoDialogData","infoText","isInfo","isLink","linkText","NUMBER_BACKGROUND_COLOR","NUMBER_COLOR","STROKE_WIDTH","HIGHLIGHT_NUMBER_BACKGROUNG_COLOR","HIGHLIGHT_NUMBER_COLOR","HIGHLIGHT_COLOR","HIGHLIGHT_STROKE_WIDTH","appendedIcons","allIcons","Person","Group","Pet","Conversation","World","Store","Theater","Business","Water","Hotel","Dining","Courthouse","Flag","Place","Car","Bus","Train","Truck","Taxi","Bike","Boat","Motorcycle","Plane","Shuttle","Walking","Traffic","Commute","System","Printer","Document","Folder","Call","Email","Copyright","DNS","Settings","Cellphone","Update","Briefcase","Microphone","Signal","Key","Pencil","Sum","Headset","Keyboard","Mouse","Router","Scanner","Security","Desktop","Tablet","Label","Receipt","Calendar","Cloud","Assessment","Dashboard","Problem","Grid","Watch","Euro","Dollar","Info","Alarm","Wrench","Favorite","Gavel","Blind","Hourglass","Time","Search","Shopping","Couch","Attach","Ruler","Education","allIconsDict","newIcons","IconFilterEnum","ConfigAndDST","domain","dst","testConfigAndDst","CommonModule","AutosaveSettingsComponent","AutosaveOptionsComponent","AutosavedDraftsComponent","FormsModule","MaterialModule","AutosaveSettingsModule","_","_2","_3","declarations","imports","exports","HeaderButtonsComponent","DomainStoryModelerModuleModule","DomainConfigurationComponent","IconListItemComponent","DetailsListItemComponent","DomainDetailsComponent","GeneralSettingsComponent","LabelDictionaryComponent","SettingsModule","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","AutosaveOptionsComponent_mat_card_0_Template_button_click_20_listener","ɵɵrestoreView","_r6","_r2","ɵɵreference","_r4","_r3","ctx_r5","ɵɵnextContext","ɵɵresetView","save","checked","ɵɵadvance","ɵɵproperty","configuration_r1","activated","interval","maxDrafts","autosaveConfiguration","snackbar","setConfiguration","duration","panelClass","ɵɵdirectiveInject","i1","AutosaveConfigurationService","i2","MatSnackBar","selectors","decls","vars","consts","template","AutosaveOptionsComponent_Template","rf","ɵɵtemplate","AutosaveOptionsComponent_mat_card_0_Template","ɵɵpipeBind1","configuration$","AutosaveSettingsComponent_Template","AutosavedDraftsComponent_div_7_div_1_Template_button_click_6_listener","restoredCtx","draft_r4","$implicit","loadDraft","ɵɵtextInterpolate","date","AutosavedDraftsComponent_div_7_div_1_Template","AutosavedDraftsComponent_div_7_Template_button_click_4_listener","_r8","ctx_r7","removeAllDrafts","ctx_r0","drafts","autosaveService","subscription","autosavedDraftsChanged$","subscribe","initDrafts","ngOnInit","loadCurrentDrafts","draft","AutosaveService","AutosavedDraftsComponent_Template","AutosavedDraftsComponent_div_7_Template","AutosavedDraftsComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","ɵɵtextInterpolate2","_r1","ModelerComponent","modelerService","postInit","loadLatestDraft","ModelerService","ModelerComponent_Template","MAT_DIALOG_DATA","ActivityDialogComponent","fb","dialogRef","activityLabel","activityNumber","form","multipleNumbers","onSubmit","patchValue","close","UntypedFormBuilder","MatDialogRef","ActivityDialogComponent_Template","ActivityDialogComponent_Template_input_change_9_listener","ActivityDialogComponent_Template_textarea_keydown_enter_14_listener","$event","ActivityDialogComponent_Template_textarea_keyup_enter_14_listener","ActivityDialogComponent_Template_textarea_keyup_escape_14_listener","ActivityDialogComponent_Template_button_click_16_listener","ActivityDialogComponent_Template_button_click_18_listener","BehaviorSubject","ExportDialogComponent_button_17_Template_button_click_0_listener","i_r2","ctx_r3","doOption","option_r1","ɵɵtextInterpolate1","ExportDialogComponent","withTitle","useWhiteBackground","updateWithTitle","updateUseWhiteBackground","ExportDialogComponent_Template","ExportDialogComponent_Template_input_change_4_listener","ExportDialogComponent_Template_input_change_9_listener","ExportDialogComponent_Template_button_click_15_listener","ExportDialogComponent_button_17_Template","HeaderDialogComponent","i3","TitleService","HeaderDialogComponent_Template","HeaderDialogComponent_Template_textarea_keydown_enter_10_listener","HeaderDialogComponent_Template_textarea_keyup_enter_10_listener","HeaderDialogComponent_Template_textarea_keyup_escape_10_listener","HeaderDialogComponent_Template_button_click_12_listener","HeaderDialogComponent_Template_button_click_14_listener","ɵɵpropertyInterpolate","ctx_r1","ɵɵsanitizeUrl","InfoDialogComponent_mat_dialog_actions_5_Template_button_click_1_listener","InfoDialogComponent","showConfirmButton","hasLink","ngAfterViewInit","span","scrollHeight","InfoDialogComponent_Template","InfoDialogComponent_span_3_Template","InfoDialogComponent_a_4_Template","InfoDialogComponent_mat_dialog_actions_5_Template","LabelDictionaryDialogComponent","LabelDictionaryDialogComponent_Template","LabelDictionaryDialogComponent_Template_app_label_dictionary_closeEmitter_3_listener","iconInitiated","ngAfterViewChecked","createIcon","img","svg","inputs","DetailsListItemComponent_Template","sanitizeIconName","iconName_r1","domainCustomizationService","ICON_FILTER_NONE","selectedActors","selectedWorkobjects","allIconNames","allFilteredIconNames","domainConfigurationTypes","getDomainConfiguration","getFullDictionary","selectedActors$","selectedWorkobjects$","allFiltered","getFilteredNamesForType","loadMinimalIconConfigurationWithDefaultIcons","resetDomain","loadInitialConfiguration","saveDomain","getUsedIcons","exportDomain","startIconUpload","importIcon","files","iconInputFile","reader","FileReader","iconName","onloadend","addIMGToIconDictionary","registerIconForBPMN","addNewIcon","readAsDataURL","startDomainImport","importDomain","domainInputFile","loadConfiguration","importConfiguration","readAsText","filterForActors","ICON_FILTER_ACTOR","filterForWorkobjects","ICON_FILTER_WORKOBJECT","filterForUnassigned","ICON_FILTER_UNASSIGNED","filterByNameAndType","filteredByNameAndType","isIconActor","isIconWorkObject","DomainConfigurationService","IconDictionaryService","DomainCustomizationService","i4","ElementRegistryService","DomainConfigurationComponent_Template","DomainConfigurationComponent_Template_button_click_6_listener","DomainConfigurationComponent_Template_button_click_10_listener","DomainConfigurationComponent_Template_button_click_14_listener","DomainConfigurationComponent_Template_input_input_18_listener","DomainConfigurationComponent_Template_button_click_20_listener","DomainConfigurationComponent_Template_input_change_23_listener","DomainConfigurationComponent_Template_button_click_24_listener","DomainConfigurationComponent_Template_button_click_27_listener","DomainConfigurationComponent_Template_button_click_31_listener","DomainConfigurationComponent_Template_button_click_35_listener","DomainConfigurationComponent_Template_input_change_38_listener","DomainConfigurationComponent_Template_button_click_39_listener","DomainConfigurationComponent_mat_grid_tile_46_Template","ɵɵclassProp","DomainDetailsComponent_mat_list_item_12_Template_mat_list_item_dragover_0_listener","_r5","ctx_r4","allowDrop","DomainDetailsComponent_mat_list_item_12_Template_mat_list_item_dragstart_0_listener","i_r3","ctx_r6","onDragStart","DomainDetailsComponent_mat_list_item_12_Template_mat_list_item_drop_0_listener","iconName_r2","onDrop","getIconForName","DomainDetailsComponent_mat_list_item_18_Template_mat_list_item_dragover_0_listener","_r11","ctx_r10","DomainDetailsComponent_mat_list_item_18_Template_mat_list_item_dragstart_0_listener","i_r9","ctx_r12","DomainDetailsComponent_mat_list_item_18_Template_mat_list_item_drop_0_listener","iconName_r8","ctx_r13","customizationService","draggedList","draggedIndex","domainName$","changeName","listName","list","sortedList","setSelectedActors","setSelectedWorkObject","DomainDetailsComponent_Template","DomainDetailsComponent_Template_input_input_6_listener","DomainDetailsComponent_mat_list_item_12_Template","DomainDetailsComponent_mat_list_item_18_Template","isWorkobject","isNone","toggleNone","setAsUnassigned","toggleActor","setAsActor","toggleWorkobject","setAsWorkobject","IconListItemComponent_Template","IconListItemComponent_Template_mat_button_toggle_change_7_listener","IconListItemComponent_Template_mat_button_toggle_change_10_listener","IconListItemComponent_Template_mat_button_toggle_change_13_listener","MatDialogConfig","HeaderButtonsComponent_div_0_Template_button_click_1_listener","startReplay","HeaderButtonsComponent_div_0_Template_input_change_7_listener","import","HeaderButtonsComponent_div_0_Template_button_click_8_listener","openDownloadDialog","HeaderButtonsComponent_div_0_span_9_Template","HeaderButtonsComponent_div_0_span_11_Template","HeaderButtonsComponent_div_0_Template_button_click_13_listener","ctx_r8","openLabelDictionary","HeaderButtonsComponent_div_0_Template_button_click_16_listener","ctx_r9","openSettings","HeaderButtonsComponent_div_0_Template_button_click_19_listener","openKeyboardShortcutsDialog","HeaderButtonsComponent_div_0_Template_button_click_22_listener","ctx_r11","createNewDomainStory","replayService","isReplayable","isExportable","isDirty$","exportService","isDomainStoryExportable","HeaderButtonsComponent_div_2_Template_button_click_1_listener","_r13","previousStep","HeaderButtonsComponent_div_2_Template_button_click_4_listener","ctx_r14","nextStep","HeaderButtonsComponent_div_2_Template_button_click_7_listener","ctx_r15","stopReplay","settingsService","replayStateService","dialogService","importService","renderService","isReplay$","replayOn$","dirty$","filename","endsWith","importDST","importEGN","commandStackChanged","SVGDownloadOption","downloadSVG","EGNDownloadOption","downloadDST","PNGDownloadOption","downloadPNG","HTMLDownloadOption","downloadHTMLPresentation","disableClose","autoFocus","openDialog","shortCutText","reset","hasTitleOrDescription","SettingsService","ReplayStateService","DirtyFlagService","i5","DialogService","i6","ReplayService","i7","ExportService","i8","ImportDomainStoryService","i9","i10","RendererService","i11","HeaderButtonsComponent_Template","HeaderButtonsComponent_div_0_Template","HeaderButtonsComponent_div_2_Template","combineLatest","HeaderComponent_button_2_Template_button_click_0_listener","setShowDescription","HeaderComponent_button_4_Template_button_click_0_listener","_r7","ctx_r2","stepDescription$","description$","HeaderComponent","title$","showDescription$","currentStep$","maxStepNumber$","pipe","step","count","showDescription","openHeaderDialog","show","HeaderComponent_Template","HeaderComponent_button_2_Template","HeaderComponent_button_4_Template","HeaderComponent_Template_span_click_7_listener","HeaderComponent_span_13_Template","HeaderComponent_mat_card_17_Template","EventEmitter","LabelDictionaryComponent_mat_list_item_5_Template_input_change_2_listener","workobjectEntry_r2","updateWorkobjectEntry","LabelDictionaryComponent_mat_list_item_11_Template_textarea_change_2_listener","activityEntry_r5","updateActivityEntry","LabelDictionaryComponent_mat_list_item_11_Template_textarea_keydown_enter_2_listener","LabelDictionaryComponent_mat_list_item_11_Template_textarea_keyup_enter_2_listener","LabelDictionaryComponent_mat_list_item_11_Template_textarea_keyup_escape_2_listener","labelDictionaryService","closeEmitter","createLabelDictionaries","workObjectEntries","getWorkObjectLabels","activityEntries","getActivityLabels","workobjectEntriesSubject","activityEntriesSubject","activityNames","originalActivityNames","originalWorkObjectNames","originalName","w","workobject","massRenameLabels","emit","activityEntry","workobjectEntry","LabelDictionaryService","outputs","LabelDictionaryComponent_Template","LabelDictionaryComponent_mat_list_item_5_Template","LabelDictionaryComponent_mat_list_item_11_Template","LabelDictionaryComponent_Template_button_click_14_listener","LabelDictionaryComponent_Template_button_click_16_listener","GeneralSettingsComponent_Template","SettingsComponent","showGeneralSettings","showDomainCustomization","savedConfiguration","getAndClearSavedConfiguration","restart","openGeneralSettings","openDomainCustomization","SettingsComponent_Template","SettingsComponent_Template_button_click_3_listener","SettingsComponent_Template_button_click_7_listener","SettingsComponent_Template_button_click_11_listener","SettingsComponent_app_general_settings_15_Template","SettingsComponent_app_domain_configuration_17_Template","ReplaySubject","AUTOSAVE_CONFIGURATION_TAG","defaultConfiguration","storageService","configurationSubject","asObservable","initializeConfiguration","saveConfiguration","ɵɵinject","StorageService","factory","ɵfac","providedIn","Subject","DRAFTS_TAG","rendererService","updateConfiguration","readDrafts","sortDrafts","configAndDST","story","actorIcons","getElementsOfType","workObjectIcons","updateIconRegistries","importStory","stopTimer","startTimer","autosaveTimer","clearInterval","setInterval","savedDrafts","newDraft","createDraft","isChanged","isSame","isDraftEmpty","unshift","pop","writeDrafts","stringify","getStory","createConfigAndDST","Date","toString","aDate","bDate","setItem","json","removeItem","checkValidityOfConfiguration","configuratioFromFile","getStoredDomainConfiguration","domainString","setStoredDomainConfiguration","configForStorage","CommandStackService","setCommandStack","payload","matDialog","dialog","MatDialog","isDirtySubject","makeClean","dirty","DomManipulationService","showAll","removeHighlights","getAllCanvasObjects","getAllGroups","domObject","display","showStep","replayStep","notShown","getAllNotShown","hightlightStep","o","getNumberDomForActivity","numberDOMS","numberBackgroundDom","numberTextDom","allActivities","getAllActivities","allConnections","getAllConnections","activityDomObject","connectionDomObject","stepObjects","shownElements","notShownElements","allObjects","setDomainName","exportConfiguration","getCurrentConfigurationForExport","configJSONString","getDomainName","encodeURIComponent","body","customConfig","updateDomainName","actorDict","workObjectDict","actorKeys","workObjectKeys","getIconConfiguration","addIconsFromDomainConfiguration","configurationName","getCurrentConfiguration","getActorsDictionary","getWorkObjectsDictionary","createConfigFromDictionaries","currentConfiguration","getCurrentConfigurationNamesWithoutPrefix","createMinimalConfigurationWithDefaultIcons","minimalConfig","createConfigFromCanvas","getIconSource","actorNames","workobjectNames","newActors","newWorkobjects","allCanvasObjects","allIconListItems","configurationHasChanged","getAllIconDictionary","addIconToAllIconList","importedConfigurationEvent","storedDomainConfiguration","importedConfiguration","getImportedConfiguration","selectedActorNames","selectActor","selectedWorkobjectNames","selectWorkObject","changedDomain","deselectActor","deselectWorkobject","updateIcon","updateActorSubject","updateWorkObjectSubject","defaultConfig","workObjectName","actorName","updateAllIconBehaviourSubjects","resetToInitialConfiguration","usedIcons","imported","changedActors","changedWorkobjects","createDomainConfiguration","configurationActors","configurationWorkobjects","workobjects","changedDomainConfiguration","updateIcons","join","temp","iconDict","getSrcForIcon","addIconsToCss","iconBehaviourSubject","customDomainConfiguration","rawSrc","registerIconForType","unregisterIconForType","ICON_PREFIX","actorIconDictionary","workObjectDictionary","iconDictionaryForBPMN","iconConfig","allTypes","initDictionary","dictionary","customConfiguration","allInTypeDictionary","collection","allIn","dictionaryType","iconTypes","addIconsToTypeDictionary","extractCustomIconsFromDictionary","addNewIconsToDictionary","elementDictionary","sanitizedName","custom","fullDictionary","appendedDict","getTypeDictionaryKeys","elementOfType","setCustomConfiguration","fullyInitialized","registry","__implicitroot","setElementRegistry","_elements","createObjectListForDSTDownload","allObjectsFromCanvas","objectList","fillListOfCanvasObjects","canvasElement","groupObjects","checkChildForGroup","currentGroup","registryElementNames","getAllActors","getAllWorkobjects","co","sanitizeForDesktop","formatDate","environment","pngService","svgService","htmlPresentationService","titleSubscription","descriptionSubscription","ngOnDestroy","unsubscribe","DomainStory","getStoryForDownload","getCurrentDateString","downloadFile","datatype","fileEnding","svgData","createSVGData","container","svgElements","outerSVGElement","viewport","layerBase","image","extractSVG","prepareSVG","onload","getWidth","getHeight","fillStyle","drawImage","png64","toDataURL","ele","then","info","version","PngService","SvgService","HtmlPresentationService","doT","setModelerClasses","selection","modeler","viewBoxCoordinates","ViewBoxCoordinate","_this","_asyncToGenerator","saveSVG","fixActivityMarkersForEachStep","getCurrentStepNumber","content","transition","err","alert","getMaxStepNumber","revealjsTemplate","dots","revealjsData","script","sentences","multiplexSecret","multiplexId","fixMalformedHtmlScript","viewBoxIndex","splitViewBox","dataStart","dataEnd","createBounds","sectionIndex","newDefs","ids","idToReplace","newId","replaceAll","browserSpecs","ua","navigator","userAgent","tem","M","exec","appName","appVersion","URIHashtagFix","fix","browser","parseInt","findMostOuterElements","xRight","yDown","sub","elXLeft","elXRight","elYUp","elYDown","transform","nums","rects","outerRect","calculateWidthAndHeight","insertIndex","layerResizers","layerOverlays","removeAttribute","XMLSerializer","serializeToString","cacheData","getEncoded","findIndexToInsertData","svgIndex","backgroundColorWhite","appendDST","restoreTitleFromFileName","importRepairService","domainConfigurationService","importedConfigurationEmitter","isSVG","fileReader","titleText","fileReaderFunction","isEGN","dstText","removeXMLComments","dstAndConfig","extractDstAndConfig","configChanged","checkConfigForChanges","lastElement","importVersionNumber","handleVersionNumber","checkForUnreferencedElementsInActivitiesAndRepair","showBrokenImportDialog","adjustPositions","versionPrefix","lastIndexOf","updateCustomElementsPreviousV050","showPreviousV050Dialog","xmlText","newActorKeys","newWorkObjectKeys","currentActorKeys","currentWorkobjectKeys","changed","clearName","setImportedConfigurationAndEmit","ImportRepairService","objectIDs","activityIndex","isFirst","findFirstElement","adjustElementPosition","massNamingService","activityLabels","workObjektLabels","localeCompare","Set","massChangeNames","MassNamingService","commandStackService","oldValue","allRelevantObjects","massRenameHandler","positionsMatch","InitializerService","initializeDomainStoryModelerClasses","propagateDomainStoryModelerClassesToServices","initializeDomainStoryModelerEventHandlers","initiateEventBusListeners","getReplayOn","activityDoubleClick","renderedNumberRegistry","htmlCanvas","transformX","transformY","zoomX","zoomY","clickX","originalEvent","clickY","parseFloat","currentNum","tx","ty","tNumber","elementX","elementY","stopPropagation","saveActivityInputLabel","activityData","hasNumber","multipleNumberAllowed","initializerService","keyboard","bindTo","additionalModules","bpmnSearch","exportArtifacts","debounce","window","startDebounce","domainStory","currentStory","destroy","getModeler","timeout","timer","clearTimeout","encoded","renderStory","configurationChange","c","replayOnSubject","setReplayState","state","domManipulationService","storyCreatorService","currentStep","maxStepNumber","traceActivitiesAndCreateStory","initializeReplay","showCurrentStep","missingSteps","getMissingSteps","getValue","steps","StoryCreatorService","tracedActivityMap","tracedItem","it","createStep","addGroupStep","getStepObjects","highlightedElements","highlightedObjects","tracedActivity","initialSource","targetObjects","parallelStep","firstTarget","checkTarget","activityTarget","g","showSettings","showSettings$","titleSubject","descriptionSubject","domainNameSubject","showDescriptionSubject","allowUndo","fireTitleAndDescriptionUpdate","updateTitle","updateDescription","inputTitle","getVersion","degrees","radians","PI","quadrant","adjacent","opposite","atan2","Point","reg","domainStoryRegex","svgRegex","egnSuffix","dstSuffix","svgSuffix","filenameWithoutDateSuffix","AppComponent","ctrlKey","openLinkDialog","link","AppComponent_Template","AppComponent_app_settings_1_Template","BrowserModule","MAT_CHECKBOX_DEFAULT_OPTIONS","NoopAnimationsModule","ReactiveFormsModule","AppModule","ngDoBootstrap","app","componentElement","bootstrap","provide","useValue","clickAction","MatDialogModule","MatFormFieldModule","MatInputModule","MatToolbarModule","MatExpansionModule","MatCardModule","MatSnackBarModule","MatButtonModule","MatGridListModule","MatButtonToggleModule","MatListModule","MatCheckboxModule","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","catch","console","error"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file +{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/Modeler/index.js","./src/app/Modeler/modeler/change-icon/replace.js","./src/app/Modeler/modeler/change-icon/replaceMenuProvider.js","./src/app/Modeler/modeler/change-icon/replaceOptions.js","./src/app/Modeler/modeler/context-pad/domainStoryContextPadProvider.js","./src/app/Modeler/modeler/domainStoryElementFactory.js","./src/app/Modeler/modeler/domainStoryIdFactory.js","./src/app/Modeler/modeler/domainStoryRenderer.js","./src/app/Modeler/modeler/domainStoryRules.js","./src/app/Modeler/modeler/domainStoryUpdater.js","./src/app/Modeler/modeler/index.js","./src/app/Modeler/modeler/labeling/dsLabelEditingPreview.js","./src/app/Modeler/modeler/labeling/dsLabelEditingProvider.js","./src/app/Modeler/modeler/labeling/dsLabelUtil.js","./src/app/Modeler/modeler/labeling/index.js","./src/app/Modeler/modeler/labeling/position.js","./src/app/Modeler/modeler/modeling/dSModeling.js","./src/app/Modeler/modeler/modeling/index.js","./src/app/Modeler/modeler/numbering/numbering.js","./src/app/Modeler/modeler/palette/domainStoryPalette.js","./src/app/Modeler/modeler/updateHandler/activityUpdateHandlers.js","./src/app/Modeler/modeler/updateHandler/elementUpdateHandler.js","./src/app/Modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js","./src/app/Modeler/modeler/updateHandler/massRenameHandler.js","./src/app/Modeler/modeler/updateHandler/updateLabelHandler.js","./src/app/Modeler/modeler/util.js","./src/app/Service/Export/exportUtil.js","./src/app/Domain/Common/businessObject.ts","./src/app/Domain/Common/configuration.ts","./src/app/Domain/Common/constants.ts","./src/app/Domain/Common/dictionary/dictionary.ts","./src/app/Domain/Common/domainConfiguration.ts","./src/app/Domain/Common/elementTypes.ts","./src/app/Domain/Common/iconConfiguration.ts","./src/app/Domain/Dialog/activityDialogData.ts","./src/app/Domain/Dialog/exportDialogData.ts","./src/app/Domain/Dialog/infoDialogData.ts","./src/app/Domain/DomManipulation/replayConstants.ts","./src/app/Domain/Domain-Configuration/allIcons.ts","./src/app/Domain/Domain-Configuration/iconFilterEnum.ts","./src/app/Domain/Export/configAndDst.ts","./src/app/Domain/Export/exportConstants.ts","./src/app/Modules/autosave-settings.module.ts","./src/app/Modules/domain-story-modeler-module.module.ts","./src/app/Modules/settings.module.ts","./src/app/Presentation/Autosave/AutosaveOptions/autosave-options.component.ts","./src/app/Presentation/Autosave/AutosaveOptions/autosave-options.component.html","./src/app/Presentation/Autosave/AutosaveSettings/autosave-settings.component.ts","./src/app/Presentation/Autosave/AutosaveSettings/autosave-settings.component.html","./src/app/Presentation/Autosave/AutosavedDrafts/autosaved-drafts.component.ts","./src/app/Presentation/Autosave/AutosavedDrafts/autosaved-drafts.component.html","./src/app/Presentation/Canvas/modeler.component.ts","./src/app/Presentation/Canvas/modeler.component.html","./src/app/Presentation/Dialog/activity-dialog/activity-dialog.component.ts","./src/app/Presentation/Dialog/activity-dialog/activity-dialog.component.html","./src/app/Presentation/Dialog/export-dialog/export-dialog.component.ts","./src/app/Presentation/Dialog/export-dialog/export-dialog.component.html","./src/app/Presentation/Dialog/header-dialog/header-dialog.component.ts","./src/app/Presentation/Dialog/header-dialog/header-dialog.component.html","./src/app/Presentation/Dialog/info-dialog/info-dialog.component.ts","./src/app/Presentation/Dialog/info-dialog/info-dialog.component.html","./src/app/Presentation/Dialog/label-dictionary-dialog/label-dictionary-dialog.component.ts","./src/app/Presentation/Dialog/label-dictionary-dialog/label-dictionary-dialog.component.html","./src/app/Presentation/DomainConfiguration/details-list-item/details-list-item.component.ts","./src/app/Presentation/DomainConfiguration/details-list-item/details-list-item.component.html","./src/app/Presentation/DomainConfiguration/domain-configuration.component.ts","./src/app/Presentation/DomainConfiguration/domain-configuration.component.html","./src/app/Presentation/DomainConfiguration/domain-details/domain-details.component.ts","./src/app/Presentation/DomainConfiguration/domain-details/domain-details.component.html","./src/app/Presentation/DomainConfiguration/icon-list-item/icon-list-item.component.ts","./src/app/Presentation/DomainConfiguration/icon-list-item/icon-list-item.component.html","./src/app/Presentation/Header/header-buttons.component.ts","./src/app/Presentation/Header/header-buttons.component.html","./src/app/Presentation/Header/header.component.ts","./src/app/Presentation/Header/header.component.html","./src/app/Presentation/LabelDictionary/label-dictionary.component.ts","./src/app/Presentation/LabelDictionary/label-dictionary.component.html","./src/app/Presentation/Settings/General/general-settings.component.ts","./src/app/Presentation/Settings/General/general-settings.component.html","./src/app/Presentation/Settings/settings.component.ts","./src/app/Presentation/Settings/settings.component.html","./src/app/Service/Autosave/autosave-configuration.service.ts","./src/app/Service/Autosave/autosave.service.ts","./src/app/Service/BrowserStorage/storage.service.ts","./src/app/Service/CommandStack/command-stack.service.ts","./src/app/Service/Dialog/dialog.service.ts","./src/app/Service/DirtyFlag/dirty-flag.service.ts","./src/app/Service/DomManipulation/dom-manipulation.service.ts","./src/app/Service/DomainConfiguration/domain-configuration.service.ts","./src/app/Service/DomainConfiguration/domain-customization.service.ts","./src/app/Service/DomainConfiguration/icon-dictionary.service.ts","./src/app/Service/ElementRegistry/element-registry.service.ts","./src/app/Service/Export/export.service.ts","./src/app/Service/Export/html-presentation.service.ts","./src/app/Service/Export/png.service.ts","./src/app/Service/Export/svg.service.ts","./src/app/Service/Import/import-domain-story.service.ts","./src/app/Service/Import/import-repair.service.ts","./src/app/Service/LabelDictionary/label-dictionary.service.ts","./src/app/Service/LabelDictionary/mass-naming.service.ts","./src/app/Service/Modeler/initializer.service.ts","./src/app/Service/Modeler/modeler.service.ts","./src/app/Service/Renderer/renderer.service.ts","./src/app/Service/Replay/replay-state.service.ts","./src/app/Service/Replay/replay.service.ts","./src/app/Service/Replay/storyCreator/story-creator.service.ts","./src/app/Service/Settings/settings.service.ts","./src/app/Service/Title/title.service.ts","./src/app/Utils/mathExtensions.ts","./src/app/Utils/naming.ts","./src/app/Utils/sanitizer.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/material.module.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import Modeler from \"bpmn-js/lib/Modeler\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport { assign, isArray } from \"min-dash\";\nimport inherits from \"inherits\";\n\nimport DomainStoryModule from \"./modeler\";\nimport LabelEditingModule from \"./modeler/labeling\";\nimport ModelingModule from \"./modeler/modeling\";\nimport { elementTypes } from \"../Domain/Common/elementTypes\";\n\nexport default function DomainStoryModeler(options) {\n Modeler.call(this, options);\n\n this._customElements = [];\n this._groupElements = [];\n}\n\ninherits(DomainStoryModeler, Modeler);\n\nDomainStoryModeler.prototype._modules = [].concat(\n DomainStoryModeler.prototype._modules,\n [DomainStoryModule, LabelEditingModule, ModelingModule],\n [ResizeModule]\n);\n\n/**\n * add a single custom element to the underlying diagram\n *\n * @param {Object} customElement\n */\nDomainStoryModeler.prototype._addCustomShape = function (customElement) {\n let parentId = customElement.parent;\n delete customElement.children;\n delete customElement.parent;\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n let customShape = elementFactory.create(\"shape\", customAttrs);\n\n if (isGroup(customElement)) {\n this._groupElements[customElement.id] = customShape;\n }\n\n if (parentId) {\n let parentShape = this._groupElements[parentId];\n\n if (isGroup(parentShape)) {\n return canvas.addShape(customShape, parentShape, parentShape.id);\n }\n }\n return canvas.addShape(customShape);\n};\n\nDomainStoryModeler.prototype._addCustomConnection = function (customElement) {\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\"),\n elementRegistry = this.get(\"elementRegistry\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n\n let connection = elementFactory.create(\n \"connection\",\n assign(customAttrs, {\n source: elementRegistry.get(customElement.source),\n target: elementRegistry.get(customElement.target),\n }),\n elementRegistry.get(customElement.source).parent\n );\n\n return canvas.addConnection(connection);\n};\n\n//** We import BusinessObjects, not the whole Canvas Object!!!!!!!!\nDomainStoryModeler.prototype.importCustomElements = function (elements) {\n this.get(\"eventBus\").fire(\"diagram.clear\", {});\n this._customElements = [];\n this._groupElements = [];\n\n this.addCustomElements(elements);\n};\n\n/**\n * add a number of custom elements and connections to the underlying diagram.\n *\n * @param {Array} customElements\n */\nDomainStoryModeler.prototype.addCustomElements = function (customElements) {\n if (!isArray(customElements)) {\n throw new Error(\"argument must be an array\");\n }\n\n let shapes = [],\n connections = [],\n groups = [];\n\n customElements.forEach(function (customElement) {\n if (isConnection(customElement)) {\n connections.push(customElement);\n } else if (isGroup(customElement)) {\n groups.push(customElement);\n } else {\n shapes.push(customElement);\n }\n });\n\n // add groups before shapes and shapes before connections so that connections\n // can already rely on the shapes being part of the diagram\n groups.forEach(this._addCustomShape, this);\n shapes.forEach(this._addCustomShape, this);\n connections.forEach(this._addCustomConnection, this);\n};\n\n/**\n * get custom elements with their current status.\n *\n * @return {Array} custom elements on the diagram\n */\nDomainStoryModeler.prototype.getCustomElements = function () {\n return this._customElements;\n};\n\n// override standard function to prevent default elements on canvas\nDomainStoryModeler.prototype.createDiagram = function (done) {};\n\nfunction isConnection(element) {\n return (\n element.type === elementTypes.ACTIVITY ||\n element.type === elementTypes.CONNECTION\n );\n}\n\nfunction isGroup(element) {\n return element && element.type === elementTypes.GROUP;\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\n/**\n * service that allow replacing of elements.\n */\nexport default function Replace(modeling) {\n this._modeling = modeling;\n}\n\n/**\n * @param {Element} oldElement - element to be replaced\n * @param {Object} newElementData - containing information about the new Element, for example height, width, type.\n * @param modeling\n */\nfunction replaceElement(oldElement, newElementData, modeling) {\n // let modeling = this._modeling;\n\n let newElement = setCenterOfElement(newElementData, oldElement, modeling);\n let outgoingActivities = newElement.outgoing;\n let incomingActivities = newElement.incoming;\n\n outgoingActivities.forEach((element) => {\n element.businessObject.source = newElement.id;\n });\n\n incomingActivities.forEach((element) => {\n element.businessObject.target = newElement.id;\n });\n\n return newElement;\n}\n\nfunction setCenterOfElement(newElementData, oldElement, modeling) {\n newElementData.x = Math.ceil(\n oldElement.x + (newElementData.width || oldElement.width) / 2\n );\n newElementData.y = Math.ceil(\n oldElement.y + (newElementData.height || oldElement.height) / 2\n );\n\n assign(newElementData, { name: oldElement.businessObject.name });\n\n return modeling.replaceShape(oldElement, newElementData, {});\n}\n\nReplace.prototype.replaceElement = replaceElement;\n","\"use strict\";\n\nimport Replace from \"./replace\";\nimport * as replaceOptions from \"./replaceOptions\";\n\nimport { forEach } from \"min-dash\";\n\n/**\n * This module is an element agnostic replace menu provider for the popup menu.\n */\nexport default function ReplaceMenuProvider(modeling) {\n this._dsReplace = new Replace(modeling);\n this._modeling = modeling;\n}\n\nReplaceMenuProvider.$inject = [\"modeling\"];\n\n/**\n * Get all entries from replaceOptions for the given element and apply filters\n * on them. Get for example only elements, which are different from the current one.\n *\n * @param {djs.model.Base} element\n *\n * @return {Array} a list of menu entry items\n */\nReplaceMenuProvider.prototype.getEntries = function (element) {\n let entries;\n if (element.type.includes(\"actor\")) {\n entries = replaceOptions.actorReplaceOptions(element.type);\n } else if (element.type.includes(\"workObject\")) {\n entries = replaceOptions.workObjectReplaceOptions(element.type);\n }\n\n return this._createEntries(element, entries);\n};\n\n/**\n * Creates an array of menu entry objects for a given element and filters the replaceOptions\n * according to a filter function.\n *\n * @param {djs.model.Base} element\n * @param {Object} replaceOptions\n *\n * @return {Array} a list of menu items\n */\nReplaceMenuProvider.prototype._createEntries = function (\n element,\n replaceOptions\n) {\n let menuEntries = [];\n\n let self = this;\n\n forEach(replaceOptions, function (definition) {\n let entry = self._createMenuEntry(definition, element);\n\n menuEntries.push(entry);\n });\n\n return menuEntries;\n};\n\n/**\n * Creates and returns a single menu entry item.\n *\n * @param {Object} definition a single replace options definition object\n * @param {djs.model.Base} element\n * @param {Function} [action] an action callback function which gets called when\n * the menu entry is being triggered.\n *\n * @return {Object} menu entry item\n */\nReplaceMenuProvider.prototype._createMenuEntry = function (\n definition,\n element,\n action\n) {\n let replaceElement = this._dsReplace.replaceElement;\n let modeling = this._modeling;\n let replaceAction = function () {\n return replaceElement(element, definition.target, modeling);\n };\n\n action = action || replaceAction;\n\n return {\n label: definition.label,\n className: definition.className,\n id: definition.actionName,\n action: action,\n };\n};\n","import { elementTypes } from \"src/app/Domain/Common/elementTypes\";\n\nlet iconDictionaryService;\n\nexport function initializeReplaceOptions(iconDictionary) {\n iconDictionaryService = iconDictionary;\n}\n\nexport function actorReplaceOptions(name) {\n const actorTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.ACTOR\n );\n\n let replaceOption = {};\n let i = 0;\n\n actorTypes.keysArray().forEach((actorType) => {\n if (!name.includes(actorType)) {\n const typeName = actorType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName.toLowerCase(),\n className: iconDictionaryService.getIconForBPMN(\n elementTypes.ACTOR,\n actorType\n ),\n target: {\n type: `${elementTypes.ACTOR}${actorType}`,\n },\n };\n i++;\n }\n });\n return replaceOption;\n}\n\nexport function workObjectReplaceOptions(name) {\n const workObjectTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.WORKOBJECT\n );\n\n let replaceOption = {};\n let i = 0;\n\n workObjectTypes.keysArray().forEach((workObjectType) => {\n if (!name.includes(workObjectType)) {\n const typeName = workObjectType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName,\n className: iconDictionaryService.getIconForBPMN(\n elementTypes.WORKOBJECT,\n workObjectType\n ),\n target: {\n type: `${elementTypes.WORKOBJECT}${workObjectType}`,\n },\n };\n }\n i++;\n });\n return replaceOption;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport ContextPadProvider from \"bpmn-js/lib/features/context-pad/ContextPadProvider\";\n\nimport { assign, bind } from \"min-dash\";\nimport { generateAutomaticNumber } from \"../numbering/numbering\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { getAllStandardIconKeys } from \"src/app/Domain/Domain-Configuration/allIcons\";\n\nlet dirtyFlagService;\nlet iconDictionaryService;\n\nexport function initializeContextPadProvider(dirtyFlag, iconDictionary) {\n dirtyFlagService = dirtyFlag;\n iconDictionaryService = iconDictionary;\n}\n\nexport default function DomainStoryContextPadProvider(\n injector,\n connect,\n translate,\n elementFactory,\n create,\n canvas,\n contextPad,\n popupMenu,\n replaceMenuProvider,\n commandStack,\n eventBus,\n modeling\n) {\n let startConnect;\n let selectedElement;\n\n injector.invoke(ContextPadProvider, this);\n let autoPlace = injector.get(\"autoPlace\", false);\n\n let cached = bind(this.getContextPadEntries, this);\n\n const colorPicker = document.getElementById(\"colorPicker\");\n colorPicker.onchange = (ev) => {\n const context = {\n businessObject: selectedElement.businessObject,\n newColor: ev.target.value,\n element: selectedElement,\n };\n\n commandStack.execute(\"element.colorChange\", context);\n dirtyFlagService.makeDirty();\n };\n\n popupMenu.registerProvider(\"ds-replace\", replaceMenuProvider);\n popupMenu.registerProvider(\"bpmn-replace\", replaceMenuProvider);\n\n this.getContextPadEntries = function (element) {\n const allStandardIconKeys = getAllStandardIconKeys();\n let actions = cached(element);\n\n startConnect = function (event, element, autoActivate) {\n connect.start(event, element, autoActivate);\n };\n\n if (element.type.includes(elementTypes.WORKOBJECT)) {\n if (\n allStandardIconKeys.includes(\n element.type.replace(elementTypes.WORKOBJECT, \"\")\n )\n ) {\n addColorChange(actions);\n }\n addConnectWithActivity(actions, startConnect);\n addTextAnnotation(actions);\n addActors(appendAction, actions);\n addWorkObjects(appendAction, actions);\n addChangeWorkObjectTypeMenu(actions);\n } else if (element.type.includes(elementTypes.ACTOR)) {\n if (\n allStandardIconKeys.includes(\n element.type.replace(elementTypes.ACTOR, \"\")\n )\n ) {\n addColorChange(actions);\n }\n addConnectWithActivity(actions, startConnect);\n addTextAnnotation(actions);\n addWorkObjects(appendAction, actions);\n addChangeActorTypeMenu(actions);\n } else if (element.type.includes(elementTypes.GROUP)) {\n delete actions.delete;\n addTextAnnotation(actions);\n assign(actions, {\n deleteGroup: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove Group without Child-Elements\",\n action: {\n click: function (event, element) {\n modeling.removeGroup(element);\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n addColorChange(actions);\n } else if (element.type.includes(elementTypes.ACTIVITY)) {\n moveDeleteActionToEndOfArray(actions);\n\n addColorChange(actions);\n\n assign(actions, {\n delete: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove\",\n action: {\n click: function (event, element) {\n modeling.removeElements({ element });\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n }\n\n return actions;\n };\n\n function moveDeleteActionToEndOfArray(actions) {\n delete actions.delete;\n\n assign(actions, {\n changeDirection: {\n group: \"edit\",\n className: \"icon-domain-story-changeDirection\",\n title: translate(\"Change direction\"),\n action: {\n // event needs to be addressed\n click: function (event, element) {\n changeDirection(element);\n },\n },\n },\n });\n }\n\n function addChangeActorTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function addColorChange(actions) {\n assign(actions, {\n colorChange: {\n group: \"edit\",\n className: \"icon-domain-story-color-picker\",\n title: translate(\"Change color\"),\n action: {\n click: function (event, element) {\n selectedElement = element;\n colorPicker.click();\n },\n },\n },\n });\n }\n\n function addTextAnnotation(actions) {\n assign(actions, {\n \"append.text-annotation\": appendAction(\n elementTypes.TEXTANNOTATION,\n \"bpmn-icon-text-annotation\",\n \"textannotation\",\n \"connect\"\n ),\n });\n }\n\n function addConnectWithActivity(actions, startConnect) {\n assign(actions, {\n connect: {\n group: \"connect\",\n className: \"bpmn-icon-connection\",\n title: translate(\"Connect with activity\"),\n action: {\n click: startConnect,\n dragstart: startConnect,\n },\n },\n });\n }\n\n function addWorkObjects(appendAction, actions) {\n let workObjectTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.WORKOBJECT\n );\n workObjectTypes.keysArray().forEach((workObjectType) => {\n let name = workObjectType;\n let icon = iconDictionaryService.getIconForBPMN(\n elementTypes.WORKOBJECT,\n workObjectType\n );\n let action = [];\n action[\"append.workObject\" + name] = appendAction(\n `${elementTypes.WORKOBJECT}${workObjectType}`,\n icon,\n name,\n \"workObjects\"\n );\n assign(actions, action);\n });\n }\n\n function addActors(appendAction, actions) {\n let actorTypes = iconDictionaryService.getTypeDictionary(\n elementTypes.ACTOR\n );\n actorTypes.keysArray().forEach((actorType) => {\n let name = actorType;\n let icon = iconDictionaryService.getIconForBPMN(\n elementTypes.ACTOR,\n actorType\n );\n let action = [];\n action[\"append.actor\" + name] = appendAction(\n `${elementTypes.ACTOR}${actorType}`,\n icon,\n name,\n \"actors\"\n );\n assign(actions, action);\n });\n }\n\n function addChangeWorkObjectTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function changeDirection(element) {\n let context;\n let businessObject = element.businessObject;\n let newNumber;\n\n if (element.source.type.includes(elementTypes.ACTOR)) {\n newNumber = 0;\n } else {\n newNumber = generateAutomaticNumber(element, commandStack);\n }\n context = {\n businessObject: businessObject,\n newNumber: newNumber,\n element: element,\n };\n commandStack.execute(\"activity.directionChange\", context);\n }\n\n function getReplaceMenuPosition(element) {\n let Y_OFFSET = 5;\n\n let diagramContainer = canvas.getContainer(),\n pad = contextPad.getPad(element).html;\n\n let diagramRect = diagramContainer.getBoundingClientRect(),\n padRect = pad.getBoundingClientRect();\n\n let top = padRect.top - diagramRect.top;\n let left = padRect.left - diagramRect.left;\n\n return {\n x: left,\n y: top + padRect.height + Y_OFFSET,\n };\n }\n\n /**\n * create an append action\n *\n * @param {String} type\n * @param {String} className\n * @param {String} [title]\n * @param {String} group\n * @param {Object} [options]\n *\n * @return {Object} descriptor\n */\n function appendAction(type, className, title, group, options) {\n if (typeof title !== \"string\") {\n options = title;\n title = translate(\"{type}\", { type: type.replace(/^domainStory:/, \"\") });\n }\n\n function appendStart(event, element) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n let context = {\n elements: [shape],\n hints: {},\n source: element,\n };\n create.start(event, shape, context);\n }\n\n return {\n group: group,\n className: className,\n title: \"Append \" + title,\n action: {\n dragstart: startConnect,\n click: appendStart,\n },\n };\n }\n}\n\ninherits(DomainStoryContextPadProvider, ContextPadProvider);\n\nDomainStoryContextPadProvider.$inject = [\n \"injector\",\n \"connect\",\n \"translate\",\n \"elementFactory\",\n \"create\",\n \"canvas\",\n \"contextPad\",\n \"popupMenu\",\n \"replaceMenuProvider\",\n \"commandStack\",\n \"eventBus\",\n \"modeling\",\n];\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport BpmnElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\n\nimport { DEFAULT_LABEL_SIZE } from \"bpmn-js/lib/util/LabelUtil\";\n\nimport DomainStoryIdFactory from \"./domainStoryIdFactory\";\n\n/**\n * A custom factory that knows how to create BPMN _and_ custom elements.\n */\nexport default function DomainStoryElementFactory(bpmnFactory, moddle) {\n BpmnElementFactory.call(this, bpmnFactory, moddle);\n\n let self = this;\n let domainStoryIdFactory = new DomainStoryIdFactory();\n\n /**\n * create a diagram-js element with the given type (any of shape, connection, label).\n *\n * @param {String} elementType\n * @param {Object} attrs\n *\n * @return {djs.model.Base}\n */\n this.create = function (elementType, attrs) {\n let type = attrs.type;\n\n if (elementType === \"label\") {\n return self.baseCreate(\n elementType,\n assign({ type: \"label\" }, DEFAULT_LABEL_SIZE, attrs)\n );\n }\n\n // add type to businessObject if custom\n if (/^domainStory:/.test(type)) {\n if (!attrs.businessObject) {\n attrs.businessObject = {\n type: type,\n name: attrs.name ? attrs.name : \"\",\n };\n }\n\n if (attrs.id) {\n domainStoryIdFactory.registerId(attrs.id);\n } else {\n attrs.id = domainStoryIdFactory.getId(elementType);\n }\n assign(attrs.businessObject, {\n id: attrs.id,\n });\n\n let id = attrs.id;\n attrs.businessObject.get = function (key) {\n if (key === \"id\") {\n return id;\n }\n };\n attrs.businessObject.set = function (key, value) {\n if (key === \"id\") {\n assign(attrs.businessObject, { id: value });\n }\n };\n\n if (!attrs.businessObject.$type) {\n assign(attrs.businessObject, { $type: \"Element\" });\n }\n assign(attrs.businessObject, { di: {} });\n if (!attrs.businessObject.$descriptor) {\n assign(attrs.businessObject, { $descriptor: {} });\n }\n\n // add width and height if shape\n if (\n (!/:activity$/.test(type) || !/:connection$/.test(type)) &&\n !((/:group$/.test(type) && attrs.height) || attrs.width)\n ) {\n assign(attrs, self._getCustomElementSize(type));\n }\n\n if (!(\"$instanceOf\" in attrs.businessObject)) {\n // ensure we can use ModelUtil#is for type checks\n Object.defineProperty(attrs.businessObject, \"$instanceOf\", {\n value: function (type) {\n return this.type === type;\n },\n });\n }\n\n return self.baseCreate(elementType, attrs);\n }\n\n return self.createBpmnElement(elementType, attrs);\n };\n}\n\ninherits(DomainStoryElementFactory, BpmnElementFactory);\n\nDomainStoryElementFactory.$inject = [\"bpmnFactory\", \"moddle\"];\n\n/**\n * returns the default size of custom shapes.\n *\n * the following example shows an interface on how\n * to setup the custom shape's dimensions.\n * *\n * @param {String} type\n *\n * @return {Dimensions} a {width, height} object representing the size of the element\n */\nDomainStoryElementFactory.prototype._getCustomElementSize = function (type) {\n let shapes = {\n __default: { width: 75, height: 75 },\n \"domainStory:textAnnotation\": { width: 100, height: 30 },\n \"domainStory:group\": { width: 525, height: 275 },\n };\n\n return shapes[type] || shapes.__default;\n};\n\nclass Dimensions {\n width;\n height;\n}\n","\"use strict\";\n\nlet idList = [];\n\nexport default function DomainStoryIdFactory() {}\n\nDomainStoryIdFactory.prototype.getId = function (type) {\n return generateId(type);\n};\n\nDomainStoryIdFactory.prototype.registerId = function (id) {\n idList.push(id);\n};\n\nfunction generateId(type) {\n let idNumber = fourDigitsId();\n\n let id = type + \"_\" + idSuffix(idNumber);\n\n while (containsId(id)) {\n idNumber++;\n\n id = type + \"_\" + idSuffix(idNumber);\n }\n\n idList.push(id);\n return id;\n}\n\nfunction idSuffix(idNumber) {\n let id;\n if (idNumber > 9999) {\n id = 0;\n } else if (idNumber < 10) {\n id = \"000\" + idNumber;\n } else if (idNumber < 100) {\n id = \"00\" + idNumber;\n } else if (idNumber < 1000) {\n id = \"0\" + idNumber;\n } else {\n id = \"\" + idNumber;\n }\n return id;\n}\n\nfunction fourDigitsId() {\n return Math.floor(Math.random() * 10000);\n}\n\nexport function containsId(id) {\n let same = false;\n idList.forEach((element) => {\n if (id === element) {\n same = true;\n }\n });\n return same;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\nimport Ids from \"ids\";\nimport { getAnnotationBoxHeight } from \"./labeling/dsLabelEditingPreview\";\nimport { componentsToPath, createLine } from \"diagram-js/lib/util/RenderUtil\";\nimport {\n append as svgAppend,\n attr as svgAttr,\n classes as svgClasses,\n create as svgCreate,\n} from \"tiny-svg\";\nimport { query as domQuery } from \"min-dom\";\nimport { assign, isObject } from \"min-dash\";\nimport { getNumberStash } from \"./labeling/dsLabelEditingProvider\";\nimport {\n addNumberToRegistry,\n generateAutomaticNumber,\n numberBoxDefinitions,\n} from \"./numbering/numbering\";\n\nimport { calculateTextWidth } from \"./labeling/dsLabelUtil\";\nimport { countLines, labelPosition } from \"./labeling/position\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { angleBetween } from \"../../Utils/mathExtensions\";\nimport { getNameFromType } from \"../../Utils/naming\";\n\nlet RENDERER_IDS = new Ids();\nlet numbers = [];\nconst DEFAULT_COLOR = \"black\";\n\n/**\n * a renderer that knows how to render custom elements.\n */\nlet iconDictionary;\nlet elementRegistry;\nlet dirtyFlag;\n\nexport function initializeRenderer(\n iconDictionaryService,\n elementRegistryService,\n dirtyFlagService\n) {\n iconDictionary = iconDictionaryService;\n elementRegistry = elementRegistryService;\n dirtyFlag = dirtyFlagService;\n}\n\nexport default function DomainStoryRenderer(\n eventBus,\n styles,\n canvas,\n textRenderer,\n pathMap,\n commandStack\n) {\n BaseRenderer.call(this, eventBus, 2000);\n\n let rendererId = RENDERER_IDS.next();\n let markers = {};\n let computeStyle = styles.computeStyle;\n\n // generate the automatic Number for an activity originating from an actor\n function generateActivityNumber(parentGfx, element, box) {\n // whenever we want to edit an activity, it gets redrawn as a new object\n // and the custom information is lost,\n // so we stash it before the editing occurs and set the value here\n\n let numberStash = getNumberStash();\n let semantic = element.businessObject;\n\n if (numberStash.use) {\n semantic.number = numberStash.number;\n }\n\n numbers[semantic.number] = true;\n\n let newRenderedNumber = renderNumber(\n parentGfx,\n semantic.number,\n numberStyle(box),\n element.type\n );\n addNumberToRegistry(newRenderedNumber, semantic.number);\n }\n\n // style functions\n function numberStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n position: \"absolute\",\n }),\n };\n }\n\n function backgroundBoxStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n fontSize: 50,\n position: \"absolute\",\n fontFamily: \"Courier New\",\n }),\n };\n }\n\n function backgroundDotStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"white\",\n fontSize: 150,\n position: \"absolute\",\n fontFamily: \"Courier\",\n }),\n };\n }\n\n // render functions\n // render label associated with actors and workobjects\n function renderEmbeddedLabel(parentGfx, element, align, padding) {\n let businessObject = element.businessObject;\n return renderLabel(\n parentGfx,\n businessObject.name,\n {\n box: element,\n align: align,\n padding: padding ? padding : 0,\n style: {\n fill: \"#000000\",\n },\n },\n element.type\n );\n }\n\n // render label associated with activities\n function renderExternalLabel(parentGfx, element) {\n let semantic = element.businessObject;\n let waypoints = element.waypoints;\n let lines = countLines(semantic.name);\n\n if (element.waypoints != null) {\n let position = labelPosition(waypoints, lines);\n let startPoint = element.waypoints[position.selected];\n let endPoint = element.waypoints[position.selected + 1];\n let angle = angleBetween(startPoint, endPoint);\n let alignment = \"left\";\n let boxWidth = 500;\n let xStart = position.x;\n\n // if the activity is horizontal, we want to center the label\n if (angle === 0 || angle === 180) {\n boxWidth = Math.abs(startPoint.x - endPoint.x);\n alignment = \"center\";\n xStart =\n (startPoint.x + endPoint.x) / 2 - calculateTextWidth(semantic.name);\n }\n\n let box = {\n textAlign: alignment,\n width: boxWidth,\n height: 30,\n x: xStart,\n y: position.y,\n };\n\n if (semantic.name && semantic.name.length) {\n return renderLabel(\n parentGfx,\n semantic.name,\n {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n hyphens: \"auto\",\n }),\n },\n element.type\n );\n }\n }\n }\n\n // render the number associated with an activity\n function renderExternalNumber(parentGfx, element) {\n if (element && element.source) {\n let semantic = element.businessObject;\n\n let box = numberBoxDefinitions(element);\n\n if (\n semantic.number == null &&\n element.source.type &&\n element.source.type.includes(elementTypes.ACTOR)\n ) {\n generateAutomaticNumber(element, commandStack);\n }\n\n // render the background for the number\n if (semantic.number && element.source.type.includes(elementTypes.ACTOR)) {\n generateActivityNumber(parentGfx, element, box);\n } else {\n semantic.number = null;\n }\n }\n }\n\n // render a number on the canvas\n function renderNumber(parentGfx, number, options, type) {\n if (number < 10) {\n number = String(number);\n }\n number = String(number);\n let text = textRenderer.createText(number || \"\", options);\n let height = 0;\n\n svgClasses(text).add(\"djs-labelNumber\");\n\n setCoordinates(type, text, options, height, parentGfx);\n\n svgAppend(parentGfx, text);\n\n drawCircle(parentGfx, options, number.length);\n\n return text;\n }\n\n function drawCircle(parentGfx, options, textLength) {\n const circle = svgCreate(\"circle\");\n svgAttr(circle, {\n cx: options.box.x + 15 + textLength * 3,\n cy: options.box.y - 4,\n r: \"10\",\n style: \"fill:transparent;stroke:black;stroke-width:1\",\n });\n svgAppend(parentGfx, circle);\n }\n\n // the coordinates of the activity label must be set directly and will not be taken from the box\n function setCoordinates(type, text, options, height, parentGfx) {\n if (/:activity$/.test(type)) {\n text.innerHTML = manipulateInnerHTMLXLabel(\n text.children,\n options.box.x,\n 0\n );\n text.innerHTML = manipulateInnerHTMLYLabel(\n text.children,\n options.box.y,\n 0\n );\n } else if (/:actor/.test(type)) {\n height = parentGfx.firstChild.attributes.height.nodeValue;\n text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 0);\n } else if (/:workObject/.test(type)) {\n height = parentGfx.firstChild.attributes.height.nodeValue;\n text.innerHTML = manipulateInnerHTMLYLabel(text.children, height, 26);\n }\n }\n\n // render a label on the canvas\n function renderLabel(parentGfx, label, options, type) {\n let text = textRenderer.createText(label || \"\", options);\n let height = 0;\n\n svgClasses(text).add(\"djs-label\");\n setCoordinates(type, text, options, height, parentGfx);\n\n svgAppend(parentGfx, text);\n return text;\n }\n\n // determine the Y-coordinate of the label / number to be rendered\n function manipulateInnerHTMLYLabel(children, y, offset) {\n if (children) {\n let result = \"\";\n for (let i = 0; i < children.length; i++) {\n result += children[i].outerHTML.replace(\n /y=\"-?\\d*.\\d*\"/,\n 'y=\"' + (Number(y) + offset + 14 * i) + '\"'\n );\n }\n return result;\n }\n }\n\n // determine the X-coordinate of the label / number to be rendered\n function manipulateInnerHTMLXLabel(children, x, offset) {\n if (children) {\n let result = \"\";\n for (let i = 0; i < children.length; i++) {\n result += children[i].outerHTML.replace(\n /x=\"-?\\d*.\\d*\"/,\n 'x=\"' + (Number(x) + offset + 14) + '\"'\n );\n }\n return result;\n }\n }\n\n // draw functions\n this.drawGroup = function (parentGfx, element) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = DEFAULT_COLOR;\n }\n let rect = drawRect(\n parentGfx,\n element.width,\n element.height,\n 0,\n assign(\n {\n fill: \"none\",\n stroke: element.businessObject.pickedColor,\n },\n element.attrs\n )\n );\n renderEmbeddedLabel(parentGfx, element, \"left-top\", 8);\n\n return rect;\n };\n\n function useColorForElement(element, iconSRC) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = DEFAULT_COLOR;\n }\n const match = iconSRC.match(/fill=\".*?\"/);\n if (match && match.length > 1) {\n return iconSRC.replace(\n /fill=\".*?\"/,\n 'fill=\"' + element.businessObject.pickedColor + '\"'\n );\n } else {\n const index = iconSRC.indexOf(\"' +\n ''\n );\n } else {\n return useColorForElement(element, iconSRC);\n }\n }\n\n this.drawActor = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width,\n height: element.height,\n },\n actor;\n let iconSRC = iconDictionary.getTypeIconSRC(\n elementTypes.ACTOR,\n getNameFromType(element.type)\n );\n iconSRC = getIconSrc(iconSRC, element);\n actor = svgCreate(iconSRC);\n\n svgAttr(actor, svgDynamicSizeAttributes);\n svgAppend(parent, actor);\n\n renderEmbeddedLabel(parent, element, \"center\", -5);\n return actor;\n };\n\n this.drawWorkObject = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width * 0.65,\n height: element.height * 0.65,\n x: element.width / 2 - 25,\n y: element.height / 2 - 25,\n },\n workObject;\n let iconSRC = iconDictionary.getTypeIconSRC(\n elementTypes.WORKOBJECT,\n getNameFromType(element.type)\n );\n iconSRC = getIconSrc(iconSRC, element);\n workObject = svgCreate(iconSRC);\n\n svgAttr(workObject, svgDynamicSizeAttributes);\n svgAppend(parent, workObject);\n renderEmbeddedLabel(parent, element, \"center\", -5);\n\n return workObject;\n };\n\n function useColorForActivity(element) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = \"black\";\n }\n let attrs = \"\";\n return computeStyle(attrs, {\n stroke: element.businessObject.pickedColor,\n fill: \"none\",\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n markerEnd: marker(\n \"activity\",\n \"black\",\n element.businessObject.pickedColor\n ),\n });\n }\n\n this.drawActivity = function (p, element) {\n adjustForTextOverlap(element);\n\n if (element) {\n let attrs = useColorForActivity(element);\n\n let x = svgAppend(p, createLine(element.waypoints, attrs));\n renderExternalLabel(p, element);\n renderExternalNumber(p, element);\n\n // just adjusting the start- and endpoint of the connection-element moves only the drawn connection,\n // not the interactive line. This can be fixed by manually overriding the points of the interactive polyline\n // in the HTMl with the points of the drawn one.\n // this however does not adjust the surrounding box of the connection.\n fixConnectionInHTML(p.parentElement);\n\n return x;\n }\n };\n\n function checkIfPointOverlapsText(point, source) {\n if (point.y > source.y + 60) {\n if (point.x > source.x + 3 && point.x < source.x + 72) {\n let lineOffset = getLineOffset(source);\n if (source.y + 75 + lineOffset > point.y) {\n point.y += lineOffset;\n }\n }\n }\n }\n\n function adjustForTextOverlap(element) {\n let source = element.source;\n let target = element.target;\n\n let waypoints = element.waypoints;\n let startPoint = waypoints[0];\n let endPoint = waypoints[waypoints.length - 1];\n\n if (startPoint && endPoint && source && target) {\n checkIfPointOverlapsText(startPoint, source);\n checkIfPointOverlapsText(endPoint, source);\n }\n }\n\n function getLineOffset(element) {\n let id = element.id;\n let offset = 0;\n\n let objects = document.getElementsByClassName(\"djs-element djs-shape\");\n for (let i = 0; i < objects.length; i++) {\n let data_id = objects.item(i).getAttribute(\"data-element-id\");\n if (data_id === id) {\n let object = objects.item(i);\n let text = object.getElementsByTagName(\"text\")[0];\n let tspans = text.getElementsByTagName(\"tspan\");\n let tspan = tspans[tspans.length - 1];\n offset = tspan.getAttribute(\"y\");\n }\n }\n return offset - 70;\n }\n\n function fixConnectionInHTML(wantedConnection) {\n if (wantedConnection) {\n let polylines = wantedConnection.getElementsByTagName(\"polyline\");\n if (polylines.length > 1) {\n polylines[1].setAttribute(\n \"points\",\n polylines[0].getAttribute(\"points\")\n );\n }\n }\n }\n\n this.drawDSConnection = function (p, element) {\n let attrs = \"\";\n attrs = computeStyle(attrs, {\n stroke: \"#000000\",\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n strokeDasharray: \"5, 5\",\n });\n\n return svgAppend(p, createLine(element.waypoints, attrs));\n };\n\n this.drawAnnotation = function (parentGfx, element) {\n let style = {\n fill: \"none\",\n stroke: \"none\",\n };\n\n let text = element.businessObject.text || \"\";\n if (element.businessObject.text) {\n let height = getAnnotationBoxHeight();\n\n if (height === 0 && element.businessObject.number) {\n height = element.businessObject.number;\n }\n assign(element, {\n height: height,\n });\n\n // for some reason the keyword height is not exported, so we use another, which we know will be exported,\n // to ensure persistent annotation heights between sessions\n assign(element.businessObject, {\n number: height,\n });\n }\n\n let textElement = drawRect(\n parentGfx,\n element.width,\n element.height,\n 0,\n 0,\n style\n );\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n drawPath(parentGfx, textPathData, {\n stroke: \"black\",\n });\n\n renderLabel(parentGfx, text, {\n box: element,\n align: \"left-top\",\n padding: 5,\n style: {\n fill: \"black\",\n },\n });\n\n return textElement;\n };\n\n // draw helper functions\n function drawPath(parentGfx, d, attrs) {\n attrs = computeStyle(attrs, [\"no-fill\"], {\n strokeWidth: 2,\n stroke: \"black\",\n });\n\n let path = svgCreate(\"path\");\n svgAttr(path, { d: d });\n svgAttr(path, attrs);\n\n svgAppend(parentGfx, path);\n\n return path;\n }\n\n function drawRect(parentGfx, width, height, r, offset, attrs) {\n if (isObject(offset)) {\n attrs = offset;\n offset = 0;\n }\n\n offset = offset || 0;\n attrs = computeStyle(attrs, {\n stroke: \"black\",\n strokeWidth: 2,\n fill: \"white\",\n });\n\n let rect = svgCreate(\"rect\");\n svgAttr(rect, {\n x: offset,\n y: offset,\n width: width - offset * 2,\n height: height - offset * 2,\n rx: r,\n ry: r,\n });\n\n svgAttr(rect, attrs);\n svgAppend(parentGfx, rect);\n\n return rect;\n }\n\n // marker functions\n function marker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (!markers[id]) {\n createMarker(type, fill, stroke);\n }\n return \"url(#\" + id + \")\";\n }\n\n function createMarker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (type === \"activity\") {\n let sequenceflowEnd = svgCreate(\"path\");\n svgAttr(sequenceflowEnd, { d: \"M 1 5 L 11 10 L 1 15 Z\" });\n\n addMarker(id, {\n element: sequenceflowEnd,\n ref: { x: 11, y: 10 },\n scale: 0.5,\n attrs: {\n fill: stroke,\n stroke: stroke,\n },\n });\n }\n }\n\n function addMarker(id, options) {\n let attrs = assign(\n {\n fill: \"black\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeDasharray: \"none\",\n },\n options.attrs\n );\n\n let ref = options.ref || { x: 0, y: 0 };\n let scale = options.scale || 1;\n\n // resetting stroke dash array\n if (attrs.strokeDasharray === \"none\") {\n attrs.strokeDasharray = [10000, 1];\n }\n\n let marker = svgCreate(\"marker\");\n\n svgAttr(options.element, attrs);\n svgAppend(marker, options.element);\n svgAttr(marker, {\n id: id,\n viewBox: \"0 0 20 20\",\n refX: ref.x,\n refY: ref.y,\n markerWidth: 20 * scale,\n markerHeight: 20 * scale,\n orient: \"auto\",\n });\n\n let defs = domQuery(\"defs\", canvas._svg);\n if (!defs) {\n defs = svgCreate(\"defs\");\n svgAppend(canvas._svg, defs);\n }\n svgAppend(defs, marker);\n markers[id] = marker;\n }\n\n // path functions\n this.getWorkObjectPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getGroupPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getActivityPath = function (connection) {\n let waypoints = connection.waypoints.map(function (p) {\n return p.original || p;\n });\n\n let activityPath = [[\"M\", waypoints[0].x, waypoints[0].y]];\n\n waypoints.forEach(function (waypoint, index) {\n if (index !== 0) {\n activityPath.push([\"L\", waypoint.x, waypoint.y]);\n }\n });\n return componentsToPath(activityPath);\n };\n\n this.getActorPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n}\n\ninherits(DomainStoryRenderer, BaseRenderer);\n\nDomainStoryRenderer.$inject = [\n \"eventBus\",\n \"styles\",\n \"canvas\",\n \"textRenderer\",\n \"pathMap\",\n \"commandStack\",\n];\n\nDomainStoryRenderer.prototype.canRender = function (element) {\n return /^domainStory:/.test(element.type);\n};\n\nDomainStoryRenderer.prototype.drawShape = function (p, element) {\n // polyfill for tests\n if (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n }\n\n let type = element.type;\n element.businessObject.type = type;\n\n elementRegistry.correctInitialize();\n dirtyFlag.makeDirty();\n\n if (type.includes(elementTypes.ACTOR)) {\n return this.drawActor(p, element);\n } else if (type.includes(elementTypes.WORKOBJECT)) {\n return this.drawWorkObject(p, element);\n } else if (type.includes(elementTypes.TEXTANNOTATION)) {\n return this.drawAnnotation(p, element);\n } else if (type.includes(elementTypes.GROUP)) {\n return this.drawGroup(p, element);\n }\n};\n\nDomainStoryRenderer.prototype.getShapePath = function (shape) {\n let type = shape.type;\n\n if (type.includes(elementTypes.ACTOR)) {\n return this.getActorPath(shape);\n } else if (type.includes(elementTypes.WORKOBJECT)) {\n return this.getWorkObjectPath(shape);\n } else if (type.includes(elementTypes.GROUP)) {\n return this.getGroupPath(shape);\n }\n};\n\nDomainStoryRenderer.prototype.drawConnection = function (p, element) {\n let type = element.type;\n\n dirtyFlag.makeDirty();\n\n // fixes activities that were copy-pasted\n if (!element.businessObject.type) {\n element.businessObject.type = type;\n }\n if (type === elementTypes.ACTIVITY) {\n return this.drawActivity(p, element);\n } else if (type === elementTypes.CONNECTION) {\n return this.drawDSConnection(p, element);\n }\n};\n\n// creates a SVG path that describes a rectangle which encloses the given shape.\nfunction getRectPath(shape) {\n let offset = 5;\n let x = shape.x,\n y = shape.y,\n width = shape.width / 2 + offset,\n height = shape.height / 2 + offset;\n\n return [\n [\"M\", x, y],\n [\"l\", width, 0],\n [\"l\", width, height],\n [\"l\", -width, height],\n [\"l\", -width, 0],\n [\"z\"],\n ];\n}\n","\"use strict\";\n\nimport { assign, every, reduce } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport RuleProvider from \"diagram-js/lib/features/rules/RuleProvider\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { is } from \"./util\";\n\nconst HIGH_PRIORITY = 1500;\nconst MIN_SIZE = 125;\n\nfunction isDomainStory(element) {\n return element && /^domainStory:/.test(element.type);\n}\n\nfunction isDomainStoryGroup(element) {\n return element && /^domainStory:group/.test(element.type);\n}\n\nfunction isActor(element) {\n return element && /^domainStory:actor\\w*/.test(element.type);\n}\n\nfunction isWorkObject(element) {\n return element && /^domainStory:workObject/.test(element.type);\n}\n\nfunction isActivity(element) {\n return element && /^domainStory:activity/.test(element.type);\n}\n\nfunction isConnection(element) {\n return element && /^domainStory:connection/.test(element.type);\n}\n\nfunction isAnnotation(element) {\n return element && /^domainStory:textAnnotation/.test(element.type);\n}\n\n/**\n * can source and target be connected?\n */\nfunction canConnect(source, target) {\n // only judge about two custom elements\n if (\n isDomainStoryGroup(target) ||\n !isDomainStory(source) ||\n !isDomainStory(target)\n ) {\n return;\n }\n\n // do not allow a connection from one element to itself\n if (source === target) {\n return;\n }\n\n // do not allow a connection between two actors\n if (isActor(source) && isActor(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an activity\n if (isActivity(source) || isActivity(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an annotation connection\n if (isConnection(source) || isConnection(target)) {\n return;\n }\n\n // do not allow a connection to a connection(the special type of connection between an element and a comment box)\n // when the target is an annotation, the connection type is an annotation connection instead of an activity\n if (isAnnotation(target)) {\n return { type: elementTypes.CONNECTION };\n }\n\n return { type: elementTypes.ACTIVITY };\n}\n\nfunction canResize(shape, newBounds) {\n if (is(shape, elementTypes.GROUP)) {\n if (newBounds) {\n let lowerLeft = { x: shape.x, y: shape.y + shape.height };\n let lowerRight = { x: shape.x + shape.width, y: shape.y + shape.height };\n let upperRight = { x: shape.x + shape.width, y: shape.y };\n\n if (newBounds.x !== shape.x && newBounds.y !== shape.y) {\n // upper left\n if (newBounds.x > lowerRight.x - MIN_SIZE) {\n assign(newBounds, { x: lowerRight.x - MIN_SIZE });\n }\n if (newBounds.y > lowerRight.y - MIN_SIZE) {\n assign(newBounds, { y: lowerRight.y - MIN_SIZE });\n }\n }\n\n if (newBounds.x !== shape.x && newBounds.y === shape.y) {\n // lower left\n if (newBounds.x > upperRight.x - MIN_SIZE) {\n assign(newBounds, { x: upperRight.x - MIN_SIZE });\n }\n }\n\n if (newBounds.x === shape.x && newBounds.y !== shape.y) {\n // upper right\n if (newBounds.y > lowerLeft.y - MIN_SIZE) {\n assign(newBounds, { y: lowerLeft.y - MIN_SIZE });\n }\n }\n\n if (newBounds.height < MIN_SIZE) {\n assign(newBounds, {\n height: MIN_SIZE,\n });\n }\n if (newBounds.width < MIN_SIZE) {\n assign(newBounds, {\n width: MIN_SIZE,\n });\n }\n }\n return true;\n }\n\n return false;\n}\n\nfunction canAttach(elements, target, source) {\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n // disallow appending as boundary event\n if (source) {\n return false;\n }\n\n // only (re-)attach one element at a time\n if (elements.length !== 1) {\n return false;\n }\n\n // allow default move operation\n if (!target) {\n return true;\n }\n\n // only allow drop on DomainStory Elements\n if (!isDomainStory(target)) {\n return false;\n }\n\n return \"attach\";\n}\n\nfunction canConnectToAnnotation(source, target, connection) {\n // do not allow an activity connect to an annotation\n if (isActivity(connection) && isAnnotation(target)) {\n return false;\n }\n\n // do not allow an annotation connection between two annotations\n if (\n isConnection(connection) &&\n isAnnotation(source) &&\n isAnnotation(target)\n ) {\n return false;\n }\n\n // do not allow an annotation connection between an actor or workObject and anything except an annotation\n return !(\n isConnection(connection) &&\n !isAnnotation(target) &&\n (isActor(source) || isWorkObject(source))\n );\n}\n\n/**\n * specific rules for custom elements\n */\nexport default function DomainStoryRules(eventBus) {\n RuleProvider.call(this, eventBus);\n}\n\ninherits(DomainStoryRules, RuleProvider);\n\nDomainStoryRules.$inject = [\"eventBus\"];\n\nDomainStoryRules.prototype.init = function () {\n /**\n * can shape be created on target container?\n */\n function canCreate(shape, target) {\n // only judge about custom elements\n if (!isDomainStory(shape)) {\n return;\n }\n\n // allow creation just on groups\n return !isDomainStory(target) || isDomainStoryGroup(target);\n }\n\n this.addRule(\"elements.create\", function (context) {\n const elements = context.elements,\n position = context.position,\n target = context.target;\n\n return every(elements, function (element) {\n if (isConnection(element)) {\n return canConnect(element.source, element.target, element);\n }\n\n if (element.host) {\n return canAttach(element, element.host, null, position);\n }\n\n return canCreate(element, target, null, position);\n });\n });\n\n this.addRule(\"elements.move\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shapes = context.shapes;\n\n let type;\n\n // do not allow mixed movements of custom / BPMN shapes\n // if any shape cannot be moved, the group cannot be moved, too\n\n // reject, if we have at least one\n // custom element that cannot be moved\n return reduce(\n shapes,\n function (result, s) {\n if (type === undefined) {\n type = isDomainStory(s);\n }\n\n if (type !== isDomainStory(s) || result === false) {\n return false;\n }\n\n return canCreate(s, target);\n },\n undefined\n );\n });\n\n this.addRule(\"shape.create\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shape = context.shape;\n\n return canCreate(shape, target);\n });\n\n this.addRule(\"connection.create\", HIGH_PRIORITY, function (context) {\n let source = context.source,\n target = context.target;\n\n return canConnect(source, target);\n });\n\n this.addRule(\"connection.reconnect\", HIGH_PRIORITY, function (context) {\n let connection = context.connection,\n source = context.hover || context.source,\n target = context.target;\n\n // --------------------------------------------------------------\n let result = canConnectToAnnotation(source, target, connection);\n\n if (!result) {\n return;\n }\n\n // --------------------------------------------------------------\n\n return canConnect(source, target, connection);\n });\n\n this.addRule(\"shape.resize\", function (context) {\n let shape = context.shape,\n newBounds = context.newBounds;\n\n return canResize(shape, newBounds);\n });\n};\n\nDomainStoryRules.prototype.canConnect = canConnect;\nDomainStoryRules.prototype.canAttach = canAttach;\nDomainStoryRules.prototype.isDomainStory = isDomainStory;\nDomainStoryRules.prototype.canResize = canResize;\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport { pick, assign } from \"min-dash\";\n\nimport CommandInterceptor from \"diagram-js/lib/command/CommandInterceptor\";\n\nimport {\n add as collectionAdd,\n remove as collectionRemove,\n} from \"diagram-js/lib/util/Collections\";\n\nimport { reworkGroupElements } from \"./util\";\nimport { elementTypes } from \"../../Domain/Common/elementTypes\";\n\n/**\n * a handler responsible for updating the custom element's businessObject\n * once changes on the diagram happen.\n */\nexport default function DomainStoryUpdater(eventBus, bpmnjs) {\n CommandInterceptor.call(this, eventBus);\n\n function updateCustomElement(e) {\n let context = e.context,\n shape = context.shape,\n businessObject = shape.businessObject;\n\n if (!shape || !shape.type.includes(elementTypes.DOMAINSTORY)) {\n return;\n }\n\n let parent = shape.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // save custom element position\n assign(businessObject, pick(shape, [\"x\", \"y\"]));\n\n // save custom element size if resizable\n if (shape.type === elementTypes.GROUP) {\n assign(businessObject, pick(shape, [\"height\", \"width\"]));\n\n // rework the child-parent relations if a group was moved, such that all Objects that are visually in the group are also associated with it\n // since we do not have access to the standard-canvas object here, we cannot use the function correctGroupChildren() from DSLabelUtil\n if (parent != null) {\n reworkGroupElements(parent, shape);\n }\n }\n if (\n shape &&\n shape.parent &&\n \"type\" in shape.parent &&\n shape.parent.type === elementTypes.GROUP\n ) {\n assign(businessObject, {\n parent: shape.parent.id,\n });\n }\n }\n\n function updateCustomConnection(e) {\n let context = e.context,\n connection = context.connection,\n source = connection.source,\n target = connection.target,\n businessObject = connection.businessObject;\n\n if (e.newTarget) {\n target = e.newTarget;\n }\n if (e.newSource) {\n source = e.newSource;\n }\n\n let parent = connection.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // update waypoints\n assign(businessObject, {\n waypoints: copyWaypoints(connection),\n });\n\n if (source) {\n if (!businessObject.source) {\n assign(businessObject, { source: source.id });\n } else {\n businessObject.source = source.id;\n }\n }\n if (target) {\n if (!businessObject.target) {\n assign(businessObject, { target: target.id });\n } else {\n businessObject.target = target.id;\n }\n }\n }\n\n function copyWaypoints(connection) {\n return connection.waypoints.map(function (p) {\n if (p.original) {\n return {\n original: {\n x: p.original.x,\n y: p.original.y,\n },\n x: p.x,\n y: p.y,\n };\n } else {\n return {\n x: p.x,\n y: p.y,\n };\n }\n });\n }\n\n this.executed(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement)\n );\n\n this.reverted(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement)\n );\n\n this.executed(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection)\n );\n\n this.reverted(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection)\n );\n}\n\n// check if element in the context of an event is a domainStory element\nfunction ifDomainStoryElement(fn) {\n return (event) => {\n const context = event.context;\n const element = context.shape || context.connection;\n\n if (isDomainStory(element)) {\n fn(event);\n }\n };\n}\n\nfunction isDomainStory(element) {\n return element && /domainStory:/.test(element.type);\n}\n\ninherits(DomainStoryUpdater, CommandInterceptor);\n\nDomainStoryUpdater.$inject = [\"eventBus\", \"bpmnjs\"];\n","\"use strict\";\n\nimport DomainStoryElementFactory from \"./domainStoryElementFactory\";\nimport DomainStoryRenderer from \"./domainStoryRenderer\";\nimport DomainStoryPalette from \"./palette/domainStoryPalette\";\nimport DomainStoryRules from \"./domainStoryRules\";\nimport DomainStoryUpdater from \"./domainStoryUpdater\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"./updateHandler/updateLabelHandler\";\nimport headlineAndDescriptionUpdateHandler from \"./updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryContextPadProvider from \"./context-pad/domainStoryContextPadProvider\";\nimport ReplaceMenuProvider from \"./change-icon/replaceMenuProvider\";\nimport DSModeling from \"./modeling/dSModeling\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n remove as svgRemove,\n} from \"tiny-svg\";\n\nimport { translate } from \"diagram-js/lib/util/SvgTransformUtil\";\nimport { elementTypes } from \"../../../Domain/Common/elementTypes\";\nimport { is } from \"../util\";\n\nconst MARKER_HIDDEN = \"djs-element-hidden\",\n MARKER_LABEL_HIDDEN = \"djs-label-hidden\";\n\nlet annotationBoxHeight = 0;\n\nexport function getAnnotationBoxHeight() {\n return annotationBoxHeight;\n}\n\nexport default function DSLabelEditingPreview(eventBus, canvas, pathMap) {\n let self = this;\n\n let defaultLayer = canvas.getDefaultLayer();\n let element, absoluteElementBBox, gfx;\n\n eventBus.on(\"directEditing.activate\", function (context) {\n let activeProvider = context.active;\n\n element = activeProvider.element.label || activeProvider.element;\n\n // text annotation\n if (is(element, elementTypes.TEXTANNOTATION)) {\n absoluteElementBBox = canvas.getAbsoluteBBox(element);\n\n gfx = svgCreate(\"g\");\n\n annotationBoxHeight = element.height;\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n let path = (self.path = svgCreate(\"path\"));\n\n svgAttr(path, {\n d: textPathData,\n strokeWidth: 2,\n stroke: getStrokeColor(element),\n });\n\n svgAppend(gfx, path);\n\n svgAppend(defaultLayer, gfx);\n\n translate(gfx, element.x, element.y);\n }\n\n if (is(element, elementTypes.TEXTANNOTATION) || element.labelTarget) {\n canvas.addMarker(element, MARKER_HIDDEN);\n } else if (\n element.type.includes(elementTypes.ACTOR) ||\n element.type.includes(elementTypes.WORKOBJECT) ||\n element.type.includes(elementTypes.ACTIVITY) ||\n element.type.includes(elementTypes.GROUP)\n ) {\n canvas.addMarker(element, MARKER_LABEL_HIDDEN);\n }\n });\n\n eventBus.on(\"directEditing.resize\", function (context) {\n // text annotation\n if (is(element, elementTypes.TEXTANNOTATION)) {\n let height = context.height,\n dy = context.dy;\n\n let newElementHeight = Math.max(\n (element.height / absoluteElementBBox.height) * (height + dy),\n 0\n );\n annotationBoxHeight = newElementHeight;\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: newElementHeight,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n svgAttr(self.path, {\n d: textPathData,\n });\n }\n });\n\n eventBus.on(\n [\"directEditing.complete\", \"directEditing.cancel\"],\n function (context) {\n let activeProvider = context.active;\n\n if (activeProvider) {\n canvas.removeMarker(\n activeProvider.element.label || activeProvider.element,\n MARKER_HIDDEN\n );\n canvas.removeMarker(element, MARKER_LABEL_HIDDEN);\n }\n\n element = undefined;\n absoluteElementBBox = undefined;\n\n if (gfx) {\n svgRemove(gfx);\n\n gfx = undefined;\n }\n }\n );\n}\n\nDSLabelEditingPreview.$inject = [\"eventBus\", \"canvas\", \"pathMap\"];\n\n// helpers ///////////////////\n\nfunction getStrokeColor() {\n return \"black\";\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport { autocomplete, getLabel } from \"./dsLabelUtil\";\n\nimport { isAny } from \"bpmn-js/lib/features/modeling/util/ModelingUtil\";\n\nimport {\n getExternalLabelMid,\n hasExternalLabel,\n isLabel,\n isLabelExternal,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { elementTypes } from \"../../../Domain/Common/elementTypes\";\nimport { is } from \"../util\";\n\nlet dictionaryService;\n\nlet numberStash = 0;\nlet stashUse = false;\n\nexport function initializeLabelEditingProvider(labelingDictionary) {\n dictionaryService = labelingDictionary;\n}\n\nexport function getNumberStash() {\n let number = { use: stashUse, number: numberStash };\n stashUse = false;\n return number;\n}\n\nexport function toggleStashUse(use) {\n stashUse = use;\n}\n\nexport function focusElement(element) {\n // Opening a Angular Dialog seems to mess with the focus logic somehow.\n // My guess is that is makes the mousedown event passive, which prevents \"preventDefault\" from intercepting.\n // I am not sure how to fix it, but this seems to be a workaround.\n setTimeout(() => element.focus(), 0);\n}\n\nexport default function DSLabelEditingProvider(\n eventBus,\n canvas,\n directEditing,\n modeling,\n resizeHandles,\n textRenderer,\n updateLabelHandler\n) {\n this._canvas = canvas;\n this._modeling = modeling;\n this._textRenderer = textRenderer;\n this._updateLabelHandler = updateLabelHandler;\n\n directEditing.registerProvider(this);\n\n // listen to dblclick on non-root elements\n eventBus.on(\"element.dblclick\", function (event) {\n activateDirectEdit(event.element, true);\n if (is(event.element, elementTypes.ACTIVITY)) {\n // if we edit an activity, we do not want the standard editing box\n numberStash = event.element.businessObject.number;\n stashUse = true;\n directEditing.complete();\n }\n });\n\n // complete on followup canvas operation\n eventBus.on(\n [\n \"element.mousedown\",\n \"drag.init\",\n \"canvas.viewbox.changing\",\n \"autoPlace\",\n \"popupMenu.open\",\n ],\n function () {\n if (directEditing.isActive()) {\n directEditing.complete();\n }\n }\n );\n\n // cancel on command stack changes\n eventBus.on([\"commandStack.changed\"], function () {\n if (directEditing.isActive()) {\n directEditing.cancel();\n }\n });\n\n eventBus.on(\"directEditing.activate\", function (event) {\n resizeHandles.removeResizers();\n let element = event.active.element;\n createAutocomplete(element);\n });\n\n eventBus.on(\"create.end\", 500, function (event) {\n let element = event.shape,\n canExecute = event.context.canExecute,\n isTouch = event.isTouch;\n\n if (isTouch) {\n return;\n }\n\n if (!canExecute) {\n return;\n }\n if (!is(element, elementTypes.ACTIVITY)) {\n activateDirectEdit(element);\n }\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\"\n );\n focusElement(editingBox.item(0));\n });\n\n eventBus.on(\"autoPlace.end\", 500, function (event) {\n activateDirectEdit(event.shape);\n });\n\n function activateDirectEdit(element, force) {\n if (\n force ||\n isAny(element, [elementTypes.TEXTANNOTATION]) ||\n element.businessObject.type.includes(elementTypes.DOMAINSTORY)\n ) {\n directEditing.activate(element);\n }\n }\n\n function createAutocomplete(element) {\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\"\n );\n focusElement(editingBox.item(0));\n autocomplete(\n editingBox[0],\n dictionaryService.getUniqueWorkObjectNames(),\n element,\n eventBus\n );\n }\n}\n\nDSLabelEditingProvider.$inject = [\n \"eventBus\",\n \"canvas\",\n \"directEditing\",\n \"modeling\",\n \"resizeHandles\",\n \"textRenderer\",\n \"updateLabelHandler\",\n];\n\n/**\n * activate direct editing for activities and text annotations.\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object with properties bounds (position and size), text and options\n */\nDSLabelEditingProvider.prototype.activate = function (element) {\n // text\n if (element.id === \"__implicitrootbase\") {\n return;\n }\n let text = getLabel(element);\n\n if (text === undefined) {\n return;\n }\n\n let context = {\n text: text,\n };\n\n // bounds\n let bounds = this.getEditingBBox(element);\n\n assign(context, bounds);\n\n let options = {};\n\n // external labels\n if (isLabelExternal(element)) {\n assign(options, {\n autoResize: true,\n });\n }\n\n // text annotations\n if (is(element, elementTypes.TEXTANNOTATION)) {\n assign(options, {\n resizable: true,\n autoResize: true,\n });\n }\n\n assign(context, {\n options: options,\n });\n\n return context;\n};\n\n/**\n * get the editing bounding box based on the element's size and position\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object containing information about position\n * and size (fixed or minimum and/or maximum)\n */\nDSLabelEditingProvider.prototype.getEditingBBox = function (element) {\n let canvas = this._canvas;\n\n let target = element.label || element;\n\n let bbox = canvas.getAbsoluteBBox(target);\n\n let mid = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2,\n };\n\n // default position\n let bounds = { x: bbox.x, y: bbox.y };\n\n /** The cavnas is an Object from BPMN, the IDE might say, that zoom is deprecated,\n * because it thinks canvas is the standard HTMLElement. -> Needs to stay toom **/\n let zoom = canvas.zoom();\n let defaultStyle = this._textRenderer.getDefaultStyle(),\n externalStyle = this._textRenderer.getExternalStyle();\n\n // take zoom into account\n let externalFontSize = externalStyle.fontSize * zoom,\n externalLineHeight = externalStyle.lineHeight,\n defaultFontSize = defaultStyle.fontSize * zoom,\n defaultLineHeight = defaultStyle.lineHeight;\n\n let style = {\n fontFamily: this._textRenderer.getDefaultStyle().fontFamily,\n fontWeight: this._textRenderer.getDefaultStyle().fontWeight,\n };\n\n // adjust for groups\n if (is(element, elementTypes.GROUP)) {\n assign(bounds, {\n minWidth: bbox.width / 2.5 > 125 ? bbox.width / 2.5 : 125,\n maxWidth: bbox.width,\n minHeight: 30 * zoom,\n x: bbox.x,\n y: bbox.y,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n textAlign: \"left\",\n });\n }\n\n // internal labels for tasks and collapsed call activities,\n // sub processes and participants\n if (\n /^domainStory:actor\\w*/.test(element.type) ||\n /^domainStory:workObject\\w*/.test(element.type)\n ) {\n assign(bounds, {\n width: bbox.width,\n minHeight: 30,\n y: bbox.y + bbox.height - 20,\n x: bbox.x,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n });\n }\n\n let width = 90 * zoom,\n paddingTop = 7 * zoom,\n paddingBottom = 4 * zoom;\n\n // external labels for events, data elements, gateways and connections\n if (target.labelTarget) {\n assign(bounds, {\n width: width,\n height: bbox.height + paddingTop + paddingBottom,\n x: mid.x - width / 2,\n y: bbox.y - paddingTop,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // external label not yet created\n if (\n isLabelExternal(target) &&\n !hasExternalLabel(target) &&\n !isLabel(target)\n ) {\n let externalLabelMid = getExternalLabelMid(element);\n\n let absoluteBBox = canvas.getAbsoluteBBox({\n x: externalLabelMid.x,\n y: externalLabelMid.y,\n width: 0,\n height: 0,\n });\n\n let height = externalFontSize + paddingTop + paddingBottom;\n\n assign(bounds, {\n width: width,\n height: height,\n x: absoluteBBox.x - width / 2,\n y: absoluteBBox.y - height / 2,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // text annotations\n if (is(element, elementTypes.TEXTANNOTATION)) {\n assign(bounds, {\n width: bbox.width,\n height: bbox.height,\n minWidth: 30 * zoom,\n minHeight: 10 * zoom,\n });\n\n assign(style, {\n textAlign: \"left\",\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n });\n }\n\n return { bounds: bounds, style: style };\n};\n\nDSLabelEditingProvider.prototype.update = function (\n element,\n newLabel,\n activeContextText,\n bounds\n) {\n let newBounds, bbox;\n\n if (is(element, elementTypes.TEXTANNOTATION)) {\n bbox = this._canvas.getAbsoluteBBox(element);\n\n newBounds = {\n x: element.x,\n y: element.y,\n width: (element.width / bbox.width) * bounds.width,\n height: (element.height / bbox.height) * bounds.height,\n };\n }\n\n this._modeling.updateLabel(element, newLabel, newBounds);\n};\n","\"use strict\";\n\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { is } from \"../util\";\n\nfunction getLabelAttr(semantic) {\n if (\n semantic.type.includes(elementTypes.ACTOR) ||\n semantic.type.includes(elementTypes.WORKOBJECT) ||\n semantic.type.includes(elementTypes.ACTIVITY) ||\n semantic.type.includes(elementTypes.GROUP)\n ) {\n return \"name\";\n }\n\n if (is(semantic, elementTypes.TEXTANNOTATION)) {\n return \"text\";\n }\n}\n\nfunction getNumberAttr(semantic) {\n if (is(semantic, elementTypes.ACTIVITY)) {\n return \"number\";\n }\n}\n\nexport function getLabel(element) {\n let semantic;\n if (element.businessObject) {\n semantic = element.businessObject;\n } else {\n semantic = element;\n }\n let attr = getLabelAttr(semantic);\n if (attr && semantic) {\n return semantic[attr] || \"\";\n }\n}\n\nexport function getNumber(element) {\n let semantic = element.businessObject,\n attr = getNumberAttr(semantic);\n\n if (attr) {\n return semantic[attr] || \"\";\n }\n}\n\nexport function setLabel(element, text) {\n let semantic;\n if (element.businessObject) {\n semantic = element.businessObject;\n } else {\n semantic = element;\n }\n let attr = getLabelAttr(semantic);\n\n if (attr) {\n semantic[attr] = text;\n }\n return element;\n}\n\nexport function setNumber(element, textNumber) {\n let semantic = element.businessObject,\n attr = getNumberAttr(semantic);\n\n if (attr) {\n semantic[attr] = textNumber;\n }\n\n return element;\n}\n\n// select at which part of the activity the label should be attached to\nexport function selectPartOfActivity(waypoints, angleActivity) {\n let selectedActivity = 0;\n let linelength = 49;\n\n for (let i = 0; i < waypoints.length; i++) {\n if (angleActivity[i] === 0 || angleActivity[i] === 180) {\n let length = Math.abs(waypoints[i].x - waypoints[i + 1].x);\n if (length > linelength) {\n selectedActivity = i;\n }\n }\n }\n return selectedActivity;\n}\n\n// approximate the width of the label text, standard fontsize: 11\nexport function calculateTextWidth(text) {\n if (!text) {\n return 0;\n }\n\n let fontsize = text.length * 5.1;\n fontsize = fontsize / 2;\n\n // add an initial offset to the absolute middle of the activity\n fontsize += 20;\n return fontsize;\n}\n\n/**\n * copied from https://www.w3schools.com/howto/howto_js_autocomplete.asp on 18.09.2018\n */\nexport function autocomplete(input, workObjectNames, element, eventBus) {\n closeAllLists();\n\n /* the autocomplete function takes three arguments,\n the text field element and an array of possible autocompleted values and an optional element to which it is appended:*/\n let currentFocus, filteredWorkObjectNames;\n\n /* execute a function when someone writes in the text field:*/\n input.addEventListener(\"input\", function () {\n if (workObjectNames.length === 0) {\n return;\n }\n\n /* the direct editing field of actors and workobjects is a recycled html-element and has old values that need to be overridden*/\n if (element.type.includes(elementTypes.WORKOBJECT)) {\n this.value = this.innerHTML;\n }\n let autocompleteList,\n autocompleteItem,\n val = this.value;\n\n /* close any already open lists of autocompleted values*/\n closeAllLists();\n currentFocus = -1;\n\n /* create a DIV element that will contain the items (values):*/\n autocompleteList = document.createElement(\"DIV\");\n autocompleteList.setAttribute(\"id\", \"autocomplete-list\");\n autocompleteList.setAttribute(\"class\", \"autocomplete-items\");\n\n /* append the DIV element as a child of the autocomplete container:*/\n this.parentNode.appendChild(autocompleteList);\n\n /* for each item in the array...*/\n filteredWorkObjectNames = [];\n for (const name of workObjectNames) {\n /* check if the item starts with the same letters as the text field value:*/\n if (val) {\n if (name.substring(0, val.length).toUpperCase() === val.toUpperCase()) {\n /* create a DIV element for each matching element:*/\n autocompleteItem = document.createElement(\"DIV\");\n\n /* make the matching letters bold:*/\n autocompleteItem.innerHTML =\n \"\" +\n name.substring(0, val.length) +\n \"\" +\n name.substring(val.length);\n\n /* insert an input field that will hold the current name:*/\n autocompleteItem.innerHTML +=\n \"\";\n autocompleteList.appendChild(autocompleteItem);\n\n filteredWorkObjectNames.push(name);\n }\n }\n }\n\n // if we edit an actor, we do not want auto-complete, since actors generally are unique\n if (element.type.includes(elementTypes.ACTOR)) {\n autocompleteList.style.visibility = \"hidden\";\n }\n });\n\n /* execute a function presses a key on the keyboard:*/\n input.onkeydown = function (e) {\n let autocompleteList = document.getElementById(\"autocomplete-list\");\n if (autocompleteList) {\n autocompleteList = autocompleteList.getElementsByTagName(\"div\");\n }\n if (e.keyCode === 40) {\n /* If the arrow DOWN key is pressed,\n increase the currentFocus letiable:*/\n currentFocus++;\n\n /* and and make the current item more visible:*/\n addActive(autocompleteList);\n } else if (e.keyCode === 38) {\n // up\n /* If the arrow UP key is pressed,\n decrease the currentFocus letiable:*/\n currentFocus--;\n\n /* and and make the current item more visible:*/\n addActive(autocompleteList);\n } else if (e.keyCode === 13) {\n e.preventDefault();\n /* If the ENTER key is pressed, prevent the form from being submitted,*/\n if (currentFocus > -1) {\n element.businessObject.name = filteredWorkObjectNames[currentFocus];\n eventBus.fire(\"element.changed\", { element });\n }\n }\n };\n\n function addActive(autocompleteList) {\n /* a function to classify an item as \"active\":*/\n if (!autocompleteList || autocompleteList.length < 1) return false;\n\n /* start by removing the \"active\" class on all items:*/\n removeActive(autocompleteList);\n if (currentFocus >= autocompleteList.length) currentFocus = 0;\n if (currentFocus < 0) currentFocus = autocompleteList.length - 1;\n\n /* add class \"autocomplete-active\":*/\n autocompleteList[currentFocus].classList.add(\"autocomplete-active\");\n }\n\n function removeActive(autocompleteList) {\n /* a function to remove the \"active\" class from all autocomplete items:*/\n if (autocompleteList.length > 1) {\n for (const item of autocompleteList) {\n item.classList.remove(\"autocomplete-active\");\n }\n }\n }\n\n function closeAllLists(survivor) {\n /* close all autocomplete lists in the document,\n except the one passed as an argument:*/\n let autocompleteList =\n document.getElementsByClassName(\"autocomplete-items\");\n for (const item of autocompleteList) {\n if (survivor != item && survivor != input) {\n item.parentNode.removeChild(item);\n }\n }\n }\n\n /* execute a function when someone clicks in the document:*/\n document.addEventListener(\"click\", function (e) {\n closeAllLists(e.target);\n });\n}\n","\"use strict\";\n\nimport ChangeSupportModule from \"diagram-js/lib/features/change-support\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport DirectEditingModule from \"diagram-js-direct-editing\";\n\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"../updateHandler/updateLabelHandler\";\nimport DSLabelEditingPreview from \"./dsLabelEditingPreview\";\nimport DSLabelEditingProvider from \"./dsLabelEditingProvider\";\nimport DSModeling from \"../modeling/dSModeling\";\n\nexport default {\n __depends__: [ChangeSupportModule, ResizeModule, DirectEditingModule],\n __init__: [\"dSlabelEditingProvider\", \"dSlabelEditingPreview\"],\n dSlabelEditingProvider: [\"type\", DSLabelEditingProvider],\n dSlabelEditingPreview: [\"type\", DSLabelEditingPreview],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n commandStack: [\"type\", CommandStack],\n modeling: [\"type \", DSModeling],\n};\n","\"use strict\";\n\nimport { selectPartOfActivity } from \"./dsLabelUtil\";\nimport { angleBetween } from \"../../../Utils/mathExtensions\";\n\nexport function countLines(str) {\n return str.split(/\\r\\n|\\r|\\n/).length;\n}\n\n// determine the position of the label at the activity\nexport function labelPosition(waypoints, lines = 1) {\n let amountWaypoints = waypoints.length;\n let determinedPosition;\n let xPos;\n let yPos;\n\n if (amountWaypoints > 2) {\n let angleActivity = new Array(amountWaypoints - 1);\n for (let i = 0; i < amountWaypoints - 1; i++) {\n // calculate the angles of the activities\n angleActivity[i] = angleBetween(waypoints[i], waypoints[i + 1]);\n }\n\n let selectedActivity = selectPartOfActivity(waypoints, angleActivity);\n\n xPos = labelPositionX(\n waypoints[selectedActivity],\n waypoints[selectedActivity + 1]\n );\n yPos = labelPositionY(\n waypoints[selectedActivity],\n waypoints[selectedActivity + 1],\n lines\n );\n\n determinedPosition = {\n x: xPos,\n y: yPos,\n selected: selectedActivity,\n };\n\n return determinedPosition;\n } else {\n xPos = labelPositionX(waypoints[0], waypoints[1]);\n yPos = labelPositionY(waypoints[0], waypoints[1], lines);\n\n determinedPosition = {\n x: xPos,\n y: yPos,\n selected: 0,\n };\n\n return determinedPosition;\n }\n}\n\n// calculate the X position of the label\nexport function labelPositionX(startPoint, endPoint) {\n let angle = angleBetween(startPoint, endPoint);\n let offsetX = 0;\n let scaledAngle = 0;\n if (angle === 0 || angle === 180 || angle === 90 || angle === 270) {\n offsetX = 0;\n } else if (angle > 0 && angle < 90) {\n // endpoint in upper right quadrant\n offsetX = 5 - angle / 6;\n } else if (angle > 90 && angle < 180) {\n // endpoint in upper left quadrant\n scaledAngle = angle - 90;\n offsetX = 5 - scaledAngle / 18;\n } else if (angle > 180 && angle < 270) {\n // endpoint in lower left quadrant\n scaledAngle = angle - 180;\n offsetX = scaledAngle / 18;\n } else if (angle > 270) {\n // endpoint in lower right quadrant\n scaledAngle = angle - 270;\n offsetX = 5 - scaledAngle / 6;\n }\n return offsetX + (startPoint.x + endPoint.x) / 2;\n}\n\n// calculate the Y position of the label\nexport function labelPositionY(startPoint, endPoint, lines = 1) {\n let angle = angleBetween(startPoint, endPoint);\n let offsetY = 0;\n let scaledAngle = 0;\n\n if (angle === 0 || angle === 180) {\n offsetY = 15;\n } else if (angle === 90 || angle === 270) {\n offsetY = 0;\n } else if (angle > 0 && angle < 90) {\n // endpoint in upper right quadrant\n offsetY = 15 - angle / 6;\n } else if (angle > 90 && angle < 180) {\n // endpoint in upper left quadrant\n scaledAngle = angle - 90;\n offsetY = (-scaledAngle / 9) * lines;\n } else if (angle > 180 && angle < 270) {\n // endpoint in lower left quadrant\n scaledAngle = angle - 180;\n offsetY = 15 - scaledAngle / 3;\n } else if (angle > 270) {\n // endpoint in lower right quadrant\n scaledAngle = angle - 270;\n offsetY = (-scaledAngle / 9) * lines;\n }\n return offsetY + (startPoint.y + endPoint.y) / 2;\n}\n","\"use strict\";\n\nimport Modeling from \"bpmn-js/lib/features/modeling/Modeling\";\n\nimport { inherits } from \"util\";\n\nexport default function DSModeling(\n eventBus,\n elementFactory,\n commandStack,\n domainStoryRules\n) {\n Modeling.call(this, eventBus, elementFactory, commandStack, domainStoryRules);\n}\n\nModeling.prototype.updateLabel = function (element, newLabel, newBounds) {\n if (\n element.businessObject\n ? newLabel !== element.businessObject.name\n : newLabel !== element.name\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.updateNumber = function (element, newNumber, newBounds) {\n if (\n element.businessObject\n ? newNumber !== element.businessObject.number\n : newNumber !== element.number\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.replaceShape = function (oldShape, newShape, hints) {\n let context = {\n oldShape: oldShape,\n newData: newShape,\n hints: hints || {},\n };\n\n this._commandStack.execute(\"shape.replace\", context);\n return context.newShape;\n};\n\nModeling.prototype.removeGroup = function (element) {\n this._commandStack.execute(\"shape.removeGroupWithoutChildren\", {\n element: element,\n });\n this.removeElements({ element });\n};\n\ninherits(DSModeling, Modeling);\n\nDSModeling.$inject = [\n \"eventBus\",\n \"elementFactory\",\n \"commandStack\",\n \"domainStoryRules\",\n];\n","\"use strict\";\n\nimport DomainStoryPalette from \"../palette/domainStoryPalette\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"../updateHandler/updateLabelHandler\";\nimport DomainStoryUpdater from \"../domainStoryUpdater\";\nimport DomainStoryElementFactory from \"../domainStoryElementFactory\";\nimport headlineAndDescriptionUpdateHandler from \"../updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryRenderer from \"../domainStoryRenderer\";\nimport DSModeling from \"./dSModeling\";\nimport DomainStoryRules from \"../domainStoryRules\";\nimport ReplaceMenuProvider from \"../change-icon/replaceMenuProvider\";\nimport DomainStoryContextPadProvider from \"../context-pad/domainStoryContextPadProvider\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport { labelPosition } from \"../labeling/position\";\nimport { angleBetween } from \"../../../Utils/mathExtensions\";\n\nlet numberRegistry = [];\nlet multipleNumberRegistry = [false];\n\nlet canvasElementRegistry;\n\nexport function initializeNumbering(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\n// defines the box for activity numbers\nexport function numberBoxDefinitions(element) {\n let alignment = \"center\";\n let boxWidth = 30;\n let boxHeight = 30;\n let position = labelPosition(element.waypoints);\n let angle = 0;\n if (element.waypoints.length > 1) {\n angle = angleBetween(\n element.waypoints[element.waypoints.length - 2],\n element.waypoints[element.waypoints.length - 1]\n );\n }\n let x = position.x;\n let y = position.y;\n\n // TODO: Use trigonometric functions to make the positioning more consistent.\n // This would require to touch the label code as well.\n if (angle >= 0 && angle <= 45) {\n y = y - 30 + angle / 2;\n x = x - 25 - angle / 2;\n } else if (angle <= 90) {\n y = y - 10 + (angle - 45) / 4.5;\n x = x - 35 - angle / 9;\n } else if (angle <= 145) {\n y = y + angle / 7.25;\n x = x - 45 - angle / 14.5;\n } else if (angle < 180) {\n y = y + 20 + angle / 9;\n x = x - 50 + angle / 4.5;\n } else if (angle <= 225) {\n y = y - 45 + angle / 12.25;\n x = x + 10 - angle / 6.125;\n } else if (angle <= 270) {\n y = y - 80 + angle / 3.375;\n x = x - 5 - angle / 6.125;\n } else if (angle <= 315) {\n y = y - 135 + angle / 2;\n x = x - 50;\n } else {\n y = y + 22.5 + (angle - 315) / 6;\n x = x - 50 + (angle - 315) / 1.8;\n }\n\n return {\n textAlign: alignment,\n width: boxWidth,\n height: boxHeight,\n x: x,\n y: y,\n };\n}\n\n// determine the next available number that is not yet used\nexport function generateAutomaticNumber(elementActivity, commandStack) {\n const semantic = elementActivity.businessObject;\n const usedNumbers = [0];\n let wantedNumber = -1;\n\n const activitiesFromActors = canvasElementRegistry.getActivitiesFromActors();\n\n activitiesFromActors.forEach((element) => {\n if (element.businessObject.number) {\n usedNumbers.push(+element.businessObject.number);\n }\n });\n for (let i = 0; i < usedNumbers.length; i++) {\n if (!usedNumbers.includes(i)) {\n if (!usedNumbers.includes(i)) {\n wantedNumber = i;\n i = usedNumbers.length;\n }\n }\n }\n if (wantedNumber === -1) {\n wantedNumber = usedNumbers.length;\n }\n\n updateExistingNumbersAtGeneration(\n activitiesFromActors,\n wantedNumber,\n commandStack\n );\n semantic.number = wantedNumber;\n return wantedNumber;\n}\n\n// update the numbers at the activities when generating a new activity\nexport function updateExistingNumbersAtGeneration(\n activitiesFromActors,\n wantedNumber,\n commandStack\n) {\n activitiesFromActors.forEach((element) => {\n let number = +element.businessObject.number;\n\n if (number >= wantedNumber) {\n wantedNumber++;\n setTimeout(function () {\n commandStack.execute(\"activity.changed\", {\n businessObject: element.businessObject,\n newLabel: element.businessObject.name,\n newNumber: number,\n element: element,\n });\n }, 10);\n }\n });\n}\n\n// update the numbers at the activities when editing an activity\nexport function updateExistingNumbersAtEditing(\n activitiesFromActors,\n wantedNumber,\n eventBus\n) {\n // get a sorted list of all activities that could need changing\n let sortedActivities = [[]];\n activitiesFromActors.forEach((activity) => {\n if (!sortedActivities[activity.businessObject.number]) {\n sortedActivities[activity.businessObject.number] = [];\n }\n sortedActivities[activity.businessObject.number].push(activity);\n });\n\n // set the number of each activity to the next highest number, starting from the number, we overrode\n let currentNumber = wantedNumber;\n for (\n currentNumber;\n currentNumber < sortedActivities.length;\n currentNumber++\n ) {\n if (sortedActivities[currentNumber]) {\n wantedNumber++;\n setNumberOfActivity(\n sortedActivities[currentNumber],\n wantedNumber,\n eventBus\n );\n }\n }\n}\n\n// get the IDs of activities with their associated number, only returns activities that are originating from an actor\nexport function getNumbersAndIDs() {\n let iDWithNumber = [];\n let activities = canvasElementRegistry.getActivitiesFromActors();\n\n for (let i = activities.length - 1; i >= 0; i--) {\n let id = activities[i].businessObject.id;\n let number = activities[i].businessObject.number;\n iDWithNumber.push({ id: id, number: number });\n }\n return iDWithNumber;\n}\n\nexport function addNumberToRegistry(renderedNumber, number) {\n numberRegistry[number] = renderedNumber;\n}\n\nexport function setNumberIsMultiple(number, multi) {\n multipleNumberRegistry[number] = multi;\n}\n\n/**\n * @returns copy of registry\n */\nexport function getNumberRegistry() {\n return numberRegistry.slice(0);\n}\n\nexport function getMultipleNumberRegistry() {\n return multipleNumberRegistry.slice(0);\n}\n\nfunction setNumberOfActivity(elementArray, wantedNumber, eventBus) {\n if (elementArray) {\n elementArray.forEach((element) => {\n if (element) {\n let businessObject = element.businessObject;\n if (businessObject) {\n businessObject.number = wantedNumber;\n }\n eventBus.fire(\"element.changed\", { element });\n }\n });\n }\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\nimport { overrideAppendedIcons } from \"src/app/Domain/Domain-Configuration/allIcons\";\nimport { Dictionary } from \"src/app/Domain/Common/dictionary/dictionary\";\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { APPENDED_ICONS_TAG } from \"../../../Domain/Common/constants\";\n\n/**\n * A palette that allows you to create BPMN _and_ custom elements.\n */\n\nlet iconDictionary;\nlet configuration;\n\nexport function initializePalette(iconDictionaryService, configurationService) {\n iconDictionary = iconDictionaryService;\n configuration = configurationService;\n}\n\nexport default function PaletteProvider(\n palette,\n create,\n elementFactory,\n spaceTool,\n lassoTool\n) {\n this._create = create;\n this._elementFactory = elementFactory;\n this._spaceTool = spaceTool;\n this._lassoTool = lassoTool;\n\n palette.registerProvider(this);\n}\n\nPaletteProvider.$inject = [\n \"palette\",\n \"create\",\n \"elementFactory\",\n \"spaceTool\",\n \"lassoTool\",\n \"modeling\",\n];\n\nPaletteProvider.prototype.getPaletteEntries = function () {\n let actions = {},\n create = this._create,\n elementFactory = this._elementFactory,\n spaceTool = this._spaceTool,\n lassoTool = this._lassoTool;\n\n function createAction(type, group, className, title, options) {\n function createListener(event) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n\n assign(shape.businessObject, {\n id: shape.id,\n });\n\n if (options) {\n shape.businessObject.di.isExpanded = options.isExpanded;\n }\n\n create.start(event, shape);\n }\n\n let shortType = type.replace(/^domainStory:/, \"\");\n\n return {\n group: group,\n className: className,\n title: \"Create \" + title || \"Create \" + shortType,\n action: {\n dragstart: createListener,\n click: createListener,\n },\n };\n }\n\n return initPalette(actions, spaceTool, lassoTool, createAction);\n};\n\nfunction appendCSSStyleCheat(customIcons) {\n const sheetEl = document.createElement(\"style\");\n document.head.appendChild(sheetEl);\n\n let customIconDict = new Dictionary();\n\n customIconDict.appendDict(customIcons);\n let customIconDictKeys = customIconDict.keysArray();\n\n customIconDictKeys.forEach((name) => {\n if (iconDictionary.getAppendedIconDictionary().has(name)) {\n let src = customIconDict.get(name);\n\n const iconStyle =\n \".icon-domain-story-\" +\n name.toLowerCase() +\n \"::before{\" +\n \" display: block;\" +\n ' content: url(\"data:image/svg+xml;utf8,' +\n wrapSRCInSVG(src) +\n '\");' +\n \" margin: 3px;}\";\n sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n }\n });\n}\n\nfunction initPalette(actions, spaceTool, lassoTool, createAction) {\n let config = iconDictionary?.getCurrentIconConfigurationForBPMN();\n\n let customIcons = localStorage.getItem(APPENDED_ICONS_TAG);\n\n if (customIcons) {\n customIcons = JSON.parse(customIcons);\n if (customIconsLegacy(customIcons)) {\n customIcons = convertLegacyAppendedIconsToDict(customIcons);\n }\n if (customIcons.entries && customIcons.entries.forEach) {\n const customIconsDict = new Dictionary();\n customIcons.entries.forEach((entry) => {\n customIconsDict.putEntry(entry);\n });\n overrideAppendedIcons(customIconsDict);\n appendCSSStyleCheat(customIcons);\n }\n }\n\n iconDictionary?.initTypeDictionaries(config.actors, config.workObjects);\n\n let actorTypes = iconDictionary?.getTypeDictionary(elementTypes.ACTOR);\n\n actorTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n elementTypes.ACTOR\n );\n });\n\n assign(actions, {\n \"actor-separator\": {\n group: \"actor\",\n separator: true,\n },\n });\n\n let workObjectTypes = iconDictionary?.getTypeDictionary(\n elementTypes.WORKOBJECT\n );\n\n workObjectTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n elementTypes.WORKOBJECT\n );\n });\n\n assign(actions, {\n \"workObject-separator\": {\n group: \"workObject\",\n separator: true,\n },\n \"domainStory-group\": createAction(\n elementTypes.GROUP,\n \"group\",\n \"icon-domain-story-tool-group\",\n \"group\"\n ),\n \"group-separator\": {\n group: \"group\",\n separator: true,\n },\n \"lasso-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-lasso-tool\",\n title: \"Activate the lasso tool\",\n action: {\n click: function (event) {\n lassoTool.activateSelection(event);\n },\n },\n },\n \"space-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-space-tool\",\n title: \"Activate the create/remove space tool\",\n action: {\n click: function (event) {\n spaceTool.activateSelection(event);\n },\n },\n },\n });\n\n return actions;\n}\n\nfunction addCanvasObjectTypes(\n name,\n createAction,\n actions,\n className,\n elementType\n) {\n let icon = iconDictionary.getIconForBPMN(elementType, name);\n\n let action = [];\n action[\"domainStory-\" + className + name] = createAction(\n `${elementType}${name}`,\n className,\n icon,\n name\n );\n assign(actions, action);\n}\n\nfunction customIconsLegacy(customIcons) {\n return !(\n Object.keys(customIcons).length === 1 &&\n Object.keys(customIcons)[0] === \"entries\"\n );\n}\n\nfunction convertLegacyAppendedIconsToDict(customIcons) {\n let dict = new Dictionary();\n Object.keys(customIcons).forEach((key) => {\n dict.set(key, customIcons[key]);\n });\n return dict;\n}\n\n// For some reason its important to use ' in the content for the Palette and ContextPad\n// Do not change!\nfunction wrapSRCInSVG(src) {\n return (\n \"\" +\n \"\"\n );\n}\n","\"use strict\";\n\nimport { getNumbersAndIDs } from \"../numbering/numbering\";\n\n/**\n * commandStack Handler for changes at activities\n */\n\nlet canvasElementRegistry;\nexport function initializeActivityUpdateHandler(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\nexport default function activityUpdateHandler(commandStack, eventBus) {\n commandStack.registerHandler(\n \"activity.directionChange\",\n activity_directionChange\n );\n commandStack.registerHandler(\"activity.changed\", activity_changed);\n\n // update the activity from the activity-dialog, either with or without number\n // and change other activities too, to keep the numbers consistent\n function activity_changed(modeling) {\n this.preExecute = function (context) {\n context.oldLabel = context.businessObject.name || \" \";\n\n let oldNumbersWithIDs = getNumbersAndIDs();\n modeling.updateLabel(context.businessObject, context.newLabel);\n modeling.updateNumber(context.businessObject, context.newNumber);\n\n context.oldNumber = context.businessObject.number;\n context.oldNumbersWithIDs = oldNumbersWithIDs;\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n\n if (context.newLabel && context.newLabel.length < 1) {\n context.newLabel = \" \";\n }\n\n businessObject.name = context.newLabel;\n businessObject.number = context.newNumber;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n semantic.name = context.oldLabel;\n semantic.number = context.oldNumber;\n\n revertAutomaticNumberGenerationChange(\n context.oldNumbersWithIDs,\n eventBus\n );\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n\n // change the direction of a single activity without affecting other activities\n function activity_directionChange(modeling) {\n this.preExecute = function (context) {\n context.oldNumber = context.businessObject.number;\n context.oldWaypoints = context.element.waypoints;\n context.name = context.businessObject.name;\n\n if (!context.oldNumber) {\n context.oldNumber = 0;\n }\n modeling.updateNumber(context.businessObject, context.newNumber);\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n let newWaypoints = [];\n let waypoints = element.waypoints;\n\n for (let i = waypoints.length - 1; i >= 0; i--) {\n newWaypoints.push(waypoints[i]);\n }\n\n element.source = element.target;\n businessObject.source = businessObject.target;\n element.target = swapSource;\n businessObject.target = swapSource.id;\n\n businessObject.name = context.name;\n businessObject.number = context.newNumber;\n element.waypoints = newWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n\n element.source = element.target;\n semantic.source = semantic.target;\n element.target = swapSource;\n semantic.target = swapSource.id;\n\n semantic.name = context.name;\n\n semantic.number = context.oldNumber;\n element.waypoints = context.oldWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n}\n\n// reverts the automatic changed done by the automatic number-generation at editing\nfunction revertAutomaticNumberGenerationChange(iDWithNumber, eventBus) {\n let activities = canvasElementRegistry?.getActivitesFromActors();\n for (let i = activities.length - 1; i >= 0; i--) {\n for (let j = iDWithNumber.length - 1; j >= 0; j--) {\n if (iDWithNumber[j].id.includes(activities[i].businessObject.id)) {\n let element = activities[i];\n element.businessObject.number = iDWithNumber[j].number;\n j = -5;\n eventBus.fire(\"element.changed\", { element });\n iDWithNumber.splice(j, 1);\n }\n }\n }\n}\n","\"use strict\";\n\nimport { undoGroupRework } from \"../util\";\n\nexport default function elementUpdateHandler(commandStack, eventBus) {\n commandStack.registerHandler(\"element.colorChange\", element_colorChange);\n commandStack.registerHandler(\n \"shape.removeGroupWithoutChildren\",\n removeGroupWithoutChildren\n );\n\n function element_colorChange() {\n this.preExecute = function (context) {\n context.oldColor = context.businessObject.pickedColor;\n };\n\n this.execute = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n\n semantic.pickedColor = context.newColor;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n\n semantic.pickedColor = context.oldColor;\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n\n function removeGroupWithoutChildren() {\n this.preExecute = function (ctx) {\n ctx.parent = ctx.element.parent;\n ctx.children = ctx.element.children.slice();\n };\n\n this.execute = function (ctx) {\n let element = ctx.element;\n ctx.children.forEach((child) => {\n undoGroupRework(element, child);\n eventBus.fire(\"element.changed\", { element: child });\n });\n eventBus.fire(\"shape.remove\", { element });\n };\n\n this.revert = function (ctx) {\n let element = ctx.element;\n eventBus.fire(\"shape.added\", { element });\n\n ctx.element.children.forEach((child) => {\n reworkGroupElements(element, child);\n });\n };\n }\n}\n","/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function headlineAndDescriptionUpdateHandler(\n commandStack,\n titleService\n) {\n commandStack.registerHandler(\n \"story.updateHeadlineAndDescription\",\n handlerFunction\n );\n\n function handlerFunction() {\n this.execute = function (ctx) {\n ctx.oldTitle = titleService.getTitle();\n ctx.oldDescription = titleService.getDescription();\n\n titleService.updateTitleAndDescription(\n ctx.newTitle,\n ctx.newDescription,\n false\n );\n };\n\n this.revert = function (ctx) {\n titleService.updateTitleAndDescription(\n ctx.oldTitle,\n ctx.oldDescription,\n false\n );\n };\n }\n}\n","\"use strict\";\n\nexport default function DSMassRenameHandler(commandStack, eventBus) {\n commandStack.registerHandler(\"domainStoryObjects.massRename\", massRename);\n\n function massRename(modeling) {\n this.preExecute = function (context) {\n let relevantElements = context.elements;\n\n context.oldLabel = relevantElements[0].businessObject.name;\n\n relevantElements.forEach((element) => {\n modeling.updateLabel(element.businessObject, confirm.newValue);\n });\n };\n\n this.execute = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.newValue;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n\n this.revert = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.oldLabel;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n }\n}\n","\"use strict\";\n\nimport {\n setLabel,\n getLabel,\n setNumber,\n getNumber,\n} from \"../labeling/dsLabelUtil\";\n\nimport {\n getExternalLabelMid,\n isLabelExternal,\n hasExternalLabel,\n isLabel,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { elementTypes } from \"src/app/Domain/Common/elementTypes\";\nimport { getBusinessObject, is } from \"../util\";\n\nconst NULL_DIMENSIONS = {\n width: 0,\n height: 0,\n};\n\n/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function UpdateLabelHandler(\n modeling,\n textRenderer,\n commandStack\n) {\n commandStack.registerHandler(\"element.updateCustomLabel\", handlerFunction);\n\n function handlerFunction() {\n /**\n * Set the label and return the changed elements.\n *\n * Element parameter can be label itself or connection (i.e. sequence flow).\n *\n * @param {djs.model.Base} element\n * @param {String} text\n */\n\n this.preExecute = function (ctx) {\n let element = ctx.element,\n businessObject = element.businessObject,\n newLabel = ctx.newLabel,\n newNumber = ctx.newNumber;\n\n if (\n !isLabel(element) &&\n isLabelExternal(element) &&\n !hasExternalLabel(element) &&\n (newLabel !== \"\" || newNumber !== \"\")\n ) {\n // create label\n let paddingTop = 7;\n\n let labelCenter = getExternalLabelMid(element);\n\n labelCenter = {\n x: labelCenter.x,\n y: labelCenter.y + paddingTop,\n };\n\n modeling.createLabel(element, labelCenter, {\n id: businessObject.id + \"_label\",\n businessObject: businessObject,\n });\n }\n };\n\n this.execute = function (ctx) {\n ctx.oldLabel = getLabel(ctx.element);\n ctx.oldNumber = getNumber(ctx.element);\n return setText(ctx.element, ctx.newLabel, ctx.newNumber);\n };\n\n this.revert = function (ctx) {\n return setText(ctx.element, ctx.oldLabel, ctx.oldNumber);\n };\n\n this.postExecute = function (ctx) {\n let element = ctx.element,\n label = element.label || element,\n newLabel = ctx.newLabel,\n newBounds = ctx.newBounds;\n\n if (isLabel(label) && newLabel.trim() === \"\") {\n modeling.removeShape(label);\n\n return;\n }\n\n // ignore internal labels for elements except text annotations\n if (\n !isLabelExternal(element) &&\n !is(element, elementTypes.TEXTANNOTATION)\n ) {\n return;\n }\n\n let bo = getBusinessObject(label);\n\n let text = bo.name || bo.text;\n\n // don't resize without text\n if (!text) {\n return;\n }\n\n // resize element based on label _or_ pre-defined bounds\n if (typeof newBounds === \"undefined\") {\n newBounds = textRenderer.getLayoutedBounds(label, text);\n }\n\n // setting newBounds to false or _null_ will\n // disable the postExecute resize operation\n if (newBounds) {\n modeling.resizeShape(label, newBounds, NULL_DIMENSIONS);\n }\n };\n }\n}\n\nfunction setText(element, text, textNumber) {\n // external label if present\n let label = element.label || element;\n\n let number = element.number || element;\n\n let labelTarget = element.labelTarget || element;\n\n let numberTarget = element.numberTarget || element;\n setLabel(label, text);\n setNumber(number, textNumber);\n\n return [label, labelTarget, number, numberTarget];\n}\n\nUpdateLabelHandler.$inject = [\"modeling\", \"textRenderer\", \"commandStack\"];\n","import { some } from \"min-dash\";\n\nexport function is(element, type) {\n const bo = getBusinessObject(element);\n\n return bo && typeof bo.$instanceOf == \"function\" && bo.$instanceOf(type);\n}\n\nexport function getBusinessObject(element) {\n return (element && element.businessObject) || element;\n}\n\nexport function isAny(element, types) {\n return some(types, function (t) {\n return is(element, t);\n });\n}\n\nexport function reworkGroupElements(parent, shape) {\n parent.children.slice().forEach((innerShape) => {\n if (innerShape.id !== shape.id) {\n if (innerShape.x >= shape.x && innerShape.x <= shape.x + shape.width) {\n if (innerShape.y >= shape.y && innerShape.y <= shape.y + shape.height) {\n innerShape.parent = shape;\n if (!shape.children.includes(innerShape)) {\n shape.children.push(innerShape);\n }\n }\n }\n }\n });\n}\n\nexport function undoGroupRework(parent, shape) {\n const superParent = parent.parent;\n\n parent.children.remove(shape);\n superParent.children.add(shape);\n\n shape.parent = superParent;\n\n const svgShape = document.querySelector(\n \"[data-element-id=\" + shape.id + \"]\"\n ).parentElement;\n const svgGroup = svgShape.parentElement;\n const svgGroupParent = svgGroup.parentElement.parentElement;\n svgGroup.removeChild(svgShape);\n svgGroupParent.appendChild(svgShape);\n}\n","import {\n SVG_LINK,\n TEXTSPAN_DESCRIPTION_HEIGHT,\n TEXTSPAN_TITLE_HEIGHT,\n X_OFFSET_UTIL,\n} from \"../../Domain/Export/exportConstants\";\n\nlet extraHeight = 0;\n\n// Has to be js File so we can access te correct non-standard HTML-Properties without excessive usage of ts-ignore\nexport function createTitleAndDescriptionSVGElement(\n title,\n description,\n xLeft,\n yUp,\n width\n) {\n title = title.replace(\"<\", \"\").replace(\">\", \"\");\n\n let titleElement = createTitle(title, width);\n let descriptionElement = createDescription(description, width);\n\n // to display the title and description in the SVG-file, we need to add a container for our text-elements\n let insertText =\n '' +\n titleElement +\n descriptionElement +\n \"\";\n return { insertText, extraHeight };\n}\n\nfunction createTitle(text, width) {\n let tempCanvas = document.createElement(\"canvas\");\n let ctx = tempCanvas.getContext(\"2d\");\n ctx.font = \"30px Arial\";\n\n return createTextSpans(text, width, ctx, 10, TEXTSPAN_TITLE_HEIGHT, 30);\n}\n\nfunction createDescription(text, width) {\n let description = \"\";\n let descriptionParts = text.split(\"
\");\n\n let tempCanvas = document.createElement(\"canvas\");\n let ctx = tempCanvas.getContext(\"2d\");\n ctx.font = \"12px Arial\";\n\n for (let i = 0; i < descriptionParts.length; i++) {\n description += createTextSpans(\n descriptionParts[i],\n width,\n ctx,\n 0,\n TEXTSPAN_DESCRIPTION_HEIGHT,\n 12\n );\n }\n return description;\n}\n\nfunction createTextSpans(text, width, ctx, yOffset, heightOffset, fontSize) {\n let textSpans = \"\";\n let words = text.split(\" \");\n\n let textTag =\n '';\n\n let textSpan = document.createElementNS(SVG_LINK, \"tspan\");\n let textNode = document.createTextNode(words[0]);\n\n textSpan.setAttribute(\"x\", X_OFFSET_UTIL);\n textSpan.setAttribute(\"y\", yOffset + extraHeight);\n textSpan.setAttribute(\"font-size\", fontSize);\n textSpan.appendChild(textNode);\n\n for (let j = 1; j < words.length; j++) {\n if (textSpan.firstChild && textSpan.firstChild.data) {\n let len = textSpan.firstChild.data.length;\n textNode.data += \" \" + words[j];\n\n if (ctx.measureText(textNode.data).width > width - 16) {\n extraHeight += heightOffset;\n textSpan.firstChild.data = textSpan.firstChild.data.slice(0, len); // remove overflow word\n\n textSpans += textTag + textSpan.outerHTML + \"\"; // append line\n\n // create new textspan for line break\n textSpan = document.createElementNS(SVG_LINK, \"tspan\");\n textNode = document.createTextNode(words[j]);\n textSpan.setAttribute(\"x\", X_OFFSET_UTIL);\n textSpan.setAttribute(\"y\", yOffset + extraHeight);\n textSpan.appendChild(textNode);\n }\n }\n }\n extraHeight += heightOffset;\n\n textSpans += textTag + textSpan.outerHTML + \"\";\n return textSpans;\n}\n","import { elementTypes } from './elementTypes';\n\nexport interface BusinessObject {\n $descriptor: any;\n $type: any;\n di: any;\n get: any;\n set: any;\n\n id: string;\n name: string;\n\n type: string;\n\n x: number;\n y: number;\n height: number | undefined;\n width: number | undefined;\n pickedColor: string | undefined;\n}\n\nexport const testBusinessObject: BusinessObject = {\n $descriptor: undefined,\n $type: undefined,\n di: undefined,\n get: undefined,\n set: undefined,\n\n id: 'test',\n name: 'test',\n\n type: elementTypes.WORKOBJECT,\n\n x: 0,\n y: 0,\n height: 38,\n width: 38,\n pickedColor: undefined,\n};\n","export class Configuration {\n actors: string[];\n workObjects: string[];\n\n constructor(actors: string[], workObjects: string[]) {\n this.actors = actors;\n this.workObjects = workObjects;\n }\n}\n","/** DEFAULT VALUES **/\nexport const INITIAL_TITLE = '< title >';\nexport const INITIAL_DESCRIPTION = '';\nexport const INITIAL_DOMAIN_NAME = 'default';\n\n/** LocalStorageTags **/\nexport const APPENDED_ICONS_TAG = 'appendedIcons';\nexport const DOMAIN_CONFIGURATION_TAG = 'domainConfigurationTag';\n\n/** AUTOSAVE DEFAULTS **/\nexport const DEFAULT_AUTOSAVES_ENABLED = true;\nexport const DEFAULT_AUTOSAVES_MAX_DRAFTS = 5;\nexport const DEFAULT_AUTOSAVES_INTERVAL = 30;\n\n/** SNACKBAR **/\nexport const SNACKBAR_DURATION = 2000;\nexport const SNACKBAR_SUCCESS = 'snackbar_success';\nexport const SNACKBAR_ERROR = 'snackbar_error';\nexport const SNACKBAR_INFO = 'snackbar_info';\n\n/** BPMN_RELEVANT_CONSTANTS **/\nexport const IMPLICIT_ROOT_ID = '__implicitroot';\n","export class Dictionary {\n private entries: Entry[];\n\n constructor() {\n this.entries = [];\n }\n\n get length(): number {\n return this.entries.length;\n }\n\n all(): Entry[] {\n return this.entries;\n }\n\n size(): number {\n return this.entries.length;\n }\n\n isEmpty(): boolean {\n return this.entries.length <= 0;\n }\n\n has(key: string): boolean {\n return this.entries.some((entry) => entry.key === key);\n }\n\n set(key: string, value: any): void {\n if (!this.has(key)) {\n this.entries.push(new Entry(value, key));\n }\n }\n\n add(value: any, key: string): void {\n this.set(key, value);\n }\n\n putEntry(entry: Entry): void {\n if (!this.has(entry.key)) {\n this.entries.push(new Entry(entry.value, entry.key));\n }\n }\n\n keysArray(): string[] {\n return this.entries.map((entry) => entry.key);\n }\n\n addEach(object: any): void {\n Object.keys(object).forEach((key) => {\n this.set(key, object[key]);\n });\n }\n\n appendDict(dict: Dictionary): void {\n dict.entries.forEach((entry) => this.putEntry(entry));\n }\n\n clear(): void {\n this.entries = [];\n }\n\n delete(key: string): void {\n this.entries = this.entries.filter((entry) => entry.key !== key);\n }\n\n get(key: string): any {\n const found = this.entries.filter((entry) => entry.key === key);\n return found[0] ? found[0].value : null;\n }\n\n sort(fn: (a: Entry, b: Entry) => number) {\n this.entries.sort(fn);\n }\n\n sortByName() {\n this.entries.sort((a: Entry, b: Entry) => {\n if (a.key.includes('_custom') == b.key.includes('_custom')) {\n if (a.key < b.key) return -1;\n else {\n return 1;\n }\n } else {\n if (a.key.includes('_custom')) {\n return -1;\n } else {\n return 1;\n }\n }\n });\n }\n}\n\nexport class Entry {\n value: any;\n key: string;\n\n constructor(value: any, key: string) {\n this.value = value;\n this.key = key;\n }\n}\n","import { INITIAL_DOMAIN_NAME } from './constants';\nimport { testBusinessObject } from './businessObject';\nimport { elementTypes } from './elementTypes';\nimport { Dictionary } from './dictionary/dictionary';\n\nexport interface DomainConfiguration {\n name: string;\n actors: Dictionary;\n workObjects: Dictionary;\n}\n\nexport interface DomainConfigurationForExport {\n name: string;\n actors: any;\n workObjects: any;\n}\n\nexport interface CustomDomainConfiguration {\n name: string;\n actors: string[];\n workObjects: string[];\n}\nconst actor = structuredClone(testBusinessObject);\nactor.type = elementTypes.ACTOR;\n\nexport const testCustomDomainConfiguration: CustomDomainConfiguration = {\n name: INITIAL_DOMAIN_NAME,\n actors: ['Person'],\n workObjects: ['Document'],\n};\n\nexport function fromConfigurationFromFile(configFromFile: {\n name: string;\n actors: { [p: string]: any };\n workObjects: { [p: string]: any };\n}) {\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n Object.keys(configFromFile.actors).forEach((key) => {\n actorsDict.add(configFromFile.actors[key], key);\n });\n Object.keys(configFromFile.workObjects).forEach((key) => {\n workObjectsDict.add(configFromFile.workObjects[key], key);\n });\n\n return {\n name: configFromFile.name,\n actors: actorsDict,\n workObjects: workObjectsDict,\n };\n}\n","export enum elementTypes {\n ACTIVITY = 'domainStory:activity',\n CONNECTION = 'domainStory:connection',\n ACTOR = 'domainStory:actor',\n WORKOBJECT = 'domainStory:workObject',\n GROUP = 'domainStory:group',\n TEXTANNOTATION = 'domainStory:textAnnotation',\n DOMAINSTORY = 'domainStory:',\n}\n","import { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { overrideAppendedIcons } from 'src/app/Domain/Domain-Configuration/allIcons';\nimport { Configuration } from 'src/app/Domain/Common/configuration';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { INITIAL_DOMAIN_NAME } from './constants';\n\nexport class IconConfiguration {\n domainName = INITIAL_DOMAIN_NAME;\n\n private allIconDictionary: Dictionary;\n\n constructor(allIconDictionary: Dictionary) {\n this.allIconDictionary = allIconDictionary;\n }\n\n /**\n * Select the Iconset which you want to use\n */\n getDefaultConf(): Configuration {\n return defaultConf;\n }\n\n updateAllIconRegistry(allIconDictionary: Dictionary): void {\n this.allIconDictionary = allIconDictionary;\n }\n\n appendSRCFile(\n actors: string[],\n actorsDict: Dictionary,\n workObjects: string[],\n workObjectsDict: Dictionary\n ): void {\n const newAppendedIcons: { [key: string]: any } = {};\n\n actors.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = actorsDict.get(name);\n }\n });\n\n workObjects.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = workObjectsDict.get(name);\n }\n });\n const appen = new Dictionary();\n Object.keys(newAppendedIcons).forEach((key) => {\n appen.set(key, newAppendedIcons[key]);\n });\n\n overrideAppendedIcons(appen);\n }\n\n createCustomConf(domainConfiguration: DomainConfiguration): Configuration {\n this.domainName = domainConfiguration.name;\n\n let actors = domainConfiguration.actors;\n let workObjects = domainConfiguration.workObjects;\n\n this.appendSRCFile(\n actors.keysArray(),\n actors,\n workObjects.keysArray(),\n workObjects\n );\n\n return new Configuration(actors.keysArray(), workObjects.keysArray());\n }\n}\n\n/* eslint no-unused-vars: 0*/\n\n/**\n * All Icons as one Set\n * There are more Icons than fit in the palette.\n * This is just for reference\n */\nconst allIconsConf = {\n actors: ['Person', 'Group', 'System', 'Pet'],\n workObjects: [\n 'Place',\n 'Flag',\n 'World',\n 'Water',\n 'Store',\n 'Theater',\n 'Business',\n 'Meeting-room',\n 'Hotel',\n 'Dining',\n 'Courthouse',\n 'Gas-station',\n 'Car',\n 'Bus',\n 'Train',\n 'Truck',\n 'Taxi',\n 'Bike',\n 'Boat',\n 'Motorcycle',\n 'Plane',\n 'Flight-takeoff',\n 'Flight-landing',\n 'Shuttle',\n 'Walking',\n 'Traffic',\n 'Commute',\n 'Document',\n 'Folder',\n 'Call',\n 'Email',\n 'Copyright',\n 'Briefcase',\n 'Attach',\n 'Ruler',\n 'Sum',\n 'Conversation',\n 'Update',\n 'Cellphone',\n 'Speaker-phone',\n 'Signal',\n 'Key',\n 'Pencil',\n 'How-To-Reg',\n 'Settings',\n 'Grid',\n 'Label',\n 'Receipt',\n 'Calendar',\n 'Wrench',\n 'Headset',\n 'Keyboard',\n 'Mouse',\n 'Microphone',\n 'Router',\n 'Scanner',\n 'Printer',\n 'DNS',\n 'Security',\n 'Cloud',\n 'Desktop',\n 'Tablet',\n 'Assessment',\n 'Dashboard',\n 'Pie-chart',\n 'View-List',\n 'Euro',\n 'Dollar',\n 'Info',\n 'Alarm',\n 'Problem',\n 'Circle-Arrows',\n 'Picture-as-PDF',\n 'Credit-Card',\n 'Shopping',\n 'Favorite',\n 'Gavel',\n 'Blind',\n 'Hourglass',\n 'Time',\n 'Search',\n 'Thumb-up',\n 'Thumb-down',\n 'Thumb-up-down',\n 'Couch',\n 'Education',\n 'Watch',\n ],\n};\n\n/**\n * Default Iconset\n */\nexport const defaultConf = {\n actors: ['Person', 'Group', 'System'],\n workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'],\n};\n","import { ActivityCanvasObject } from '../Common/activityCanvasObject';\n\nexport class ActivityDialogData {\n activity: ActivityCanvasObject;\n numberIsAllowedMultipleTimes: boolean;\n showNumberFields: boolean;\n\n saveFN: any;\n\n constructor(\n activity: ActivityCanvasObject,\n numberIsAllowedMultipleTimes: boolean,\n showNumberFields: boolean,\n saveFN: any\n ) {\n this.activity = activity;\n this.numberIsAllowedMultipleTimes = numberIsAllowedMultipleTimes;\n this.showNumberFields = showNumberFields;\n this.saveFN = saveFN;\n }\n}\n","export class ExportDialogData {\n title: string;\n options: ExportOption[];\n\n constructor(title: string, options: ExportOption[]) {\n this.title = title;\n this.options = options;\n }\n}\n\nexport class ExportOption {\n text: string;\n fn: any;\n tooltip: string;\n\n constructor(text: string, tooltip: string, fn: any) {\n this.text = text;\n this.tooltip = tooltip;\n this.fn = fn;\n }\n}\n","export class InfoDialogData {\n title: string;\n infoText: string;\n isInfo: boolean;\n isLink: boolean;\n linkText: string | undefined;\n\n constructor(\n title: string,\n infoText: string,\n isInfo: boolean,\n isLink: boolean = false,\n linkText?: string\n ) {\n this.title = title;\n this.infoText = infoText;\n this.isInfo = isInfo;\n this.isLink = isLink;\n this.linkText = linkText;\n }\n}\n","export const NUMBER_BACKGROUND_COLOR = 'white';\nexport const NUMBER_COLOR = 'black';\nexport const STROKE_WIDTH = '1.5';\n\nexport const HIGHLIGHT_NUMBER_BACKGROUNG_COLOR = '#43acbf';\nexport const HIGHLIGHT_NUMBER_COLOR = 'black';\nexport const HIGHLIGHT_COLOR = 'black';\nexport const HIGHLIGHT_STROKE_WIDTH = '4';\n","import { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\n\nexport let appendedIcons = new Dictionary();\nexport const allIcons = {\n Person:\n '',\n Group:\n '',\n Pet: '',\n Conversation:\n '',\n World:\n '',\n Store:\n '',\n Theater:\n '',\n Business:\n '',\n Water:\n '',\n Hotel:\n '',\n Dining:\n '',\n 'Gas-station':\n '',\n 'Meeting-room':\n '',\n Courthouse:\n '',\n Flag: '',\n Place:\n '',\n Car: '',\n Bus: '',\n Train:\n '',\n Truck:\n '',\n Taxi: '',\n Bike: '',\n Boat: '',\n Motorcycle:\n '',\n Plane:\n '',\n 'Flight-takeoff':\n '',\n 'Flight-landing':\n '',\n Shuttle:\n '',\n Walking:\n '',\n Traffic:\n '',\n Commute:\n '',\n System:\n '',\n Printer:\n '',\n Document:\n '',\n Folder:\n '',\n Call: '',\n Email:\n '',\n Copyright:\n '',\n DNS: '',\n Settings:\n '',\n Cellphone:\n '',\n Update:\n '',\n Briefcase:\n '',\n Microphone:\n '',\n Signal:\n '',\n Key: '',\n Pencil:\n '',\n Sum: '',\n Headset:\n '',\n Keyboard:\n '',\n Mouse:\n '',\n Router:\n '',\n Scanner:\n '',\n Security:\n '',\n Desktop:\n '',\n 'Speaker-phone':\n '',\n Tablet:\n '',\n Label:\n '',\n Receipt:\n '',\n Calendar:\n '',\n Cloud:\n '',\n Assessment:\n '',\n Dashboard:\n '',\n 'Pie-chart':\n '',\n Problem:\n '',\n 'Picture-as-PDF':\n '',\n Grid: '',\n Watch:\n '',\n Euro: '',\n Dollar:\n '',\n Info: '',\n Alarm:\n '',\n Wrench:\n '',\n 'Circle-Arrows':\n '',\n 'Credit-Card':\n '',\n Favorite:\n '',\n Gavel:\n '',\n Blind:\n '',\n Hourglass:\n '',\n Time: '',\n Search:\n '',\n Shopping:\n '',\n 'Thumb-up':\n '',\n 'Thumb-down':\n '',\n 'Thumb-up-down':\n '',\n Couch:\n '',\n Attach:\n '',\n Ruler:\n '',\n Education:\n '',\n 'How-To-Reg':\n '',\n 'View-List':\n '',\n};\n\nexport function getAllStandardIconKeys(): string[] {\n const allIconsDict = new Dictionary();\n\n allIconsDict.addEach(allIcons);\n\n return allIconsDict.keysArray();\n}\n\nexport function overrideAppendedIcons(newIcons: Dictionary): void {\n appendedIcons = newIcons;\n}\n","export enum IconFilterEnum {\n ICON_FILTER_ACTOR = 'ICON_FILTER_ACTOR',\n ICON_FILTER_WORKOBJECT = 'ICON_FILTER_WORKOBJECT',\n ICON_FILTER_UNASSIGNED = 'ICON_FILTER_UNASSIGNED',\n ICON_FILTER_NONE = 'ICON_FILTER_NONE',\n}\n","export class ConfigAndDST {\n domain: any;\n dst: any;\n\n constructor(domain: any, dst: any) {\n this.domain = domain;\n this.dst = dst;\n }\n}\n\nexport const testConfigAndDst: ConfigAndDST = {\n domain: JSON.parse(\n '{\"name\":\"\",' +\n '\"actors\":{\"Person\":\"' +\n '' +\n '\",' +\n '\"Group\":\"' +\n '' +\n '\",' +\n '\"System\":\"' +\n '\"},' +\n '\"workObjects\":{\"Document\":\"' +\n '\",' +\n '\"Folder\":\"' +\n '' +\n '\",' +\n '\"Call\":\"' +\n '\",' +\n '\"Email\":\"' +\n '\",' +\n '\"Conversation\":\"' +\n '\",' +\n '\"Info\":\"' +\n '' +\n '\"}}'\n ),\n dst:\n '[' +\n '{\"type\":\"domainStory:workObjectDocument\",\"name\":\"\",\"id\":\"shape_3792\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":302,\"y\":102},' +\n '{\"type\":\"domainStory:actorPerson\",\"name\":\"\",\"id\":\"shape_4666\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":103,\"y\":93},' +\n '{\"type\":\"domainStory:activity\",\"name\":\"\",\"id\":\"connection_4884\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"number\":1,' +\n '\"waypoints\":[{\"original\":{\"x\":141,\"y\":131},\"x\":186,\"y\":133},{\"original\":{\"x\":340,\"y\":140},\"x\":302,\"y\":138}],' +\n '\"source\":\"shape_4666\",\"target\":\"shape_3792\"}]',\n};\n","export const SVG_LINK = 'http://www.w3.org/2000/svg';\nexport const X_OFFSET_UTIL = '8';\nexport const TEXTSPAN_TITLE_HEIGHT = 30;\nexport const TEXTSPAN_DESCRIPTION_HEIGHT = 15;\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutosaveSettingsComponent } from '../Presentation/Autosave/AutosaveSettings/autosave-settings.component';\nimport { AutosaveOptionsComponent } from '../Presentation/Autosave/AutosaveOptions/autosave-options.component';\nimport { AutosavedDraftsComponent } from '../Presentation/Autosave/AutosavedDrafts/autosaved-drafts.component';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\n\n@NgModule({\n declarations: [\n AutosaveSettingsComponent,\n AutosaveOptionsComponent,\n AutosavedDraftsComponent,\n ],\n exports: [AutosaveSettingsComponent],\n imports: [CommonModule, FormsModule, MaterialModule],\n})\nexport class AutosaveSettingsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderButtonsComponent } from '../Presentation/Header/header-buttons.component';\n\n@NgModule({\n declarations: [HeaderButtonsComponent],\n exports: [HeaderButtonsComponent],\n imports: [CommonModule],\n})\nexport class DomainStoryModelerModuleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomainConfigurationComponent } from 'src/app/Presentation/DomainConfiguration/domain-configuration.component';\nimport { IconListItemComponent } from '../Presentation/DomainConfiguration/icon-list-item/icon-list-item.component';\nimport { DetailsListItemComponent } from '../Presentation/DomainConfiguration/details-list-item/details-list-item.component';\nimport { DomainDetailsComponent } from '../Presentation/DomainConfiguration/domain-details/domain-details.component';\nimport { GeneralSettingsComponent } from '../Presentation/Settings/General/general-settings.component';\nimport { LabelDictionaryComponent } from '../Presentation/LabelDictionary/label-dictionary.component';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../material.module';\nimport { AutosaveSettingsModule } from './autosave-settings.module';\n\n@NgModule({\n declarations: [\n DomainConfigurationComponent,\n GeneralSettingsComponent,\n LabelDictionaryComponent,\n IconListItemComponent,\n DetailsListItemComponent,\n DomainDetailsComponent,\n ],\n exports: [\n GeneralSettingsComponent,\n DomainConfigurationComponent,\n LabelDictionaryComponent,\n ],\n imports: [AutosaveSettingsModule, CommonModule, FormsModule, MaterialModule],\n})\nexport class SettingsModule {}\n","import { Component } from '@angular/core';\nimport { AutosaveConfigurationService } from '../../../Service/Autosave/autosave-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_ERROR,\n SNACKBAR_SUCCESS,\n} from 'src/app/Domain/Common/constants';\n\n@Component({\n selector: 'app-autosave-options',\n templateUrl: './autosave-options.component.html',\n styleUrls: ['./autosave-options.component.scss'],\n})\nexport class AutosaveOptionsComponent {\n constructor(\n protected autosaveConfiguration: AutosaveConfigurationService,\n private snackbar: MatSnackBar\n ) {}\n\n save(activated: boolean, maxDrafts: number, interval: number) {\n if (\n this.autosaveConfiguration.setConfiguration({\n activated,\n maxDrafts,\n interval,\n })\n ) {\n this.snackbar.open('Settings for Autosave saved', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n });\n } else {\n this.snackbar.open(\n 'Unable to save settings for Autosave - please try again',\n undefined,\n {\n duration: 2 * SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\n }\n );\n }\n }\n}\n","\n \n Autosave Options\n \n \n
\n \n Enabled\n
\n
\n Interval [sec]\n \n
\n
\n Max. Drafts\n \n
\n \n Apply\n \n
\n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-autosave-settings',\n templateUrl: './autosave-settings.component.html',\n styleUrls: ['./autosave-settings.component.scss'],\n})\nexport class AutosaveSettingsComponent {}\n","\n\n","import { Component, OnInit } from '@angular/core';\nimport { AutosaveService } from '../../../Service/Autosave/autosave.service';\nimport { Draft } from '../../../Domain/Autosave/draft';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_SUCCESS,\n} from 'src/app/Domain/Common/constants';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-autosaved-drafts',\n templateUrl: './autosaved-drafts.component.html',\n styleUrls: ['./autosaved-drafts.component.scss'],\n})\nexport class AutosavedDraftsComponent implements OnInit {\n drafts: Draft[] = [];\n subscription: Subscription;\n\n constructor(\n private autosaveService: AutosaveService,\n private snackbar: MatSnackBar\n ) {\n this.subscription = this.autosaveService.autosavedDraftsChanged$.subscribe(\n () => this.initDrafts()\n );\n }\n\n ngOnInit(): void {\n this.initDrafts();\n }\n\n initDrafts() {\n this.drafts = this.autosaveService.loadCurrentDrafts();\n }\n\n loadDraft(draft: Draft): void {\n this.autosaveService.loadDraft(draft);\n this.snackbar.open('Draft loaded', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n });\n }\n\n removeAllDrafts() {\n this.autosaveService.removeAllDrafts();\n }\n}\n","\n \n \n History\n \n {{ drafts.length ? drafts.length : \"no\" }}\n {{ drafts.length > 1 ? \"drafts\" : \"draft\" }} available\n \n \n
\n
\n
\n
{{ draft.title }}
\n
{{ draft.date }}
\n
\n \n Load Draft\n \n
\n
\n
\n \n Remove All Drafts\n \n
\n
\n
\n
\n\nNo drafts found.\n","import { Component, OnInit } from '@angular/core';\nimport { ModelerService } from '../../Service/Modeler/modeler.service';\nimport { AutosaveService } from '../../Service/Autosave/autosave.service';\n\n@Component({\n selector: 'app-modeler',\n templateUrl: './modeler.component.html',\n styleUrls: ['./modeler.component.scss'],\n})\nexport class ModelerComponent implements OnInit {\n constructor(\n private modelerService: ModelerService,\n private autosaveService: AutosaveService\n ) {}\n\n ngOnInit(): void {\n this.modelerService.postInit();\n this.autosaveService.loadLatestDraft();\n }\n}\n","
\n","import { AfterViewInit, Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { ActivityDialogData } from 'src/app/Domain/Dialog/activityDialogData';\nimport { ActivityCanvasObject } from '../../../Domain/Common/activityCanvasObject';\n\n@Component({\n selector: 'app-activity-dialog',\n templateUrl: './activity-dialog.component.html',\n styleUrls: ['./activity-dialog.component.scss'],\n})\nexport class ActivityDialogComponent {\n form: UntypedFormGroup;\n activityLabel: string;\n activityNumber: number | undefined;\n numberIsAllowedMultipleTimes: boolean;\n showNumberFields: boolean;\n activity: ActivityCanvasObject;\n\n saveFN: any;\n\n constructor(\n private fb: UntypedFormBuilder,\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: ActivityDialogData\n ) {\n this.activity = data.activity;\n this.activityLabel = data.activity.businessObject.name;\n this.numberIsAllowedMultipleTimes = data.numberIsAllowedMultipleTimes;\n this.activityNumber = data.activity.businessObject.number;\n this.showNumberFields = data.showNumberFields;\n\n this.saveFN = data.saveFN;\n\n this.form = this.fb.group({\n activityLabel: [this.activityLabel, []],\n activityNumber: [this.activityNumber, []],\n multipleNumbers: [this.numberIsAllowedMultipleTimes, []],\n });\n }\n\n onSubmit(): void {\n this.numberIsAllowedMultipleTimes = !this.numberIsAllowedMultipleTimes;\n this.form.patchValue({\n multipleNumbers: this.numberIsAllowedMultipleTimes,\n });\n }\n\n save(): void {\n this.saveFN({\n activity: this.activity,\n ...this.form.value,\n });\n this.dialogRef.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n preventDefault(event: Event) {\n event.preventDefault();\n }\n}\n","\n

Edit Activity

\n
\n
\n \n Number\n \n \n \n multiple\n
\n \n Label\n \n \n
\n
\n\n\n \n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ExportDialogData } from 'src/app/Domain/Dialog/exportDialogData';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n selector: 'app-export-dialog',\n templateUrl: './export-dialog.component.html',\n styleUrls: ['./export-dialog.component.scss'],\n})\nexport class ExportDialogComponent implements OnInit {\n title: string;\n options: {\n text: string;\n tooltip: string;\n fn: any;\n }[];\n withTitle: BehaviorSubject;\n useWhiteBackground: BehaviorSubject;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: ExportDialogData\n ) {\n this.withTitle = new BehaviorSubject(true);\n this.useWhiteBackground = new BehaviorSubject(true);\n this.title = data.title;\n this.options = data.options;\n }\n\n ngOnInit(): void {}\n\n doOption(i: number): void {\n this.options[i].fn(this.withTitle.value, this.useWhiteBackground.value);\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n updateWithTitle($event: Event) {\n // @ts-ignore\n this.withTitle.next($event.target.checked);\n }\n\n updateUseWhiteBackground($event: Event) {\n // @ts-ignore\n this.useWhiteBackground.next($event.target.checked);\n }\n}\n","\n

{{ title }}

\n \n
\n \n
\n\n
\n\n
\n \n \n {{ option.text }}\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { TitleService } from 'src/app/Service/Title/title.service';\n\n@Component({\n selector: 'app-header-dialog',\n templateUrl: './header-dialog.component.html',\n styleUrls: ['./header-dialog.component.scss'],\n})\nexport class HeaderDialogComponent implements OnInit {\n form: UntypedFormGroup;\n title: string;\n description: string;\n\n constructor(\n private fb: UntypedFormBuilder,\n private dialogRef: MatDialogRef,\n private titleService: TitleService\n ) {\n this.title =\n this.titleService.getTitle() === '< name of this Domain Story >'\n ? ''\n : this.titleService.getTitle();\n this.description = this.titleService.getDescription();\n\n this.form = this.fb.group({\n title: [this.title, []],\n description: [this.description, []],\n });\n }\n\n ngOnInit(): void {}\n\n save(): void {\n this.titleService.updateTitleAndDescription(\n this.form.get('title')?.value,\n this.form.get('description')?.value,\n true\n );\n this.dialogRef.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n preventDefault(event: Event) {\n event.preventDefault();\n }\n}\n","\n
\n \n Title\n \n \n
\n \n Description\n \n \n
\n
\n\n\n \n \n\n","import { AfterViewInit, Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { InfoDialogData } from 'src/app/Domain/Dialog/infoDialogData';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './info-dialog.component.html',\n styleUrls: ['./info-dialog.component.scss'],\n})\nexport class InfoDialogComponent implements AfterViewInit {\n title: string;\n infoText: string;\n showConfirmButton: boolean;\n hasLink: boolean;\n linkText: string;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: InfoDialogData\n ) {\n this.title = data.title;\n this.infoText = data.infoText;\n this.showConfirmButton = !data.isInfo;\n this.hasLink = data.isLink;\n this.linkText = data.linkText || '';\n }\n\n ngAfterViewInit() {\n const span = document.getElementsByClassName(\n 'readOnlyText'\n )[0] as HTMLTextAreaElement;\n span.style.height = span.scrollHeight + 'px';\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

{{ title }}

\n {{ infoText }} \n {{ linkText }}\n
\n\n\n \n\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-label-dictionary-dialog',\n templateUrl: './label-dictionary-dialog.component.html',\n styleUrls: ['./label-dictionary-dialog.component.scss'],\n})\nexport class LabelDictionaryDialogComponent {\n constructor(\n private dialogRef: MatDialogRef\n ) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

Label Dictionary

\n \n
\n","import { AfterViewChecked, Component, Input } from '@angular/core';\nimport { IconListItem } from '../../../Domain/Domain-Configuration/iconListItem';\n\n@Component({\n selector: 'app-details-list-item',\n templateUrl: './details-list-item.component.html',\n styleUrls: ['./details-list-item.component.scss'],\n})\nexport class DetailsListItemComponent implements AfterViewChecked {\n @Input()\n icon!: IconListItem;\n\n private iconInitiated = false;\n\n get id(): string {\n return (\n 'domain-configuration-details-icon-' +\n this.icon.name.toLowerCase() +\n '-' +\n (this.icon.isWorkObject ? 'workobject' : 'actor')\n );\n }\n\n get name(): string {\n return this.icon.name;\n }\n\n ngAfterViewChecked(): void {\n this.createIcon();\n }\n\n private createIcon(): void {\n const img = document.getElementById(this.id) as HTMLImageElement;\n if (img && !this.iconInitiated) {\n img.src = '' + this.icon.svg;\n this.iconInitiated = true;\n }\n }\n}\n","
\n \"{{\n {{ icon.name }}\n
\n","import { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport {\n CustomDomainConfiguration,\n fromConfigurationFromFile,\n} from 'src/app/Domain/Common/domainConfiguration';\nimport { DomainConfigurationService } from 'src/app/Service/DomainConfiguration/domain-configuration.service';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { sanitizeIconName } from 'src/app/Utils/sanitizer';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { IconFilterEnum } from '../../Domain/Domain-Configuration/iconFilterEnum';\nimport { DomainCustomizationService } from '../../Service/DomainConfiguration/domain-customization.service';\n\n@Component({\n selector: 'app-domain-configuration',\n templateUrl: './domain-configuration.component.html',\n styleUrls: ['./domain-configuration.component.scss'],\n})\nexport class DomainConfigurationComponent implements OnInit {\n private domainConfigurationTypes: CustomDomainConfiguration;\n\n filter = new BehaviorSubject(IconFilterEnum.ICON_FILTER_NONE);\n\n selectedActors = new BehaviorSubject([]);\n selectedWorkobjects = new BehaviorSubject([]);\n\n allIcons: BehaviorSubject;\n allIconNames = new BehaviorSubject([]);\n allFilteredIconNames = new BehaviorSubject([]);\n\n constructor(\n private configurationService: DomainConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n private domainCustomizationService: DomainCustomizationService,\n private elementRegistryService: ElementRegistryService\n ) {\n this.domainConfigurationTypes =\n this.domainCustomizationService.getDomainConfiguration().value;\n\n this.allIcons = new BehaviorSubject(\n this.iconDictionaryService.getFullDictionary()\n );\n this.allIcons.subscribe((allIcons) => {\n this.allIconNames.next(allIcons.keysArray().sort(this.sortByName));\n });\n\n this.selectedActors = this.domainCustomizationService.selectedActors$;\n this.selectedWorkobjects =\n this.domainCustomizationService.selectedWorkobjects$;\n }\n\n ngOnInit(): void {\n this.filter.subscribe((type) => {\n let allFiltered = this.getFilteredNamesForType(type);\n this.allFilteredIconNames.next(allFiltered.sort(this.sortByName));\n });\n }\n\n private sortByName(a: string, b: string): number {\n if (a.includes('_custom') == b.includes('_custom')) {\n if (a < b) return -1;\n else {\n return 1;\n }\n } else {\n if (a.includes('_custom')) {\n return -1;\n } else {\n return 1;\n }\n }\n }\n\n /** Default Domain **/\n loadMinimalIconConfigurationWithDefaultIcons(): void {\n this.domainCustomizationService.resetDomain();\n }\n\n loadInitialConfiguration(): void {\n this.domainCustomizationService.cancel();\n }\n\n /** Persist Domain **/\n saveDomain(): void {\n this.domainCustomizationService.saveDomain(\n this.elementRegistryService.getUsedIcons()\n );\n }\n\n exportDomain(): void {\n this.domainCustomizationService.exportDomain();\n }\n\n /** Add Custom Icon **/\n startIconUpload(): void {\n document.getElementById('importIcon')?.click();\n }\n\n importIcon(): void {\n // @ts-ignore\n const files = document.getElementById('importIcon').files;\n for (let iconInputFile of files) {\n const reader = new FileReader();\n const name = sanitizeIconName(iconInputFile.name);\n const iconName = name + '_custom';\n\n reader.onloadend = (e: ProgressEvent) => {\n if (e.target) {\n const src: string = e.target.result as unknown as string;\n this.iconDictionaryService.addIMGToIconDictionary(src, iconName);\n // TODO: td: What kind of type is it here?\n this.iconDictionaryService.registerIconForBPMN(\n iconName,\n src,\n elementTypes.ACTOR\n );\n\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n\n this.domainCustomizationService.addNewIcon(iconName);\n }\n };\n reader.readAsDataURL(iconInputFile);\n }\n }\n\n /** Import Domain **/\n startDomainImport(): void {\n document.getElementById('importDomain')?.click();\n }\n\n importDomain(): void {\n // @ts-ignore\n const domainInputFile = document.getElementById('importDomain').files[0];\n const reader = new FileReader();\n\n reader.onloadend = (e: ProgressEvent) => {\n const configFromFile = JSON.parse(\n e.target?.result as unknown as string\n ) as {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n const config = fromConfigurationFromFile(configFromFile);\n this.configurationService.loadConfiguration(config, false);\n\n this.domainCustomizationService.importConfiguration(config);\n };\n\n reader.readAsText(domainInputFile);\n }\n\n /** Filter **/\n filterForActors(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_ACTOR) {\n this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForWorkobjects(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) {\n this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForUnassigned(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) {\n this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterByNameAndType($event: any) {\n const filteredByNameAndType = this.getFilteredNamesForType(\n this.filter.value\n ).filter((name) =>\n name.toLowerCase().includes($event.target.value.toLowerCase())\n );\n this.allFilteredIconNames.next(filteredByNameAndType.sort(this.sortByName));\n }\n\n private getFilteredNamesForType(type: IconFilterEnum): string[] {\n let allFiltered: string[] = [];\n switch (type) {\n case IconFilterEnum.ICON_FILTER_NONE:\n allFiltered = this.allIconNames.value;\n break;\n case IconFilterEnum.ICON_FILTER_ACTOR:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.domainCustomizationService.isIconActor(name)\n );\n break;\n case IconFilterEnum.ICON_FILTER_WORKOBJECT:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.domainCustomizationService.isIconWorkObject(name)\n );\n break;\n case IconFilterEnum.ICON_FILTER_UNASSIGNED:\n allFiltered = this.allIconNames.value.filter(\n (name) =>\n !this.domainCustomizationService.isIconActor(name) &&\n !this.domainCustomizationService.isIconWorkObject(name)\n );\n break;\n }\n return allFiltered;\n }\n}\n","
\n
\n
\n
\n
Filter by assignment:
\n \n None\n \n \n Actors\n \n \n Workobjects\n \n \n
\n
\n \n \n home \n \n \n close\n \n
\n \n
\n \n unarchive\n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n\n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DomainCustomizationService } from 'src/app/Service/DomainConfiguration/domain-customization.service';\nimport { IconListItem } from 'src/app/Domain/Domain-Configuration/iconListItem';\nimport { TitleService } from 'src/app/Service/Title/title.service';\n\n@Component({\n selector: 'app-domain-details',\n templateUrl: './domain-details.component.html',\n styleUrls: ['./domain-details.component.scss'],\n})\nexport class DomainDetailsComponent implements OnInit {\n domainName: Observable;\n\n private draggedList: string = '';\n private draggedIndex = 0;\n\n selectedActors$ = this.customizationService.selectedActors$;\n selectedWorkobjects$ = this.customizationService.selectedWorkobjects$;\n\n constructor(\n private customizationService: DomainCustomizationService,\n titleService: TitleService\n ) {\n this.domainName = titleService.domainName$;\n }\n\n ngOnInit(): void {}\n\n changeName(event: Event): void {\n // @ts-ignore\n this.customizationService.changeName(event.target.value);\n }\n\n getIconForName(iconName: string): IconListItem {\n return this.customizationService.getIconForName(iconName).value;\n }\n\n allowDrop($event: DragEvent, listName: string) {\n if (this.draggedList === listName) {\n $event.preventDefault();\n }\n }\n\n onDrop($event: DragEvent, iconName: string, actors: boolean, index: number) {\n let list;\n if (actors) {\n list = this.selectedActors$;\n } else {\n list = this.selectedWorkobjects$;\n }\n const sortedList = list.value;\n const item = sortedList[this.draggedIndex];\n sortedList.splice(this.draggedIndex, 1);\n sortedList.splice(index, 0, item);\n list.next(sortedList);\n\n if (actors) {\n this.customizationService.setSelectedActors(sortedList);\n } else {\n this.customizationService.setSelectedWorkObject(sortedList);\n }\n }\n\n onDragStart(index: number, draggedList: string) {\n this.draggedList = draggedList;\n this.draggedIndex = index;\n }\n}\n","
\n
\n

Icon Set Name

\n
\n \n \n \n
\n
\n
\n

Order of Actors

\n \n \n \n \n \n
\n
\n

Order of Work Objects

\n \n \n \n \n \n
\n
\n","import { AfterViewChecked, Component, Input, OnInit } from '@angular/core';\nimport { IconListItem } from '../../../Domain/Domain-Configuration/iconListItem';\nimport { BehaviorSubject } from 'rxjs';\nimport { DomainCustomizationService } from '../../../Service/DomainConfiguration/domain-customization.service';\n\n@Component({\n selector: 'app-icon-list-item',\n templateUrl: './icon-list-item.component.html',\n styleUrls: ['./icon-list-item.component.scss'],\n})\nexport class IconListItemComponent implements OnInit, AfterViewChecked {\n @Input()\n iconName: string = '';\n\n private iconInitiated = false;\n\n // @ts-ignore\n icon = new BehaviorSubject({});\n\n isActor: boolean = false;\n isWorkobject: boolean = false;\n isNone: boolean = true;\n\n get name(): string {\n return this.iconName;\n }\n\n get id() {\n return 'domain-configuration-icon-' + this.iconName;\n }\n\n constructor(private domainCustomizationService: DomainCustomizationService) {}\n\n ngOnInit(): void {\n this.icon = this.domainCustomizationService.getIconForName(this.iconName);\n if (!this.icon) {\n return;\n }\n\n this.icon.subscribe((value) => {\n this.isActor = value.isActor;\n this.isWorkobject = value.isWorkObject;\n this.isNone = !(value.isActor || value.isWorkObject);\n });\n this.isActor = this.icon.value.isActor;\n this.isWorkobject = this.icon.value.isWorkObject;\n this.isNone = !(this.icon.value.isActor || this.icon.value.isWorkObject);\n }\n\n ngAfterViewChecked(): void {\n this.createIcon();\n }\n\n private createIcon(): void {\n const img = document.getElementById(this.id) as HTMLImageElement;\n if (img && !this.iconInitiated) {\n img.src = '' + this.icon.value?.svg;\n this.iconInitiated = true;\n }\n }\n\n toggleNone() {\n this.domainCustomizationService.setAsUnassigned(\n this.iconName,\n this.icon.value.isActor\n );\n }\n\n toggleActor(): void {\n this.domainCustomizationService.setAsActor(true, this.iconName);\n }\n\n toggleWorkobject(): void {\n this.domainCustomizationService.setAsWorkobject(true, this.iconName);\n }\n}\n","
\n
\n \"{{\n
{{ name }}
\n
\n
\n \n \n None\n \n \n Actor\n \n \n Workobject\n \n \n
\n
\n","import { Component } from '@angular/core';\nimport { SettingsService } from '../../Service/Settings/settings.service';\nimport { ModelerService } from '../../Service/Modeler/modeler.service';\nimport { Observable } from 'rxjs';\nimport { ReplayStateService } from '../../Service/Replay/replay-state.service';\nimport { DirtyFlagService } from '../../Service/DirtyFlag/dirty-flag.service';\nimport {\n ExportDialogData,\n ExportOption,\n} from '../../Domain/Dialog/exportDialogData';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ExportDialogComponent } from '../Dialog/export-dialog/export-dialog.component';\nimport { InfoDialogData } from '../../Domain/Dialog/infoDialogData';\nimport { InfoDialogComponent } from '../Dialog/info-dialog/info-dialog.component';\nimport { DialogService } from '../../Service/Dialog/dialog.service';\nimport { ReplayService } from '../../Service/Replay/replay.service';\nimport { ExportService } from '../../Service/Export/export.service';\nimport { ImportDomainStoryService } from '../../Service/Import/import-domain-story.service';\nimport { LabelDictionaryDialogComponent } from '../Dialog/label-dictionary-dialog/label-dictionary-dialog.component';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\nimport { TitleService } from '../../Service/Title/title.service';\nimport { RendererService } from '../../Service/Renderer/renderer.service';\n\n@Component({\n selector: 'app-header-buttons',\n templateUrl: './header-buttons.component.html',\n styleUrls: ['./header-buttons.component.scss'],\n})\nexport class HeaderButtonsComponent {\n isReplay$: Observable;\n isDirty$: Observable;\n\n constructor(\n private settingsService: SettingsService,\n private modelerService: ModelerService,\n private replayStateService: ReplayStateService,\n private dirtyFlagService: DirtyFlagService,\n private dialogService: DialogService,\n protected replayService: ReplayService,\n protected exportService: ExportService,\n private importService: ImportDomainStoryService,\n private titleService: TitleService,\n private renderService: RendererService,\n private snackbar: MatSnackBar\n ) {\n this.isReplay$ = this.replayStateService.replayOn$;\n this.isDirty$ = this.dirtyFlagService.dirty$;\n }\n import(): void {\n // @ts-ignore\n const filename = document.getElementById('import').files[0].name;\n if (filename.endsWith('.dst')) {\n this.importService.importDST(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n false\n );\n } else if (filename.endsWith('.dst.svg')) {\n this.importService.importDST(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n true\n );\n } else if (filename.endsWith('.egn')) {\n this.importService.importEGN(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n false\n );\n } else if (filename.endsWith('.egn.svg')) {\n this.importService.importEGN(\n // @ts-ignore\n document.getElementById('import').files[0],\n filename,\n true\n );\n }\n this.modelerService.commandStackChanged();\n }\n\n openSettings(): void {\n this.settingsService.open();\n }\n\n /** Open Dialogs **/\n openDownloadDialog(): void {\n if (this.exportService.isDomainStoryExportable()) {\n const SVGDownloadOption = new ExportOption(\n 'SVG',\n 'Download an SVG-Image with the Domain-Story embedded. Can be used to save and share your Domain-Story.',\n (withTitle: boolean, useWhiteBackground: boolean) =>\n this.exportService.downloadSVG(withTitle, useWhiteBackground)\n );\n const EGNDownloadOption = new ExportOption(\n 'EGN',\n 'Download an EGN-File with the Domain-Story. Can be used to save and share your Domain-Story.',\n () => this.exportService.downloadDST()\n );\n const PNGDownloadOption = new ExportOption(\n 'PNG',\n 'Download a PNG-Image of the Domain-Story. This does not include the Domain-Story!',\n (withTitle: boolean) => this.exportService.downloadPNG(withTitle)\n );\n const HTMLDownloadOption = new ExportOption(\n 'HTML-Presentation',\n 'Download an HTML-Presentation. This does not include the Domain-Story!',\n () => this.exportService.downloadHTMLPresentation()\n );\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = new ExportDialogData('Export', [\n SVGDownloadOption,\n EGNDownloadOption,\n PNGDownloadOption,\n HTMLDownloadOption,\n ]);\n\n this.dialogService.openDialog(ExportDialogComponent, config);\n } else {\n this.snackbar.open('No Domain Story to be exported', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_INFO,\n });\n }\n }\n\n openKeyboardShortcutsDialog(): void {\n const title = 'Keyboard Shortcuts';\n const shortCutText =\n 'Undo:\\t\\t\\t\\t\\tctrl + Z \\n' +\n 'Redo:\\t\\t\\t\\t\\tctrl + Y OR ctrl + shift + Z\\n' +\n 'Select All:\\t\\t\\t\\tctrl + A\\n' +\n 'Export as EGN:\\t\\t\\tctrl + S\\n' +\n 'Import Domain Story: \\t\\tctrl + L\\n' +\n 'Search for text:\\t\\t\\tctrl + F\\n' +\n 'Direct editing:\\t\\t\\tE\\n' +\n 'Hand tool:\\t\\t\\t\\tH\\n' +\n 'Lasso tool:\\t\\t\\t\\tL\\n' +\n 'Space tool:\\t\\t\\t\\tS';\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, shortCutText, true);\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n\n openLabelDictionary(): void {\n if (this.exportService.isDomainStoryExportable()) {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n this.dialogService.openDialog(LabelDictionaryDialogComponent, config);\n } else {\n this.snackbar.open(\n 'There are currently no Elements on the canvas',\n undefined,\n {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n }\n\n createNewDomainStory(): void {\n this.titleService.reset();\n this.renderService.reset();\n this.dirtyFlagService.makeClean();\n }\n\n /** Replay functions **/\n startReplay(): void {\n this.replayService.startReplay();\n }\n\n stopReplay(): void {\n this.replayService.stopReplay();\n }\n\n previousStep(): void {\n this.replayService.previousStep();\n }\n\n nextStep(): void {\n this.replayService.nextStep();\n }\n\n isExportable(): boolean {\n return (\n this.titleService.hasTitleOrDescription() ||\n this.exportService.isDomainStoryExportable()\n );\n }\n}\n","
\n \n play_arrow \n \n \n unarchive \n \n \n \n \n archive\n \n \n archive\n \n \n \n \n spellcheck\n \n \n \n \n keyboard \n \n \n note_add \n \n
\n
\n \n \n \n
\n","import { Component } from '@angular/core';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { TitleService } from '../../Service/Title/title.service';\nimport { ReplayService } from '../../Service/Replay/replay.service';\nimport { ReplayStateService } from '../../Service/Replay/replay-state.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { HeaderDialogComponent } from '../Dialog/header-dialog/header-dialog.component';\nimport { DialogService } from '../../Service/Dialog/dialog.service';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent {\n title$ = this.titleService.title$;\n description$ = this.titleService.description$;\n showDescription$ = this.titleService.showDescription$;\n\n isReplay$: Observable;\n stepDescription$: Observable;\n showDescription: Observable;\n\n constructor(\n private titleService: TitleService,\n private replayService: ReplayService,\n private replayStateService: ReplayStateService,\n private dialogService: DialogService\n ) {\n this.isReplay$ = this.replayStateService.replayOn$;\n\n this.stepDescription$ = combineLatest([\n this.replayService.currentStep$,\n this.replayService.maxStepNumber$,\n ]).pipe(map(([step, count]) => `${step}/${count}`));\n\n this.showDescription = this.titleService.showDescription$;\n }\n\n openHeaderDialog(): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n this.dialogService.openDialog(HeaderDialogComponent, config);\n }\n\n setShowDescription(show: boolean): void {\n this.titleService.setShowDescription(show);\n }\n}\n","\n \n \n \n expand_less\n \n \n \n expand_more\n \n \n \n {{ title$ | async }}\n edit \n \n \n\n \n \n Sentence: {{ stepDescription$ | async }}\n\n \n\n \n \n\n\n {{ description$ | async }}\n\n","import { AfterViewInit, Component, EventEmitter, Output } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { WorkObjectLabelEntry } from '../../Domain/LabelDictionary/workObjectLabelEntry';\nimport { LabelEntry } from '../../Domain/LabelDictionary/labelEntry';\nimport { LabelDictionaryService } from '../../Service/LabelDictionary/label-dictionary.service';\n\n@Component({\n selector: 'app-label-dictionary',\n templateUrl: './label-dictionary.component.html',\n styleUrls: ['./label-dictionary.component.scss'],\n})\nexport class LabelDictionaryComponent implements AfterViewInit {\n workobjectEntriesSubject: BehaviorSubject;\n activityEntriesSubject: BehaviorSubject;\n\n workObjectEntries: WorkObjectLabelEntry[];\n activityEntries: LabelEntry[];\n\n @Output()\n closeEmitter: EventEmitter = new EventEmitter();\n\n constructor(private labelDictionaryService: LabelDictionaryService) {\n this.labelDictionaryService.createLabelDictionaries();\n this.workObjectEntries = this.labelDictionaryService.getWorkObjectLabels();\n this.activityEntries = this.labelDictionaryService.getActivityLabels();\n\n this.workobjectEntriesSubject = new BehaviorSubject(this.workObjectEntries);\n this.activityEntriesSubject = new BehaviorSubject(this.activityEntries);\n }\n\n ngAfterViewInit(): void {\n this.labelDictionaryService.createLabelDictionaries();\n this.workobjectEntriesSubject.next(\n this.labelDictionaryService.getWorkObjectLabels()\n );\n this.activityEntriesSubject.next(\n this.labelDictionaryService.getActivityLabels()\n );\n }\n\n save(): void {\n this.workObjectEntries = this.workobjectEntriesSubject.value;\n this.activityEntries = this.activityEntriesSubject.value;\n\n const activityNames: string[] = [];\n const originalActivityNames: string[] = [];\n\n const workObjectNames: string[] = [];\n const originalWorkObjectNames: string[] = [];\n\n this.activityEntries\n .filter((a) => a.name !== a.originalName)\n .forEach((activity) => {\n activityNames.push(activity.name);\n originalActivityNames.push(activity.originalName);\n });\n\n this.workObjectEntries\n .filter((w) => w.name !== w.originalName)\n .forEach((workobject) => {\n workObjectNames.push(workobject.name);\n originalWorkObjectNames.push(workobject.originalName);\n });\n\n this.labelDictionaryService.massRenameLabels(\n activityNames,\n originalActivityNames,\n workObjectNames,\n originalWorkObjectNames\n );\n this.closeEmitter.emit();\n }\n\n cancel(): void {\n this.workObjectEntries.forEach((w) => {\n w.name = w.originalName;\n });\n this.activityEntries.forEach((a) => {\n a.name = a.originalName;\n });\n\n this.workobjectEntriesSubject.next(this.workObjectEntries);\n this.activityEntriesSubject.next(this.activityEntries);\n }\n\n updateActivityEntry($event: Event, activityEntry: LabelEntry) {\n let entries = this.activityEntriesSubject.value;\n entries.filter(\n (e) => e.originalName === activityEntry.originalName\n // @ts-ignore\n )[0].name = $event.target.value;\n this.activityEntriesSubject.next(entries);\n }\n\n updateWorkobjectEntry($event: Event, workobjectEntry: LabelEntry) {\n let entries = this.workobjectEntriesSubject.value;\n entries.filter(\n (e) => e.originalName === workobjectEntry.originalName\n // @ts-ignore\n )[0].name = $event.target.value;\n this.workobjectEntriesSubject.next(entries);\n }\n\n preventDefault(event: Event): void {\n event.preventDefault();\n }\n\n close(): void {\n this.closeEmitter.emit();\n }\n}\n","\n
\n

Workobjects

\n \n \n \n \n \n \n \n
\n
\n

Activities

\n \n \n \n \n \n \n \n
\n
\n\n \n \n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-general-settings',\n templateUrl: './general-settings.component.html',\n styleUrls: ['./general-settings.component.scss'],\n})\nexport class GeneralSettingsComponent {}\n","
\n \n
\n","import { Component } from '@angular/core';\nimport { SettingsService } from 'src/app/Service/Settings/settings.service';\nimport { ModelerService } from 'src/app/Service/Modeler/modeler.service';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AutosaveConfigurationService } from '../../Service/Autosave/autosave-configuration.service';\nimport { DomainCustomizationService } from '../../Service/DomainConfiguration/domain-customization.service';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent {\n domainConfiguration: DomainConfiguration | undefined;\n showGeneralSettings = new BehaviorSubject(false);\n showDomainCustomization = new BehaviorSubject(true);\n\n constructor(\n private settingsService: SettingsService,\n private modelerService: ModelerService,\n private domainCustomizationService: DomainCustomizationService\n ) {}\n\n close(): void {\n const savedConfiguration =\n this.domainCustomizationService.getAndClearSavedConfiguration();\n if (savedConfiguration) {\n this.modelerService.restart(savedConfiguration);\n }\n this.settingsService.close();\n }\n\n openGeneralSettings() {\n this.showGeneralSettings.next(true);\n this.showDomainCustomization.next(false);\n }\n\n openDomainCustomization() {\n this.showGeneralSettings.next(false);\n this.showDomainCustomization.next(true);\n }\n}\n","
\n \n \n \n
\n \n Customize Icons for Your Domain\n \n \n General Settings\n \n
\n
\n
\n\n \n \n
\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { StorageService } from '../BrowserStorage/storage.service';\nimport { AutosaveConfiguration } from '../../Domain/Autosave/autosave-configuration';\nimport {\n DEFAULT_AUTOSAVES_MAX_DRAFTS,\n DEFAULT_AUTOSAVES_ENABLED,\n DEFAULT_AUTOSAVES_INTERVAL,\n} from 'src/app/Domain/Common/constants';\n\nconst AUTOSAVE_CONFIGURATION_TAG = 'autosaveConfiguration';\n\nconst defaultConfiguration: AutosaveConfiguration = {\n activated: DEFAULT_AUTOSAVES_ENABLED,\n interval: DEFAULT_AUTOSAVES_INTERVAL,\n maxDrafts: DEFAULT_AUTOSAVES_MAX_DRAFTS,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveConfigurationService {\n private configuration = defaultConfiguration;\n\n private readonly configurationSubject =\n new ReplaySubject(1);\n readonly configuration$ = this.configurationSubject.asObservable();\n\n constructor(private storageService: StorageService) {\n this.initializeConfiguration();\n }\n\n private initializeConfiguration() {\n this.loadConfiguration();\n this.configurationSubject.next(this.configuration);\n }\n\n setConfiguration(configuration: AutosaveConfiguration): boolean {\n try {\n this.configuration = configuration;\n this.saveConfiguration();\n this.configurationSubject.next(configuration);\n return true;\n } catch {\n return false;\n }\n }\n\n private loadConfiguration() {\n this.configuration =\n this.storageService.get(AUTOSAVE_CONFIGURATION_TAG) ??\n defaultConfiguration;\n }\n\n private saveConfiguration() {\n this.storageService.set(AUTOSAVE_CONFIGURATION_TAG, this.configuration);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { RendererService } from '../Renderer/renderer.service';\nimport { ExportService } from '../Export/export.service';\nimport { Draft } from '../../Domain/Autosave/draft';\nimport { AutosaveConfigurationService } from './autosave-configuration.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { fromConfigurationFromFile } from '../../Domain/Common/domainConfiguration';\nimport { StorageService } from '../BrowserStorage/storage.service';\nimport { TitleService } from '../Title/title.service';\nimport { AutosaveConfiguration } from '../../Domain/Autosave/autosave-configuration';\nimport { Subject } from 'rxjs';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\nexport const DRAFTS_TAG = 'autosaveDrafts';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveService {\n private autosaveTimer: any;\n autosavedDraftsChanged$ = new Subject();\n\n constructor(\n private autosaveConfiguration: AutosaveConfigurationService,\n private exportService: ExportService,\n private iconDictionaryService: IconDictionaryService,\n private rendererService: RendererService,\n private snackbar: MatSnackBar,\n private storageService: StorageService,\n private titleService: TitleService\n ) {\n this.autosaveConfiguration.configuration$.subscribe((configuration) =>\n this.updateConfiguration(configuration)\n );\n }\n\n loadCurrentDrafts(): Draft[] {\n const drafts = this.readDrafts();\n this.sortDrafts(drafts);\n return drafts;\n }\n\n loadDraft(draft: Draft): void {\n const configFromFile = draft.configAndDST.domain;\n const config = fromConfigurationFromFile(configFromFile);\n const story = JSON.parse(draft.configAndDST.dst);\n\n this.titleService.updateTitleAndDescription(\n draft.title,\n draft.description,\n false\n );\n\n const actorIcons = this.iconDictionaryService.getElementsOfType(\n story,\n elementTypes.ACTOR\n );\n const workObjectIcons = this.iconDictionaryService.getElementsOfType(\n story,\n elementTypes.WORKOBJECT\n );\n this.iconDictionaryService.updateIconRegistries(\n actorIcons,\n workObjectIcons,\n config\n );\n this.rendererService.importStory(story, true, config, false);\n }\n\n removeAllDrafts() {\n this.storageService.set(DRAFTS_TAG, []);\n this.autosavedDraftsChanged$.next();\n }\n\n loadLatestDraft() {\n const drafts = this.readDrafts();\n if (drafts.length === 0) {\n return;\n }\n this.loadDraft(drafts[0]);\n }\n\n private updateConfiguration(configuration: AutosaveConfiguration) {\n this.stopTimer();\n\n if (configuration.activated) {\n this.startTimer(configuration.interval, configuration.maxDrafts);\n }\n }\n\n private stopTimer(): void {\n if (this.autosaveTimer) {\n clearInterval(this.autosaveTimer);\n this.autosaveTimer = undefined;\n }\n }\n\n private startTimer(interval: number, maxDrafts: number): void {\n this.autosaveTimer = setInterval(() => {\n const savedDrafts = this.loadCurrentDrafts();\n const newDraft = this.createDraft();\n let isChanged = maxDrafts > 0;\n if (savedDrafts.length > 0) {\n isChanged = isChanged && !this.isSame(newDraft, savedDrafts[0]);\n }\n if (isChanged && !this.isDraftEmpty(newDraft)) {\n savedDrafts.unshift(newDraft);\n while (savedDrafts.length > maxDrafts) {\n savedDrafts.pop();\n }\n this.writeDrafts(savedDrafts);\n this.snackbar.open('Draft Saved', undefined, {\n panelClass: SNACKBAR_INFO,\n duration: SNACKBAR_DURATION,\n });\n this.autosavedDraftsChanged$.next();\n }\n }, interval * 1000);\n }\n\n private isDraftEmpty(draft: Draft) {\n return (\n draft.title === INITIAL_TITLE &&\n draft.description === INITIAL_DESCRIPTION &&\n JSON.parse(draft.configAndDST.dst).length === 0\n );\n }\n\n private isSame(a: Draft, b: Draft) {\n return (\n a.title === b.title &&\n a.description === b.description &&\n JSON.stringify(a.configAndDST) === JSON.stringify(b.configAndDST)\n );\n }\n\n private writeDrafts(drafts: Draft[]) {\n this.storageService.set(DRAFTS_TAG, drafts);\n }\n\n private readDrafts(): Draft[] {\n return this.storageService.get(DRAFTS_TAG) ?? [];\n }\n\n private createDraft(): Draft {\n const dst = JSON.stringify(this.rendererService.getStory(), null, 2);\n const configAndDST = this.exportService.createConfigAndDST(dst);\n\n const date = new Date().toString().slice(0, 25);\n\n return {\n title: this.titleService.getTitle(),\n description: this.titleService.getDescription(),\n configAndDST,\n date,\n };\n }\n\n private sortDrafts(drafts: Draft[]): void {\n drafts.sort((a: Draft, b: Draft) => {\n const aDate = Date.parse(a.date);\n const bDate = Date.parse(b.date);\n return aDate > bDate ? 0 : 1;\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DOMAIN_CONFIGURATION_TAG } from '../../Domain/Common/constants';\nimport {\n DomainConfiguration,\n fromConfigurationFromFile,\n} from '../../Domain/Common/domainConfiguration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StorageService {\n set(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n get(key: string): any {\n const json = localStorage.getItem(key);\n if (json) {\n return JSON.parse(json);\n }\n return null;\n }\n\n removeItem(key: string) {\n localStorage.removeItem(key);\n }\n\n checkValidityOfConfiguration(configuratioFromFile: DomainConfiguration) {\n return (\n configuratioFromFile.actors.keysArray().length > 1 &&\n configuratioFromFile.workObjects.keysArray().length > 1 &&\n !configuratioFromFile.actors\n .all()\n .some((e) => typeof e.value !== 'string') &&\n !configuratioFromFile.workObjects\n .all()\n .some((e) => typeof e.value !== 'string')\n );\n }\n\n getStoredDomainConfiguration(): DomainConfiguration | undefined {\n const domainString = localStorage.getItem(DOMAIN_CONFIGURATION_TAG);\n\n if (!domainString) {\n return;\n } else {\n const configuratioFromFile = fromConfigurationFromFile(\n JSON.parse(domainString)\n );\n if (this.checkValidityOfConfiguration(configuratioFromFile)) {\n return configuratioFromFile;\n }\n }\n return;\n }\n\n setStoredDomainConfiguration(config: DomainConfiguration): void {\n const actors: {\n [p: string]: any;\n } = {};\n config.actors.keysArray().forEach((key) => {\n actors[key] = config.actors.get(key);\n });\n const workObjects: {\n [p: string]: any;\n } = {};\n config.workObjects.keysArray().forEach((key) => {\n workObjects[key] = config.workObjects.get(key);\n });\n\n const configForStorage = {\n name: config.name,\n actors: actors,\n workObjects: workObjects,\n };\n\n localStorage.setItem(\n DOMAIN_CONFIGURATION_TAG,\n JSON.stringify(configForStorage, null, 2)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CommandStackService {\n private commandStack: any;\n\n constructor() {}\n\n setCommandStack(commandStack: any): void {\n this.commandStack = commandStack;\n }\n\n execute(action: string, payload: any) {\n this.commandStack.execute(action, payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/overlay';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private matDialog: MatDialog) {}\n\n openDialog(dialog: ComponentType, config: MatDialogConfig): void {\n this.matDialog.open(dialog, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DirtyFlagService {\n private isDirtySubject = new BehaviorSubject(false);\n dirty$ = this.isDirtySubject.asObservable();\n\n makeDirty(): void {\n this.isDirtySubject.next(true);\n }\n\n makeClean(): void {\n this.isDirtySubject.next(false);\n }\n\n get dirty(): boolean {\n return this.isDirtySubject.value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { StoryStep } from 'src/app/Domain/Replay/storyStep';\nimport {\n HIGHLIGHT_COLOR,\n HIGHLIGHT_NUMBER_BACKGROUNG_COLOR,\n HIGHLIGHT_NUMBER_COLOR,\n HIGHLIGHT_STROKE_WIDTH,\n NUMBER_BACKGROUND_COLOR,\n NUMBER_COLOR,\n STROKE_WIDTH,\n} from '../../Domain/DomManipulation/replayConstants';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Manipulates the DOM during replay to only show the elements of the current Step\n */\nexport class DomManipulationService {\n constructor(private elementRegistryService: ElementRegistryService) {}\n\n showAll(): void {\n this.removeHighlights();\n this.elementRegistryService\n .getAllCanvasObjects()\n .slice()\n .concat(this.elementRegistryService.getAllGroups().slice())\n .map((e) => e.businessObject)\n .forEach((element) => {\n const domObject = document.querySelector(\n '[data-element-id=' + element.id + ']'\n );\n // @ts-ignore\n domObject.style.display = 'block';\n });\n }\n\n showStep(replayStep: StoryStep, previousStep?: StoryStep): void {\n this.removeHighlights();\n const notShown = this.getAllNotShown(replayStep.objects);\n\n notShown.forEach((element) => {\n const domObject = document.querySelector(\n '[data-element-id=' + element.id + ']'\n );\n if (domObject) {\n // @ts-ignore\n domObject.style.display = 'none';\n }\n });\n\n this.hightlightStep(\n previousStep\n ? replayStep.objects.filter((o) => !previousStep.objects.includes(o))\n : replayStep.objects\n );\n\n replayStep.objects.forEach((element) => {\n const domObject = document.querySelector(\n '[data-element-id=' + element.id + ']'\n );\n if (domObject) {\n // @ts-ignore\n domObject.style.display = 'block';\n }\n });\n }\n\n getNumberDomForActivity(activity: SVGPolylineElement): any {\n const numberDOMS = activity.parentElement?.getElementsByClassName(\n 'djs-labelNumber'\n ) || ['', ''];\n return {\n numberBackgroundDom: numberDOMS[0],\n numberTextDom: numberDOMS[1],\n };\n }\n\n private removeHighlights(): void {\n const allActivities = this.elementRegistryService.getAllActivities();\n const allConnections = this.elementRegistryService.getAllConnections();\n\n allActivities.forEach((activity) => {\n const querySelector = document.querySelector(\n '[data-element-id=' + activity.id + ']'\n );\n if (querySelector) {\n const activityDomObject =\n querySelector.getElementsByTagName('polyline')[0];\n\n activityDomObject.style.stroke =\n activity.businessObject.pickedColor || 'black';\n activityDomObject.style.strokeWidth = STROKE_WIDTH;\n\n const { numberBackgroundDom, numberTextDom } =\n this.getNumberDomForActivity(activityDomObject);\n if (numberBackgroundDom && numberTextDom) {\n numberBackgroundDom.style.fill = NUMBER_BACKGROUND_COLOR;\n numberTextDom.style.fill = NUMBER_COLOR;\n }\n }\n });\n\n allConnections.forEach((connection) => {\n // @ts-ignore\n const connectionDomObject = document\n .querySelector('[data-element-id=' + connection.id + ']')\n .getElementsByTagName('polyline')[0];\n\n connectionDomObject.style.stroke =\n connection.businessObject.pickedColor || 'black';\n connectionDomObject.style.strokeWidth = '1.5';\n });\n }\n\n private hightlightStep(stepObjects: BusinessObject[]): void {\n stepObjects\n .filter((e) => e.type === elementTypes.ACTIVITY)\n .forEach((activity) => {\n const querySelector = document.querySelector(\n '[data-element-id=' + activity.id + ']'\n );\n if (querySelector) {\n const activityDomObject =\n querySelector.getElementsByTagName('polyline')[0];\n\n activityDomObject.style.stroke = HIGHLIGHT_COLOR;\n activityDomObject.style.strokeWidth = HIGHLIGHT_STROKE_WIDTH;\n\n const { numberBackgroundDom, numberTextDom } =\n this.getNumberDomForActivity(activityDomObject);\n if (numberTextDom && numberBackgroundDom) {\n numberBackgroundDom.style.fill = HIGHLIGHT_NUMBER_BACKGROUNG_COLOR;\n numberTextDom.style.fill = HIGHLIGHT_NUMBER_COLOR;\n }\n }\n });\n }\n\n private getAllNotShown(shownElements: BusinessObject[]): BusinessObject[] {\n const notShownElements: BusinessObject[] = [];\n const allObjects = this.elementRegistryService\n .getAllCanvasObjects()\n .concat(this.elementRegistryService.getAllGroups());\n\n allObjects.forEach((element) => {\n if (!shownElements.includes(element.businessObject)) {\n if (element.type.includes(elementTypes.CONNECTION)) {\n // @ts-ignore\n if (!element.source.type.includes(elementTypes.GROUP)) {\n notShownElements.push(element.businessObject);\n } else {\n // @ts-ignore\n shownElements.push(element.target);\n }\n } else {\n notShownElements.push(element.businessObject);\n }\n }\n });\n return notShownElements;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport {\n CustomDomainConfiguration,\n DomainConfiguration,\n DomainConfigurationForExport,\n} from 'src/app/Domain/Common/domainConfiguration';\nimport { defaultConf } from '../../Domain/Common/iconConfiguration';\nimport { TitleService } from '../Title/title.service';\nimport { INITIAL_DOMAIN_NAME } from '../../Domain/Common/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DomainConfigurationService {\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private titleService: TitleService\n ) {}\n\n setDomainName(domainName: string): void {\n this.titleService.setDomainName(\n domainName ? domainName : INITIAL_DOMAIN_NAME\n );\n }\n\n exportConfiguration(): void {\n const domainConfiguration = this.getCurrentConfigurationForExport();\n if (!domainConfiguration) {\n return;\n }\n\n const configJSONString = JSON.stringify(domainConfiguration, null, 2);\n const filename = this.titleService.getDomainName();\n const element = document.createElement('a');\n\n element.setAttribute(\n 'href',\n 'data:text/plain;charset=utf-8,' + encodeURIComponent(configJSONString)\n );\n element.setAttribute('download', filename + '.domain');\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n loadConfiguration(\n customConfig: DomainConfiguration,\n updateDomainName = true\n ): void {\n let actorDict = new Dictionary();\n let workObjectDict = new Dictionary();\n\n if (customConfig.actors.keysArray()) {\n actorDict = customConfig.actors;\n workObjectDict = customConfig.workObjects;\n } else {\n actorDict.addEach(customConfig.actors);\n workObjectDict.addEach(customConfig.workObjects);\n }\n\n const actorKeys = actorDict.keysArray();\n const workObjectKeys = workObjectDict.keysArray();\n\n this.iconDictionaryService.updateIconRegistries([], [], customConfig);\n\n this.iconDictionaryService\n .getIconConfiguration()\n .appendSRCFile(actorKeys, actorDict, workObjectKeys, workObjectDict);\n\n this.iconDictionaryService.addIconsFromDomainConfiguration(\n elementTypes.ACTOR,\n actorKeys.map((a) => elementTypes.ACTOR + a)\n );\n this.iconDictionaryService.addIconsFromDomainConfiguration(\n elementTypes.WORKOBJECT,\n workObjectKeys.map((w) => elementTypes.WORKOBJECT + w)\n );\n\n if (updateDomainName) {\n const configurationName = customConfig.name;\n this.setDomainName(configurationName);\n }\n }\n\n getCurrentConfiguration(): DomainConfiguration | undefined {\n const actors = this.iconDictionaryService.getActorsDictionary();\n const workObjects = this.iconDictionaryService.getWorkObjectsDictionary();\n\n let domainConfiguration;\n\n if (actors.size() > 0 && workObjects.size() > 0) {\n domainConfiguration = this.createConfigFromDictionaries(\n actors,\n workObjects\n );\n }\n return domainConfiguration;\n }\n\n getCurrentConfigurationForExport(): DomainConfigurationForExport | undefined {\n const currentConfiguration = this.getCurrentConfiguration();\n\n if (currentConfiguration) {\n const actors: any = {};\n const workObjects: any = {};\n\n currentConfiguration.actors.all().forEach((entry) => {\n actors[entry.key] = entry.value;\n });\n currentConfiguration.workObjects.all().forEach((entry) => {\n workObjects[entry.key] = entry.value;\n });\n\n return {\n name: currentConfiguration.name,\n actors: actors,\n workObjects: workObjects,\n };\n }\n return;\n }\n\n getCurrentConfigurationNamesWithoutPrefix(): CustomDomainConfiguration {\n return {\n name: this.titleService.getDomainName() || INITIAL_DOMAIN_NAME,\n actors: this.iconDictionaryService\n .getActorsDictionary()\n .keysArray()\n .map((a) => a.replace(elementTypes.ACTOR, '')),\n workObjects: this.iconDictionaryService\n .getWorkObjectsDictionary()\n .keysArray()\n .map((w) => w.replace(elementTypes.WORKOBJECT, '')),\n };\n }\n\n createMinimalConfigurationWithDefaultIcons(): DomainConfiguration {\n const minimalConfig = this.createConfigFromCanvas();\n\n defaultConf.actors.forEach((iconName) => {\n minimalConfig.actors.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName\n );\n });\n defaultConf.workObjects.forEach((iconName) => {\n minimalConfig.workObjects.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName\n );\n });\n\n return minimalConfig;\n }\n\n private createConfigFromDictionaries(\n actorsDict: Dictionary,\n workObjectsDict: Dictionary\n ): DomainConfiguration {\n const actorNames = actorsDict.keysArray();\n const workobjectNames = workObjectsDict.keysArray();\n const newActors = new Dictionary();\n const newWorkobjects = new Dictionary();\n\n // Fill Configuration from Canvas-Objects\n actorNames.forEach((actor) => {\n newActors.add(\n actorsDict.get(actor),\n actor.replace(elementTypes.ACTOR, '')\n );\n });\n workobjectNames.forEach((workObject) => {\n newWorkobjects.add(\n workObjectsDict.get(workObject),\n workObject.replace(elementTypes.WORKOBJECT, '')\n );\n });\n\n return {\n name: this.titleService.getDomainName(),\n actors: newActors,\n workObjects: newWorkobjects,\n };\n }\n\n private createConfigFromCanvas(): DomainConfiguration {\n const config = {\n name: INITIAL_DOMAIN_NAME,\n actors: new Dictionary(),\n workObjects: new Dictionary(),\n };\n\n let allCanvasObjects = this.elementRegistryService.getAllCanvasObjects();\n\n allCanvasObjects\n .map((e) => e.businessObject)\n .forEach((element) => {\n const type = element.type\n .replace(elementTypes.ACTOR, '')\n .replace(elementTypes.WORKOBJECT, '');\n if (element.type.includes(elementTypes.ACTOR)) {\n let src = this.iconDictionaryService.getIconSource(type) || '';\n config.actors.add(src, type);\n } else if (element.type.includes(elementTypes.WORKOBJECT)) {\n let src = this.iconDictionaryService.getIconSource(type) || '';\n config.workObjects.add(src, type);\n }\n });\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject } from 'rxjs';\nimport { UsedIconList } from 'src/app/Domain/Domain-Configuration/UsedIconList';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n SNACKBAR_SUCCESS,\n} from '../../Domain/Common/constants';\nimport { Dictionary } from '../../Domain/Common/dictionary/dictionary';\nimport {\n CustomDomainConfiguration,\n DomainConfiguration,\n} from '../../Domain/Common/domainConfiguration';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { IconListItem } from '../../Domain/Domain-Configuration/iconListItem';\nimport { getNameFromType } from '../../Utils/naming';\nimport { StorageService } from '../BrowserStorage/storage.service';\nimport { ImportDomainStoryService } from '../Import/import-domain-story.service';\nimport { TitleService } from '../Title/title.service';\nimport { DomainConfigurationService } from './domain-configuration.service';\nimport { IconDictionaryService } from './icon-dictionary.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DomainCustomizationService {\n private readonly domainConfigurationTypes: BehaviorSubject;\n\n private allIconListItems = new Dictionary();\n\n private configurationHasChanged = false;\n\n selectedActors$ = new BehaviorSubject([]);\n selectedWorkobjects$ = new BehaviorSubject([]);\n private changedDomainConfiguration: DomainConfiguration | undefined;\n\n constructor(\n private configurationService: DomainConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n private importService: ImportDomainStoryService,\n private titleService: TitleService,\n private storageService: StorageService,\n private elementRegistryService: ElementRegistryService,\n private snackbar: MatSnackBar\n ) {\n this.domainConfigurationTypes = new BehaviorSubject(\n this.configurationService.getCurrentConfigurationNamesWithoutPrefix()\n );\n\n this.selectedWorkobjects$.next(\n this.domainConfigurationTypes.value.workObjects\n );\n this.selectedActors$.next(this.domainConfigurationTypes.value.actors);\n\n iconDictionaryService\n .getAllIconDictionary()\n .keysArray()\n .forEach((iconName) => {\n this.addIconToAllIconList(iconName);\n });\n\n importService.importedConfigurationEvent.subscribe((config) => {\n this.importConfiguration(config);\n });\n const storedDomainConfiguration =\n this.storageService.getStoredDomainConfiguration();\n if (storedDomainConfiguration) {\n this.importConfiguration(storedDomainConfiguration, false);\n }\n const importedConfiguration = this.importService.getImportedConfiguration();\n if (importedConfiguration) {\n this.importConfiguration(importedConfiguration, false);\n }\n }\n\n importConfiguration(\n customConfig: DomainConfiguration,\n saveDomain = true\n ): void {\n const actorKeys = customConfig.actors.keysArray();\n const workObjectKeys = customConfig.workObjects.keysArray();\n\n this.changeName(customConfig.name);\n actorKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedActorNames = this.selectedActors$.value;\n if (!selectedActorNames.includes(iconName)) {\n this.selectActor(iconName);\n }\n });\n workObjectKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedWorkobjectNames = this.selectedWorkobjects$.value;\n if (!selectedWorkobjectNames.includes(iconName)) {\n this.selectWorkObject(iconName);\n }\n });\n if (saveDomain) {\n this.saveDomain(this.elementRegistryService.getUsedIcons(), true);\n }\n }\n\n /** Getter & Setter **/\n getDomainConfiguration(): BehaviorSubject {\n return this.domainConfigurationTypes;\n }\n\n getIconForName(iconName: string): BehaviorSubject {\n return this.allIconListItems.get(iconName);\n }\n\n isIconActor(iconName: string): boolean {\n return (\n this.domainConfigurationTypes.value.actors.filter(\n (actor: string) => actor === iconName\n ).length > 0\n );\n }\n\n isIconWorkObject(iconName: string): boolean {\n return (\n this.domainConfigurationTypes.value.workObjects.filter(\n (workObject: string) => workObject === iconName\n ).length > 0\n );\n }\n\n changeName(domainName: string): void {\n this.titleService.setDomainName(domainName);\n const changedDomain = this.domainConfigurationTypes.value;\n changedDomain.name = domainName;\n this.domainConfigurationTypes.next(changedDomain);\n }\n\n /** Selected Icons **/\n setAsUnassigned(iconName: string, isActor: boolean): void {\n if (isActor) {\n this.deselectActor(iconName);\n } else {\n this.deselectWorkobject(iconName);\n }\n this.updateIcon(false, false, iconName);\n }\n\n setAsActor(isActor: boolean, actor: string): void {\n if (isActor) {\n this.updateIcon(true, false, actor);\n this.selectActor(actor);\n this.deselectWorkobject(actor);\n } else {\n this.deselectActor(actor);\n this.updateIcon(false, false, actor);\n }\n }\n\n setAsWorkobject(isWorkobject: boolean, workobject: string): void {\n if (isWorkobject) {\n this.updateIcon(false, true, workobject);\n this.selectWorkObject(workobject);\n this.deselectActor(workobject);\n } else {\n this.deselectWorkobject(workobject);\n this.updateIcon(false, false, workobject);\n }\n }\n\n selectActor(actor: string): void {\n const value = this.domainConfigurationTypes.value;\n if (!value.actors.includes(actor)) {\n value.actors.push(actor);\n this.domainConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n }\n\n selectWorkObject(workObject: string): void {\n const value = this.domainConfigurationTypes.value;\n if (!value.workObjects.includes(workObject)) {\n value.workObjects.push(workObject);\n this.domainConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n }\n\n deselectActor(actor: string): void {\n if (this.domainConfigurationTypes) {\n this.domainConfigurationTypes.next({\n name: this.domainConfigurationTypes.value.name,\n actors: this.domainConfigurationTypes.value.actors.filter(\n (a: string) => !a.includes(actor)\n ),\n workObjects: this.domainConfigurationTypes.value.workObjects,\n });\n }\n this.updateActorSubject();\n }\n\n deselectWorkobject(workobject: string): void {\n if (this.domainConfigurationTypes) {\n this.domainConfigurationTypes.next({\n name: this.domainConfigurationTypes.value.name,\n actors: this.domainConfigurationTypes.value.actors,\n workObjects: this.domainConfigurationTypes.value.workObjects.filter(\n (w: string) => !w.includes(workobject)\n ),\n });\n }\n this.updateWorkObjectSubject();\n }\n\n setSelectedWorkObject(sortedList: string[]): void {\n const value = this.domainConfigurationTypes.value;\n value.workObjects = sortedList;\n this.domainConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n\n setSelectedActors(sortedList: string[]): void {\n const value = this.domainConfigurationTypes.value;\n value.actors = sortedList;\n this.domainConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n\n private updateActorSubject(): void {\n this.selectedActors$.next(this.domainConfigurationTypes.value.actors);\n this.configurationHasChanged = true;\n }\n\n private updateWorkObjectSubject(): void {\n this.selectedWorkobjects$.next(\n this.domainConfigurationTypes.value.workObjects\n );\n this.configurationHasChanged = true;\n }\n\n /** Revert Domain **/\n resetDomain(): void {\n const defaultConfig =\n this.configurationService.createMinimalConfigurationWithDefaultIcons();\n\n this.selectedWorkobjects$.value.forEach((workObjectName) => {\n if (!defaultConfig.workObjects.has(workObjectName)) {\n this.deselectWorkobject(workObjectName);\n }\n });\n this.selectedActors$.value.forEach((actorName) => {\n if (!defaultConfig.actors.has(actorName)) {\n this.deselectActor(actorName);\n }\n });\n\n this.domainConfigurationTypes.next({\n name: defaultConfig.name,\n actors: defaultConfig.actors.keysArray(),\n workObjects: defaultConfig.workObjects.keysArray(),\n } as CustomDomainConfiguration);\n\n this.updateAllIconBehaviourSubjects();\n }\n\n cancel(): void {\n this.domainConfigurationTypes.next(\n this.configurationService.getCurrentConfigurationNamesWithoutPrefix()\n );\n this.updateAllIconBehaviourSubjects();\n this.resetToInitialConfiguration();\n }\n\n private resetToInitialConfiguration(): void {\n this.updateActorSubject();\n this.updateWorkObjectSubject();\n }\n\n /** Persist Domain **/\n saveDomain(usedIcons: UsedIconList, imported = false): void {\n const changedActors: string[] = [];\n const changedWorkobjects: string[] = [];\n if (this.configurationHasChanged) {\n const changedDomain = this.createDomainConfiguration();\n\n const configurationActors = changedDomain.actors.keysArray();\n usedIcons?.actors.forEach((actor) => {\n if (\n !configurationActors?.includes(actor) &&\n !changedActors.includes(actor)\n ) {\n changedActors.push(actor);\n }\n });\n const configurationWorkobjects = changedDomain.workObjects.keysArray();\n usedIcons?.workobjects.forEach((workobject) => {\n if (\n !configurationWorkobjects?.includes(workobject) &&\n !changedWorkobjects.includes(workobject)\n ) {\n changedWorkobjects.push(workobject);\n }\n });\n\n if (!changedActors.length && !changedWorkobjects.length) {\n this.changedDomainConfiguration = changedDomain;\n\n this.updateIcons(changedDomain);\n\n this.storageService.setStoredDomainConfiguration(\n this.changedDomainConfiguration\n );\n this.snackbar.open(\n imported\n ? 'Configuration imported successfully'\n : 'Configuration saved successfully',\n undefined,\n {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n }\n );\n }\n } else {\n this.snackbar.open(\n imported\n ? 'No configuration to be imported'\n : 'No configuration to be saved',\n undefined,\n {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n if (changedActors.length || changedWorkobjects.length) {\n if (changedActors.length) {\n const actors = changedActors.join(', ');\n this.snackbar.open(\n `The following icons are already in use as actors and cannot be changed: ${actors}`,\n undefined,\n {\n duration: SNACKBAR_DURATION * 3,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n if (changedWorkobjects.length) {\n const workobjects = changedWorkobjects.join(', ');\n this.snackbar.open(\n `The following icons are already in use as workobjects and cannot be changed: ${workobjects}`,\n undefined,\n {\n duration: SNACKBAR_DURATION * 3,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n }\n }\n\n exportDomain(): void {\n this.configurationService.exportConfiguration();\n }\n\n getAndClearSavedConfiguration(): DomainConfiguration | undefined {\n const temp = this.changedDomainConfiguration;\n this.changedDomainConfiguration = undefined;\n\n return temp;\n }\n\n private createDomainConfiguration(): DomainConfiguration {\n const actors = new Dictionary();\n const workObjects = new Dictionary();\n\n this.domainConfigurationTypes.value.actors.forEach((name: string) => {\n actors.add(this.iconDictionaryService.getIconSource(name), name);\n });\n this.domainConfigurationTypes.value.workObjects.forEach((name: string) => {\n workObjects.add(this.iconDictionaryService.getIconSource(name), name);\n });\n\n return {\n name: this.domainConfigurationTypes.value.name || '',\n actors,\n workObjects,\n };\n }\n\n /** Update Icons **/\n addNewIcon(iconName: string): void {\n const iconDict = new Dictionary();\n iconDict.add(this.getSrcForIcon(iconName), iconName);\n this.iconDictionaryService.addIconsToCss(iconDict);\n this.addIconToAllIconList(iconName);\n }\n\n private addIconToAllIconList(iconName: string): void {\n this.allIconListItems.add(\n new BehaviorSubject({\n name: iconName,\n svg: this.getSrcForIcon(iconName),\n isActor: this.isIconActor(iconName),\n isWorkObject: this.isIconWorkObject(iconName),\n }),\n iconName\n );\n }\n\n private updateIcon(\n isActor: boolean,\n isWorkobject: boolean,\n iconName: string\n ) {\n const iconBehaviourSubject = this.getIconForName(iconName);\n const icon = iconBehaviourSubject.value;\n icon.isActor = isActor;\n icon.isWorkObject = isWorkobject;\n\n iconBehaviourSubject.next(icon);\n }\n\n private updateAllIconBehaviourSubjects(): void {\n const customDomainConfiguration = this.domainConfigurationTypes.value;\n this.allIconListItems.keysArray().forEach((iconName) => {\n if (customDomainConfiguration.actors.includes(iconName)) {\n this.updateIcon(true, false, iconName);\n } else if (customDomainConfiguration.workObjects.includes(iconName)) {\n this.updateIcon(false, true, iconName);\n } else {\n this.updateIcon(false, false, iconName);\n }\n });\n }\n\n private getSrcForIcon(name: string): string {\n let iconName: string;\n if (name.includes(elementTypes.DOMAINSTORY)) {\n // TODO: td: This returns empty every time!\n iconName = getNameFromType(name);\n } else {\n iconName = name;\n }\n const rawSrc = this.iconDictionaryService.getIconSource(iconName);\n\n if (!rawSrc) {\n return '';\n }\n\n if (rawSrc.startsWith('data')) {\n return rawSrc;\n } else {\n return 'data:image/svg+xml,' + rawSrc;\n }\n }\n\n private updateIcons(changedDomain: DomainConfiguration) {\n this.allIconListItems\n .keysArray()\n .forEach((item) => this.setAsUnassigned(item, this.isIconActor(item)));\n changedDomain.actors.keysArray().forEach((actor) => {\n this.iconDictionaryService.registerIconForType(\n elementTypes.ACTOR,\n actor,\n this.iconDictionaryService.getFullDictionary().get(actor)\n );\n this.iconDictionaryService.unregisterIconForType(\n elementTypes.WORKOBJECT,\n actor\n );\n this.setAsActor(true, actor);\n });\n changedDomain.workObjects.keysArray().forEach((workObject) => {\n this.iconDictionaryService.registerIconForType(\n elementTypes.WORKOBJECT,\n workObject,\n this.iconDictionaryService.getFullDictionary().get(workObject)\n );\n this.iconDictionaryService.unregisterIconForType(\n elementTypes.ACTOR,\n workObject\n );\n this.setAsWorkobject(true, workObject);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { Configuration } from 'src/app/Domain/Common/configuration';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport {\n defaultConf,\n IconConfiguration,\n} from 'src/app/Domain/Common/iconConfiguration';\nimport {\n allIcons,\n appendedIcons,\n} from 'src/app/Domain/Domain-Configuration/allIcons';\nimport { getNameFromType } from '../../Utils/naming';\nimport { sanitizeIconName } from '../../Utils/sanitizer';\n\nexport const ICON_PREFIX = 'icon-domain-story-';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconDictionaryService {\n private actorIconDictionary = new Dictionary();\n private workObjectDictionary = new Dictionary();\n\n private allIconDictionary = new Dictionary();\n private iconDictionaryForBPMN = new Dictionary();\n\n private customConfiguration?: DomainConfiguration;\n\n private readonly iconConfig: IconConfiguration;\n\n constructor() {\n this.allIconDictionary.addEach(allIcons);\n this.iconConfig = new IconConfiguration(this.allIconDictionary);\n }\n\n initTypeDictionaries(actors: string[], workObjects: string[]): void {\n if (!actors || actors.length == 0) {\n actors = defaultConf.actors;\n }\n if (!workObjects || workObjects.length == 0) {\n workObjects = defaultConf.workObjects;\n }\n\n const allTypes = new Dictionary();\n allTypes.addEach(allIcons);\n allTypes.appendDict(this.getAppendedIconDictionary());\n\n this.initDictionary(\n actors,\n allTypes,\n this.actorIconDictionary,\n elementTypes.ACTOR\n );\n this.initDictionary(\n workObjects,\n allTypes,\n this.workObjectDictionary,\n elementTypes.WORKOBJECT\n );\n }\n\n private initDictionary(\n keys: string[],\n allTypes: Dictionary,\n dictionary: Dictionary,\n elementType: elementTypes\n ) {\n dictionary.clear();\n for (const key of keys) {\n dictionary.add(allTypes.get(key), key);\n }\n\n dictionary.keysArray().forEach((name) => {\n this.registerIconForBPMN(\n name,\n ICON_PREFIX + sanitizeIconName(name.toLowerCase()),\n elementType\n );\n });\n }\n\n getCurrentIconConfigurationForBPMN(): Configuration {\n if (this.customConfiguration) {\n return this.iconConfig.createCustomConf(this.customConfiguration);\n }\n return this.iconConfig.getDefaultConf();\n }\n\n allInTypeDictionary(type: elementTypes, elements: BusinessObject[]): boolean {\n let collection: Dictionary;\n if (type === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n\n let allIn = true;\n if (elements) {\n elements.forEach((element) => {\n if (!collection.has(getNameFromType(element.type))) {\n allIn = false;\n }\n });\n } else {\n return false;\n }\n return allIn;\n }\n\n /** Load Icons from Configuration **/\n\n addIconsFromDomainConfiguration(\n dictionaryType: elementTypes,\n iconTypes: string[]\n ): void {\n let collection: Dictionary;\n if (dictionaryType === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (dictionaryType === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n\n const allTypes = new Dictionary();\n allTypes.addEach(allIcons);\n allTypes.appendDict(appendedIcons);\n\n iconTypes.forEach((name) => {\n if (!collection.has(name)) {\n const src = allTypes.get(name);\n if (src) {\n this.registerIconForType(dictionaryType, name, src);\n this.registerIconForBPMN(\n name,\n sanitizeIconName(ICON_PREFIX + name.toLowerCase()),\n dictionaryType\n );\n }\n }\n });\n }\n\n /** Add Icon(s) to Dictionary **/\n registerIconForBPMN(\n name: string,\n src: string,\n elementType: elementTypes\n ): void {\n if (name.includes(elementType)) {\n throw new Error('Should not include elementType');\n }\n\n this.iconDictionaryForBPMN.set(`${elementType}${name}`, src);\n }\n\n addIconsToTypeDictionary(\n actorIcons: BusinessObject[],\n workObjectIcons: BusinessObject[]\n ) {\n if (!this.allInTypeDictionary(elementTypes.ACTOR, actorIcons)) {\n this.addIconsFromDomainConfiguration(\n elementTypes.ACTOR,\n actorIcons.map((element) => getNameFromType(element.type))\n );\n }\n if (!this.allInTypeDictionary(elementTypes.WORKOBJECT, workObjectIcons)) {\n this.addIconsFromDomainConfiguration(\n elementTypes.WORKOBJECT,\n workObjectIcons.map((element) => getNameFromType(element.type))\n );\n }\n }\n\n registerIconForType(type: elementTypes, name: string, src: string): void {\n if (name.includes(type)) {\n throw new Error('Name should not include type!');\n }\n\n let collection = new Dictionary();\n if (type === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n collection.add(src, name);\n }\n\n unregisterIconForType(type: elementTypes, name: string): void {\n if (name.includes(type)) {\n throw new Error('Name should not include type!');\n }\n\n let collection = new Dictionary();\n if (type === elementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n collection.delete(name);\n }\n\n updateIconRegistries(\n actors: BusinessObject[],\n workObjects: BusinessObject[],\n config: DomainConfiguration\n ): void {\n const elements: BusinessObject[] = [];\n\n actors.forEach((a) => elements.push(a));\n workObjects.forEach((w) => elements.push(w));\n\n const customIcons = new Dictionary();\n\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n config.actors.keysArray().forEach((key) => {\n actorsDict.set(key, config.actors.get(key));\n });\n config.workObjects.keysArray().forEach((key) => {\n workObjectsDict.set(key, config.workObjects.get(key));\n });\n\n this.extractCustomIconsFromDictionary(actorsDict, customIcons);\n this.extractCustomIconsFromDictionary(workObjectsDict, customIcons);\n\n elements.forEach((element) => {\n const name = sanitizeIconName(\n element.type\n .replace(elementTypes.ACTOR, '')\n .replace(elementTypes.WORKOBJECT, '')\n );\n if (\n (element.type.includes(elementTypes.ACTOR) ||\n element.type.includes(elementTypes.WORKOBJECT)) &&\n !this.getFullDictionary().has(name)\n ) {\n let elementType;\n if (element.type.includes(elementTypes.ACTOR)) {\n elementType = elementTypes.ACTOR;\n } else {\n elementType = elementTypes.WORKOBJECT;\n }\n this.registerIconForBPMN(\n ICON_PREFIX + name.toLowerCase(),\n getNameFromType(element.type),\n elementType\n );\n }\n });\n\n this.addNewIconsToDictionary(customIcons);\n this.addIconsToTypeDictionary(actors, workObjects);\n }\n\n private extractCustomIconsFromDictionary(\n elementDictionary: Dictionary,\n customIcons: Dictionary\n ) {\n elementDictionary.keysArray().forEach((name) => {\n const sanitizedName = sanitizeIconName(name);\n if (!this.getFullDictionary().has(sanitizedName)) {\n customIcons.add(elementDictionary.get(name), sanitizedName);\n }\n });\n }\n\n /** Add new Icon(s) **/\n\n addNewIconsToDictionary(customIcons: Dictionary) {\n customIcons.keysArray().forEach((key) => {\n const custom = customIcons.get(key);\n this.addIMGToIconDictionary(custom.src, key);\n });\n this.addIconsToCss(customIcons);\n }\n\n addIMGToIconDictionary(input: string, name: string): void {\n appendedIcons.set(name, input);\n }\n\n addIconsToCss(customIcons: Dictionary) {\n const sheetEl = document.getElementById('iconsCss');\n customIcons.keysArray().forEach((key) => {\n const src = customIcons.get(key);\n const iconStyle =\n '.' +\n ICON_PREFIX +\n sanitizeIconName(key.toLowerCase()) +\n '::before{ content: url(\"data:image/svg+xml;utf8,' +\n this.wrapSRCInSVG(src) +\n '\"); margin: 3px;}';\n // @ts-ignore\n sheetEl?.sheet?.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n });\n }\n\n private wrapSRCInSVG(src: string): string {\n return (\n \"\"\n );\n }\n\n /** Getter & Setter **/\n\n getFullDictionary(): Dictionary {\n const fullDictionary = new Dictionary();\n fullDictionary.appendDict(this.allIconDictionary);\n fullDictionary.appendDict(this.getAppendedIconDictionary());\n return fullDictionary;\n }\n\n getAppendedIconDictionary(): Dictionary {\n const appendedDict = new Dictionary();\n appendedIcons.keysArray().forEach((key) => {\n if (!this.allIconDictionary.has(key)) {\n appendedDict.set(key, appendedIcons.get(key));\n }\n });\n return appendedDict;\n }\n\n getTypeDictionary(type: elementTypes): Dictionary {\n if (type === elementTypes.ACTOR) {\n return this.actorIconDictionary;\n } else if (type === elementTypes.WORKOBJECT) {\n return this.workObjectDictionary;\n }\n return new Dictionary();\n }\n\n getTypeDictionaryKeys(type: elementTypes): string[] {\n return this.getTypeDictionary(type).keysArray();\n }\n\n getTypeIconSRC(type: elementTypes, name: string): string | null {\n if (type === elementTypes.ACTOR) {\n return this.actorIconDictionary.get(name);\n } else if (type === elementTypes.WORKOBJECT) {\n return this.workObjectDictionary.get(name);\n }\n return null;\n }\n\n getIconForBPMN(elementType: elementTypes, name: string): string | null {\n return this.iconDictionaryForBPMN.get(`${elementType}${name}`);\n }\n\n getIconSource(name: string): string | null {\n if (this.allIconDictionary.has(name)) {\n return this.allIconDictionary.get(name);\n } else if (appendedIcons.has(name)) {\n return appendedIcons.get(name);\n }\n return null;\n }\n\n getElementsOfType(\n elements: BusinessObject[],\n type: elementTypes\n ): BusinessObject[] {\n const elementOfType: any = [];\n elements.forEach((element) => {\n if (element.type.includes(type)) {\n elementOfType.push(element);\n }\n });\n return elementOfType;\n }\n\n getAllIconDictionary(): Dictionary {\n return this.allIconDictionary;\n }\n\n getActorsDictionary(): Dictionary {\n return this.actorIconDictionary;\n }\n\n getWorkObjectsDictionary(): Dictionary {\n return this.workObjectDictionary;\n }\n\n getIconConfiguration(): IconConfiguration {\n return this.iconConfig;\n }\n\n setCustomConfiguration(customConfiguration: DomainConfiguration): void {\n this.customConfiguration = customConfiguration;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { CanvasObject } from 'src/app/Domain/Common/canvasObject';\nimport { GroupCanvasObject } from '../../Domain/Common/groupCanvasObject';\nimport { ActivityCanvasObject } from '../../Domain/Common/activityCanvasObject';\nimport { UsedIconList } from 'src/app/Domain/Domain-Configuration/UsedIconList';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElementRegistryService {\n private registry: any;\n private fullyInitialized = false;\n\n /**\n * Initially the registry has only the root-Element.\n * Once the canvas has bees initialized, we adjust the reference to point to the elements on the canvas for convenience\n */\n correctInitialize(): void {\n if (!this.fullyInitialized) {\n if (this.registry.__implicitroot) {\n this.registry = this.registry.__implicitroot.element.children;\n this.fullyInitialized = true;\n }\n }\n }\n\n setElementRegistry(registry: any): void {\n this.registry = registry._elements;\n }\n\n clear(): void {\n this.registry = null;\n this.fullyInitialized = false;\n }\n\n createObjectListForDSTDownload(): CanvasObject[] {\n if (this.registry) {\n const allObjectsFromCanvas = this.getAllCanvasObjects();\n const groups = this.getAllGroups();\n\n const objectList: CanvasObject[] = [];\n\n this.fillListOfCanvasObjects(allObjectsFromCanvas, objectList, groups);\n\n return objectList;\n }\n return [];\n }\n\n private fillListOfCanvasObjects(\n allObjectsFromCanvas: CanvasObject[],\n objectList: CanvasObject[],\n groups: GroupCanvasObject[]\n ): void {\n allObjectsFromCanvas.forEach((canvasElement) => {\n if (canvasElement.type === elementTypes.ACTIVITY) {\n objectList.push(canvasElement);\n }\n\n // ensure that Activities are always after Actors, Workobjects and Groups in .dst files\n else {\n if (canvasElement.type === elementTypes.TEXTANNOTATION) {\n canvasElement.businessObject.width = canvasElement.width;\n canvasElement.businessObject.height = canvasElement.height;\n }\n if (!objectList.includes(canvasElement)) {\n objectList.unshift(canvasElement);\n }\n }\n });\n\n groups.forEach((group) => {\n objectList.push(group);\n });\n }\n\n getAllActivities(): ActivityCanvasObject[] {\n const activities: ActivityCanvasObject[] = [];\n\n this.getAllCanvasObjects().forEach((element) => {\n if (element.type.includes(elementTypes.ACTIVITY)) {\n activities.push(element as ActivityCanvasObject);\n }\n });\n return activities;\n }\n\n getAllConnections(): ActivityCanvasObject[] {\n const connections: ActivityCanvasObject[] = [];\n this.getAllCanvasObjects().forEach((element) => {\n const type = element.type;\n if (type === elementTypes.CONNECTION) {\n connections.push(element as ActivityCanvasObject);\n }\n });\n return connections;\n }\n\n getAllCanvasObjects(): CanvasObject[] {\n const allObjects: CanvasObject[] = [];\n const groupObjects: GroupCanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n // for each memorized group, remove it from the group-array and check its children, whether they are groups or not\n // if a child is a group, memorize it in the group-array\n // other children should already be in the allObjects list\n let i = groupObjects.length - 1;\n while (groupObjects.length >= 1) {\n const currentGroup = groupObjects.pop();\n // @ts-ignore\n currentGroup.children.forEach((child: CanvasObject) => {\n const type = child.type;\n if (type.includes(elementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n i = groupObjects.length - 1;\n }\n return allObjects;\n }\n\n // returns all groups on the canvas and inside other groups\n getAllGroups(): GroupCanvasObject[] {\n const groupObjects: GroupCanvasObject[] = [];\n const allObjects: CanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n for (const group of groupObjects) {\n group.children?.forEach((child: CanvasObject) => {\n if (child.type.includes(elementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n }\n return groupObjects;\n }\n\n private checkChildForGroup(\n groupObjects: GroupCanvasObject[],\n allObjects: CanvasObject[]\n ): void {\n const registryElementNames = Object.keys(this.registry);\n for (let name of registryElementNames) {\n const entry = this.registry[name].element;\n if (entry.businessObject) {\n const type = entry.type;\n if (type && type.includes(elementTypes.GROUP)) {\n // if it is a group, memorize this for later\n groupObjects.push(entry);\n } else if (type) {\n allObjects.push(entry);\n }\n }\n }\n }\n\n // get a list of activities, that originate from an actor-type\n getActivitiesFromActors(): ActivityCanvasObject[] {\n const activitiesFromActors: ActivityCanvasObject[] = [];\n const activities = this.getAllActivities();\n\n activities.forEach((activity: ActivityCanvasObject) => {\n if (activity.source?.type.includes(elementTypes.ACTOR)) {\n activitiesFromActors.push(activity);\n }\n });\n return activitiesFromActors;\n }\n\n getUsedIcons(): UsedIconList {\n const actors = this.getAllActors();\n const workobjects = this.getAllWorkobjects();\n\n return {\n actors: actors.map((a) => a.type.replace(elementTypes.ACTOR, '')),\n workobjects: workobjects.map((w) =>\n w.type.replace(elementTypes.WORKOBJECT, '')\n ),\n };\n }\n\n private getAllActors() {\n return this.getAllCanvasObjects().filter((co) =>\n co.type.includes(elementTypes.ACTOR)\n );\n }\n\n getAllWorkobjects() {\n return this.getAllCanvasObjects().filter((co) =>\n co.type.includes(elementTypes.WORKOBJECT)\n );\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { DomainConfigurationService } from 'src/app/Service/DomainConfiguration/domain-configuration.service';\nimport { sanitizeForDesktop } from 'src/app/Utils/sanitizer';\nimport { TitleService } from 'src/app/Service/Title/title.service';\nimport { ConfigAndDST } from 'src/app/Domain/Export/configAndDst';\nimport { DirtyFlagService } from 'src/app/Service/DirtyFlag/dirty-flag.service';\nimport { PngService } from 'src/app/Service/Export/png.service';\nimport { SvgService } from 'src/app/Service/Export/svg.service';\nimport { Subscription } from 'rxjs';\nimport { RendererService } from '../Renderer/renderer.service';\nimport { HtmlPresentationService } from './html-presentation.service';\nimport { formatDate } from '@angular/common';\nimport { environment } from '../../../environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ExportService implements OnDestroy {\n titleSubscription: Subscription;\n descriptionSubscription: Subscription;\n\n title = '';\n description = '';\n\n constructor(\n private configurationService: DomainConfigurationService,\n private titleService: TitleService,\n private dirtyFlagService: DirtyFlagService,\n private pngService: PngService,\n private svgService: SvgService,\n private htmlPresentationService: HtmlPresentationService,\n private rendererService: RendererService\n ) {\n this.titleSubscription = this.titleService.title$.subscribe(\n (title: string) => {\n this.title = title;\n }\n );\n this.descriptionSubscription = this.titleService.description$.subscribe(\n (description: string) => {\n this.description = description;\n }\n );\n }\n\n ngOnDestroy(): void {\n this.titleSubscription.unsubscribe();\n this.descriptionSubscription.unsubscribe();\n }\n\n isDomainStoryExportable(): boolean {\n return this.rendererService.getStory().length >= 1;\n }\n\n createConfigAndDST(DomainStory: any): ConfigAndDST {\n return new ConfigAndDST(\n this.configurationService.getCurrentConfigurationForExport(),\n DomainStory\n );\n }\n\n downloadDST(): void {\n const dst = this.getStoryForDownload();\n const configAndDST = this.createConfigAndDST(dst);\n const json = JSON.stringify(configAndDST, null, 2);\n\n const filename = sanitizeForDesktop(\n this.title + '_' + this.getCurrentDateString()\n );\n\n this.downloadFile(\n json,\n 'data:text/plain;charset=utf-8,',\n filename,\n '.egn',\n true\n );\n }\n\n private downloadFile(\n data: string,\n datatype: string,\n filename: string,\n fileEnding: string,\n makeClean: boolean\n ) {\n const element = document.createElement('a');\n element.setAttribute('href', datatype + encodeURIComponent(data));\n element.setAttribute('download', filename + fileEnding);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n if (makeClean) {\n this.dirtyFlagService.makeClean();\n }\n\n document.body.removeChild(element);\n }\n\n downloadSVG(withTitle: boolean, useWhiteBackground: boolean): void {\n const story = this.getStoryForDownload();\n const dst = this.createConfigAndDST(story);\n\n const svgData = this.svgService.createSVGData(\n this.title,\n this.description,\n dst,\n withTitle,\n useWhiteBackground\n );\n\n this.downloadFile(\n svgData,\n 'data:application/bpmn20-xml;charset=UTF-8,',\n sanitizeForDesktop(this.title + '_' + this.getCurrentDateString()),\n '.egn.svg',\n true\n );\n }\n\n downloadPNG(withTitle: boolean): void {\n const canvas = document.getElementById('canvas');\n if (canvas) {\n const container = canvas.getElementsByClassName('djs-container');\n const svgElements = container[0].getElementsByTagName('svg');\n const outerSVGElement = svgElements[0];\n const viewport = outerSVGElement.getElementsByClassName('viewport')[0];\n const layerBase = viewport.getElementsByClassName('layer-base')[0];\n\n const image = document.createElement('img');\n\n // removes unwanted black dots in image\n let svg = this.pngService.extractSVG(viewport, outerSVGElement);\n\n svg = this.pngService.prepareSVG(\n svg,\n layerBase,\n this.description,\n this.title,\n withTitle\n );\n\n image.onload = () => {\n const tempCanvas = document.createElement('canvas');\n\n // add a 10px buffer to the right and lower boundary\n tempCanvas.width = this.pngService.getWidth() + 10;\n tempCanvas.height = this.pngService.getHeight() + 10;\n\n const ctx = tempCanvas.getContext('2d');\n if (ctx) {\n // fill with white background\n ctx.rect(0, 0, tempCanvas.width, tempCanvas.height);\n ctx.fillStyle = 'white';\n ctx.fill();\n\n ctx.drawImage(image, 0, 0);\n }\n\n const png64 = tempCanvas.toDataURL('image/png');\n const ele = document.createElement('a');\n ele.setAttribute(\n 'download',\n sanitizeForDesktop(this.title) +\n '_' +\n this.getCurrentDateString() +\n '.png'\n );\n ele.setAttribute('href', png64);\n document.body.appendChild(ele);\n ele.click();\n document.body.removeChild(ele);\n\n // image source has to be removed to circumvent browser caching\n image.src = '';\n };\n image.onchange = image.onload;\n\n image.width = this.pngService.getWidth();\n image.height = this.pngService.getHeight();\n\n image.src = 'data:image/svg+xml,' + svg;\n }\n }\n\n downloadHTMLPresentation(): void {\n const filename = sanitizeForDesktop(\n this.title + '_' + this.getCurrentDateString()\n );\n this.htmlPresentationService.downloadHTMLPresentation(filename).then();\n }\n\n private getStoryForDownload(): unknown[] {\n const story = this.rendererService.getStory() as unknown[];\n story.push({ info: this.titleService.getDescription() });\n story.push({ version: environment.version });\n return story;\n }\n\n private getCurrentDateString(): string {\n return formatDate(new Date(), 'YYYY-MM-dd', 'en-GB');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { sanitizeForDesktop } from '../../Utils/sanitizer';\nimport { ReplayService } from '../Replay/replay.service';\n// @ts-ignore\nimport doT from 'dot';\nimport { TitleService } from '../Title/title.service';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Initial idea and PR from https://github.com/indika-dev\n */\nexport class HtmlPresentationService {\n constructor(\n private replayService: ReplayService,\n private titleService: TitleService\n ) {}\n\n private multiplexSecret: any;\n private multiplexId: any;\n\n private modeler: any;\n\n setModelerClasses(canvas: any, selection: any, modeler: any): void {\n this.modeler = modeler;\n }\n\n private static viewBoxCoordinates(svg: any): any {\n const ViewBoxCoordinate =\n /width=\"([^\"]+)\"\\s+height=\"([^\"]+)\"\\s+viewBox=\"([^\"]+)\"/;\n const match = svg.match(ViewBoxCoordinate);\n return match[3];\n }\n\n /*\n ---------------------------\n SVG handling starts here\n ----------------------------\n */\n\n async downloadHTMLPresentation(filename: string): Promise {\n const svgData = [];\n // export all sentences of domain story\n this.replayService.startReplay();\n try {\n const result = await this.modeler.saveSVG({});\n this.fixActivityMarkersForEachStep(\n result,\n this.replayService.getCurrentStepNumber()\n );\n svgData.push({\n content: HtmlPresentationService.createSVGData(result.svg),\n transition: 'slide',\n });\n } catch (err) {\n alert('There was an error exporting the SVG.\\n' + err);\n }\n while (\n this.replayService.getCurrentStepNumber() <\n this.replayService.getMaxStepNumber()\n ) {\n this.replayService.nextStep();\n try {\n const result = await this.modeler.saveSVG({});\n this.fixActivityMarkersForEachStep(\n result,\n this.replayService.getCurrentStepNumber()\n );\n svgData.push({\n content: HtmlPresentationService.createSVGData(result.svg),\n transition: 'slide',\n });\n } catch (err) {\n alert('There was an error exporting the SVG.\\n' + err);\n }\n }\n this.replayService.stopReplay();\n\n // create download for presentation\n const revealjsTemplate = document.getElementById('revealjs-template');\n const dots = doT.template(revealjsTemplate?.innerHTML);\n const revealjsData = {\n script: 'script',\n title: this.titleService.getTitle(),\n description: this.titleService.getDescription(),\n sentences: svgData,\n multiplexSecret: this.multiplexSecret,\n multiplexId: this.multiplexId,\n };\n const element = document.createElement('a');\n element.setAttribute(\n 'href',\n 'data:text/html;charset=UTF-8,' +\n this.fixMalformedHtmlScript(dots, revealjsData)\n );\n element.setAttribute('download', sanitizeForDesktop(filename) + '.html');\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n private fixMalformedHtmlScript(\n dots: any,\n revealjsData: {\n multiplexId: any;\n sentences: any[];\n multiplexSecret: any;\n description: string;\n title: string;\n script: string;\n }\n ) {\n return dots(revealjsData).replace(''),\n result.svg.indexOf('') + 7\n );\n const split = defs.split(' {\n const idToReplace = id.substring(4, id.length - 1);\n const newId =\n idToReplace.slice(0, id.length - 5) +\n 'customId' +\n sectionIndex +\n idToReplace.slice(idToReplace.length - 2);\n // @ts-ignore\n result.svg = result.svg.replaceAll(idToReplace, newId);\n });\n newDefs += '= 72) {\n fix = true;\n // https://www.chromestatus.com/features/5656049583390720\n }\n } else if (name.includes('Firefox')) {\n fix = true;\n\n // versionNumber of implementation unknown\n }\n if (fix) {\n while (svg.includes('#')) {\n svg = svg.replace('#', '%23');\n }\n }\n return svg;\n }\n\n findMostOuterElements(svg: HTMLElement): Box {\n let xLeft = 0;\n let xRight = 0;\n let yUp = 0;\n let yDown = 0;\n\n const elements = svg.getElementsByClassName('djs-group');\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const sub = element.children;\n\n let elXLeft: number;\n let elXRight: number;\n let elYUp: number;\n let elYDown: number;\n\n const transform = sub[0].getAttribute('transform');\n if (transform) {\n let nums;\n\n if (transform.includes('matrix')) {\n transform.replace('matrix(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[4]);\n elYUp = parseInt(nums[5]);\n } else {\n transform.replace('translate(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[0]);\n elYUp = parseInt(nums[1]);\n }\n\n const rects = sub[0].getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const width = outerRect.getAttribute('width');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + sub[0].getBoundingClientRect().height;\n } else {\n const rects = element.getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const x = outerRect.getAttribute('x');\n const y = outerRect.getAttribute('y');\n\n elXLeft = parseInt(x != null ? x : '0');\n elYUp = parseInt(y != null ? y : '0');\n\n const width = outerRect.getAttribute('width');\n const height = outerRect.getAttribute('height');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + parseInt(height != null ? height : '0') + 20; // Add 20 px as Padding for text at the bottom\n }\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elXRight > xRight) {\n xRight = elXRight;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n if (elYDown > yDown) {\n yDown = elYDown;\n }\n }\n\n yUp -= 75; // we need to adjust yUp to have space for the title and description\n\n return {\n xLeft,\n xRight,\n yUp,\n yDown,\n };\n }\n\n prepareSVG(\n svg: string,\n layerBase: any,\n description: string,\n title: string,\n withTitle: boolean\n ): string {\n const box = this.findMostOuterElements(layerBase);\n let viewBoxIndex = svg.indexOf('width=\"');\n\n this.calculateWidthAndHeight(box);\n\n const { insertText, extraHeight } = createTitleAndDescriptionSVGElement(\n title,\n description,\n box.xLeft + 10,\n box.yUp + 20,\n this.width\n );\n if (withTitle) {\n this.height += extraHeight;\n }\n\n const bounds = this.createBounds(box, extraHeight);\n\n const dataStart = svg.substring(0, viewBoxIndex);\n viewBoxIndex = svg.indexOf('style=\"');\n\n const dataEnd = svg.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n svg = dataStart + bounds + dataEnd;\n\n const insertIndex = svg.indexOf('') + 20;\n\n if (withTitle) {\n svg = [\n svg.slice(0, insertIndex),\n insertText,\n svg.slice(insertIndex),\n ].join('');\n }\n svg = this.URIHashtagFix(svg);\n\n return svg;\n }\n\n private createBounds(box: Box, extraHeight: number) {\n return (\n 'width=\"' +\n this.width +\n '\" height=\"' +\n this.height +\n '\" viewBox=\" ' +\n box.xLeft +\n ' ' +\n (box.yUp - extraHeight) +\n ' ' +\n this.width +\n ' ' +\n this.height +\n '\" '\n );\n }\n\n /**\n * Calculate the Width and Height of the Bounding Box for the PNG so no Parts are cut off\n */\n private calculateWidthAndHeight(box: Box): [number, number] {\n if (box.xLeft < 0) {\n if (box.xRight < 0) {\n this.width = Math.abs(box.xLeft - box.xRight);\n } else {\n this.width = Math.abs(box.xLeft) + box.xRight;\n }\n } else {\n this.width = box.xRight - box.xLeft;\n }\n\n if (box.yUp < 0) {\n if (box.yDown < 0) {\n this.height = Math.abs(box.yUp - box.yDown);\n } else {\n this.height = Math.abs(box.yUp) + box.yDown;\n }\n } else {\n this.height = box.yDown - box.yUp;\n }\n\n // if the domain-Story is smaller than 300px in width or height, increase its dimensions\n if (this.height < 300) {\n this.height += 300;\n box.yUp -= 150;\n box.yDown += 150;\n }\n if (this.width < 300) {\n this.width += 300;\n box.xLeft -= 150;\n box.xRight += 150;\n }\n return [this.height, this.width];\n }\n\n extractSVG(viewport: any, outerSVGElement: any): string {\n const layerResizers = viewport.getElementsByClassName('layer-resizers');\n const layerOverlays = viewport.getElementsByClassName('layer-overlays');\n const transform = viewport.getAttribute('transform');\n const translate = viewport.getAttribute('translate');\n\n if (layerResizers[0]) {\n layerResizers[0].parentNode.removeChild(layerResizers[0]);\n }\n if (layerOverlays[0]) {\n layerOverlays[0].parentNode.removeChild(layerOverlays[0]);\n }\n\n // remove canvas scrolling and scaling before serializeToString of SVG\n if (transform) {\n viewport.removeAttribute('transform');\n }\n if (translate) {\n viewport.removeAttribute('translate');\n }\n\n const svg = new XMLSerializer().serializeToString(outerSVGElement);\n\n // re-add canvas scrolling and scaling\n if (transform) {\n viewport.setAttribute('transform', transform);\n }\n if (translate) {\n viewport.setAttribute('translate', translate);\n }\n return svg;\n }\n\n getWidth(): number {\n return this.width;\n }\n\n getHeight(): number {\n return this.height;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigAndDST } from 'src/app/Domain/Export/configAndDst';\nimport { createTitleAndDescriptionSVGElement } from 'src/app/Service/Export/exportUtil';\nimport { ModelerService } from '../Modeler/modeler.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SvgService {\n private cacheData = '';\n\n constructor(private modelerService: ModelerService) {}\n\n createSVGData(\n title: string,\n description: string,\n dst: ConfigAndDST,\n withTitle: boolean,\n useWhiteBackground: boolean\n ): string {\n this.cacheData = this.modelerService.getEncoded();\n\n let data = structuredClone(this.cacheData);\n\n let viewBoxIndex = data.indexOf('width=\"');\n\n let { width, height, viewBox } = this.viewBoxCoordinates(data);\n\n let xLeft: number;\n let xRight: number;\n let yUp: number;\n let yDown: number;\n const splitViewBox = viewBox.split(/\\s/);\n\n xLeft = +splitViewBox[0];\n yUp = +splitViewBox[1];\n xRight = +splitViewBox[2];\n yDown = +splitViewBox[3];\n\n if (xRight < 300) {\n xRight += 300;\n width += 300;\n }\n\n const { insertText } = createTitleAndDescriptionSVGElement(\n title,\n description,\n xLeft,\n yUp,\n width\n );\n\n const bounds = this.createBounds(\n width,\n height,\n xLeft,\n yUp,\n xRight,\n yDown,\n withTitle\n );\n\n const dataStart = data.substring(0, viewBoxIndex);\n viewBoxIndex = data.indexOf('\" version');\n\n const dataEnd = data.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n data = dataStart + bounds + dataEnd;\n\n const insertIndex = this.findIndexToInsertData(data);\n\n if (withTitle) {\n data = data.slice(0, insertIndex) + insertText + data.slice(insertIndex);\n }\n\n if (useWhiteBackground) {\n const svgIndex = data.indexOf('width=\"');\n const backgroundColorWhite = 'style=\"background-color:white\" ';\n data =\n data.slice(0, svgIndex) + backgroundColorWhite + data.slice(svgIndex);\n }\n\n return this.appendDST(data, dst);\n }\n\n private findIndexToInsertData(data: string) {\n let insertIndex = data.indexOf('');\n if (insertIndex < 0) {\n insertIndex = data.indexOf('version=\"1.2\">') + 14;\n } else {\n insertIndex += 7;\n }\n return insertIndex;\n }\n\n private createBounds(\n width: number,\n height: number,\n xLeft: number,\n yUp: number,\n xRight: number,\n yDown: number,\n withTitle: boolean\n ): string {\n return (\n 'width=\"' +\n width +\n '\" height=\" ' +\n height +\n '\" viewBox=\"' +\n xLeft +\n ' ' +\n (withTitle ? yUp - 80 : yUp) +\n ' ' +\n xRight +\n ' ' +\n (yDown + 30)\n );\n }\n\n private viewBoxCoordinates(svg: string): {\n width: number;\n height: number;\n viewBox: string;\n } {\n const ViewBoxCoordinate =\n /width=\"([^\"]+)\"\\s+height=\"([^\"]+)\"\\s+viewBox=\"([^\"]+)\"/;\n const match = svg.match(ViewBoxCoordinate);\n if (match) {\n return { width: +match[1], height: +match[2], viewBox: match[3] };\n }\n return { width: 0, height: 0, viewBox: '' };\n }\n\n private appendDST(data: string, dst: ConfigAndDST): string {\n data += '\\n';\n return data;\n }\n}\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { Dictionary } from 'src/app/Domain/Common/dictionary/dictionary';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { TitleService } from 'src/app/Service/Title/title.service';\nimport { ImportRepairService } from 'src/app/Service/Import/import-repair.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { RendererService } from 'src/app/Service/Renderer/renderer.service';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport {\n DomainConfiguration,\n fromConfigurationFromFile,\n} from 'src/app/Domain/Common/domainConfiguration';\nimport { DialogService } from '../Dialog/dialog.service';\nimport { InfoDialogComponent } from '../../Presentation/Dialog/info-dialog/info-dialog.component';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { InfoDialogData } from '../../Domain/Dialog/infoDialogData';\nimport { restoreTitleFromFileName } from '../../Utils/sanitizer';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\nimport { DomainConfigurationService } from '../DomainConfiguration/domain-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImportDomainStoryService implements OnDestroy {\n titleSubscription: Subscription;\n descriptionSubscription: Subscription;\n\n title = INITIAL_TITLE;\n description = INITIAL_DESCRIPTION;\n private importedConfiguration: DomainConfiguration | null = null;\n\n private importedConfigurationEmitter =\n new EventEmitter();\n\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private importRepairService: ImportRepairService,\n private titleService: TitleService,\n private rendererService: RendererService,\n private dialogService: DialogService,\n private domainConfigurationService: DomainConfigurationService,\n private snackbar: MatSnackBar\n ) {\n this.titleSubscription = this.titleService.title$.subscribe(\n (title: string) => {\n this.title = title;\n }\n );\n this.descriptionSubscription = this.titleService.description$.subscribe(\n (description: string) => {\n this.description = description;\n }\n );\n }\n\n ngOnDestroy(): void {\n this.titleSubscription.unsubscribe();\n this.descriptionSubscription.unsubscribe();\n }\n\n get importedConfigurationEvent(): Observable {\n return this.importedConfigurationEmitter.asObservable();\n }\n\n getImportedConfiguration(): DomainConfiguration {\n const config: DomainConfiguration = {\n name: this.importedConfiguration?.name || '',\n actors: this.importedConfiguration?.actors || new Dictionary(),\n workObjects: this.importedConfiguration?.workObjects || new Dictionary(),\n };\n this.importedConfiguration = null;\n return config;\n }\n\n importDST(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, false);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n importEGN(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, true);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n private fileReaderFunction(\n text: string | ArrayBuffer | null,\n isSVG: boolean,\n isEGN: boolean\n ): void {\n let dstText;\n if (typeof text === 'string') {\n if (isSVG) {\n dstText = this.removeXMLComments(text);\n } else {\n dstText = text;\n }\n\n let elements: any[];\n let config: DomainConfiguration;\n let configFromFile: {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n\n let dstAndConfig = this.extractDstAndConfig(dstText, isSVG);\n if (dstAndConfig == null) {\n return;\n }\n\n // current implementation\n if (dstAndConfig.domain) {\n configFromFile = isEGN\n ? dstAndConfig.domain\n : JSON.parse(dstAndConfig.domain);\n config = fromConfigurationFromFile(configFromFile);\n elements = isEGN ? dstAndConfig.dst : JSON.parse(dstAndConfig.dst);\n } else {\n // legacy implementation\n if (dstAndConfig.config) {\n configFromFile = JSON.parse(dstAndConfig.config);\n config = fromConfigurationFromFile(configFromFile);\n elements = JSON.parse(dstAndConfig.dst);\n } else {\n // implementation prior to configuration\n elements = JSON.parse(dstText);\n config =\n this.domainConfigurationService.createMinimalConfigurationWithDefaultIcons();\n }\n }\n\n const configChanged = this.checkConfigForChanges(config);\n\n let lastElement = elements[elements.length - 1];\n if (!lastElement.id) {\n lastElement = elements.pop();\n let importVersionNumber = lastElement;\n\n // if the last element has the importedVersionNumber has the tag version,\n // then there exists another meta tag 'info' for the description\n if (importVersionNumber.version) {\n lastElement = elements.pop();\n }\n\n if (importVersionNumber.version) {\n importVersionNumber = importVersionNumber.version as string;\n } else {\n importVersionNumber = '?';\n this.snackbar.open(`The version number is unreadable.`, undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\n });\n }\n elements = this.handleVersionNumber(importVersionNumber, elements);\n }\n\n if (\n !this.importRepairService.checkForUnreferencedElementsInActivitiesAndRepair(\n elements\n )\n ) {\n this.showBrokenImportDialog(isSVG ? 'SVG' : 'DST');\n }\n\n this.titleService.updateTitleAndDescription(\n null,\n lastElement.info,\n false\n );\n\n this.importRepairService.adjustPositions(elements);\n\n this.updateIconRegistries(elements, config);\n this.rendererService.importStory(elements, configChanged, config);\n }\n }\n\n private handleVersionNumber(\n importVersionNumber: string,\n elements: BusinessObject[]\n ): BusinessObject[] {\n const versionPrefix = +importVersionNumber.substring(\n 0,\n importVersionNumber.lastIndexOf('.')\n );\n if (versionPrefix <= 0.5) {\n elements =\n this.importRepairService.updateCustomElementsPreviousV050(elements);\n this.showPreviousV050Dialog(versionPrefix);\n }\n return elements;\n }\n\n private extractDstAndConfig(dstText: string, isSVG: boolean) {\n let dstAndConfig = null;\n try {\n dstAndConfig = JSON.parse(dstText);\n } catch (e) {\n this.showBrokenImportDialog(isSVG ? 'SVG' : 'DST');\n }\n return dstAndConfig;\n }\n\n private removeXMLComments(xmlText: string): string {\n xmlText = xmlText.substring(xmlText.indexOf(''));\n while (xmlText.includes('')) {\n xmlText = xmlText.replace('', '');\n }\n xmlText = xmlText.replace('', '');\n xmlText = xmlText.replace('', '');\n return xmlText;\n }\n\n checkConfigForChanges(domainConfiguration: DomainConfiguration): boolean {\n const newActorKeys = domainConfiguration.actors.keysArray();\n const newWorkObjectKeys = domainConfiguration.workObjects.keysArray();\n\n const currentActorKeys = this.iconDictionaryService.getTypeDictionaryKeys(\n elementTypes.ACTOR\n );\n const currentWorkobjectKeys =\n this.iconDictionaryService.getTypeDictionaryKeys(elementTypes.WORKOBJECT);\n\n let changed = false;\n\n if (\n newActorKeys.length !== currentActorKeys.length ||\n newWorkObjectKeys.length !== currentWorkobjectKeys.length\n ) {\n return true;\n }\n\n for (let i = 0; i < newActorKeys.length; i++) {\n changed =\n this.clearName(currentActorKeys[i]) !== this.clearName(newActorKeys[i]);\n if (changed) {\n i = newActorKeys.length;\n }\n }\n if (changed) {\n return changed;\n }\n for (let i = 0; i < newWorkObjectKeys.length; i++) {\n changed =\n this.clearName(currentWorkobjectKeys[i]) !==\n this.clearName(newWorkObjectKeys[i]);\n if (changed) {\n i = newWorkObjectKeys.length;\n }\n }\n return changed;\n }\n\n private clearName(name: string): string {\n return name\n .replace(elementTypes.ACTOR, '')\n .replace(elementTypes.WORKOBJECT, '');\n }\n\n private updateIconRegistries(\n elements: BusinessObject[],\n config: DomainConfiguration\n ): void {\n const actorIcons = this.iconDictionaryService.getElementsOfType(\n elements,\n elementTypes.ACTOR\n );\n const workObjectIcons = this.iconDictionaryService.getElementsOfType(\n elements,\n elementTypes.WORKOBJECT\n );\n this.iconDictionaryService.updateIconRegistries(\n actorIcons,\n workObjectIcons,\n config\n );\n\n this.setImportedConfigurationAndEmit(config);\n }\n\n private showPreviousV050Dialog(version: number): void {\n const title = 'Compatability-Warning';\n const text =\n 'The uploaded Domain-Story is from version ' +\n version +\n '. There may be problems with the default actors or workobjects contained in the story.';\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, text, true);\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n\n private setImportedConfigurationAndEmit(config: DomainConfiguration) {\n this.importedConfiguration = config;\n this.importedConfigurationEmitter.emit(config);\n }\n\n private showBrokenImportDialog(type: string) {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = new InfoDialogData(\n 'Error during import',\n 'The uploaded ' +\n type +\n ' is not complete, there could be elements missing from the canvas.',\n true,\n false\n );\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { Waypoint } from 'src/app/Domain/Common/waypoint';\nimport { ActivityBusinessObject } from '../../Domain/Common/activityBusinessObject';\n\n/**\n * Repairs broken Domain Stories so that it can be rendered onto the canvas\n * by removing activities and connections that reference elements that don't exists\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ImportRepairService {\n checkForUnreferencedElementsInActivitiesAndRepair(\n elements: BusinessObject[]\n ): boolean {\n const activities: ActivityBusinessObject[] = [];\n const objectIDs: string[] = [];\n\n let complete = true;\n\n elements.forEach((element) => {\n const type = element.type;\n if (type === elementTypes.ACTIVITY || type === elementTypes.CONNECTION) {\n activities.push(element as ActivityBusinessObject);\n } else {\n objectIDs.push(element.id);\n }\n });\n\n activities.forEach((activity) => {\n const source = activity.source;\n const target = activity.target;\n if (!objectIDs.includes(source) || !objectIDs.includes(target)) {\n complete = false;\n const activityIndex = elements.indexOf(activity);\n elements = elements.splice(activityIndex, 1);\n }\n });\n return complete;\n }\n\n /**\n * Ensure backwards compatibility.\n * Previously Document had no special name and was just addressed as workObject\n * Bubble was renamed to Conversation\n */\n updateCustomElementsPreviousV050(\n elements: BusinessObject[]\n ): BusinessObject[] {\n for (const element of elements) {\n if (element.type === elementTypes.WORKOBJECT) {\n element.type = elementTypes.WORKOBJECT + 'Document';\n } else if (element.type === elementTypes.WORKOBJECT + 'Bubble') {\n element.type = elementTypes.WORKOBJECT + 'Conversation';\n }\n }\n return elements;\n }\n\n /**\n * Adjusts Positions of Elements to ensure the Domain Story starts in the visible parts of the canvas\n */\n adjustPositions(elements: BusinessObject[]): void {\n let xLeft = 0;\n let yUp = 0;\n let isFirst = true;\n\n this.findFirstElement(elements, isFirst, xLeft, yUp);\n\n if (xLeft < 75 || xLeft > 150 || yUp < 0 || yUp > 50) {\n // add Padding for the Palette and the top\n xLeft -= 75;\n yUp -= 50;\n\n elements.forEach((element) =>\n this.adjustElementPosition(element, xLeft, yUp)\n );\n }\n }\n\n private adjustElementPosition(\n element: BusinessObject,\n xLeft: number,\n yUp: number\n ): void {\n if (\n element.type === elementTypes.ACTIVITY ||\n element.type === elementTypes.CONNECTION\n ) {\n const waypoints = (element as ActivityBusinessObject).waypoints;\n waypoints.forEach((point: Waypoint) => {\n point.x -= xLeft;\n point.y -= yUp;\n\n if (point.original) {\n point.original.x = point.x;\n point.original.y = point.y;\n }\n });\n } else {\n element.x -= xLeft;\n element.y -= yUp;\n }\n }\n\n private findFirstElement(\n elements: BusinessObject[],\n isFirst: boolean,\n xLeft: number,\n yUp: number\n ) {\n elements.forEach((element) => {\n let elXLeft;\n let elYUp;\n if (\n element.type !== elementTypes.ACTIVITY &&\n element.type !== elementTypes.CONNECTION\n ) {\n if (isFirst) {\n xLeft = element.x;\n yUp = element.y;\n isFirst = false;\n }\n elXLeft = element.x;\n elYUp = element.y;\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { elementTypes } from 'src/app/Domain/Common/elementTypes';\nimport { MassNamingService } from 'src/app/Service/LabelDictionary/mass-naming.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { WorkObjectLabelEntry } from '../../Domain/LabelDictionary/workObjectLabelEntry';\nimport { LabelEntry } from '../../Domain/LabelDictionary/labelEntry';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LabelDictionaryService {\n activityLabels: LabelEntry[] = [];\n workObjektLabels: WorkObjectLabelEntry[] = [];\n\n constructor(\n private massNamingService: MassNamingService,\n private elementRegistryService: ElementRegistryService,\n private iconDictionaryService: IconDictionaryService\n ) {}\n\n createLabelDictionaries(): void {\n this.activityLabels = [];\n this.workObjektLabels = [];\n\n const allObjects = this.elementRegistryService.getAllCanvasObjects();\n\n allObjects.forEach((element) => {\n const name = element.businessObject.name;\n if (\n name &&\n name.length > 0 &&\n element.type.includes(elementTypes.ACTIVITY) &&\n !this.activityLabels.map((a) => a.name).includes(name)\n ) {\n this.activityLabels.push({\n name,\n originalName: name,\n });\n } else if (\n name &&\n name.length > 0 &&\n element.type.includes(elementTypes.WORKOBJECT) &&\n !this.workObjektLabels.map((e) => e.name).includes(name)\n ) {\n const iconName = element.type.replace(elementTypes.WORKOBJECT, '');\n let icon = this.iconDictionaryService.getIconSource(iconName);\n if (!icon) {\n return;\n }\n if (!icon.startsWith('data')) {\n icon = 'data:image/svg+xml,' + icon;\n }\n this.workObjektLabels.push({\n name,\n originalName: name,\n icon,\n });\n }\n });\n this.activityLabels.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n this.workObjektLabels.sort((a, b) => {\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\n });\n }\n\n getActivityLabels(): LabelEntry[] {\n return this.activityLabels.slice();\n }\n\n getWorkObjectLabels(): WorkObjectLabelEntry[] {\n return this.workObjektLabels.slice();\n }\n\n getUniqueWorkObjectNames(): String[] {\n const workObjects = this.elementRegistryService.getAllWorkobjects();\n return [\n ...new Set(\n workObjects\n .filter((workObject) => {\n return !!workObject.businessObject.name;\n })\n .map((workObject) => workObject.businessObject.name)\n ),\n ];\n }\n\n massRenameLabels(\n activityNames: string[],\n originalActivityNames: string[],\n workObjectNames: string[],\n originalWorkObjectNames: string[]\n ): void {\n for (let i = 0; i < originalActivityNames.length; i++) {\n if (!activityNames[i]) {\n activityNames[i] = '';\n }\n if (!(activityNames[i] == originalActivityNames[i])) {\n this.massNamingService.massChangeNames(\n originalActivityNames[i],\n activityNames[i],\n elementTypes.ACTIVITY\n );\n }\n }\n for (let i = 0; i < originalWorkObjectNames.length; i++) {\n if (!workObjectNames[i]) {\n workObjectNames[i] = '';\n }\n if (!(workObjectNames[i] == originalWorkObjectNames[i])) {\n this.massNamingService.massChangeNames(\n originalWorkObjectNames[i],\n workObjectNames[i],\n elementTypes.WORKOBJECT\n );\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { CanvasObject } from 'src/app/Domain/Common/canvasObject';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { CommandStackService } from '../CommandStack/command-stack.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MassNamingService {\n constructor(\n private elementRegistryService: ElementRegistryService,\n private commandStackService: CommandStackService\n ) {}\n\n massChangeNames(\n oldValue: string,\n newValue: string,\n type: elementTypes\n ): void {\n const allRelevantObjects: CanvasObject[] = [];\n\n this.elementRegistryService.getAllCanvasObjects().forEach((element) => {\n if (\n element.type.includes(type) &&\n element.businessObject.name === oldValue\n ) {\n allRelevantObjects.push(element);\n }\n });\n\n const context = {\n elements: allRelevantObjects,\n newValue,\n };\n\n this.commandStackService.execute('domainStoryObjects.massRename', context);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { initializeContextPadProvider } from '../../Modeler/modeler/context-pad/domainStoryContextPadProvider';\nimport {\n getMultipleNumberRegistry,\n getNumberRegistry,\n initializeNumbering,\n setNumberIsMultiple,\n updateExistingNumbersAtEditing,\n} from '../../Modeler/modeler/numbering/numbering';\nimport { initializePalette } from '../../Modeler/modeler/palette/domainStoryPalette';\nimport { initializeRenderer } from '../../Modeler/modeler/domainStoryRenderer';\nimport {\n initializeLabelEditingProvider,\n toggleStashUse,\n} from '../../Modeler/modeler/labeling/dsLabelEditingProvider';\nimport { initializeReplaceOptions } from '../../Modeler/modeler/change-icon/replaceOptions';\n\nimport { DirtyFlagService } from '../DirtyFlag/dirty-flag.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { ElementRegistryService } from '../ElementRegistry/element-registry.service';\nimport { DomainConfigurationService } from '../DomainConfiguration/domain-configuration.service';\nimport { LabelDictionaryService } from '../LabelDictionary/label-dictionary.service';\nimport { elementTypes } from '../../Domain/Common/elementTypes';\nimport { ReplayStateService } from '../Replay/replay-state.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ActivityDialogData } from '../../Domain/Dialog/activityDialogData';\nimport { ActivityDialogComponent } from '../../Presentation/Dialog/activity-dialog/activity-dialog.component';\nimport { DialogService } from '../Dialog/dialog.service';\nimport massRenameHandler from '../../Modeler/modeler/updateHandler/massRenameHandler';\nimport headlineAndDescriptionUpdateHandler from '../../Modeler/modeler/updateHandler/headlineAndDescriptionUpdateHandler';\nimport { TitleService } from '../Title/title.service';\nimport { ActivityCanvasObject } from '../../Domain/Common/activityCanvasObject';\nimport { HtmlPresentationService } from '../Export/html-presentation.service';\nimport { positionsMatch } from '../../Utils/mathExtensions';\nimport activityUpdateHandler, {\n initializeActivityUpdateHandler,\n} from '../../Modeler/modeler/updateHandler/activityUpdateHandlers';\nimport elementUpdateHandler from '../../Modeler/modeler/updateHandler/elementUpdateHandler';\nimport { CommandStackService } from '../CommandStack/command-stack.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializerService {\n constructor(\n private dirtyFlagService: DirtyFlagService,\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private configurationService: DomainConfigurationService,\n private labelDictionaryService: LabelDictionaryService,\n private replayStateService: ReplayStateService,\n private dialogService: DialogService,\n private commandStackService: CommandStackService,\n private titleService: TitleService,\n private htmlPresentationService: HtmlPresentationService\n ) {}\n\n initializeDomainStoryModelerClasses(): void {\n initializeContextPadProvider(\n this.dirtyFlagService,\n this.iconDictionaryService\n );\n /** The Palette and the Context Menu need the Icons present in the Domain,\n * so the IconDictionaryService and the DomainConfigurationService needs to be given to the Palette **/\n initializePalette(this.iconDictionaryService, this.configurationService);\n initializeRenderer(\n this.iconDictionaryService,\n this.elementRegistryService,\n this.dirtyFlagService\n );\n initializeLabelEditingProvider(this.labelDictionaryService);\n initializeReplaceOptions(this.iconDictionaryService);\n initializeNumbering(this.elementRegistryService);\n initializeActivityUpdateHandler(this.elementRegistryService);\n }\n\n propagateDomainStoryModelerClassesToServices(\n commandStack: any,\n elementRegistry: any,\n canvas: any,\n selection: any,\n modeler: any\n ): void {\n this.commandStackService.setCommandStack(commandStack);\n this.elementRegistryService.setElementRegistry(elementRegistry);\n this.htmlPresentationService.setModelerClasses(canvas, selection, modeler);\n }\n\n initializeDomainStoryModelerEventHandlers(\n commandStack: any,\n eventBus: any\n ): void {\n activityUpdateHandler(commandStack, eventBus);\n massRenameHandler(commandStack, eventBus);\n elementUpdateHandler(commandStack, eventBus);\n headlineAndDescriptionUpdateHandler(commandStack, this.titleService);\n }\n\n initiateEventBusListeners(eventBus: any, commandStack: any): void {\n eventBus.on('element.dblclick', (e: any) => {\n if (!this.replayStateService.getReplayOn()) {\n const element = e.element;\n if (element.type === elementTypes.ACTIVITY) {\n // override the doubleClickListener on activities\n this.activityDoubleClick(element, eventBus, commandStack);\n } else {\n const renderedNumberRegistry = getNumberRegistry();\n\n // add a DoubleClickListener to the number on activities\n if (renderedNumberRegistry.length > 1) {\n const allActivities =\n this.elementRegistryService.getActivitiesFromActors();\n\n if (allActivities.length > 0) {\n const htmlCanvas = document.getElementById('canvas');\n if (htmlCanvas) {\n const container =\n htmlCanvas.getElementsByClassName('djs-container');\n const svgElements = container[0].getElementsByTagName('svg');\n const outerSVGElement = svgElements[0];\n const viewport =\n outerSVGElement.getElementsByClassName('viewport')[0];\n let transform = viewport.getAttribute('transform');\n\n let transformX = 0;\n let transformY = 0;\n let zoomX = 1;\n let zoomY = 1;\n let nums;\n\n const clickX = e.originalEvent.offsetX;\n const clickY = e.originalEvent.offsetY;\n\n // adjust for zoom and panning\n if (transform) {\n transform = transform.replace('matrix(', '');\n transform.replace(')', '');\n nums = transform.split(',');\n zoomX = parseFloat(nums[0]);\n zoomY = parseFloat(nums[3]);\n transformX = parseInt(nums[4], undefined);\n transformY = parseInt(nums[5], undefined);\n }\n\n const width = 25 * zoomX;\n const height = 22 * zoomY;\n\n for (let i = 1; i < renderedNumberRegistry.length; i++) {\n const currentNum = renderedNumberRegistry[i];\n if (currentNum) {\n const tspan = currentNum.getElementsByTagName('tspan')[0];\n const tx = tspan.getAttribute('x');\n const ty = tspan.getAttribute('y');\n const tNumber = parseInt(tspan.innerHTML, undefined);\n\n const elementX = Math.floor(\n tx * zoomX + (transformX - 11 * zoomX)\n );\n const elementY = Math.floor(\n ty * zoomY + (transformY - 15 * zoomY)\n );\n\n allActivities.forEach((activity: ActivityCanvasObject) => {\n const activityNumber = activity.businessObject.number;\n if (activityNumber === tNumber) {\n if (\n positionsMatch(\n width,\n height,\n elementX,\n elementY,\n clickX,\n clickY\n )\n ) {\n this.activityDoubleClick(\n activity,\n eventBus,\n commandStack\n );\n }\n }\n });\n }\n }\n }\n }\n }\n }\n }\n });\n\n // when in replay, do not allow any interaction on the canvas\n eventBus.on(\n [\n 'element.click',\n 'element.dblclick',\n 'element.mousedown',\n 'drag.init',\n 'canvas.viewbox.changing',\n 'autoPlace',\n 'popupMenu.open',\n ],\n 10000000000,\n (event: any) => {\n if (this.replayStateService.getReplayOn()) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n );\n }\n\n /** Overrrides for Canvas Functions **/\n private activityDoubleClick(\n activity: ActivityCanvasObject,\n eventBus: any,\n commandStack: any\n ): void {\n const source = activity.source;\n\n // ensure the right number when changing the direction of an activity\n toggleStashUse(false);\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n if (\n activity.businessObject.number &&\n source &&\n source.type.includes(elementTypes.ACTOR)\n ) {\n config.data = new ActivityDialogData(\n activity,\n getMultipleNumberRegistry()[activity.businessObject.number],\n true,\n (data: any) => this.saveActivityInputLabel(data, eventBus, commandStack)\n );\n } else if (source && source.type.includes(elementTypes.WORKOBJECT)) {\n config.data = new ActivityDialogData(\n activity,\n false,\n false,\n (activityData: any) =>\n this.saveActivityInputLabel(activityData, eventBus, commandStack)\n );\n }\n this.dialogService.openDialog(ActivityDialogComponent, config);\n }\n\n private saveActivityInputLabel(\n activityData: any,\n eventBus: any,\n commandStack: any\n ): void {\n const label = activityData.activityLabel;\n const hasNumber = activityData.activityNumber ?? false;\n const activityNumber = activityData.activityNumber;\n const multipleNumberAllowed = activityData.multipleNumbers ?? false;\n const element = activityData.activity;\n\n const activitiesFromActors =\n this.elementRegistryService.getActivitiesFromActors();\n const index = activitiesFromActors.indexOf(element);\n\n activitiesFromActors.splice(index, 1);\n if (hasNumber) {\n setNumberIsMultiple(activityNumber, multipleNumberAllowed);\n }\n element.businessObject.multipleNumberAllowed = multipleNumberAllowed;\n\n let options: any;\n if (hasNumber) {\n options = {\n businessObject: element.businessObject,\n newLabel: label,\n newNumber: activityNumber,\n element,\n };\n } else {\n options = {\n businessObject: element.businessObject,\n newLabel: label,\n element,\n };\n }\n\n commandStack.execute('activity.changed', options);\n if (element.businessObject.multipleNumberAllowed !== false) {\n if (getMultipleNumberRegistry()[activityNumber] === false) {\n updateExistingNumbersAtEditing(\n activitiesFromActors,\n activityNumber,\n eventBus\n );\n }\n } else if (element.businessObject.multipleNumberAllowed === false) {\n updateExistingNumbersAtEditing(\n activitiesFromActors,\n activityNumber,\n eventBus\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { assign } from 'min-dash';\nimport DomainStoryModeler from 'src/app/Modeler';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\nimport { InitializerService } from './initializer.service';\nimport { ElementRegistryService } from '../ElementRegistry/element-registry.service';\nimport { IconDictionaryService } from '../DomainConfiguration/icon-dictionary.service';\nimport { DomainConfigurationService } from '../DomainConfiguration/domain-configuration.service';\nimport { BusinessObject } from '../../Domain/Common/businessObject';\nimport { StorageService } from '../BrowserStorage/storage.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelerService {\n constructor(\n private initializerService: InitializerService,\n private elementRegistryService: ElementRegistryService,\n private iconDictionaryService: IconDictionaryService,\n private domainConfigurationService: DomainConfigurationService,\n private storageService: StorageService\n ) {}\n\n private modeler: any;\n private canvas: any;\n private elementRegistry: any;\n private commandStack: any;\n private selection: any;\n private eventBus: any;\n\n private encoded: string | undefined;\n\n postInit(): void {\n const storedDomainConfiguration =\n this.storageService.getStoredDomainConfiguration();\n if (storedDomainConfiguration) {\n this.iconDictionaryService.setCustomConfiguration(\n storedDomainConfiguration\n );\n this.domainConfigurationService.loadConfiguration(\n storedDomainConfiguration\n );\n }\n this.initializerService.initializeDomainStoryModelerClasses();\n this.modeler = new DomainStoryModeler({\n container: '#canvas',\n keyboard: {\n bindTo: document,\n },\n\n // Disable BPMN-SearchModule and re-enable browser Search\n additionalModules: [\n {\n bpmnSearch: ['value', 'foo'],\n },\n ],\n });\n\n if (this.modeler.get) {\n this.canvas = this.modeler.get('canvas');\n this.elementRegistry = this.modeler.get('elementRegistry');\n this.eventBus = this.modeler.get('eventBus');\n this.commandStack = this.modeler.get('commandStack');\n this.selection = this.modeler.get('selection');\n }\n\n this.initializerService.initializeDomainStoryModelerEventHandlers(\n this.commandStack,\n this.eventBus\n );\n this.initializerService.propagateDomainStoryModelerClassesToServices(\n this.commandStack,\n this.elementRegistry,\n this.canvas,\n this.selection,\n this.modeler\n );\n\n const exportArtifacts = this.debounce(this.saveSVG, 500);\n if (this.modeler.get) {\n this.modeler.on('commandStack.changed', exportArtifacts);\n }\n\n this.initializerService.initiateEventBusListeners(\n this.eventBus,\n this.commandStack\n );\n\n this.modeler.createDiagram();\n // expose bpmnjs to window for debugging purposes\n assign(window, { bpmnjs: this.modeler });\n\n this.startDebounce();\n }\n\n restart(\n domainConfiguration?: DomainConfiguration,\n domainStory?: BusinessObject[]\n ): void {\n const currentStory =\n domainStory != undefined\n ? domainStory\n : this.elementRegistryService\n .createObjectListForDSTDownload()\n .map((e) => e.businessObject);\n if (!domainConfiguration) {\n domainConfiguration = this.storageService.getStoredDomainConfiguration();\n }\n if (domainConfiguration) {\n this.storageService.setStoredDomainConfiguration(domainConfiguration);\n this.iconDictionaryService.setCustomConfiguration(domainConfiguration);\n this.domainConfigurationService.loadConfiguration(domainConfiguration);\n }\n\n this.elementRegistryService.clear();\n this.modeler?.destroy();\n this.postInit();\n if (currentStory && this.modeler.get) {\n this.modeler.importCustomElements(currentStory);\n }\n }\n\n /** Interactions with the Modeler **/\n getModeler(): any {\n return this.modeler;\n }\n\n commandStackChanged(): void {\n // to update the title of the svg, we need to tell the command stack, that a value has changed\n this.eventBus.fire(\n 'commandStack.changed',\n this.debounce(this.saveSVG, 500)\n );\n }\n\n startDebounce(): void {\n this.debounce(this.saveSVG, 500);\n }\n\n debounce(fn: any, timeout: number): any {\n return () => {\n let timer;\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n // tslint:disable-next-line:no-unused-expression\n fn(this.modeler).then((svg: string) => {\n this.encoded = svg;\n }) as Promise;\n }, timeout);\n };\n }\n\n getEncoded(): string {\n return this.encoded ? this.encoded : '';\n }\n\n async saveSVG(modeler: any): Promise {\n try {\n const result = await modeler.saveSVG();\n return result.svg;\n } catch (err) {\n alert('There was an error saving the SVG.\\n' + err);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModelerService } from 'src/app/Service/Modeler/modeler.service';\nimport { BusinessObject } from 'src/app/Domain/Common/businessObject';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { DirtyFlagService } from 'src/app/Service/DirtyFlag/dirty-flag.service';\nimport { DomainConfiguration } from 'src/app/Domain/Common/domainConfiguration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RendererService {\n constructor(\n private modelerService: ModelerService,\n private elementRegistryService: ElementRegistryService,\n private dirtyFlagService: DirtyFlagService\n ) {}\n\n renderStory(domainStory: BusinessObject[]): void {\n this.modelerService.getModeler().importCustomElements(domainStory);\n }\n\n reset(): void {\n this.renderStory([]);\n }\n\n importStory(\n domainStory: BusinessObject[],\n configurationChange: boolean,\n config?: DomainConfiguration,\n makeClean = true\n ): void {\n this.modelerService.restart(config, domainStory);\n this.renderStory(domainStory);\n\n this.elementRegistryService.correctInitialize();\n\n this.modelerService.commandStackChanged();\n this.modelerService.startDebounce();\n\n if (makeClean) {\n this.dirtyFlagService.makeClean();\n }\n }\n\n getStory(): BusinessObject[] {\n return this.elementRegistryService\n .createObjectListForDSTDownload()\n .map((c) => c.businessObject);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplayStateService {\n private replayOnSubject = new BehaviorSubject(false);\n\n replayOn$ = this.replayOnSubject.asObservable();\n\n setReplayState(state: boolean): void {\n this.replayOnSubject.next(state);\n }\n\n getReplayOn(): boolean {\n return this.replayOnSubject.value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplayStateService } from 'src/app/Service/Replay/replay-state.service';\nimport { DomManipulationService } from 'src/app/Service/DomManipulation/dom-manipulation.service';\nimport { StoryStep } from 'src/app/Domain/Replay/storyStep';\nimport { StoryCreatorService } from './storyCreator/story-creator.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../Domain/Common/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplayService {\n private story: StoryStep[] = [];\n private currentStep = new BehaviorSubject(-1);\n private maxStepNumber = new BehaviorSubject(0);\n\n currentStep$ = this.currentStep.asObservable();\n maxStepNumber$ = this.maxStepNumber.asObservable();\n\n constructor(\n private replayStateService: ReplayStateService,\n private domManipulationService: DomManipulationService,\n private storyCreatorService: StoryCreatorService,\n private snackbar: MatSnackBar\n ) {}\n\n isReplayable(): boolean {\n return this.storyCreatorService.traceActivitiesAndCreateStory().length > 0;\n }\n\n initializeReplay(): void {\n this.currentStep.next(1);\n this.story = this.storyCreatorService.traceActivitiesAndCreateStory();\n this.maxStepNumber.next(this.story.length);\n }\n\n getCurrentStepNumber(): number {\n return this.currentStep.value;\n }\n\n getMaxStepNumber(): number {\n return this.maxStepNumber.value;\n }\n\n nextStep(): void {\n if (this.currentStep.value < this.story.length) {\n this.currentStep.next(this.currentStep.value + 1);\n this.showCurrentStep();\n }\n }\n\n previousStep(): void {\n if (this.currentStep.value > 1) {\n this.currentStep.next(this.currentStep.value - 1);\n this.showCurrentStep();\n }\n }\n\n private showCurrentStep() {\n this.domManipulationService.showStep(\n this.story[this.currentStep.value - 1],\n this.currentStep.value > 1\n ? this.story[this.currentStep.value - 2]\n : undefined\n );\n }\n\n startReplay(): void {\n this.initializeReplay();\n if (this.story?.length) {\n const missingSteps = this.storyCreatorService.getMissingSteps(this.story);\n if (missingSteps.length === 0) {\n this.replayStateService.setReplayState(true);\n this.domManipulationService.showStep(\n this.story[this.currentStep.getValue() - 1]\n );\n } else {\n const steps = missingSteps.join(', ');\n this.snackbar.open(\n steps.length === 1\n ? `The Domain Story is not complete. Step ${steps} is missing.`\n : `The Domain Story is not complete. Steps ${steps} are missing.`,\n undefined,\n {\n duration: SNACKBAR_DURATION * 2,\n panelClass: SNACKBAR_INFO,\n }\n );\n }\n } else {\n this.snackbar.open('You need a Domain Story for replay.', undefined, {\n duration: SNACKBAR_DURATION * 2,\n panelClass: SNACKBAR_INFO,\n });\n }\n }\n\n stopReplay(): void {\n this.currentStep.next(-1);\n this.maxStepNumber.next(0);\n this.replayStateService.setReplayState(false);\n this.domManipulationService.showAll();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { elementTypes } from '../../../Domain/Common/elementTypes';\nimport { ActivityCanvasObject } from '../../../Domain/Common/activityCanvasObject';\nimport { BusinessObject } from '../../../Domain/Common/businessObject';\nimport { CanvasObject } from '../../../Domain/Common/canvasObject';\nimport { ElementRegistryService } from '../../ElementRegistry/element-registry.service';\nimport { StoryStep } from '../../../Domain/Replay/storyStep';\nimport { Dictionary } from '../../../Domain/Common/dictionary/dictionary';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StoryCreatorService {\n constructor(private elementRegistryService: ElementRegistryService) {}\n\n traceActivitiesAndCreateStory(): StoryStep[] {\n const tracedActivityMap = new Dictionary();\n const story: StoryStep[] = [];\n const activities = this.elementRegistryService.getActivitiesFromActors();\n\n activities.forEach((activity) => {\n const activityNumber = Number(activity.businessObject.number); // Sometimes the activityNumber is a string for some reason\n const tracedItem = tracedActivityMap.get(`${activityNumber - 1}`)\n ? tracedActivityMap.get(`${activityNumber - 1}`)\n : [];\n tracedItem.push(activity);\n tracedActivityMap.set(`${activityNumber - 1}`, tracedItem);\n });\n\n for (\n let i = 0;\n i <= Math.max(...tracedActivityMap.keysArray().map((it) => Number(it)));\n i++\n ) {\n this.createStep(tracedActivityMap, i, story);\n }\n this.addGroupStep(story);\n return story;\n }\n\n private createStep(\n tracedActivityMap: Dictionary,\n i: number,\n story: StoryStep[]\n ): void {\n const stepObjects = this.getStepObjects(\n tracedActivityMap.get(`${i}`) || []\n );\n const highlightedElements = stepObjects.map((t) => t.id);\n if (i > 0) {\n story[i - 1].objects.forEach((object) => {\n if (!stepObjects.includes(object)) {\n stepObjects.push(object);\n }\n });\n }\n story[i] = {\n highlightedObjects: highlightedElements,\n objects: stepObjects,\n };\n }\n\n getMissingSteps(story: StoryStep[]): number[] {\n if (!story || story.length === 0) {\n return [];\n }\n\n const missingSteps: number[] = [];\n for (let i = 0; i < story.length; i++) {\n if (\n !story[i] ||\n !(story[i].objects.length > 0) ||\n story[i].highlightedObjects.length === 0 ||\n story[i].objects.filter(\n (element) => element.type === elementTypes.ACTIVITY\n ).length <= 0\n ) {\n missingSteps.push(i + 1);\n }\n }\n return missingSteps;\n }\n\n private getStepObjects(\n tracedActivity: ActivityCanvasObject[]\n ): BusinessObject[] {\n const initialSource: CanvasObject[] = [];\n const activities = tracedActivity;\n const targetObjects: CanvasObject[] = [];\n\n tracedActivity.forEach((parallelStep: ActivityCanvasObject) => {\n initialSource.push(parallelStep.source);\n\n const firstTarget = parallelStep.target;\n targetObjects.push(firstTarget);\n\n // check the outgoing activities for each target\n for (const checkTarget of targetObjects) {\n if (\n checkTarget.businessObject &&\n !checkTarget.businessObject.type.includes('actor') &&\n checkTarget.outgoing\n ) {\n // check the target for each outgoing activity\n checkTarget.outgoing.forEach((activity: ActivityCanvasObject) => {\n activities.push(activity);\n const activityTarget = activity.target;\n if (activityTarget && !targetObjects.includes(activityTarget)) {\n targetObjects.push(activityTarget);\n }\n });\n }\n }\n });\n return initialSource\n .map((e) => e.businessObject)\n .concat(activities.map((a) => a.businessObject))\n .concat(targetObjects.map((t) => t.businessObject));\n }\n\n /** Groups should be shown at the End of the Story **/\n private addGroupStep(story: StoryStep[]): void {\n const groups = this.elementRegistryService.getAllGroups() as CanvasObject[];\n if (groups.length > 0) {\n story.push({\n highlightedObjects: [],\n objects: groups\n .map((g) => g.businessObject)\n .concat(story[story.length - 1].objects),\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n private showSettings = new BehaviorSubject(false);\n showSettings$ = this.showSettings.asObservable();\n\n close(): void {\n this.showSettings.next(false);\n }\n\n open(): void {\n this.showSettings.next(true);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from '../../../environments/environment';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_DOMAIN_NAME,\n INITIAL_TITLE,\n} from '../../Domain/Common/constants';\nimport { CommandStackService } from '../CommandStack/command-stack.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TitleService {\n private titleSubject = new BehaviorSubject(INITIAL_TITLE);\n private descriptionSubject = new BehaviorSubject(INITIAL_DESCRIPTION);\n private domainNameSubject = new BehaviorSubject(INITIAL_DOMAIN_NAME);\n private showDescriptionSubject = new BehaviorSubject(true);\n\n title$ = this.titleSubject.asObservable();\n description$ = this.descriptionSubject.asObservable();\n showDescription$ = this.showDescriptionSubject.asObservable();\n domainName$ = this.domainNameSubject.asObservable();\n\n constructor(private commandStackService: CommandStackService) {}\n\n updateTitleAndDescription(\n title: string | null,\n description: string | null,\n allowUndo: boolean\n ): void {\n if (allowUndo) {\n this.fireTitleAndDescriptionUpdate(title, description);\n } else {\n this.updateTitle(title);\n this.updateDescription(description);\n }\n }\n\n reset(): void {\n this.updateTitleAndDescription(INITIAL_TITLE, INITIAL_DESCRIPTION, false);\n }\n\n private updateTitle(inputTitle: string | null): void {\n const title =\n !inputTitle || inputTitle.trim().length === 0\n ? INITIAL_TITLE\n : inputTitle;\n\n this.titleSubject.next(title);\n document.title = title === INITIAL_TITLE ? 'egon.io' : title;\n }\n\n private updateDescription(description: string | null): void {\n this.descriptionSubject.next(description ?? this.descriptionSubject.value);\n }\n\n setShowDescription(show: boolean): void {\n this.showDescriptionSubject.next(show);\n }\n\n setDomainName(name: string): void {\n this.domainNameSubject.next(name);\n }\n\n getTitle(): string {\n return this.titleSubject.value;\n }\n\n getDescription(): string {\n return this.descriptionSubject.value;\n }\n\n getDomainName(): string {\n return this.domainNameSubject.value;\n }\n\n getVersion(): string {\n return environment.version;\n }\n\n hasTitleOrDescription(): boolean {\n return (\n (this.getTitle().trim().length > 0 &&\n this.getTitle() !== INITIAL_TITLE) ||\n (this.getDescription().trim().length > 0 &&\n this.getDescription() !== INITIAL_DESCRIPTION)\n );\n }\n\n private fireTitleAndDescriptionUpdate(\n newTitle: string | null,\n newDescription: string | null\n ): void {\n const context = {\n newTitle,\n newDescription,\n };\n this.commandStackService.execute(\n 'story.updateHeadlineAndDescription',\n context\n );\n }\n}\n","'use strict';\n\n// convert rad to deg\nexport function degrees(radians: number): number {\n return (radians * 180) / Math.PI;\n}\n\n// calculate the angle between two points in 2D\nexport function angleBetween(\n startPoint: Point,\n endPoint: Point\n): number | undefined {\n let quadrant;\n\n // determine in which quadrant we are\n if (startPoint.x <= endPoint.x) {\n if (startPoint.y >= endPoint.y) {\n quadrant = 0;\n } // upper right quadrant\n else {\n quadrant = 3;\n } // lower right quadrant\n } else {\n if (startPoint.y >= endPoint.y) {\n quadrant = 1;\n } // upper left Quadrant\n else {\n quadrant = 2;\n } // lower left quadrant\n }\n\n const adjacent = Math.abs(startPoint.y - endPoint.y);\n const opposite = Math.abs(startPoint.x - endPoint.x);\n\n // since the arcus-tangens only gives values between 0 and 90, we have to adjust for the quadrant we are in\n\n if (quadrant === 0) {\n return 90 - degrees(Math.atan2(opposite, adjacent));\n }\n if (quadrant === 1) {\n return 90 + degrees(Math.atan2(opposite, adjacent));\n }\n if (quadrant === 2) {\n return 270 - degrees(Math.atan2(opposite, adjacent));\n }\n if (quadrant === 3) {\n return 270 + degrees(Math.atan2(opposite, adjacent));\n }\n return undefined;\n}\n\nexport function positionsMatch(\n width: number,\n height: number,\n elementX: number,\n elementY: number,\n clickX: number,\n clickY: number\n): boolean {\n if (clickX > elementX && clickX < elementX + width) {\n if (clickY > elementY && clickY < elementY + height) {\n return true;\n }\n }\n return false;\n}\n\nexport class Point {\n y = 0;\n x = 0;\n}\n","import { elementTypes } from 'src/app/Domain/Common/elementTypes';\n\n// TODO: td: This can cause a lot of errors\nexport function getNameFromType(type: string): string {\n if (type.includes(elementTypes.ACTOR)) {\n return type.replace(elementTypes.ACTOR, '');\n } else if (type.includes(elementTypes.WORKOBJECT)) {\n return type.replace(elementTypes.WORKOBJECT, '');\n }\n return '';\n}\n","'use strict';\n\n// sanitize user-Input to be Desktop-Filename safe\nexport function sanitizeForDesktop(str: string): string {\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n };\n const reg = /[/\\\\:*?\"<>|]/gi;\n return str ? str.replace(reg, (match) => map[match]) : '';\n}\n\nexport function sanitizeIconName(name: string): string {\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n '(': '',\n ')': '',\n ' ': '-',\n '.': '_',\n };\n const reg = /[/\\\\:*?\"<>|() .]/gi;\n return name\n ? name.replace(reg, (match) => {\n return map[match];\n })\n : '';\n}\n\nexport function restoreTitleFromFileName(\n filename: string,\n isSVG: boolean\n): string {\n let title;\n\n const domainStoryRegex = /_\\d+-\\d+-\\d+( ?_?-?\\(\\d+\\))?(-?\\d)?(.dst|.egn)/;\n const svgRegex = /_\\d+-\\d+-\\d+( ?_?-?\\(\\d+\\))?(-?\\d)?(.dst|.egn).svg/;\n\n const egnSuffix = '.egn';\n const dstSuffix = '.dst';\n const svgSuffix = '.svg';\n\n let filenameWithoutDateSuffix = filename.replace(\n isSVG ? svgRegex : domainStoryRegex,\n ''\n );\n if (filenameWithoutDateSuffix.includes(isSVG ? svgSuffix : dstSuffix)) {\n filenameWithoutDateSuffix = filenameWithoutDateSuffix\n .replace(svgSuffix, '')\n .replace(dstSuffix, '')\n .replace(egnSuffix, '');\n }\n title = filenameWithoutDateSuffix;\n return title;\n}\n","import { Component, OnInit } from '@angular/core';\nimport { SettingsService } from 'src/app/Service/Settings/settings.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DialogService } from './Service/Dialog/dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { InfoDialogData } from './Domain/Dialog/infoDialogData';\nimport { InfoDialogComponent } from './Presentation/Dialog/info-dialog/info-dialog.component';\nimport { TitleService } from './Service/Title/title.service';\nimport { ExportService } from './Service/Export/export.service';\nimport { ReplayStateService } from './Service/Replay/replay-state.service';\nimport { ReplayService } from './Service/Replay/replay.service';\nimport { environment } from '../environments/environment';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent implements OnInit {\n showSettings$: Observable | BehaviorSubject;\n showDescription$: Observable;\n version: string = environment.version;\n\n constructor(\n private settingsService: SettingsService,\n private dialogService: DialogService,\n private titleService: TitleService,\n private exportService: ExportService,\n private replayStateService: ReplayStateService,\n replayService: ReplayService\n ) {\n this.showSettings$ = new BehaviorSubject(false);\n this.showDescription$ = new BehaviorSubject(true);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.ctrlKey && e.key === 's') {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadDST();\n }\n }\n if (e.ctrlKey && e.key === 'l') {\n e.preventDefault();\n e.stopPropagation();\n document.getElementById('import')?.click();\n }\n if (\n (e.key === 'ArrowRight' || e.key === 'ArrowUp') &&\n this.replayStateService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.nextStep();\n }\n if (\n (e.key === 'ArrowLeft' || e.key === 'ArrowDown') &&\n this.replayStateService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.previousStep();\n }\n });\n }\n\n ngOnInit(): void {\n this.showDescription$ = this.titleService.showDescription$;\n this.showSettings$ = this.settingsService.showSettings$;\n }\n\n openLinkDialog(link: string, title: string, text: string): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, text, true, true, link);\n\n this.dialogService.openDialog(InfoDialogComponent, config);\n }\n}\n","
\n \n \n \n\n \n \n
\n\n \n \n \"Egon\n egon.io\n version: \n {{ version }}\n by \n \"WPS\n WPS\n \n\n \n Privacy\n \n\n \n Imprint\n \n \n\n","import { ApplicationRef, DoBootstrap, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport {\n MAT_CHECKBOX_DEFAULT_OPTIONS,\n MatCheckboxDefaultOptions,\n} from '@angular/material/checkbox';\n\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { HeaderComponent } from 'src/app/Presentation/Header/header.component';\nimport { SettingsComponent } from 'src/app/Presentation/Settings/settings.component';\nimport { AppComponent } from 'src/app/app.component';\nimport { ExportService } from 'src/app/Service/Export/export.service';\nimport { ImportDomainStoryService } from 'src/app/Service/Import/import-domain-story.service';\nimport { ImportRepairService } from 'src/app/Service/Import/import-repair.service';\nimport { ModelerService } from 'src/app/Service/Modeler/modeler.service';\nimport { TitleService } from 'src/app/Service/Title/title.service';\nimport { LabelDictionaryService } from 'src/app/Service/LabelDictionary/label-dictionary.service';\nimport { ReplayService } from 'src/app/Service/Replay/replay.service';\nimport { ElementRegistryService } from 'src/app/Service/ElementRegistry/element-registry.service';\nimport { DomainConfigurationService } from 'src/app/Service/DomainConfiguration/domain-configuration.service';\nimport { MassNamingService } from 'src/app/Service/LabelDictionary/mass-naming.service';\nimport { InfoDialogComponent } from 'src/app/Presentation/Dialog/info-dialog/info-dialog.component';\nimport { ExportDialogComponent } from 'src/app/Presentation/Dialog/export-dialog/export-dialog.component';\nimport { ActivityDialogComponent } from 'src/app/Presentation/Dialog/activity-dialog/activity-dialog.component';\nimport { UntypedFormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { HeaderDialogComponent } from 'src/app/Presentation/Dialog/header-dialog/header-dialog.component';\nimport { IconDictionaryService } from 'src/app/Service/DomainConfiguration/icon-dictionary.service';\nimport { ModelerComponent } from 'src/app/Presentation/Canvas/modeler.component';\nimport { SettingsModule } from 'src/app/Modules/settings.module';\nimport { AutosaveService } from './Service/Autosave/autosave.service';\nimport { DomainStoryModelerModuleModule } from './Modules/domain-story-modeler-module.module';\nimport { LabelDictionaryDialogComponent } from './Presentation/Dialog/label-dictionary-dialog/label-dictionary-dialog.component';\nimport { MaterialModule } from './material.module';\n\n@NgModule({\n declarations: [\n HeaderComponent,\n SettingsComponent,\n AppComponent,\n InfoDialogComponent,\n ExportDialogComponent,\n ActivityDialogComponent,\n HeaderDialogComponent,\n ModelerComponent,\n LabelDictionaryDialogComponent,\n ],\n imports: [\n BrowserModule,\n NoopAnimationsModule,\n ReactiveFormsModule,\n SettingsModule,\n DomainStoryModelerModuleModule,\n MaterialModule,\n ],\n providers: [\n AutosaveService,\n ExportService,\n ImportDomainStoryService,\n ImportRepairService,\n IconDictionaryService,\n TitleService,\n LabelDictionaryService,\n ReplayService,\n ElementRegistryService,\n DomainConfigurationService,\n ModelerService,\n MassNamingService,\n UntypedFormBuilder,\n {\n provide: MAT_CHECKBOX_DEFAULT_OPTIONS,\n useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions,\n },\n ],\n})\nexport class AppModule implements DoBootstrap {\n constructor(private autosaveService: AutosaveService) {\n // autosaveService wird so automatisch initialisiert, auf keinen Fall entfernen!\n }\n\n ngDoBootstrap(app: ApplicationRef): void {\n const componentElement = document.createElement('app-root');\n document.body.append(componentElement);\n app.bootstrap(AppComponent);\n }\n}\n","import { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { NgModule } from '@angular/core';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatListModule } from '@angular/material/list';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatButtonToggleModule,\n MatListModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatGridListModule,\n MatInputModule,\n MatToolbarModule,\n MatExpansionModule,\n MatSnackBarModule,\n MatCardModule,\n ],\n exports: [\n MatButtonModule,\n MatButtonToggleModule,\n MatListModule,\n MatCheckboxModule,\n MatDialogModule,\n MatFormFieldModule,\n MatGridListModule,\n MatInputModule,\n MatToolbarModule,\n MatExpansionModule,\n MatSnackBarModule,\n MatCardModule,\n ],\n})\nexport class MaterialModule {}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n version: '2.0.0-dev',\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n"],"names":["Modeler","ResizeModule","assign","isArray","inherits","DomainStoryModule","LabelEditingModule","ModelingModule","elementTypes","DomainStoryModeler","options","call","_customElements","_groupElements","prototype","_modules","concat","_addCustomShape","customElement","parentId","parent","children","push","canvas","get","elementFactory","customAttrs","businessObject","customShape","create","isGroup","id","parentShape","addShape","_addCustomConnection","elementRegistry","connection","source","target","addConnection","importCustomElements","elements","fire","addCustomElements","customElements","Error","shapes","connections","groups","forEach","isConnection","getCustomElements","createDiagram","done","element","type","ACTIVITY","CONNECTION","GROUP","Replace","modeling","_modeling","replaceElement","oldElement","newElementData","newElement","setCenterOfElement","outgoingActivities","outgoing","incomingActivities","incoming","x","Math","ceil","width","y","height","name","replaceShape","replaceOptions","ReplaceMenuProvider","_dsReplace","$inject","getEntries","entries","includes","actorReplaceOptions","workObjectReplaceOptions","_createEntries","menuEntries","self","definition","entry","_createMenuEntry","action","replaceAction","label","className","actionName","iconDictionaryService","initializeReplaceOptions","iconDictionary","actorTypes","getTypeDictionary","ACTOR","replaceOption","i","keysArray","actorType","typeName","toLowerCase","getIconForBPMN","workObjectTypes","WORKOBJECT","workObjectType","ContextPadProvider","bind","generateAutomaticNumber","getAllStandardIconKeys","dirtyFlagService","initializeContextPadProvider","dirtyFlag","DomainStoryContextPadProvider","injector","connect","translate","contextPad","popupMenu","replaceMenuProvider","commandStack","eventBus","startConnect","selectedElement","invoke","autoPlace","cached","getContextPadEntries","colorPicker","document","getElementById","onchange","ev","context","newColor","value","execute","makeDirty","registerProvider","allStandardIconKeys","actions","event","autoActivate","start","replace","addColorChange","addConnectWithActivity","addTextAnnotation","addActors","appendAction","addWorkObjects","addChangeWorkObjectTypeMenu","addChangeActorTypeMenu","delete","deleteGroup","group","title","click","removeGroup","moveDeleteActionToEndOfArray","removeElements","changeDirection","position","getReplaceMenuPosition","cursor","open","colorChange","TEXTANNOTATION","dragstart","icon","newNumber","Y_OFFSET","diagramContainer","getContainer","pad","getPad","html","diagramRect","getBoundingClientRect","padRect","top","left","appendStart","shape","createShape","hints","BpmnElementFactory","DEFAULT_LABEL_SIZE","DomainStoryIdFactory","DomainStoryElementFactory","bpmnFactory","moddle","domainStoryIdFactory","elementType","attrs","baseCreate","test","registerId","getId","key","set","$type","di","$descriptor","_getCustomElementSize","Object","defineProperty","createBpmnElement","__default","Dimensions","idList","generateId","idNumber","fourDigitsId","idSuffix","containsId","floor","random","same","BaseRenderer","Ids","getAnnotationBoxHeight","componentsToPath","createLine","append","svgAppend","attr","svgAttr","classes","svgClasses","svgCreate","query","domQuery","isObject","getNumberStash","addNumberToRegistry","numberBoxDefinitions","calculateTextWidth","countLines","labelPosition","angleBetween","getNameFromType","RENDERER_IDS","numbers","DEFAULT_COLOR","initializeRenderer","elementRegistryService","DomainStoryRenderer","styles","textRenderer","pathMap","rendererId","next","markers","computeStyle","generateActivityNumber","parentGfx","box","numberStash","semantic","use","number","newRenderedNumber","renderNumber","numberStyle","fitBox","style","getExternalStyle","fill","backgroundBoxStyle","fontSize","fontFamily","backgroundDotStyle","renderEmbeddedLabel","align","padding","renderLabel","renderExternalLabel","waypoints","lines","startPoint","selected","endPoint","angle","alignment","boxWidth","xStart","abs","textAlign","length","wordWrap","overflowWrap","hyphens","renderExternalNumber","String","text","createText","add","setCoordinates","drawCircle","textLength","circle","cx","cy","r","innerHTML","manipulateInnerHTMLXLabel","manipulateInnerHTMLYLabel","firstChild","attributes","nodeValue","offset","result","outerHTML","Number","drawGroup","pickedColor","rect","drawRect","stroke","useColorForElement","iconSRC","match","index","indexOf","substring","getIconSrc","startsWith","drawActor","svgDynamicSizeAttributes","actor","getTypeIconSRC","drawWorkObject","workObject","useColorForActivity","strokeWidth","strokeLinejoin","markerEnd","marker","drawActivity","p","adjustForTextOverlap","fixConnectionInHTML","parentElement","checkIfPointOverlapsText","point","lineOffset","getLineOffset","objects","getElementsByClassName","data_id","item","getAttribute","object","getElementsByTagName","tspans","tspan","wantedConnection","polylines","setAttribute","drawDSConnection","strokeDasharray","drawAnnotation","textElement","textPathData","getScaledPath","xScaleFactor","yScaleFactor","containerWidth","containerHeight","mx","my","drawPath","d","path","rx","ry","createMarker","sequenceflowEnd","addMarker","ref","scale","strokeLinecap","viewBox","refX","refY","markerWidth","markerHeight","orient","defs","_svg","getWorkObjectPath","rectangle","getRectPath","getGroupPath","getActivityPath","map","original","activityPath","waypoint","getActorPath","canRender","drawShape","search","pos","correctInitialize","getShapePath","drawConnection","every","reduce","RuleProvider","is","HIGH_PRIORITY","MIN_SIZE","isDomainStory","isDomainStoryGroup","isActor","isWorkObject","isActivity","isAnnotation","canConnect","canResize","newBounds","lowerLeft","lowerRight","upperRight","canAttach","Array","canConnectToAnnotation","DomainStoryRules","init","canCreate","addRule","host","s","undefined","hover","pick","CommandInterceptor","collectionAdd","remove","collectionRemove","reworkGroupElements","DomainStoryUpdater","bpmnjs","updateCustomElement","e","DOMAINSTORY","updateCustomConnection","newTarget","newSource","copyWaypoints","executed","ifDomainStoryElement","reverted","fn","DomainStoryPalette","ElementFactory","CreateModule","PathMap","PopupMenuModule","ContextPadModule","CommandStack","UpdateLabelHandler","headlineAndDescriptionUpdateHandler","DSModeling","__depends__","__init__","domainStoryRenderer","paletteProvider","domainStoryRules","domainStoryUpdater","contextPadProvider","elementFactoryBpmn","updateLabelHandler","svgRemove","MARKER_HIDDEN","MARKER_LABEL_HIDDEN","annotationBoxHeight","DSLabelEditingPreview","defaultLayer","getDefaultLayer","absoluteElementBBox","gfx","on","activeProvider","active","getAbsoluteBBox","getStrokeColor","labelTarget","dy","newElementHeight","max","removeMarker","autocomplete","getLabel","isAny","getExternalLabelMid","hasExternalLabel","isLabel","isLabelExternal","dictionaryService","stashUse","initializeLabelEditingProvider","labelingDictionary","toggleStashUse","focusElement","setTimeout","focus","DSLabelEditingProvider","directEditing","resizeHandles","_canvas","_textRenderer","_updateLabelHandler","activateDirectEdit","complete","isActive","cancel","removeResizers","createAutocomplete","canExecute","isTouch","editingBox","force","activate","getUniqueWorkObjectNames","bounds","getEditingBBox","autoResize","resizable","bbox","mid","zoom","defaultStyle","getDefaultStyle","externalStyle","externalFontSize","externalLineHeight","lineHeight","defaultFontSize","defaultLineHeight","fontWeight","minWidth","maxWidth","minHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","externalLabelMid","absoluteBBox","update","newLabel","activeContextText","updateLabel","getLabelAttr","getNumberAttr","getNumber","setLabel","setNumber","textNumber","selectPartOfActivity","angleActivity","selectedActivity","linelength","fontsize","input","workObjectNames","closeAllLists","currentFocus","filteredWorkObjectNames","addEventListener","autocompleteList","autocompleteItem","val","createElement","parentNode","appendChild","toUpperCase","visibility","onkeydown","keyCode","addActive","preventDefault","removeActive","classList","survivor","removeChild","ChangeSupportModule","DirectEditingModule","dSlabelEditingProvider","dSlabelEditingPreview","str","split","amountWaypoints","determinedPosition","xPos","yPos","labelPositionX","labelPositionY","offsetX","scaledAngle","offsetY","Modeling","_commandStack","updateNumber","oldShape","newShape","newData","numberRegistry","multipleNumberRegistry","canvasElementRegistry","initializeNumbering","canvasElementRegistryService","boxHeight","elementActivity","usedNumbers","wantedNumber","activitiesFromActors","getActivitiesFromActors","updateExistingNumbersAtGeneration","updateExistingNumbersAtEditing","sortedActivities","activity","currentNumber","setNumberOfActivity","getNumbersAndIDs","iDWithNumber","activities","renderedNumber","setNumberIsMultiple","multi","getNumberRegistry","slice","getMultipleNumberRegistry","elementArray","overrideAppendedIcons","Dictionary","APPENDED_ICONS_TAG","configuration","initializePalette","configurationService","PaletteProvider","palette","spaceTool","lassoTool","_create","_elementFactory","_spaceTool","_lassoTool","getPaletteEntries","createAction","createListener","isExpanded","shortType","initPalette","appendCSSStyleCheat","customIcons","sheetEl","head","customIconDict","appendDict","customIconDictKeys","getAppendedIconDictionary","has","src","iconStyle","wrapSRCInSVG","sheet","insertRule","cssRules","config","getCurrentIconConfigurationForBPMN","localStorage","getItem","JSON","parse","customIconsLegacy","convertLegacyAppendedIconsToDict","customIconsDict","putEntry","initTypeDictionaries","actors","workObjects","addCanvasObjectTypes","separator","activateSelection","keys","dict","initializeActivityUpdateHandler","activityUpdateHandler","registerHandler","activity_directionChange","activity_changed","preExecute","oldLabel","oldNumbersWithIDs","oldNumber","revert","revertAutomaticNumberGenerationChange","oldWaypoints","swapSource","newWaypoints","getActivitesFromActors","j","splice","undoGroupRework","elementUpdateHandler","element_colorChange","removeGroupWithoutChildren","oldColor","ctx","child","titleService","handlerFunction","oldTitle","getTitle","oldDescription","getDescription","updateTitleAndDescription","newTitle","newDescription","DSMassRenameHandler","massRename","relevantElements","confirm","newValue","getBusinessObject","NULL_DIMENSIONS","labelCenter","createLabel","setText","postExecute","trim","removeShape","bo","getLayoutedBounds","resizeShape","numberTarget","some","$instanceOf","types","t","innerShape","superParent","svgShape","querySelector","svgGroup","svgGroupParent","SVG_LINK","TEXTSPAN_DESCRIPTION_HEIGHT","TEXTSPAN_TITLE_HEIGHT","X_OFFSET_UTIL","extraHeight","createTitleAndDescriptionSVGElement","description","xLeft","yUp","titleElement","createTitle","descriptionElement","createDescription","insertText","tempCanvas","getContext","font","createTextSpans","descriptionParts","yOffset","heightOffset","textSpans","words","textTag","textSpan","createElementNS","textNode","createTextNode","data","len","measureText","testBusinessObject","Configuration","constructor","INITIAL_TITLE","INITIAL_DESCRIPTION","INITIAL_DOMAIN_NAME","DOMAIN_CONFIGURATION_TAG","DEFAULT_AUTOSAVES_ENABLED","DEFAULT_AUTOSAVES_MAX_DRAFTS","DEFAULT_AUTOSAVES_INTERVAL","SNACKBAR_DURATION","SNACKBAR_SUCCESS","SNACKBAR_ERROR","SNACKBAR_INFO","IMPLICIT_ROOT_ID","all","size","isEmpty","Entry","addEach","clear","filter","found","sort","sortByName","a","b","structuredClone","testCustomDomainConfiguration","fromConfigurationFromFile","configFromFile","actorsDict","workObjectsDict","IconConfiguration","allIconDictionary","domainName","getDefaultConf","defaultConf","updateAllIconRegistry","appendSRCFile","newAppendedIcons","appen","createCustomConf","domainConfiguration","allIconsConf","ActivityDialogData","numberIsAllowedMultipleTimes","showNumberFields","saveFN","ExportDialogData","ExportOption","tooltip","InfoDialogData","infoText","isInfo","isLink","linkText","NUMBER_BACKGROUND_COLOR","NUMBER_COLOR","STROKE_WIDTH","HIGHLIGHT_NUMBER_BACKGROUNG_COLOR","HIGHLIGHT_NUMBER_COLOR","HIGHLIGHT_COLOR","HIGHLIGHT_STROKE_WIDTH","appendedIcons","allIcons","Person","Group","Pet","Conversation","World","Store","Theater","Business","Water","Hotel","Dining","Courthouse","Flag","Place","Car","Bus","Train","Truck","Taxi","Bike","Boat","Motorcycle","Plane","Shuttle","Walking","Traffic","Commute","System","Printer","Document","Folder","Call","Email","Copyright","DNS","Settings","Cellphone","Update","Briefcase","Microphone","Signal","Key","Pencil","Sum","Headset","Keyboard","Mouse","Router","Scanner","Security","Desktop","Tablet","Label","Receipt","Calendar","Cloud","Assessment","Dashboard","Problem","Grid","Watch","Euro","Dollar","Info","Alarm","Wrench","Favorite","Gavel","Blind","Hourglass","Time","Search","Shopping","Couch","Attach","Ruler","Education","allIconsDict","newIcons","IconFilterEnum","ConfigAndDST","domain","dst","testConfigAndDst","CommonModule","AutosaveSettingsComponent","AutosaveOptionsComponent","AutosavedDraftsComponent","FormsModule","MaterialModule","AutosaveSettingsModule","_","_2","_3","declarations","imports","exports","HeaderButtonsComponent","DomainStoryModelerModuleModule","DomainConfigurationComponent","IconListItemComponent","DetailsListItemComponent","DomainDetailsComponent","GeneralSettingsComponent","LabelDictionaryComponent","SettingsModule","i0","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","AutosaveOptionsComponent_mat_card_0_Template_button_click_20_listener","ɵɵrestoreView","_r6","_r2","ɵɵreference","_r4","_r3","ctx_r5","ɵɵnextContext","ɵɵresetView","save","checked","ɵɵadvance","ɵɵproperty","configuration_r1","activated","interval","maxDrafts","autosaveConfiguration","snackbar","setConfiguration","duration","panelClass","ɵɵdirectiveInject","i1","AutosaveConfigurationService","i2","MatSnackBar","selectors","decls","vars","consts","template","AutosaveOptionsComponent_Template","rf","ɵɵtemplate","AutosaveOptionsComponent_mat_card_0_Template","ɵɵpipeBind1","configuration$","AutosaveSettingsComponent_Template","AutosavedDraftsComponent_div_7_div_1_Template_button_click_6_listener","restoredCtx","draft_r4","$implicit","loadDraft","ɵɵtextInterpolate","date","AutosavedDraftsComponent_div_7_div_1_Template","AutosavedDraftsComponent_div_7_Template_button_click_4_listener","_r8","ctx_r7","removeAllDrafts","ctx_r0","drafts","autosaveService","subscription","autosavedDraftsChanged$","subscribe","initDrafts","ngOnInit","loadCurrentDrafts","draft","AutosaveService","AutosavedDraftsComponent_Template","AutosavedDraftsComponent_div_7_Template","AutosavedDraftsComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","ɵɵtextInterpolate2","_r1","ModelerComponent","modelerService","postInit","loadLatestDraft","ModelerService","ModelerComponent_Template","MAT_DIALOG_DATA","ActivityDialogComponent","fb","dialogRef","activityLabel","activityNumber","form","multipleNumbers","onSubmit","patchValue","close","UntypedFormBuilder","MatDialogRef","ActivityDialogComponent_Template","ActivityDialogComponent_Template_input_change_9_listener","ActivityDialogComponent_Template_textarea_keydown_enter_14_listener","$event","ActivityDialogComponent_Template_textarea_keyup_enter_14_listener","ActivityDialogComponent_Template_textarea_keyup_escape_14_listener","ActivityDialogComponent_Template_button_click_16_listener","ActivityDialogComponent_Template_button_click_18_listener","BehaviorSubject","ExportDialogComponent_button_17_Template_button_click_0_listener","i_r2","ctx_r3","doOption","option_r1","ɵɵtextInterpolate1","ExportDialogComponent","withTitle","useWhiteBackground","updateWithTitle","updateUseWhiteBackground","ExportDialogComponent_Template","ExportDialogComponent_Template_input_change_4_listener","ExportDialogComponent_Template_input_change_9_listener","ExportDialogComponent_Template_button_click_15_listener","ExportDialogComponent_button_17_Template","HeaderDialogComponent","i3","TitleService","HeaderDialogComponent_Template","HeaderDialogComponent_Template_textarea_keydown_enter_10_listener","HeaderDialogComponent_Template_textarea_keyup_enter_10_listener","HeaderDialogComponent_Template_textarea_keyup_escape_10_listener","HeaderDialogComponent_Template_button_click_12_listener","HeaderDialogComponent_Template_button_click_14_listener","ɵɵpropertyInterpolate","ctx_r1","ɵɵsanitizeUrl","InfoDialogComponent_mat_dialog_actions_5_Template_button_click_1_listener","InfoDialogComponent","showConfirmButton","hasLink","ngAfterViewInit","span","scrollHeight","InfoDialogComponent_Template","InfoDialogComponent_span_3_Template","InfoDialogComponent_a_4_Template","InfoDialogComponent_mat_dialog_actions_5_Template","LabelDictionaryDialogComponent","LabelDictionaryDialogComponent_Template","LabelDictionaryDialogComponent_Template_app_label_dictionary_closeEmitter_3_listener","iconInitiated","ngAfterViewChecked","createIcon","img","svg","inputs","DetailsListItemComponent_Template","sanitizeIconName","iconName_r1","domainCustomizationService","ICON_FILTER_NONE","selectedActors","selectedWorkobjects","allIconNames","allFilteredIconNames","domainConfigurationTypes","getDomainConfiguration","getFullDictionary","selectedActors$","selectedWorkobjects$","allFiltered","getFilteredNamesForType","loadMinimalIconConfigurationWithDefaultIcons","resetDomain","loadInitialConfiguration","saveDomain","getUsedIcons","exportDomain","startIconUpload","importIcon","files","iconInputFile","reader","FileReader","iconName","onloadend","addIMGToIconDictionary","registerIconForBPMN","addNewIcon","readAsDataURL","startDomainImport","importDomain","domainInputFile","loadConfiguration","importConfiguration","readAsText","filterForActors","ICON_FILTER_ACTOR","filterForWorkobjects","ICON_FILTER_WORKOBJECT","filterForUnassigned","ICON_FILTER_UNASSIGNED","filterByNameAndType","filteredByNameAndType","isIconActor","isIconWorkObject","DomainConfigurationService","IconDictionaryService","DomainCustomizationService","i4","ElementRegistryService","DomainConfigurationComponent_Template","DomainConfigurationComponent_Template_button_click_6_listener","DomainConfigurationComponent_Template_button_click_10_listener","DomainConfigurationComponent_Template_button_click_14_listener","DomainConfigurationComponent_Template_input_input_18_listener","DomainConfigurationComponent_Template_button_click_20_listener","DomainConfigurationComponent_Template_input_change_23_listener","DomainConfigurationComponent_Template_button_click_24_listener","DomainConfigurationComponent_Template_button_click_27_listener","DomainConfigurationComponent_Template_button_click_31_listener","DomainConfigurationComponent_Template_button_click_35_listener","DomainConfigurationComponent_Template_input_change_38_listener","DomainConfigurationComponent_Template_button_click_39_listener","DomainConfigurationComponent_mat_grid_tile_46_Template","ɵɵclassProp","DomainDetailsComponent_mat_list_item_12_Template_mat_list_item_dragover_0_listener","_r5","ctx_r4","allowDrop","DomainDetailsComponent_mat_list_item_12_Template_mat_list_item_dragstart_0_listener","i_r3","ctx_r6","onDragStart","DomainDetailsComponent_mat_list_item_12_Template_mat_list_item_drop_0_listener","iconName_r2","onDrop","getIconForName","DomainDetailsComponent_mat_list_item_18_Template_mat_list_item_dragover_0_listener","_r11","ctx_r10","DomainDetailsComponent_mat_list_item_18_Template_mat_list_item_dragstart_0_listener","i_r9","ctx_r12","DomainDetailsComponent_mat_list_item_18_Template_mat_list_item_drop_0_listener","iconName_r8","ctx_r13","customizationService","draggedList","draggedIndex","domainName$","changeName","listName","list","sortedList","setSelectedActors","setSelectedWorkObject","DomainDetailsComponent_Template","DomainDetailsComponent_Template_input_input_6_listener","DomainDetailsComponent_mat_list_item_12_Template","DomainDetailsComponent_mat_list_item_18_Template","isWorkobject","isNone","toggleNone","setAsUnassigned","toggleActor","setAsActor","toggleWorkobject","setAsWorkobject","IconListItemComponent_Template","IconListItemComponent_Template_mat_button_toggle_change_7_listener","IconListItemComponent_Template_mat_button_toggle_change_10_listener","IconListItemComponent_Template_mat_button_toggle_change_13_listener","MatDialogConfig","HeaderButtonsComponent_div_0_Template_button_click_1_listener","startReplay","HeaderButtonsComponent_div_0_Template_input_change_7_listener","import","HeaderButtonsComponent_div_0_Template_button_click_8_listener","openDownloadDialog","HeaderButtonsComponent_div_0_span_9_Template","HeaderButtonsComponent_div_0_span_11_Template","HeaderButtonsComponent_div_0_Template_button_click_13_listener","ctx_r8","openLabelDictionary","HeaderButtonsComponent_div_0_Template_button_click_16_listener","ctx_r9","openSettings","HeaderButtonsComponent_div_0_Template_button_click_19_listener","openKeyboardShortcutsDialog","HeaderButtonsComponent_div_0_Template_button_click_22_listener","ctx_r11","createNewDomainStory","replayService","isReplayable","isExportable","isDirty$","exportService","isDomainStoryExportable","HeaderButtonsComponent_div_2_Template_button_click_1_listener","_r13","previousStep","HeaderButtonsComponent_div_2_Template_button_click_4_listener","ctx_r14","nextStep","HeaderButtonsComponent_div_2_Template_button_click_7_listener","ctx_r15","stopReplay","settingsService","replayStateService","dialogService","importService","renderService","isReplay$","replayOn$","dirty$","filename","endsWith","importDST","importEGN","commandStackChanged","SVGDownloadOption","downloadSVG","EGNDownloadOption","downloadDST","PNGDownloadOption","downloadPNG","HTMLDownloadOption","downloadHTMLPresentation","disableClose","autoFocus","openDialog","shortCutText","reset","makeClean","hasTitleOrDescription","SettingsService","ReplayStateService","DirtyFlagService","i5","DialogService","i6","ReplayService","i7","ExportService","i8","ImportDomainStoryService","i9","i10","RendererService","i11","HeaderButtonsComponent_Template","HeaderButtonsComponent_div_0_Template","HeaderButtonsComponent_div_2_Template","combineLatest","HeaderComponent_button_2_Template_button_click_0_listener","setShowDescription","HeaderComponent_button_4_Template_button_click_0_listener","_r7","ctx_r2","stepDescription$","description$","HeaderComponent","title$","showDescription$","currentStep$","maxStepNumber$","pipe","step","count","showDescription","openHeaderDialog","show","HeaderComponent_Template","HeaderComponent_button_2_Template","HeaderComponent_button_4_Template","HeaderComponent_Template_span_click_7_listener","HeaderComponent_span_13_Template","HeaderComponent_mat_card_17_Template","EventEmitter","LabelDictionaryComponent_mat_list_item_5_Template_input_change_2_listener","workobjectEntry_r2","updateWorkobjectEntry","LabelDictionaryComponent_mat_list_item_11_Template_textarea_change_2_listener","activityEntry_r5","updateActivityEntry","LabelDictionaryComponent_mat_list_item_11_Template_textarea_keydown_enter_2_listener","LabelDictionaryComponent_mat_list_item_11_Template_textarea_keyup_enter_2_listener","LabelDictionaryComponent_mat_list_item_11_Template_textarea_keyup_escape_2_listener","labelDictionaryService","closeEmitter","createLabelDictionaries","workObjectEntries","getWorkObjectLabels","activityEntries","getActivityLabels","workobjectEntriesSubject","activityEntriesSubject","activityNames","originalActivityNames","originalWorkObjectNames","originalName","w","workobject","massRenameLabels","emit","activityEntry","workobjectEntry","LabelDictionaryService","outputs","LabelDictionaryComponent_Template","LabelDictionaryComponent_mat_list_item_5_Template","LabelDictionaryComponent_mat_list_item_11_Template","LabelDictionaryComponent_Template_button_click_14_listener","LabelDictionaryComponent_Template_button_click_16_listener","GeneralSettingsComponent_Template","SettingsComponent","showGeneralSettings","showDomainCustomization","savedConfiguration","getAndClearSavedConfiguration","restart","openGeneralSettings","openDomainCustomization","SettingsComponent_Template","SettingsComponent_Template_button_click_3_listener","SettingsComponent_Template_button_click_7_listener","SettingsComponent_Template_button_click_11_listener","SettingsComponent_app_general_settings_15_Template","SettingsComponent_app_domain_configuration_17_Template","ReplaySubject","AUTOSAVE_CONFIGURATION_TAG","defaultConfiguration","storageService","configurationSubject","asObservable","initializeConfiguration","saveConfiguration","ɵɵinject","StorageService","factory","ɵfac","providedIn","Subject","DRAFTS_TAG","rendererService","updateConfiguration","readDrafts","sortDrafts","configAndDST","story","actorIcons","getElementsOfType","workObjectIcons","updateIconRegistries","importStory","stopTimer","startTimer","autosaveTimer","clearInterval","setInterval","savedDrafts","newDraft","createDraft","isChanged","isSame","isDraftEmpty","unshift","pop","writeDrafts","stringify","getStory","createConfigAndDST","Date","toString","aDate","bDate","setItem","json","removeItem","checkValidityOfConfiguration","configuratioFromFile","getStoredDomainConfiguration","domainString","setStoredDomainConfiguration","configForStorage","CommandStackService","setCommandStack","payload","matDialog","dialog","MatDialog","isDirtySubject","dirty","DomManipulationService","showAll","removeHighlights","getAllCanvasObjects","getAllGroups","domObject","display","showStep","replayStep","notShown","getAllNotShown","hightlightStep","o","getNumberDomForActivity","numberDOMS","numberBackgroundDom","numberTextDom","allActivities","getAllActivities","allConnections","getAllConnections","activityDomObject","connectionDomObject","stepObjects","shownElements","notShownElements","allObjects","setDomainName","exportConfiguration","getCurrentConfigurationForExport","configJSONString","getDomainName","encodeURIComponent","body","customConfig","updateDomainName","actorDict","workObjectDict","actorKeys","workObjectKeys","getIconConfiguration","addIconsFromDomainConfiguration","configurationName","getCurrentConfiguration","getActorsDictionary","getWorkObjectsDictionary","createConfigFromDictionaries","currentConfiguration","getCurrentConfigurationNamesWithoutPrefix","createMinimalConfigurationWithDefaultIcons","minimalConfig","createConfigFromCanvas","getIconSource","actorNames","workobjectNames","newActors","newWorkobjects","allCanvasObjects","allIconListItems","configurationHasChanged","getAllIconDictionary","addIconToAllIconList","importedConfigurationEvent","storedDomainConfiguration","importedConfiguration","getImportedConfiguration","selectedActorNames","selectActor","selectedWorkobjectNames","selectWorkObject","changedDomain","deselectActor","deselectWorkobject","updateIcon","updateActorSubject","updateWorkObjectSubject","defaultConfig","workObjectName","actorName","updateAllIconBehaviourSubjects","resetToInitialConfiguration","usedIcons","imported","changedActors","changedWorkobjects","createDomainConfiguration","configurationActors","configurationWorkobjects","workobjects","changedDomainConfiguration","updateIcons","join","temp","iconDict","getSrcForIcon","addIconsToCss","iconBehaviourSubject","customDomainConfiguration","rawSrc","registerIconForType","unregisterIconForType","ICON_PREFIX","actorIconDictionary","workObjectDictionary","iconDictionaryForBPMN","iconConfig","allTypes","initDictionary","dictionary","customConfiguration","allInTypeDictionary","collection","allIn","dictionaryType","iconTypes","addIconsToTypeDictionary","extractCustomIconsFromDictionary","addNewIconsToDictionary","elementDictionary","sanitizedName","custom","fullDictionary","appendedDict","getTypeDictionaryKeys","elementOfType","setCustomConfiguration","fullyInitialized","registry","__implicitroot","setElementRegistry","_elements","createObjectListForDSTDownload","allObjectsFromCanvas","objectList","fillListOfCanvasObjects","canvasElement","groupObjects","checkChildForGroup","currentGroup","registryElementNames","getAllActors","getAllWorkobjects","co","sanitizeForDesktop","formatDate","environment","pngService","svgService","htmlPresentationService","titleSubscription","descriptionSubscription","ngOnDestroy","unsubscribe","DomainStory","getStoryForDownload","getCurrentDateString","downloadFile","datatype","fileEnding","svgData","createSVGData","container","svgElements","outerSVGElement","viewport","layerBase","image","extractSVG","prepareSVG","onload","getWidth","getHeight","fillStyle","drawImage","png64","toDataURL","ele","then","info","version","PngService","SvgService","HtmlPresentationService","doT","setModelerClasses","selection","modeler","viewBoxCoordinates","ViewBoxCoordinate","_this","_asyncToGenerator","saveSVG","fixActivityMarkersForEachStep","getCurrentStepNumber","content","transition","err","alert","getMaxStepNumber","revealjsTemplate","dots","revealjsData","script","sentences","multiplexSecret","multiplexId","fixMalformedHtmlScript","viewBoxIndex","splitViewBox","dataStart","dataEnd","createBounds","sectionIndex","newDefs","ids","idToReplace","newId","replaceAll","browserSpecs","ua","navigator","userAgent","tem","M","exec","appName","appVersion","URIHashtagFix","fix","browser","parseInt","findMostOuterElements","xRight","yDown","sub","elXLeft","elXRight","elYUp","elYDown","transform","nums","rects","outerRect","calculateWidthAndHeight","insertIndex","layerResizers","layerOverlays","removeAttribute","XMLSerializer","serializeToString","cacheData","getEncoded","findIndexToInsertData","svgIndex","backgroundColorWhite","appendDST","restoreTitleFromFileName","importRepairService","domainConfigurationService","importedConfigurationEmitter","isSVG","fileReader","titleText","fileReaderFunction","isEGN","dstText","removeXMLComments","dstAndConfig","extractDstAndConfig","configChanged","checkConfigForChanges","lastElement","importVersionNumber","handleVersionNumber","checkForUnreferencedElementsInActivitiesAndRepair","showBrokenImportDialog","adjustPositions","versionPrefix","lastIndexOf","updateCustomElementsPreviousV050","showPreviousV050Dialog","xmlText","newActorKeys","newWorkObjectKeys","currentActorKeys","currentWorkobjectKeys","changed","clearName","setImportedConfigurationAndEmit","ImportRepairService","objectIDs","activityIndex","isFirst","findFirstElement","adjustElementPosition","massNamingService","activityLabels","workObjektLabels","localeCompare","Set","massChangeNames","MassNamingService","commandStackService","oldValue","allRelevantObjects","massRenameHandler","positionsMatch","InitializerService","initializeDomainStoryModelerClasses","propagateDomainStoryModelerClassesToServices","initializeDomainStoryModelerEventHandlers","initiateEventBusListeners","getReplayOn","activityDoubleClick","renderedNumberRegistry","htmlCanvas","transformX","transformY","zoomX","zoomY","clickX","originalEvent","clickY","parseFloat","currentNum","tx","ty","tNumber","elementX","elementY","stopPropagation","saveActivityInputLabel","activityData","hasNumber","multipleNumberAllowed","initializerService","keyboard","bindTo","additionalModules","bpmnSearch","exportArtifacts","debounce","window","startDebounce","domainStory","currentStory","destroy","getModeler","timeout","timer","clearTimeout","encoded","renderStory","configurationChange","c","replayOnSubject","setReplayState","state","domManipulationService","storyCreatorService","currentStep","maxStepNumber","traceActivitiesAndCreateStory","initializeReplay","showCurrentStep","missingSteps","getMissingSteps","getValue","steps","StoryCreatorService","tracedActivityMap","tracedItem","it","createStep","addGroupStep","getStepObjects","highlightedElements","highlightedObjects","tracedActivity","initialSource","targetObjects","parallelStep","firstTarget","checkTarget","activityTarget","g","showSettings","showSettings$","titleSubject","descriptionSubject","domainNameSubject","showDescriptionSubject","allowUndo","fireTitleAndDescriptionUpdate","updateTitle","updateDescription","inputTitle","getVersion","degrees","radians","PI","quadrant","adjacent","opposite","atan2","Point","reg","domainStoryRegex","svgRegex","egnSuffix","dstSuffix","svgSuffix","filenameWithoutDateSuffix","AppComponent","ctrlKey","openLinkDialog","link","AppComponent_Template","AppComponent_app_settings_1_Template","BrowserModule","MAT_CHECKBOX_DEFAULT_OPTIONS","NoopAnimationsModule","ReactiveFormsModule","AppModule","ngDoBootstrap","app","componentElement","bootstrap","provide","useValue","clickAction","MatDialogModule","MatFormFieldModule","MatInputModule","MatToolbarModule","MatExpansionModule","MatCardModule","MatSnackBarModule","MatButtonModule","MatGridListModule","MatButtonToggleModule","MatListModule","MatCheckboxModule","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","catch","console","error"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file