From 8d7206b6998f3f4e81f77614bacbc229c6a57540 Mon Sep 17 00:00:00 2001 From: "Egon.io Bot" Date: Wed, 29 Jan 2025 16:21:56 +0000 Subject: [PATCH] Deploy latest build --- app-latest-build/main.js | 556 +++++++++++++++++------------------ app-latest-build/main.js.map | 2 +- 2 files changed, 264 insertions(+), 294 deletions(-) diff --git a/app-latest-build/main.js b/app-latest-build/main.js index 440b2f4..5119a1b 100644 --- a/app-latest-build/main.js +++ b/app-latest-build/main.js @@ -4722,7 +4722,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var src_app_tools_import_services_import_domain_story_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/app/tools/import/services/import-domain-story.service */ 3586); /* harmony import */ var src_app_tools_label_dictionary_services_label_dictionary_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/tools/label-dictionary/services/label-dictionary.service */ 9731); /* harmony import */ var src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! src/app/domain/services/element-registry.service */ 5511); -/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-import-export.service */ 3103); /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @angular/forms */ 8015); /* harmony import */ var src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-dictionary.service */ 6932); /* harmony import */ var _material_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./material.module */ 9439); @@ -4812,7 +4812,7 @@ class AppModule { provide: _angular_core__WEBPACK_IMPORTED_MODULE_27__.APP_INITIALIZER, useFactory: initialize, multi: true, - deps: [_domain_services_dirty_flag_service__WEBPACK_IMPORTED_MODULE_7__.DirtyFlagService, src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService, src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_4__.IconSetConfigurationService, src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_3__.ElementRegistryService, src_app_tools_label_dictionary_services_label_dictionary_service__WEBPACK_IMPORTED_MODULE_2__.LabelDictionaryService] + deps: [_domain_services_dirty_flag_service__WEBPACK_IMPORTED_MODULE_7__.DirtyFlagService, src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService, src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_4__.IconSetImportExportService, src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_3__.ElementRegistryService, src_app_tools_label_dictionary_services_label_dictionary_service__WEBPACK_IMPORTED_MODULE_2__.LabelDictionaryService] }, { provide: _tools_icon_set_config_services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_8__.IconSetChangedService, useExisting: src_app_tools_import_services_import_domain_story_service__WEBPACK_IMPORTED_MODULE_1__.ImportDomainStoryService @@ -4827,7 +4827,7 @@ class AppModule { imports: [_angular_platform_browser__WEBPACK_IMPORTED_MODULE_30__.BrowserModule, _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_31__.NoopAnimationsModule, _material_module__WEBPACK_IMPORTED_MODULE_6__.MaterialModule, ngx_color_picker__WEBPACK_IMPORTED_MODULE_32__.ColorPickerModule, _workbench_presentation_workbench_module__WEBPACK_IMPORTED_MODULE_16__.WorkbenchModule, _tools_autosave_presentation_autosave_module__WEBPACK_IMPORTED_MODULE_18__.AutosaveModule, _tools_export_presentation_export_module__WEBPACK_IMPORTED_MODULE_19__.ExportModule, _tools_icon_set_config_presentation_icon_set_config_module__WEBPACK_IMPORTED_MODULE_20__.IconSetConfigModule, _tools_import_presentation_import_module__WEBPACK_IMPORTED_MODULE_21__.ImportModule, _tools_label_dictionary_presentation_label_dictionary_module__WEBPACK_IMPORTED_MODULE_22__.LabelDictionaryModule, _tools_modeler_presentation_modeler_module__WEBPACK_IMPORTED_MODULE_23__.ModelerModule, _tools_title_presentation_title_module__WEBPACK_IMPORTED_MODULE_24__.TitleModule, _domain_presentation_domain_module__WEBPACK_IMPORTED_MODULE_17__.DomainModule, _tools_import_directive_dragDrop_directive__WEBPACK_IMPORTED_MODULE_25__.DragDirective] }); })(); -function initialize(dirtyFlagService, iconDictionaryService, configurationService, elementRegistryService, labelDictionaryService) { +function initialize(dirtyFlagService, iconDictionaryService, importExportService, elementRegistryService, labelDictionaryService) { return () => { (0,_tools_modeler_diagram_js_features_context_pad_domainStoryContextPadProvider__WEBPACK_IMPORTED_MODULE_9__.initializeContextPadProvider)(dirtyFlagService, iconDictionaryService); (0,_tools_modeler_diagram_js_features_palette_domainStoryPalette__WEBPACK_IMPORTED_MODULE_10__.initializePalette)(iconDictionaryService); @@ -6061,7 +6061,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/material/snack-bar */ 382); /* harmony import */ var _domain_services_storage_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domain/services/storage.service */ 624); /* harmony import */ var _title_services_title_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../title/services/title.service */ 1535); -/* harmony import */ var _icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var _icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-import-export.service */ 3103); @@ -6100,7 +6100,7 @@ class AutosaveService { const actorIcons = this.iconDictionaryService.getElementsOfType(story, _domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_0__.ElementTypes.ACTOR); const workObjectIcons = this.iconDictionaryService.getElementsOfType(story, _domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_0__.ElementTypes.WORKOBJECT); this.iconDictionaryService.updateIconRegistries(actorIcons, workObjectIcons, config); - this.rendererService.importStory(story, true, config, false); + this.rendererService.importStory(story, config, false); } removeAllDrafts() { this.storageService.set(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_1__.DRAFTS_KEY, []); @@ -6182,7 +6182,7 @@ class AutosaveService { } static { this.ɵfac = function AutosaveService_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || AutosaveService)(_angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_autosave_configuration_service__WEBPACK_IMPORTED_MODULE_2__.AutosaveConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_export_services_export_service__WEBPACK_IMPORTED_MODULE_3__.ExportService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_4__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_5__.RendererService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_11__.MatSnackBar), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_domain_services_storage_service__WEBPACK_IMPORTED_MODULE_6__.StorageService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__.TitleService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_8__.IconSetConfigurationService)); + return new (__ngFactoryType__ || AutosaveService)(_angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_autosave_configuration_service__WEBPACK_IMPORTED_MODULE_2__.AutosaveConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_export_services_export_service__WEBPACK_IMPORTED_MODULE_3__.ExportService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_4__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_5__.RendererService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_11__.MatSnackBar), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_domain_services_storage_service__WEBPACK_IMPORTED_MODULE_6__.StorageService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__.TitleService), _angular_core__WEBPACK_IMPORTED_MODULE_10__["ɵɵinject"](_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_8__.IconSetImportExportService)); }; } static { @@ -6525,7 +6525,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _presentation_export_dialog_export_dialog_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../presentation/export-dialog/export-dialog.component */ 2200); /* harmony import */ var _domain_entities_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domain/entities/constants */ 550); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/core */ 6623); -/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-import-export.service */ 3103); /* harmony import */ var src_app_tools_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! src/app/tools/title/services/title.service */ 1535); /* harmony import */ var src_app_domain_services_dirty_flag_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! src/app/domain/services/dirty-flag.service */ 4658); /* harmony import */ var src_app_tools_export_services_png_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! src/app/tools/export/services/png.service */ 2972); @@ -6555,8 +6555,8 @@ __webpack_require__.r(__webpack_exports__); class ExportService { - constructor(configurationService, titleService, dirtyFlagService, pngService, svgService, htmlPresentationService, rendererService, modelerService, dialogService, snackbar) { - this.configurationService = configurationService; + constructor(importExportService, titleService, dirtyFlagService, pngService, svgService, htmlPresentationService, rendererService, modelerService, dialogService, snackbar) { + this.importExportService = importExportService; this.titleService = titleService; this.dirtyFlagService = dirtyFlagService; this.pngService = pngService; @@ -6583,7 +6583,7 @@ class ExportService { return this.rendererService.getStory().length >= 1; } createConfigAndDST(DomainStory) { - return new src_app_tools_export_domain_export_configAndDst__WEBPACK_IMPORTED_MODULE_1__.ConfigAndDST(this.configurationService.getCurrentConfigurationForExport(), DomainStory); + return new src_app_tools_export_domain_export_configAndDst__WEBPACK_IMPORTED_MODULE_1__.ConfigAndDST(this.importExportService.getCurrentConfigurationForExport(), DomainStory); } downloadDST() { const dst = this.getStoryForDownload(); @@ -6694,7 +6694,7 @@ class ExportService { } static { this.ɵfac = function ExportService_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || ExportService)(_angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_6__.IconSetConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__.TitleService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_domain_services_dirty_flag_service__WEBPACK_IMPORTED_MODULE_8__.DirtyFlagService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_export_services_png_service__WEBPACK_IMPORTED_MODULE_9__.PngService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_export_services_svg_service__WEBPACK_IMPORTED_MODULE_10__.SvgService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_html_presentation_service__WEBPACK_IMPORTED_MODULE_11__.HtmlPresentationService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_12__.RendererService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_modeler_services_modeler_service__WEBPACK_IMPORTED_MODULE_13__.ModelerService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_domain_services_dialog_service__WEBPACK_IMPORTED_MODULE_14__.DialogService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_18__.MatSnackBar)); + return new (__ngFactoryType__ || ExportService)(_angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_6__.IconSetImportExportService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__.TitleService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_domain_services_dirty_flag_service__WEBPACK_IMPORTED_MODULE_8__.DirtyFlagService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_export_services_png_service__WEBPACK_IMPORTED_MODULE_9__.PngService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](src_app_tools_export_services_svg_service__WEBPACK_IMPORTED_MODULE_10__.SvgService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_html_presentation_service__WEBPACK_IMPORTED_MODULE_11__.HtmlPresentationService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_12__.RendererService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_modeler_services_modeler_service__WEBPACK_IMPORTED_MODULE_13__.ModelerService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_domain_services_dialog_service__WEBPACK_IMPORTED_MODULE_14__.DialogService), _angular_core__WEBPACK_IMPORTED_MODULE_17__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_18__.MatSnackBar)); }; } static { @@ -7953,7 +7953,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var src_app_utils_sanitizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! src/app/utils/sanitizer */ 3515); /* harmony import */ var _domain_iconFilterOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../domain/iconFilterOptions */ 6954); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/core */ 6623); -/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-import-export.service */ 3103); /* harmony import */ var src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-dictionary.service */ 6932); /* harmony import */ var _services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/icon-set-customization.service */ 6252); /* harmony import */ var src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! src/app/domain/services/element-registry.service */ 5511); @@ -8115,7 +8115,7 @@ class IconSetConfigurationComponent { } static { this.ɵfac = function IconSetConfigurationComponent_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || IconSetConfigurationComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_2__.IconSetConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_3__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](_services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_4__.IconSetCustomizationService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_5__.ElementRegistryService)); + return new (__ngFactoryType__ || IconSetConfigurationComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_2__.IconSetImportExportService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_3__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](_services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_4__.IconSetCustomizationService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdirectiveInject"](src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_5__.ElementRegistryService)); }; } static { @@ -8245,7 +8245,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 6623); /* harmony import */ var src_app_tools_icon_set_config_services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-customization.service */ 6252); -/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-set-import-export.service */ 3103); /* harmony import */ var _angular_material_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/material/button */ 5912); /* harmony import */ var _angular_material_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/list */ 8708); /* harmony import */ var _angular_material_form_field__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/material/form-field */ 8913); @@ -8320,14 +8320,14 @@ function IconSetDetailsComponent_For_25_Template(rf, ctx) { } } class IconSetDetailsComponent { - constructor(customizationService, configurationService) { + constructor(customizationService, importExportService) { this.customizationService = customizationService; - this.configurationService = configurationService; + this.importExportService = importExportService; this.draggedList = ''; this.draggedIndex = 0; this.selectedActors$ = this.customizationService.selectedActors$; this.selectedWorkobjects$ = this.customizationService.selectedWorkobjects$; - this.iconSetName = configurationService.iconSetName$; + this.iconSetName = importExportService.iconSetName$; } ngOnInit() {} changeName(event) { @@ -8365,11 +8365,11 @@ class IconSetDetailsComponent { this.draggedIndex = index; } exportIconSet() { - this.configurationService.exportConfiguration(); + this.importExportService.exportConfiguration(); } static { this.ɵfac = function IconSetDetailsComponent_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || IconSetDetailsComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_0__.IconSetCustomizationService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_1__.IconSetConfigurationService)); + return new (__ngFactoryType__ || IconSetDetailsComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_set_customization_service__WEBPACK_IMPORTED_MODULE_0__.IconSetCustomizationService), _angular_core__WEBPACK_IMPORTED_MODULE_3__["ɵɵdirectiveInject"](src_app_tools_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_1__.IconSetImportExportService)); }; } static { @@ -8720,242 +8720,6 @@ class IconDictionaryService { /***/ }), -/***/ 6527: -/*!**********************************************************************************!*\ - !*** ./src/app/tools/icon-set-config/services/icon-set-configuration.service.ts ***! - \**********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ IconSetConfigurationService: () => (/* binding */ IconSetConfigurationService) -/* harmony export */ }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rxjs */ 5536); -/* harmony import */ var src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! src/app/domain/entities/dictionary */ 843); -/* harmony import */ var src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/app/domain/entities/elementTypes */ 3190); -/* harmony import */ var _domain_iconConfiguration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../domain/iconConfiguration */ 6976); -/* harmony import */ var _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domain/entities/constants */ 550); -/* harmony import */ var _utils_sanitizer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils/sanitizer */ 3515); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/core */ 6623); -/* harmony import */ var src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-dictionary.service */ 6932); -/* harmony import */ var src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/app/domain/services/element-registry.service */ 5511); -/* harmony import */ var _domain_services_storage_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../domain/services/storage.service */ 624); - - - - - - - - - - -class IconSetConfigurationService { - constructor(iconDictionaryService, elementRegistryService, storageService) { - this.iconDictionaryService = iconDictionaryService; - this.elementRegistryService = elementRegistryService; - this.storageService = storageService; - this.iconSetNameSubject = new rxjs__WEBPACK_IMPORTED_MODULE_8__.BehaviorSubject(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.INITIAL_ICON_SET_NAME); - this.iconSetName$ = this.iconSetNameSubject.asObservable(); - } - setIconSetName(name) { - this.iconSetNameSubject.next(name); // ? name : INITIAL_ICON_SET_NAME); - } - exportConfiguration() { - const iconSetConfiguration = this.getCurrentConfigurationForExport(); - if (!iconSetConfiguration) { - return; - } - const configJSONString = JSON.stringify(iconSetConfiguration, null, 2); - const filename = this.iconSetNameSubject.value; - const element = document.createElement('a'); - element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(configJSONString)); - element.setAttribute('download', filename + '.iconset'); - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); - } - loadConfiguration(customConfig, updateIconSetName = true) { - let actorDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); - let workObjectDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); - if (customConfig.actors.keysArray()) { - actorDict = customConfig.actors; - workObjectDict = customConfig.workObjects; - } else { - actorDict.addEach(customConfig.actors); - workObjectDict.addEach(customConfig.workObjects); - } - const actorKeys = actorDict.keysArray(); - const workObjectKeys = workObjectDict.keysArray(); - this.iconDictionaryService.updateIconRegistries([], [], customConfig); - this.iconDictionaryService.getIconConfiguration().addCustomIcons(actorKeys, actorDict, workObjectKeys, workObjectDict); - this.iconDictionaryService.addIconsFromIconSetConfiguration(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, actorKeys.map(a => src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR + a)); - this.iconDictionaryService.addIconsFromIconSetConfiguration(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, workObjectKeys.map(w => src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT + w)); - if (updateIconSetName) { - const configurationName = customConfig.name; - this.setIconSetName(configurationName); - } - } - getCurrentConfiguration() { - const actors = this.iconDictionaryService.getActorsDictionary(); - const workObjects = this.iconDictionaryService.getWorkObjectsDictionary(); - let iconSetConfiguration; - if (actors.size() > 0 && workObjects.size() > 0) { - iconSetConfiguration = this.createConfigFromDictionaries(actors, workObjects); - } - return iconSetConfiguration; - } - getCurrentConfigurationForExport() { - const currentConfiguration = this.getCurrentConfiguration(); - if (currentConfiguration) { - const actors = {}; - const workObjects = {}; - currentConfiguration.actors.all().forEach(entry => { - actors[entry.key] = entry.value; - }); - currentConfiguration.workObjects.all().forEach(entry => { - workObjects[entry.key] = entry.value; - }); - return { - name: currentConfiguration.name, - actors: actors, - workObjects: workObjects - }; - } - return; - } - getCurrentConfigurationNamesWithoutPrefix() { - return { - name: this.iconSetNameSubject.value || _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.INITIAL_ICON_SET_NAME, - actors: this.iconDictionaryService.getActorsDictionary().keysArray().map(a => a.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '')), - workObjects: this.iconDictionaryService.getWorkObjectsDictionary().keysArray().map(w => w.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, '')) - }; - } - createMinimalConfigurationWithDefaultIcons() { - const minimalConfig = this.createConfigFromCanvas(); - _domain_iconConfiguration__WEBPACK_IMPORTED_MODULE_2__.defaultIconSet.actors.forEach(iconName => { - minimalConfig.actors.add(this.iconDictionaryService.getIconSource(iconName), iconName); - }); - _domain_iconConfiguration__WEBPACK_IMPORTED_MODULE_2__.defaultIconSet.workObjects.forEach(iconName => { - minimalConfig.workObjects.add(this.iconDictionaryService.getIconSource(iconName), iconName); - }); - return minimalConfig; - } - createConfigFromDictionaries(actorsDict, workObjectsDict) { - const actorNames = actorsDict.keysArray(); - const workobjectNames = workObjectsDict.keysArray(); - const newActors = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); - const newWorkobjects = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); - // Fill Configuration from Canvas-Objects - actorNames.forEach(actor => { - newActors.add(actorsDict.get(actor), actor.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '')); - }); - workobjectNames.forEach(workObject => { - newWorkobjects.add(workObjectsDict.get(workObject), workObject.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, '')); - }); - return { - name: this.iconSetNameSubject.value, - actors: newActors, - workObjects: newWorkobjects - }; - } - createIconSetConfiguration(fileConfiguration) { - if (fileConfiguration === undefined) { - return { - name: '', - actors: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(), - workObjects: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary() - }; - } - const actorsDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); - const workObjectsDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); - Object.keys(fileConfiguration.actors).forEach(key => { - let icon = fileConfiguration.actors[key]; - if (icon) { - // make sure the actor has an icon - actorsDict.add(icon, (0,_utils_sanitizer__WEBPACK_IMPORTED_MODULE_4__.sanitizeIconName)(key)); - } - }); - Object.keys(fileConfiguration.workObjects).forEach(key => { - let icon = fileConfiguration.workObjects[key]; - if (icon) { - // make sure the work object has an icon - workObjectsDict.add(icon, (0,_utils_sanitizer__WEBPACK_IMPORTED_MODULE_4__.sanitizeIconName)(key)); - } - }); - return { - name: fileConfiguration.name, - actors: actorsDict, - workObjects: workObjectsDict - }; - } - getStoredIconSetConfiguration() { - const iconSetString = this.storageService.get(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.ICON_SET_CONFIGURATION_KEY); - if (!iconSetString) { - return; - } else { - const configurationFromFile = this.createIconSetConfiguration(JSON.parse(iconSetString)); - if (this.checkValidityOfConfiguration(configurationFromFile)) { - return configurationFromFile; - } - } - return; - } - setStoredIconSetConfiguration(config) { - const actors = {}; - config.actors.keysArray().forEach(key => { - actors[key] = config.actors.get(key); - }); - const workObjects = {}; - config.workObjects.keysArray().forEach(key => { - workObjects[key] = config.workObjects.get(key); - }); - const configForStorage = { - name: config.name, - actors: actors, - workObjects: workObjects - }; - this.storageService.set(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.ICON_SET_CONFIGURATION_KEY, JSON.stringify(configForStorage, null, 2)); - } - createConfigFromCanvas() { - const config = { - name: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.INITIAL_ICON_SET_NAME, - actors: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(), - workObjects: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary() - }; - let allCanvasObjects = this.elementRegistryService.getAllCanvasObjects(); - allCanvasObjects.map(e => e.businessObject).forEach(element => { - const type = element.type.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '').replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, ''); - if (element.type.includes(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR)) { - let src = this.iconDictionaryService.getIconSource(type) || ''; - config.actors.add(src, type); - } else if (element.type.includes(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT)) { - let src = this.iconDictionaryService.getIconSource(type) || ''; - config.workObjects.add(src, type); - } - }); - return config; - } - checkValidityOfConfiguration(iconSetConfiguration) { - return iconSetConfiguration.actors.keysArray().length > 1 && iconSetConfiguration.workObjects.keysArray().length > 1 && !iconSetConfiguration.actors.all().some(e => typeof e.value !== 'string') && !iconSetConfiguration.workObjects.all().some(e => typeof e.value !== 'string'); - } - static { - this.ɵfac = function IconSetConfigurationService_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || IconSetConfigurationService)(_angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵinject"](src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵinject"](src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵinject"](_domain_services_storage_service__WEBPACK_IMPORTED_MODULE_7__.StorageService)); - }; - } - static { - this.ɵprov = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵdefineInjectable"]({ - token: IconSetConfigurationService, - factory: IconSetConfigurationService.ɵfac, - providedIn: 'root' - }); - } -} - -/***/ }), - /***/ 6252: /*!**********************************************************************************!*\ !*** ./src/app/tools/icon-set-config/services/icon-set-customization.service.ts ***! @@ -8972,7 +8736,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../domain/entities/dictionary */ 843); /* harmony import */ var _domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domain/entities/elementTypes */ 3190); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 6623); -/* harmony import */ var _icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icon-set-configuration.service */ 6527); +/* harmony import */ var _icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icon-set-import-export.service */ 3103); /* harmony import */ var _icon_dictionary_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./icon-dictionary.service */ 6932); /* harmony import */ var src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! src/app/domain/services/element-registry.service */ 5511); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material/snack-bar */ 382); @@ -9314,7 +9078,7 @@ class IconSetCustomizationService { } static { this.ɵfac = function IconSetCustomizationService_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || IconSetCustomizationService)(_angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_3__.IconSetConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_4__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](IconSetChangedService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_5__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_8__.MatSnackBar)); + return new (__ngFactoryType__ || IconSetCustomizationService)(_angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_3__.IconSetImportExportService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_4__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](IconSetChangedService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_5__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_7__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_8__.MatSnackBar)); }; } static { @@ -9328,6 +9092,242 @@ class IconSetCustomizationService { /***/ }), +/***/ 3103: +/*!**********************************************************************************!*\ + !*** ./src/app/tools/icon-set-config/services/icon-set-import-export.service.ts ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ IconSetImportExportService: () => (/* binding */ IconSetImportExportService) +/* harmony export */ }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rxjs */ 5536); +/* harmony import */ var src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! src/app/domain/entities/dictionary */ 843); +/* harmony import */ var src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/app/domain/entities/elementTypes */ 3190); +/* harmony import */ var _domain_iconConfiguration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../domain/iconConfiguration */ 6976); +/* harmony import */ var _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domain/entities/constants */ 550); +/* harmony import */ var _utils_sanitizer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils/sanitizer */ 3515); +/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/core */ 6623); +/* harmony import */ var src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! src/app/tools/icon-set-config/services/icon-dictionary.service */ 6932); +/* harmony import */ var src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/app/domain/services/element-registry.service */ 5511); +/* harmony import */ var _domain_services_storage_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../domain/services/storage.service */ 624); + + + + + + + + + + +class IconSetImportExportService { + constructor(iconDictionaryService, elementRegistryService, storageService) { + this.iconDictionaryService = iconDictionaryService; + this.elementRegistryService = elementRegistryService; + this.storageService = storageService; + this.iconSetNameSubject = new rxjs__WEBPACK_IMPORTED_MODULE_8__.BehaviorSubject(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.INITIAL_ICON_SET_NAME); + this.iconSetName$ = this.iconSetNameSubject.asObservable(); + } + setIconSetName(name) { + this.iconSetNameSubject.next(name); // ? name : INITIAL_ICON_SET_NAME); + } + exportConfiguration() { + const iconSetConfiguration = this.getCurrentConfigurationForExport(); + if (!iconSetConfiguration) { + return; + } + const configJSONString = JSON.stringify(iconSetConfiguration, null, 2); + const filename = this.iconSetNameSubject.value; + const element = document.createElement('a'); + element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(configJSONString)); + element.setAttribute('download', filename + '.iconset'); + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + } + loadConfiguration(customConfig, updateIconSetName = true) { + let actorDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); + let workObjectDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); + if (customConfig.actors.keysArray()) { + actorDict = customConfig.actors; + workObjectDict = customConfig.workObjects; + } else { + actorDict.addEach(customConfig.actors); + workObjectDict.addEach(customConfig.workObjects); + } + const actorKeys = actorDict.keysArray(); + const workObjectKeys = workObjectDict.keysArray(); + this.iconDictionaryService.updateIconRegistries([], [], customConfig); + this.iconDictionaryService.getIconConfiguration().addCustomIcons(actorKeys, actorDict, workObjectKeys, workObjectDict); + this.iconDictionaryService.addIconsFromIconSetConfiguration(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, actorKeys.map(a => src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR + a)); + this.iconDictionaryService.addIconsFromIconSetConfiguration(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, workObjectKeys.map(w => src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT + w)); + if (updateIconSetName) { + const configurationName = customConfig.name; + this.setIconSetName(configurationName); + } + } + getCurrentConfiguration() { + const actors = this.iconDictionaryService.getActorsDictionary(); + const workObjects = this.iconDictionaryService.getWorkObjectsDictionary(); + let iconSetConfiguration; + if (actors.size() > 0 && workObjects.size() > 0) { + iconSetConfiguration = this.createConfigFromDictionaries(actors, workObjects); + } + return iconSetConfiguration; + } + getCurrentConfigurationForExport() { + const currentConfiguration = this.getCurrentConfiguration(); + if (currentConfiguration) { + const actors = {}; + const workObjects = {}; + currentConfiguration.actors.all().forEach(entry => { + actors[entry.key] = entry.value; + }); + currentConfiguration.workObjects.all().forEach(entry => { + workObjects[entry.key] = entry.value; + }); + return { + name: currentConfiguration.name, + actors: actors, + workObjects: workObjects + }; + } + return; + } + getCurrentConfigurationNamesWithoutPrefix() { + return { + name: this.iconSetNameSubject.value || _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.INITIAL_ICON_SET_NAME, + actors: this.iconDictionaryService.getActorsDictionary().keysArray().map(a => a.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '')), + workObjects: this.iconDictionaryService.getWorkObjectsDictionary().keysArray().map(w => w.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, '')) + }; + } + createMinimalConfigurationWithDefaultIcons() { + const minimalConfig = this.createConfigFromCanvas(); + _domain_iconConfiguration__WEBPACK_IMPORTED_MODULE_2__.defaultIconSet.actors.forEach(iconName => { + minimalConfig.actors.add(this.iconDictionaryService.getIconSource(iconName), iconName); + }); + _domain_iconConfiguration__WEBPACK_IMPORTED_MODULE_2__.defaultIconSet.workObjects.forEach(iconName => { + minimalConfig.workObjects.add(this.iconDictionaryService.getIconSource(iconName), iconName); + }); + return minimalConfig; + } + createConfigFromDictionaries(actorsDict, workObjectsDict) { + const actorNames = actorsDict.keysArray(); + const workobjectNames = workObjectsDict.keysArray(); + const newActors = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); + const newWorkobjects = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); + // Fill Configuration from Canvas-Objects + actorNames.forEach(actor => { + newActors.add(actorsDict.get(actor), actor.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '')); + }); + workobjectNames.forEach(workObject => { + newWorkobjects.add(workObjectsDict.get(workObject), workObject.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, '')); + }); + return { + name: this.iconSetNameSubject.value, + actors: newActors, + workObjects: newWorkobjects + }; + } + createIconSetConfiguration(fileConfiguration) { + if (fileConfiguration === undefined) { + return { + name: '', + actors: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(), + workObjects: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary() + }; + } + const actorsDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); + const workObjectsDict = new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(); + Object.keys(fileConfiguration.actors).forEach(key => { + let icon = fileConfiguration.actors[key]; + if (icon) { + // make sure the actor has an icon + actorsDict.add(icon, (0,_utils_sanitizer__WEBPACK_IMPORTED_MODULE_4__.sanitizeIconName)(key)); + } + }); + Object.keys(fileConfiguration.workObjects).forEach(key => { + let icon = fileConfiguration.workObjects[key]; + if (icon) { + // make sure the work object has an icon + workObjectsDict.add(icon, (0,_utils_sanitizer__WEBPACK_IMPORTED_MODULE_4__.sanitizeIconName)(key)); + } + }); + return { + name: fileConfiguration.name, + actors: actorsDict, + workObjects: workObjectsDict + }; + } + getStoredIconSetConfiguration() { + const iconSetString = this.storageService.get(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.ICON_SET_CONFIGURATION_KEY); + if (!iconSetString) { + return; + } else { + const configurationFromFile = this.createIconSetConfiguration(JSON.parse(iconSetString)); + if (this.checkValidityOfConfiguration(configurationFromFile)) { + return configurationFromFile; + } + } + return; + } + setStoredIconSetConfiguration(config) { + const actors = {}; + config.actors.keysArray().forEach(key => { + actors[key] = config.actors.get(key); + }); + const workObjects = {}; + config.workObjects.keysArray().forEach(key => { + workObjects[key] = config.workObjects.get(key); + }); + const configForStorage = { + name: config.name, + actors: actors, + workObjects: workObjects + }; + this.storageService.set(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.ICON_SET_CONFIGURATION_KEY, JSON.stringify(configForStorage, null, 2)); + } + createConfigFromCanvas() { + const config = { + name: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.INITIAL_ICON_SET_NAME, + actors: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary(), + workObjects: new src_app_domain_entities_dictionary__WEBPACK_IMPORTED_MODULE_0__.Dictionary() + }; + let allCanvasObjects = this.elementRegistryService.getAllCanvasObjects(); + allCanvasObjects.map(e => e.businessObject).forEach(element => { + const type = element.type.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '').replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, ''); + if (element.type.includes(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR)) { + let src = this.iconDictionaryService.getIconSource(type) || ''; + config.actors.add(src, type); + } else if (element.type.includes(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT)) { + let src = this.iconDictionaryService.getIconSource(type) || ''; + config.workObjects.add(src, type); + } + }); + return config; + } + checkValidityOfConfiguration(iconSetConfiguration) { + return iconSetConfiguration.actors.keysArray().length > 1 && iconSetConfiguration.workObjects.keysArray().length > 1 && !iconSetConfiguration.actors.all().some(e => typeof e.value !== 'string') && !iconSetConfiguration.workObjects.all().some(e => typeof e.value !== 'string'); + } + static { + this.ɵfac = function IconSetImportExportService_Factory(__ngFactoryType__) { + return new (__ngFactoryType__ || IconSetImportExportService)(_angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵinject"](src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵinject"](src_app_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵinject"](_domain_services_storage_service__WEBPACK_IMPORTED_MODULE_7__.StorageService)); + }; + } + static { + this.ɵprov = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_9__["ɵɵdefineInjectable"]({ + token: IconSetImportExportService, + factory: IconSetImportExportService.ɵfac, + providedIn: 'root' + }); + } +} + +/***/ }), + /***/ 2482: /*!**************************************************************!*\ !*** ./src/app/tools/import/directive/dragDrop.directive.ts ***! @@ -9579,7 +9579,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var src_app_tools_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! src/app/tools/title/services/title.service */ 1535); /* harmony import */ var src_app_tools_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! src/app/tools/modeler/services/renderer.service */ 3812); /* harmony import */ var _domain_services_dialog_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../domain/services/dialog.service */ 2855); -/* harmony import */ var _icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var _icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-import-export.service */ 3103); /* harmony import */ var _modeler_services_modeler_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../modeler/services/modeler.service */ 439); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @angular/material/snack-bar */ 382); @@ -9783,7 +9783,6 @@ class ImportDomainStoryService { } this.importRepairService.removeWhitespacesFromIcons(elements); this.importRepairService.removeUnnecessaryBpmnProperties(elements); - const configChanged = this.checkConfigForChanges(iconSetConfig); let lastElement = elements[elements.length - 1]; if (!lastElement.id) { lastElement = elements.pop(); @@ -9807,7 +9806,7 @@ class ImportDomainStoryService { } this.titleService.updateTitleAndDescription(this.title, lastElement.info, false); this.updateIconRegistries(elements, iconSetConfig); - this.rendererService.importStory(elements, configChanged, iconSetConfig); + this.rendererService.importStory(elements, iconSetConfig); } } importSuccessful() { @@ -9848,35 +9847,6 @@ class ImportDomainStoryService { xmlText = xmlText.replace('', ''); return xmlText; } - checkConfigForChanges(iconSetConfiguration) { - const newActorKeys = iconSetConfiguration.actors.keysArray(); - const newWorkObjectKeys = iconSetConfiguration.workObjects.keysArray(); - const currentActorKeys = this.iconDictionaryService.getNamesOfIconsAssignedAs(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR); - const currentWorkobjectKeys = this.iconDictionaryService.getNamesOfIconsAssignedAs(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT); - let changed = false; - if (newActorKeys.length !== currentActorKeys.length || newWorkObjectKeys.length !== currentWorkobjectKeys.length) { - return true; - } - for (let i = 0; i < newActorKeys.length; i++) { - changed = this.clearName(currentActorKeys[i]) !== this.clearName(newActorKeys[i]); - if (changed) { - i = newActorKeys.length; - } - } - if (changed) { - return changed; - } - for (let i = 0; i < newWorkObjectKeys.length; i++) { - changed = this.clearName(currentWorkobjectKeys[i]) !== this.clearName(newWorkObjectKeys[i]); - if (changed) { - i = newWorkObjectKeys.length; - } - } - return changed; - } - clearName(name) { - return name.replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR, '').replace(src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT, ''); - } updateIconRegistries(elements, config) { const actorIcons = this.iconDictionaryService.getElementsOfType(elements, src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.ACTOR); const workObjectIcons = this.iconDictionaryService.getElementsOfType(elements, src_app_domain_entities_elementTypes__WEBPACK_IMPORTED_MODULE_1__.ElementTypes.WORKOBJECT); @@ -9916,7 +9886,7 @@ class ImportDomainStoryService { } static { this.ɵfac = function ImportDomainStoryService_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || ImportDomainStoryService)(_angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_import_services_import_repair_service__WEBPACK_IMPORTED_MODULE_6__.ImportRepairService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__.TitleService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_8__.RendererService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_domain_services_dialog_service__WEBPACK_IMPORTED_MODULE_9__.DialogService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_10__.IconSetConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_modeler_services_modeler_service__WEBPACK_IMPORTED_MODULE_11__.ModelerService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_14__.MatSnackBar)); + return new (__ngFactoryType__ || ImportDomainStoryService)(_angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_import_services_import_repair_service__WEBPACK_IMPORTED_MODULE_6__.ImportRepairService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_title_services_title_service__WEBPACK_IMPORTED_MODULE_7__.TitleService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](src_app_tools_modeler_services_renderer_service__WEBPACK_IMPORTED_MODULE_8__.RendererService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_domain_services_dialog_service__WEBPACK_IMPORTED_MODULE_9__.DialogService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_10__.IconSetImportExportService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_modeler_services_modeler_service__WEBPACK_IMPORTED_MODULE_11__.ModelerService), _angular_core__WEBPACK_IMPORTED_MODULE_12__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_14__.MatSnackBar)); }; } static { @@ -11001,7 +10971,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _initializer_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initializer.service */ 2317); /* harmony import */ var _domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domain/services/element-registry.service */ 5511); /* harmony import */ var _icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../icon-set-config/services/icon-dictionary.service */ 6932); -/* harmony import */ var _icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-configuration.service */ 6527); +/* harmony import */ var _icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-import-export.service */ 3103); /* harmony import */ var _domain_services_storage_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../domain/services/storage.service */ 624); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/material/snack-bar */ 382); @@ -11129,7 +11099,7 @@ class ModelerService { } static { this.ɵfac = function ModelerService_Factory(__ngFactoryType__) { - return new (__ngFactoryType__ || ModelerService)(_angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_initializer_service__WEBPACK_IMPORTED_MODULE_5__.InitializerService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_7__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_8__.IconSetConfigurationService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_domain_services_storage_service__WEBPACK_IMPORTED_MODULE_9__.StorageService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_12__.MatSnackBar)); + return new (__ngFactoryType__ || ModelerService)(_angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_initializer_service__WEBPACK_IMPORTED_MODULE_5__.InitializerService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_7__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_icon_set_config_services_icon_set_import_export_service__WEBPACK_IMPORTED_MODULE_8__.IconSetImportExportService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_domain_services_storage_service__WEBPACK_IMPORTED_MODULE_9__.StorageService), _angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵinject"](_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_12__.MatSnackBar)); }; } static { @@ -11174,7 +11144,7 @@ class RendererService { this.renderStory([]); this.dirtyFlagService.makeClean(); } - importStory(domainStory, configurationChange, config, makeClean = true) { + importStory(domainStory, config, makeClean = true) { this.modelerService.restart(config, domainStory); this.renderStory(domainStory); this.elementRegistryService.correctInitialize(); diff --git a/app-latest-build/main.js.map b/app-latest-build/main.js.map index 85f1039..dea8399 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/tools/export/services/exportUtil.js","./src/app/tools/modeler/diagram-js/BaseViewer.js","./src/app/tools/modeler/diagram-js/features/change-icon/replace.js","./src/app/tools/modeler/diagram-js/features/change-icon/replaceMenuProvider.js","./src/app/tools/modeler/diagram-js/features/change-icon/replaceOptions.js","./src/app/tools/modeler/diagram-js/features/context-pad/domainStoryContextPadProvider.js","./src/app/tools/modeler/diagram-js/features/copyPaste/EgonCopyPaste.js","./src/app/tools/modeler/diagram-js/features/copyPaste/PropertyCopy.js","./src/app/tools/modeler/diagram-js/features/copyPaste/index.js","./src/app/tools/modeler/diagram-js/features/domainStoryElementFactory.js","./src/app/tools/modeler/diagram-js/features/domainStoryIdFactory.js","./src/app/tools/modeler/diagram-js/features/domainStoryRenderer.js","./src/app/tools/modeler/diagram-js/features/domainStoryRules.js","./src/app/tools/modeler/diagram-js/features/domainStoryUpdater.js","./src/app/tools/modeler/diagram-js/features/index.js","./src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingPreview.js","./src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider.js","./src/app/tools/modeler/diagram-js/features/labeling/dsLabelUtil.js","./src/app/tools/modeler/diagram-js/features/labeling/index.js","./src/app/tools/modeler/diagram-js/features/labeling/position.js","./src/app/tools/modeler/diagram-js/features/modeling/dSModeling.js","./src/app/tools/modeler/diagram-js/features/modeling/index.js","./src/app/tools/modeler/diagram-js/features/numbering/numbering.js","./src/app/tools/modeler/diagram-js/features/palette/domainStoryPalette.js","./src/app/tools/modeler/diagram-js/features/shortcuts/AdditionalEditorActions.js","./src/app/tools/modeler/diagram-js/features/shortcuts/AdditionalKeyboardBindings.js","./src/app/tools/modeler/diagram-js/features/shortcuts/index.js","./src/app/tools/modeler/diagram-js/features/updateHandler/activityUpdateHandlers.js","./src/app/tools/modeler/diagram-js/features/updateHandler/elementUpdateHandler.js","./src/app/tools/modeler/diagram-js/features/updateHandler/headlineAndDescriptionUpdateHandler.js","./src/app/tools/modeler/diagram-js/features/updateHandler/massRenameHandler.js","./src/app/tools/modeler/diagram-js/features/updateHandler/updateLabelHandler.js","./src/app/tools/modeler/diagram-js/features/util/TextRenderer.js","./src/app/tools/modeler/diagram-js/features/util/util.js","./src/app/tools/modeler/diagram-js/index.js","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/domain/entities/configuration.ts","./src/app/domain/entities/constants.ts","./src/app/domain/entities/dictionary.ts","./src/app/domain/entities/elementTypes.ts","./src/app/domain/presentation/domain.module.ts","./src/app/domain/presentation/keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component.ts","./src/app/domain/presentation/keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component.html","./src/app/domain/services/command-stack.service.ts","./src/app/domain/services/dialog.service.ts","./src/app/domain/services/dirty-flag.service.ts","./src/app/domain/services/element-registry.service.ts","./src/app/domain/services/storage.service.ts","./src/app/material.module.ts","./src/app/tools/autosave/presentation/AutosaveOptions/autosave-options.component.ts","./src/app/tools/autosave/presentation/AutosaveOptions/autosave-options.component.html","./src/app/tools/autosave/presentation/AutosaveSettings/autosave-settings.component.ts","./src/app/tools/autosave/presentation/AutosaveSettings/autosave-settings.component.html","./src/app/tools/autosave/presentation/AutosavedDrafts/autosaved-drafts.component.ts","./src/app/tools/autosave/presentation/AutosavedDrafts/autosaved-drafts.component.html","./src/app/tools/autosave/presentation/autosave.module.ts","./src/app/tools/autosave/services/autosave-configuration.service.ts","./src/app/tools/autosave/services/autosave.service.ts","./src/app/tools/export/domain/dialog/exportDialogData.ts","./src/app/tools/export/domain/export/configAndDst.ts","./src/app/tools/export/domain/export/exportConstants.ts","./src/app/tools/export/presentation/export-dialog/export-dialog.component.ts","./src/app/tools/export/presentation/export-dialog/export-dialog.component.html","./src/app/tools/export/presentation/export.module.ts","./src/app/tools/export/services/export.service.ts","./src/app/tools/export/services/html-presentation.service.ts","./src/app/tools/export/services/png.service.ts","./src/app/tools/export/services/svg.service.ts","./src/app/tools/icon-set-config/domain/allIcons.ts","./src/app/tools/icon-set-config/domain/iconConfiguration.ts","./src/app/tools/icon-set-config/domain/iconFilterOptions.ts","./src/app/tools/icon-set-config/presentation/details-list-item/details-list-item.component.ts","./src/app/tools/icon-set-config/presentation/details-list-item/details-list-item.component.html","./src/app/tools/icon-set-config/presentation/icon-list-item/icon-list-item.component.ts","./src/app/tools/icon-set-config/presentation/icon-list-item/icon-list-item.component.html","./src/app/tools/icon-set-config/presentation/icon-set-config.module.ts","./src/app/tools/icon-set-config/presentation/icon-set-configuration/icon-set-configuration.component.ts","./src/app/tools/icon-set-config/presentation/icon-set-configuration/icon-set-configuration.component.html","./src/app/tools/icon-set-config/presentation/icon-set-details/icon-set-details.component.ts","./src/app/tools/icon-set-config/presentation/icon-set-details/icon-set-details.component.html","./src/app/tools/icon-set-config/services/icon-dictionary.service.ts","./src/app/tools/icon-set-config/services/icon-set-configuration.service.ts","./src/app/tools/icon-set-config/services/icon-set-customization.service.ts","./src/app/tools/import/directive/dragDrop.directive.ts","./src/app/tools/import/presentation/import-dialog/import-dialog.component.ts","./src/app/tools/import/presentation/import-dialog/import-dialog.component.html","./src/app/tools/import/presentation/import.module.ts","./src/app/tools/import/services/import-domain-story.service.ts","./src/app/tools/import/services/import-repair.service.ts","./src/app/tools/label-dictionary/presentation/label-dictionary-dialog/label-dictionary-dialog.component.ts","./src/app/tools/label-dictionary/presentation/label-dictionary-dialog/label-dictionary-dialog.component.html","./src/app/tools/label-dictionary/presentation/label-dictionary.module.ts","./src/app/tools/label-dictionary/presentation/label-dictionary/label-dictionary.component.ts","./src/app/tools/label-dictionary/presentation/label-dictionary/label-dictionary.component.html","./src/app/tools/label-dictionary/services/label-dictionary.service.ts","./src/app/tools/label-dictionary/services/mass-naming.service.ts","./src/app/tools/modeler/domain/activity-dialog-form.ts","./src/app/tools/modeler/domain/activityDialogData.ts","./src/app/tools/modeler/presentation/activity-dialog/activity-dialog.component.ts","./src/app/tools/modeler/presentation/activity-dialog/activity-dialog.component.html","./src/app/tools/modeler/presentation/modeler.module.ts","./src/app/tools/modeler/services/initializer.service.ts","./src/app/tools/modeler/services/modeler.service.ts","./src/app/tools/modeler/services/renderer.service.ts","./src/app/tools/replay/domain/replayConstants.ts","./src/app/tools/replay/services/dom-manipulation.service.ts","./src/app/tools/replay/services/replay.service.ts","./src/app/tools/replay/services/story-creator.service.ts","./src/app/tools/title/domain/title-dialog-form.ts","./src/app/tools/title/presentation/title-dialog/title-dialog.component.ts","./src/app/tools/title/presentation/title-dialog/title-dialog.component.html","./src/app/tools/title/presentation/title.module.ts","./src/app/tools/title/services/title.service.ts","./src/app/tools/unsavedChangesReminder/presentation/unsavedChangesReminder-dialog/unsaved-changes-reminder/unsaved-changes-reminder.component.ts","./src/app/tools/unsavedChangesReminder/presentation/unsavedChangesReminder-dialog/unsaved-changes-reminder/unsaved-changes-reminder.component.html","./src/app/utils/colorConverter.ts","./src/app/utils/mathExtensions.ts","./src/app/utils/sanitizer.ts","./src/app/workbench/presentation/header/header-buttons/header-buttons.component.ts","./src/app/workbench/presentation/header/header-buttons/header-buttons.component.html","./src/app/workbench/presentation/header/header/header.component.ts","./src/app/workbench/presentation/header/header/header.component.html","./src/app/workbench/presentation/settings/settings.component.ts","./src/app/workbench/presentation/settings/settings.component.html","./src/app/workbench/presentation/workbench.module.ts","./src/app/workbench/services/settings/settings.service.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import {\n SVG_LINK,\n TEXTSPAN_DESCRIPTION_HEIGHT,\n TEXTSPAN_TITLE_HEIGHT,\n X_OFFSET_UTIL,\n} from \"../domain/export/exportConstants\";\n\nlet dynamicHeightOffset = 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 initDynamicHeightOffset,\n title,\n description,\n min_x,\n min_y,\n width,\n) {\n dynamicHeightOffset = initDynamicHeightOffset;\n\n title = title.replace(\"<\", \"\").replace(\">\", \"\");\n\n let titleElement = createTitle(title, width);\n\n let descriptionElement = \"\";\n if (description) {\n descriptionElement = createDescription(description, width);\n }\n\n // to display the title and description in the SVG-file, we need to add a container for our text-elements\n\n let insertText =\n '' +\n titleElement +\n descriptionElement +\n \"\";\n return { insertText, dynamicHeightOffset: dynamicHeightOffset };\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 // every leading empty strings in the array must be removed, otherwise the text elements\n // will not be filled with text\n words = removeLeadingEmptyStrings(words);\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 + dynamicHeightOffset);\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 dynamicHeightOffset += 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 + dynamicHeightOffset);\n textSpan.appendChild(textNode);\n }\n }\n }\n dynamicHeightOffset += heightOffset;\n\n textSpans += textTag + textSpan.outerHTML + \"\";\n return textSpans;\n}\n\nfunction removeLeadingEmptyStrings(stringArray) {\n const firstNonEmptyIndex = stringArray.findIndex((string) => string !== \"\");\n return stringArray.slice(\n firstNonEmptyIndex === -1 ? stringArray.length : firstNonEmptyIndex,\n );\n}\n","import { assign, isNumber, omit } from \"min-dash\";\n\nimport {\n domify,\n assignStyle,\n query as domQuery,\n remove as domRemove,\n} from \"min-dom\";\n\nimport { innerSVG } from \"tiny-svg\";\n\nimport Diagram from \"diagram-js\";\n\nimport inherits from \"inherits-browser\";\n\nexport default function BaseViewer(options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n this._container = this._createContainer(options);\n this._init(this._container, options);\n}\n\ninherits(BaseViewer, Diagram);\n\nBaseViewer.prototype.saveSVG = async function saveSVG() {\n this._emit(\"saveSVG.start\");\n\n let svg, err;\n\n try {\n const canvas = this.get(\"canvas\");\n\n const contentNode = canvas.getActiveLayer(),\n defsNode = domQuery(\":scope > defs\", canvas._svg);\n\n const contents = innerSVG(contentNode),\n defs = defsNode ? \"\" + innerSVG(defsNode) + \"\" : \"\";\n\n const bbox = contentNode.getBBox();\n\n svg =\n '\\n' +\n \"\\n\" +\n '\\n' +\n '' +\n defs +\n contents +\n \"\";\n } catch (e) {\n err = e;\n }\n\n this._emit(\"saveSVG.done\", {\n error: err,\n svg: svg,\n });\n\n if (err) {\n throw err;\n }\n\n return { svg };\n};\n\nBaseViewer.prototype.getModules = function () {\n return this._modules;\n};\n\nBaseViewer.prototype.clear = function () {\n if (!this.getDefinitions()) {\n // no diagram to clear\n return;\n }\n\n // remove drawn elements\n Diagram.prototype.clear.call(this);\n};\n\nBaseViewer.prototype.destroy = function () {\n // diagram destroy\n Diagram.prototype.destroy.call(this);\n\n // dom detach\n domRemove(this._container);\n};\n\nBaseViewer.prototype.on = function (events, priority, callback, that) {\n return this.get(\"eventBus\").on(events, priority, callback, that);\n};\n\nBaseViewer.prototype.off = function (events, callback) {\n this.get(\"eventBus\").off(events, callback);\n};\n\nBaseViewer.prototype.attachTo = function (parentNode) {\n if (!parentNode) {\n throw new Error(\"parentNode required\");\n }\n\n // ensure we detach from the\n // previous, old parent\n this.detach();\n\n // unwrap jQuery if provided\n if (parentNode.get && parentNode.constructor.prototype.jquery) {\n parentNode = parentNode.get(0);\n }\n\n if (typeof parentNode === \"string\") {\n parentNode = domQuery(parentNode);\n }\n\n parentNode.appendChild(this._container);\n\n this._emit(\"attach\", {});\n\n this.get(\"canvas\").resized();\n};\n\nBaseViewer.prototype.detach = function () {\n const container = this._container,\n parentNode = container.parentNode;\n\n if (!parentNode) {\n return;\n }\n this._emit(\"detach\", {});\n\n parentNode.removeChild(container);\n};\n\nBaseViewer.prototype._init = function (container, options) {\n const baseModules = options.modules || this.getModules(options),\n additionalModules = options.additionalModules || [],\n staticModules = [\n {\n egon: [\"value\", this],\n },\n ];\n\n const diagramModules = [].concat(\n staticModules,\n baseModules,\n additionalModules,\n );\n\n const diagramOptions = assign(omit(options, [\"additionalModules\"]), {\n canvas: assign({}, options.canvas, { container: container }),\n modules: diagramModules,\n });\n\n // invoke diagram constructor\n Diagram.call(this, diagramOptions);\n\n if (options && options.container) {\n this.attachTo(options.container);\n }\n};\n\nBaseViewer.prototype._emit = function (type, event) {\n return this.get(\"eventBus\").fire(type, event);\n};\n\nBaseViewer.prototype._createContainer = function (options) {\n const container = domify('
');\n\n assignStyle(container, {\n width: ensureUnit(options.width),\n height: ensureUnit(options.height),\n position: options.position,\n });\n\n return container;\n};\n\nBaseViewer.prototype._modules = [];\n\n// helpers ///////////////\n\nconst DEFAULT_OPTIONS = {\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n};\n\n/**\n * Ensure the passed argument is a proper unit (defaulting to px)\n */\nfunction ensureUnit(val) {\n return val + (isNumber(val) ? \"px\" : \"\");\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 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 { ElementTypes } from \"src/app/domain/entities/elementTypes\";\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(ElementTypes.ACTOR)) {\n entries = replaceOptions.actorReplaceOptions(element.type);\n } else if (element.type.includes(ElementTypes.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/entities/elementTypes\";\n\nlet iconDictionaryService;\n\nexport function initializeReplaceOptions(iconDictionary) {\n iconDictionaryService = iconDictionary;\n}\n\nexport function actorReplaceOptions(name) {\n const actors = iconDictionaryService.getIconsAssignedAs(ElementTypes.ACTOR);\n\n let replaceOption = {};\n let i = 0;\n\n actors.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.getIconForMenu(\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 workObjects = iconDictionaryService.getIconsAssignedAs(\n ElementTypes.WORKOBJECT,\n );\n\n let replaceOption = {};\n let i = 0;\n\n workObjects.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.getIconForMenu(\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 { assign, isArray } from \"min-dash\";\nimport { generateAutomaticNumber } from \"../numbering/numbering\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport {\n hexToRGBA,\n isHexWithAlpha,\n rgbaToHex,\n} from \"../../../../../utils/colorConverter\";\nimport { hasPrimaryModifier } from \"diagram-js/lib/util/Mouse\";\n\nlet dirtyFlagService;\nlet iconDictionaryService;\n\nexport function initializeContextPadProvider(dirtyFlag, iconDictionary) {\n dirtyFlagService = dirtyFlag;\n iconDictionaryService = iconDictionary;\n}\n\nexport default function DomainStoryContextPadProvider(\n connect,\n translate,\n elementFactory,\n create,\n canvas,\n contextPad,\n popupMenu,\n replaceMenuProvider,\n commandStack,\n eventBus,\n modeling,\n rules,\n) {\n contextPad.registerProvider(this);\n popupMenu.registerProvider(\"ds-replace\", replaceMenuProvider);\n\n let _selectedElement;\n let startConnect;\n\n eventBus.on(\"create.end\", 250, function (event) {\n var context = event.context,\n shape = context.shape;\n\n if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) {\n return;\n }\n\n var entries = contextPad.getEntries(shape);\n\n if (entries.replace) {\n entries.replace.action.click(event, shape);\n }\n });\n\n document.addEventListener(\"pickedColor\", (event) => {\n if (_selectedElement) {\n executeCommandStack(event);\n }\n });\n\n this.getContextPadEntries = function (element) {\n _selectedElement = element;\n\n let pickedColor = _selectedElement.businessObject.pickedColor;\n\n if (isHexWithAlpha(pickedColor)) {\n pickedColor = hexToRGBA(pickedColor);\n }\n document.dispatchEvent(\n new CustomEvent(\"defaultColor\", {\n detail: {\n color: pickedColor ?? \"#000000\",\n },\n }),\n );\n\n let actions = {};\n\n startConnect = function (event, element, autoActivate) {\n connect.start(event, element, autoActivate);\n };\n\n if (element.type.includes(ElementTypes.WORKOBJECT)) {\n addDelete(actions, element);\n addColorChange(actions);\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 addDelete(actions, element);\n addColorChange(actions);\n addConnectWithActivity(actions, startConnect);\n addTextAnnotation(actions);\n addWorkObjects(appendAction, actions);\n addChangeActorTypeMenu(actions);\n } else if (element.type.includes(ElementTypes.GROUP)) {\n addTextAnnotation(actions);\n addDeleteGroupWithoutChildren(actions, element);\n addColorChange(actions);\n } else if (element.type.includes(ElementTypes.ACTIVITY)) {\n addChangeDirection(actions);\n addColorChange(actions);\n addDelete(actions, element);\n } else if (element.type.includes(ElementTypes.TEXTANNOTATION)) {\n addDelete(actions, element);\n addColorChange(actions);\n } else if (element.type.includes(ElementTypes.CONNECTION)) {\n addDelete(actions, element);\n }\n\n return actions;\n };\n\n this.getMultiElementContextPadEntries = function (elements) {\n let actions = {};\n addDelete(actions, elements);\n return actions;\n };\n\n function addDelete(actions, element) {\n // delete element entry, only show if allowed by rules\n var deleteAllowed = rules.allowed(\"elements.delete\", {\n elements: { element },\n });\n\n if (isArray(deleteAllowed)) {\n // was the element returned as a deletion candidate?\n deleteAllowed = deleteAllowed[0] === element;\n }\n\n if (deleteAllowed) {\n assign(actions, {\n delete: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: translate(\"Remove\"),\n action: {\n click: function (event, element) {\n if (isArray(element)) {\n const groups = element.filter((el) =>\n el.type.includes(ElementTypes.GROUP),\n );\n const otherElements = element.filter(\n (el) => !el.type.includes(ElementTypes.GROUP),\n );\n groups.forEach((group) => modeling.removeGroup(group));\n modeling.removeElements(otherElements.slice());\n } else {\n modeling.removeElements({ element });\n }\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n }\n }\n\n function addDeleteGroupWithoutChildren(actions, element) {\n assign(actions, {\n deleteGroup: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: translate(\"Remove Group without Child-Elements\"),\n action: {\n click: function (event, element) {\n modeling.removeGroup(element);\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n }\n\n function addChangeDirection(actions) {\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 dirtyFlagService.makeDirty();\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 document.dispatchEvent(new CustomEvent(\"openColorPicker\"));\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 workObjects = iconDictionaryService.getIconsAssignedAs(\n ElementTypes.WORKOBJECT,\n );\n workObjects.keysArray().forEach((workObjectType) => {\n let name = workObjectType;\n let icon = iconDictionaryService.getIconForMenu(\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 actors = iconDictionaryService.getIconsAssignedAs(ElementTypes.ACTOR);\n actors.keysArray().forEach((actorType) => {\n let name = actorType;\n let icon = iconDictionaryService.getIconForMenu(\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 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 function getSelectedBusinessObject(event) {\n const oldColor = _selectedElement.businessObject.pickedColor;\n let newColor = event.detail.color;\n if (isHexWithAlpha(oldColor)) {\n newColor = rgbaToHex(newColor);\n }\n\n return {\n businessObject: _selectedElement.businessObject,\n newColor: newColor,\n element: _selectedElement,\n };\n }\n\n function executeCommandStack(event) {\n const selectedBusinessObject = getSelectedBusinessObject(event);\n\n commandStack.execute(\"element.colorChange\", selectedBusinessObject);\n dirtyFlagService.makeDirty();\n }\n}\n\nDomainStoryContextPadProvider.$inject = [\n \"connect\",\n \"translate\",\n \"elementFactory\",\n \"create\",\n \"canvas\",\n \"contextPad\",\n \"popupMenu\",\n \"replaceMenuProvider\",\n \"commandStack\",\n \"eventBus\",\n \"modeling\",\n \"rules\",\n];\n","import { getBusinessObject } from \"../util/util\";\n\nimport { forEach, isArray, isUndefined, omit, reduce } from \"min-dash\";\n\nfunction copyProperties(source, target, properties) {\n if (!isArray(properties)) {\n properties = [properties];\n }\n\n forEach(properties, function (property) {\n if (!isUndefined(source[property])) {\n target[property] = source[property];\n }\n });\n}\n\nfunction removeProperties(element, properties) {\n if (!isArray(properties)) {\n properties = [properties];\n }\n\n forEach(properties, function (property) {\n if (element[property]) {\n delete element[property];\n }\n });\n}\n\nvar LOW_PRIORITY = 750;\n\nexport default function EgonCopyPaste(eventBus, propertyCopy) {\n eventBus.on(\"copyPaste.copyElement\", LOW_PRIORITY, function (context) {\n var descriptor = context.descriptor,\n element = context.element;\n\n var businessObject = (descriptor.oldBusinessObject =\n getBusinessObject(element));\n\n descriptor.type = element.type;\n\n copyProperties(businessObject, descriptor, \"name\");\n\n if (isLabel(descriptor)) {\n return descriptor;\n }\n });\n\n var references;\n\n function resolveReferences(descriptor, cache) {\n var businessObject = getBusinessObject(descriptor);\n\n // boundary events\n if (descriptor.host) {\n // relationship can be resolved immediately\n getBusinessObject(descriptor).attachedToRef = getBusinessObject(\n cache[descriptor.host],\n );\n }\n\n references = omit(\n references,\n reduce(\n references,\n function (array, reference, key) {\n var element = reference.element,\n property = reference.property;\n\n if (key === descriptor.id) {\n element[property] = businessObject;\n\n array.push(descriptor.id);\n }\n\n return array;\n },\n [],\n ),\n );\n }\n\n eventBus.on(\"copyPaste.pasteElements\", function () {\n references = {};\n });\n\n eventBus.on(\"copyPaste.pasteElement\", function (context) {\n var cache = context.cache,\n descriptor = context.descriptor,\n oldBusinessObject = descriptor.oldBusinessObject,\n newBusinessObject;\n\n // do NOT copy business object if external label\n if (isLabel(descriptor)) {\n descriptor.businessObject = getBusinessObject(\n cache[descriptor.labelTarget],\n );\n\n return;\n }\n\n newBusinessObject = {};\n\n descriptor.businessObject = propertyCopy.copyElement(\n oldBusinessObject,\n newBusinessObject,\n );\n\n // resolve references e.g. default sequence flow\n resolveReferences(descriptor, cache);\n\n copyProperties(descriptor, newBusinessObject, [\"name\"]);\n\n removeProperties(descriptor, \"oldBusinessObject\");\n });\n}\n\nEgonCopyPaste.$inject = [\"eventBus\", \"propertyCopy\"];\n\n// helpers //////////\n\nfunction isLabel(element) {\n return !!element.labelTarget;\n}\n","import {\n forEach,\n isArray,\n isDefined,\n isObject,\n reduce,\n has,\n sortBy,\n} from \"min-dash\";\n\nvar DISALLOWED_PROPERTIES = [\"incoming\", \"outgoing\"];\n\nexport default function PropertyCopy(eventBus) {\n this._eventBus = eventBus;\n\n // copy extension elements last\n eventBus.on(\"propertyCopy.canCopyProperties\", function (context) {\n var propertyNames = context.propertyNames;\n\n if (!propertyNames || !propertyNames.length) {\n return;\n }\n\n return sortBy(propertyNames, function (propertyName) {\n return propertyName === \"extensionElements\";\n });\n });\n\n // default check whether property can be copied\n eventBus.on(\"propertyCopy.canCopyProperty\", function (context) {\n var propertyName = context.propertyName;\n\n if (propertyName && DISALLOWED_PROPERTIES.indexOf(propertyName) !== -1) {\n // disallow copying property\n return false;\n }\n });\n}\n\nPropertyCopy.$inject = [\"eventBus\"];\n\nPropertyCopy.prototype.copyElement = function (\n sourceElement,\n targetElement,\n propertyNames,\n) {\n var self = this;\n\n if (propertyNames && !isArray(propertyNames)) {\n propertyNames = [propertyNames];\n }\n\n var canCopyProperties = this._eventBus.fire(\n \"propertyCopy.canCopyProperties\",\n {\n propertyNames: propertyNames,\n sourceElement: sourceElement,\n targetElement: targetElement,\n },\n );\n\n if (canCopyProperties === false) {\n return targetElement;\n }\n\n if (isArray(canCopyProperties)) {\n propertyNames = canCopyProperties;\n }\n\n // copy properties\n forEach(propertyNames, function (propertyName) {\n var sourceProperty;\n\n if (has(sourceElement, propertyName)) {\n sourceProperty = sourceElement.get(propertyName);\n }\n\n var copiedProperty = self.copyProperty(\n sourceProperty,\n targetElement,\n propertyName,\n );\n\n var canSetProperty = self._eventBus.fire(\n \"propertyCopy.canSetCopiedProperty\",\n {\n parent: targetElement,\n property: copiedProperty,\n propertyName: propertyName,\n },\n );\n\n if (canSetProperty === false) {\n return;\n }\n\n if (isDefined(copiedProperty)) {\n targetElement.set(propertyName, copiedProperty);\n }\n });\n\n return targetElement;\n};\n\nPropertyCopy.prototype.copyProperty = function (\n property,\n parent,\n propertyName,\n) {\n var self = this;\n\n // allow others to copy property\n var copiedProperty = this._eventBus.fire(\"propertyCopy.canCopyProperty\", {\n parent: parent,\n property: property,\n propertyName: propertyName,\n });\n\n // return if copying is NOT allowed\n if (copiedProperty === false) {\n return;\n }\n\n if (copiedProperty) {\n if (isObject(copiedProperty) && !copiedProperty.$parent) {\n copiedProperty.$parent = parent;\n }\n\n return copiedProperty;\n }\n\n // copy arrays\n if (isArray(property)) {\n return reduce(\n property,\n function (childProperties, childProperty) {\n // recursion\n copiedProperty = self.copyProperty(childProperty, parent, propertyName);\n\n // copying might NOT be allowed\n if (copiedProperty) {\n copiedProperty.$parent = parent;\n\n return childProperties.concat(copiedProperty);\n }\n\n return childProperties;\n },\n [],\n );\n }\n\n // copy model elements\n if (isObject(property)) {\n copiedProperty = {};\n\n copiedProperty.$parent = parent;\n\n // recursion\n copiedProperty = self.copyElement(property, copiedProperty);\n\n return copiedProperty;\n }\n\n // copy primitive properties\n return property;\n};\n","import CopyPasteModule from \"diagram-js/lib/features/copy-paste\";\n\nimport EgonCopyPaste from \"./EgonCopyPaste\";\nimport PropertyCopy from \"./PropertyCopy\";\n\nexport default {\n __depends__: [CopyPasteModule],\n __init__: [\"egonCopyPaste\", \"propertyCopy\"],\n egonCopyPaste: [\"type\", EgonCopyPaste],\n propertyCopy: [\"type\", PropertyCopy],\n};\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport BaseElementFactory from \"diagram-js/lib/core/ElementFactory\";\n\nimport DomainStoryIdFactory from \"./domainStoryIdFactory\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\nexport default function DomainStoryElementFactory() {\n let self = this;\n let domainStoryIdFactory = new DomainStoryIdFactory();\n\n /**\n * create a diagram-js element\n *\n * @param {String} djsElementType\n * @param {Object} attrs\n *\n * @return {djs.model.Base}\n */\n this.create = function (djsElementType, attrs) {\n let dstElementType = attrs.type;\n\n if (!attrs.businessObject) {\n attrs.businessObject = {\n type: dstElementType,\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(djsElementType);\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 // add width and height if shape\n if (djsElementType === \"shape\") {\n let alreadyHasSize = attrs.height || attrs.width; // if a story is imported, groups and annotations already have dimensions; we must not overwrite them with default values\n\n if (!alreadyHasSize) {\n assign(attrs, self._getShapeSize(dstElementType));\n }\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(djsElementType, attrs);\n };\n}\n\ninherits(DomainStoryElementFactory, BaseElementFactory);\n\nDomainStoryElementFactory.prototype.baseCreate =\n BaseElementFactory.prototype.create;\n\n/**\n * returns the default size for shapes.\n * *\n * @param {String} dstElementType\n *\n * @return {Dimensions} a {width, height} object representing the size of the element\n */\nDomainStoryElementFactory.prototype._getShapeSize = function (dstElementType) {\n let shapes = {\n __default: { width: 75, height: 75 },\n [ElementTypes.TEXTANNOTATION]: { width: 100, height: 30 },\n [ElementTypes.GROUP]: { width: 300, height: 200 },\n };\n\n return shapes[dstElementType] || 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-browser\";\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\nimport Ids from \"ids\";\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 \"src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider\";\nimport {\n addNumberToRegistry,\n generateAutomaticNumber,\n numberBoxDefinitions,\n} from \"src/app/tools/modeler/diagram-js/features/numbering/numbering\";\n\nimport { calculateTextWidth } from \"src/app/tools/modeler/diagram-js/features/labeling/dsLabelUtil\";\nimport {\n countLines,\n labelPosition,\n} from \"src/app/tools/modeler/diagram-js/features/labeling/position\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { angleBetween } from \"../../../../utils/mathExtensions\";\nimport { isCustomIcon, isCustomSvgIcon, getScaledPath } from \"./util/util\";\n\nlet RENDERER_IDS = new Ids();\nlet numbers = [];\nconst DEFAULT_COLOR = \"#000000\";\n\nlet _iconDictionaryService;\nlet _elementRegistryService;\nlet _dirtyFlagService;\n\nexport function initializeRenderer(\n iconDictionaryService,\n elementRegistryService,\n dirtyFlagService,\n) {\n _iconDictionaryService = iconDictionaryService;\n _elementRegistryService = elementRegistryService;\n _dirtyFlagService = dirtyFlagService;\n}\n\nexport default function DomainStoryRenderer(\n eventBus,\n styles,\n canvas,\n textRenderer,\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 box.x -= 26;\n box.y -= 16;\n\n if (semantic.number < 10) {\n box.x += 3;\n }\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 renderActorAndWorkObjectLabel(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 function renderActivityLabel(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 // !IMPORTANT!\n // When converting svg-files via Inkscape or Photoshop the svg-circle is converted to a black dot that obscures the number.\n // To circumvent this, we draw an arc.\n let circle = svgCreate(\"path\");\n let radius = 11;\n let x = options.box.x + 18 + (number > 9 ? 3 : 0);\n let y = options.box.y - radius + 7;\n svgAttr(circle, {\n d: `\n M ${x} ${y}\n m ${radius},0\n a ${radius},${radius} 0 1,0 ${-radius * 2},0\n a ${radius},${radius} 0 1,0 ${radius * 2},0\n `,\n fill: \"white\",\n stroke: \"black\",\n });\n\n svgAppend(parentGfx, circle);\n svgAppend(parentGfx, text);\n\n return text;\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 renderActorAndWorkObjectLabel(parentGfx, element, \"left-top\", 8);\n\n return rect;\n };\n\n function applyColorToCustomSvgIcon(pickedColor, iconSvg) {\n if (!pickedColor) {\n return iconSvg;\n }\n const [rest, base64Svg] = iconSvg.split(\"base64,\");\n const svg = atob(base64Svg);\n const coloredSvg = applyColorToIcon(pickedColor, svg);\n const encodedColoredSvg = btoa(coloredSvg);\n return rest + \"base64,\" + encodedColoredSvg;\n }\n\n function applyColorToIcon(pickedColor = DEFAULT_COLOR, iconSvg) {\n const match = iconSvg.match(\n /fill=\\s*\"(?!none).*?\"|fill:\\s*[#r]\\w*[;\\s]{1}/,\n );\n if (match && match.some((it) => it)) {\n return iconSvg\n .replaceAll(/fill=\\s*\"(?!none).*?\"/g, `fill=\"${pickedColor} \"`)\n .replaceAll(/fill:\\s*[#r]\\w*[;\\s]{1}/g, `fill:${pickedColor};`);\n } else {\n const index = iconSvg.indexOf(\"' +\n ''\n );\n } else {\n return applyColorToIcon(pickedColor, icon);\n }\n }\n\n this.drawActor = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width,\n height: element.height,\n };\n let iconSRC = _iconDictionaryService.getTypeIconSRC(\n ElementTypes.ACTOR,\n ElementTypes.getIconId(element.type),\n );\n iconSRC = getIconSvg(iconSRC, element);\n let actor = svgCreate(iconSRC);\n\n svgAttr(actor, svgDynamicSizeAttributes);\n svgAppend(parent, actor);\n\n renderActorAndWorkObjectLabel(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 = _iconDictionaryService.getTypeIconSRC(\n ElementTypes.WORKOBJECT,\n ElementTypes.getIconId(element.type),\n );\n iconSRC = getIconSvg(iconSRC, element);\n workObject = svgCreate(iconSRC);\n\n svgAttr(workObject, svgDynamicSizeAttributes);\n svgAppend(parent, workObject);\n renderActorAndWorkObjectLabel(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 renderActivityLabel(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 // changes the color of the moved activity back to original instead of blue\n if (p.className.baseVal === \"djs-dragger\") {\n svgClasses(p).remove(\"djs-dragger\");\n svgClasses(p).add(\"djs-connection-preview\");\n }\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: element.businessObject.pickedColor ?? \"black\",\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 = element.height ?? 0;\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 = getScaledPath({\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: element.businessObject.pickedColor ?? \"black\",\n });\n\n renderLabel(parentGfx, text, {\n box: element,\n align: \"left-top\",\n padding: 5,\n style: {\n fill: element.businessObject.pickedColor ?? \"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 (\"markers\" are arrowheads of activities)\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 activityArrow = svgCreate(\"path\");\n svgAttr(activityArrow, { d: \"M 1 5 L 11 10 L 1 15 Z\" });\n\n addMarker(id, {\n element: activityArrow,\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 eventBus.on(\"bendpoint.move.start\", 200, function (event) {\n // the bendpoint which we are dragging will otherwise be displayed with 0.3 opacity\n // through bendpoint-dragging we match the css class more specificly, hence our style applies\n svgClasses(event.context.draggerGfx).add(\"bendpoint-dragging\");\n // the old path of the activity will otherwise be displayed in gray\n canvas.addMarker(event.context.connection, \"djs-element-hidden\");\n });\n\n eventBus.on(\"bendpoint.move.end\", 2000, function (event) {\n // the acitvity will not be displayed if we don't remove the marker we added during bendpoint.move.start\n // high priority is neccessary, so we come before something that might stop the execution\n canvas.removeMarker(event.context.connection, \"djs-element-hidden\");\n });\n}\n\ninherits(DomainStoryRenderer, BaseRenderer);\n\nDomainStoryRenderer.$inject = [\n \"eventBus\",\n \"styles\",\n \"canvas\",\n \"textRenderer\",\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 _elementRegistryService.correctInitialize();\n _dirtyFlagService.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 _dirtyFlagService.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/entities/elementTypes\";\nimport { is } from \"./util/util\";\n\nconst HIGH_PRIORITY = 1500;\nconst MIN_SIZE = 125;\n\nfunction isGroup(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// indirect usage of IMPLICIT_ROOT_ID, constant not used because of Regex\nexport function isBackground(element) {\n return element && /^__implicitroot/.test(element.id);\n}\n\nexport function isLabel(element) {\n return element && !!element.labelTarget;\n}\n\nfunction nonExistingOrLabel(element) {\n return !element || isLabel(element);\n}\n\nfunction canStartConnection(element) {\n if (nonExistingOrLabel(element)) {\n return null;\n }\n return false;\n}\n\n/**\n * can source and target be connected?\n */\nfunction canConnect(source, target) {\n // never connect to background; since the direction of the activity can get reversed during dragging, we also have to check if the source\n if (isBackground(target) || isBackground(source)) {\n return false;\n }\n\n if (isGroup(target)) {\n return false;\n }\n\n // do not allow a connection from one element to itself\n if (source === target) {\n return false;\n }\n\n // do not allow a connection between two actors\n if (isActor(source) && isActor(target)) {\n return false;\n }\n\n // do not allow a connection, where the source or target is an activity\n if (isActivity(source) || isActivity(target)) {\n return false;\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 false;\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 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\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 a shape be created on target?\n */\n function canCreate(shape, target) {\n // allow creation on canvas || allow groups on everything || allow everything on groups\n return isBackground(target) || isGroup(shape) || isGroup(target);\n }\n\n this.addRule(\"elements.create\", function (context) {\n const elements = context.elements,\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 return canCreate(element, target);\n });\n });\n\n this.addRule(\"elements.move\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shapes = context.shapes;\n\n // The idea of this code is to make sure that if any of the selected shapes cannot be moved,\n // then the whole selection cannot be moved. However, it actually only checks\n // if the shape that is under the mouse cursor is over another shape.\n // This is probably enough as a full detection over overlapping shapes might make it hard\n // to move large selections\n return reduce(\n shapes,\n function (result, s) {\n if (result === false) {\n return false;\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 let result = canConnectToAnnotation(source, target, connection);\n\n if (!result) {\n return;\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 this.addRule(\"connection.start\", function (context) {\n var source = context.source;\n\n return canStartConnection(source);\n });\n\n this.addRule(\"connection.updateWaypoints\", function (context) {\n return {\n type: context.connection.type,\n };\n });\n\n // CopyPaste.js requires this empty-looking rule to exist\n this.addRule(\"element.copy\", function (context) {\n return true;\n });\n};\n\nDomainStoryRules.prototype.canConnect = canConnect;\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/util\";\nimport { ElementTypes } from \"../../../../domain/entities/elementTypes\";\n\n/**\n * a handler responsible for updating the element's businessObject\n * once changes on the diagram happen.\n */\nexport default function DomainStoryUpdater(eventBus, egon, connectionDocking) {\n CommandInterceptor.call(this, eventBus);\n\n function updateElement(e) {\n let context = e.context,\n shape = context.shape;\n\n if (!shape) {\n return;\n }\n let businessObject = shape.businessObject;\n let parent = shape.parent;\n let elements = egon._elements;\n\n // make sure element is added / removed from egon._elements\n if (!parent) {\n collectionRemove(elements, businessObject);\n } else {\n collectionAdd(elements, businessObject);\n }\n\n // save element position\n assign(businessObject, pick(shape, [\"x\", \"y\"]));\n\n // save 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 updateConnection(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 elements = egon._elements;\n\n // make sure element is added / removed from egon._elements\n if (!parent) {\n collectionRemove(elements, businessObject);\n } else {\n collectionAdd(elements, 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 // crop connection ends during create/update\n function cropConnection(e) {\n var context = e.context,\n hints = context.hints || {},\n connection;\n\n if (!context.cropped && hints.createElementsBehavior !== false) {\n connection = context.connection;\n connection.waypoints = connectionDocking.getCroppedWaypoints(connection);\n context.cropped = true;\n }\n }\n\n // cropping must be done before updateElement\n // do not change the order of these .executed calls\n this.executed([\"connection.layout\", \"connection.create\"], cropConnection);\n\n this.reverted([\"connection.layout\"], function (e) {\n delete e.context.cropped;\n });\n\n this.executed(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n updateElement,\n );\n\n this.reverted(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n updateElement,\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 updateConnection,\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 updateConnection,\n );\n}\n\ninherits(DomainStoryUpdater, CommandInterceptor);\n\nDomainStoryUpdater.$inject = [\"eventBus\", \"egon\", \"connectionDocking\"];\n","\"use strict\";\n\nimport LassoTool from \"diagram-js/lib/features/lasso-tool\";\nimport SpaceTool from \"diagram-js/lib/features/space-tool\";\nimport Palette from \"diagram-js/lib/features/palette\";\nimport TextRenderer from \"./util/TextRenderer\";\nimport DomainStoryElementFactory from \"./domainStoryElementFactory\";\nimport DomainStoryRenderer from \"./domainStoryRenderer\";\nimport DomainStoryPalette from \"./palette/domainStoryPalette\";\nimport DomainStoryRules from \"./domainStoryRules\";\nimport DomainStoryUpdater from \"./domainStoryUpdater\";\nimport CreateModule from \"diagram-js/lib/features/create\";\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\";\nimport BaseLayouter from \"diagram-js/lib/layout/BaseLayouter\";\nimport CroppingConnectionDocking from \"diagram-js/lib/layout/CroppingConnectionDocking\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, Palette, SpaceTool, LassoTool],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n connectionDocking: [\"type\", CroppingConnectionDocking],\n layouter: [\"type\", BaseLayouter],\n textRenderer: [\"type\", TextRenderer],\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 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 \"src/app/domain/entities/elementTypes\";\nimport { is, getScaledPath } from \"../util/util\";\n\nconst MARKER_HIDDEN = \"djs-element-hidden\",\n MARKER_LABEL_HIDDEN = \"djs-label-hidden\";\n\nexport default function DSLabelEditingPreview(eventBus, canvas) {\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 if (is(element, ElementTypes.TEXTANNOTATION)) {\n absoluteElementBBox = canvas.getAbsoluteBBox(element);\n gfx = svgCreate(\"g\");\n\n let textPathData = getScaledPath({\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: \"black\",\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 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\n let textPathData = getScaledPath({\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\"];\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport { autocomplete, getLabel } from \"./dsLabelUtil\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { sanitizeTextForSVGExport } from \"src/app/utils/sanitizer\";\nimport { is } from \"../util/util\";\nimport { isBackground } from \"../domainStoryRules\";\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);\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\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) {\n directEditing.activate(element);\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 (isBackground(element)) {\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 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 // default position\n let bounds = { x: bbox.x, y: bbox.y };\n\n /** The canvas is an object from diagram-js. The IDE might say that zoom is deprecated,\n * because it thinks that canvas is the standard HTML element.**/\n let zoom = canvas.zoom();\n let defaultStyle = this._textRenderer.getDefaultStyle();\n\n // take zoom into account\n let 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 if (\n // we can't use util's is() function here because the type contains the name of the icon\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 // 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(\n element,\n sanitizeTextForSVGExport(newLabel),\n newBounds,\n );\n};\n","\"use strict\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util/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 if (semantic.type.includes(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 \"src/app/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 \"diagram-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 this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\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 this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\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 CreateModule from \"diagram-js/lib/features/create\";\nimport Connect from \"diagram-js/lib/features/connect\";\nimport Translate from \"diagram-js/lib/i18n/translate\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport PopupMenu from \"diagram-js/lib/features/popup-menu\";\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, Connect, Translate, PopupMenu],\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 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 { angleBetween } from \"src/app/utils/mathExtensions\";\n\nlet numberRegistry = [];\nlet multipleNumberRegistry = [false];\n\nlet canvasElementRegistry;\n\nexport function initializeNumbering(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\nexport function updateMultipleNumberRegistry(activityBusinessObjects) {\n activityBusinessObjects.forEach(\n (activity) =>\n (multipleNumberRegistry[activity.number] =\n activity.multipleNumberAllowed),\n );\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 angle = 0;\n if (element.waypoints.length > 1) {\n angle = angleBetween(\n // Start of first arrow segment\n element.waypoints[0],\n // End of first arrow segment\n element.waypoints[1],\n );\n }\n let x = element.waypoints[0].x;\n let y = element.waypoints[0].y;\n\n let fixedOffsetX = 0;\n let fixedOffsetY = 0;\n let angleDependantOffsetX = 0;\n let angleDependantOffsetY = 0;\n\n // Fine tune positioning of sequence number above beginning of first arrow segment\n if (angle >= 0 && angle <= 45) {\n fixedOffsetX = 25;\n angleDependantOffsetY = 20 * (1 - angle / 45);\n } else if (angle <= 90) {\n fixedOffsetX = 5;\n angleDependantOffsetX = 15 * (1 - (angle - 45) / 45);\n } else if (angle <= 135) {\n fixedOffsetX = 5;\n angleDependantOffsetX = -20 * ((angle - 90) / 45);\n } else if (angle <= 180) {\n fixedOffsetX = -15;\n angleDependantOffsetY = 20 * ((angle - 135) / 45);\n } else if (angle <= 225) {\n fixedOffsetX = -15;\n fixedOffsetY = 15;\n angleDependantOffsetY = 25 * ((angle - 180) / 45);\n } else if (angle <= 270) {\n fixedOffsetX = 5;\n angleDependantOffsetX = -20 * (1 - (angle - 225) / 45);\n fixedOffsetY = 40;\n } else if (angle <= 315) {\n fixedOffsetX = 5;\n angleDependantOffsetX = 25 * ((angle - 270) / 45);\n fixedOffsetY = 40;\n } else {\n fixedOffsetX = 25;\n fixedOffsetY = 20;\n angleDependantOffsetY = 15 * (1 - (angle - 315) / 45);\n }\n\n x = x + fixedOffsetX + angleDependantOffsetX;\n y = y + fixedOffsetY + angleDependantOffsetY;\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 oldMultipleNumberRegistry = [...multipleNumberRegistry];\n let currentNumber = wantedNumber;\n for (\n currentNumber;\n currentNumber < sortedActivities.length;\n currentNumber++\n ) {\n if (sortedActivities[currentNumber]) {\n wantedNumber++;\n multipleNumberRegistry[wantedNumber] =\n oldMultipleNumberRegistry[currentNumber];\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 { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\nlet iconDictionary;\n\nexport function initializePalette(iconDictionaryService) {\n iconDictionary = iconDictionaryService;\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 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 initPalette(actions, spaceTool, lassoTool, createAction) {\n let config = iconDictionary?.getCurrentIconConfigurationForMenu();\n\n iconDictionary?.initTypeDictionaries(config.actors, config.workObjects);\n\n let actorTypes = iconDictionary?.getIconsAssignedAs(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?.getIconsAssignedAs(\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.getIconForMenu(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","import inherits from \"inherits-browser\";\n\nimport EditorActions from \"diagram-js/lib/features/editor-actions/EditorActions\";\n\nexport default function AdditionalEditorActions(injector) {\n injector.invoke(EditorActions, this);\n}\n\ninherits(AdditionalEditorActions, EditorActions);\n\nAdditionalEditorActions.$inject = [\"injector\"];\n\n/**\n * Register default actions.\n *\n * @param {Injector} injector\n */\nAdditionalEditorActions.prototype._registerDefaultActions = function (\n injector,\n) {\n // (0) invoke super method\n\n EditorActions.prototype._registerDefaultActions.call(this, injector);\n\n // (1) retrieve optional components to integrate with\n\n var canvas = injector.get(\"canvas\", false);\n var elementRegistry = injector.get(\"elementRegistry\", false);\n var selection = injector.get(\"selection\", false);\n var spaceTool = injector.get(\"spaceTool\", false);\n var lassoTool = injector.get(\"lassoTool\", false);\n var handTool = injector.get(\"handTool\", false);\n var directEditing = injector.get(\"directEditing\", false);\n\n if (canvas && elementRegistry && selection) {\n this._registerAction(\"selectElements\", function () {\n // select all elements except for the invisible\n // root element\n var rootElement = canvas.getRootElement();\n\n var elements = elementRegistry.filter(function (element) {\n return element !== rootElement;\n });\n\n selection.select(elements);\n\n return elements;\n });\n }\n\n if (spaceTool) {\n this._registerAction(\"spaceTool\", function () {\n spaceTool.toggle();\n });\n }\n\n if (lassoTool) {\n this._registerAction(\"lassoTool\", function () {\n lassoTool.toggle();\n });\n }\n\n if (handTool) {\n this._registerAction(\"handTool\", function () {\n handTool.toggle();\n });\n }\n\n if (selection && directEditing) {\n this._registerAction(\"directEditing\", function () {\n var currentSelection = selection.get();\n\n if (currentSelection.length) {\n directEditing.activate(currentSelection[0]);\n }\n });\n }\n};\n","import inherits from \"inherits-browser\";\n\nimport KeyboardBindings from \"diagram-js/lib/features/keyboard/KeyboardBindings\";\n\nexport default function AdditionalKeyboardBindings(injector) {\n injector.invoke(KeyboardBindings, this);\n}\n\ninherits(AdditionalKeyboardBindings, KeyboardBindings);\n\nAdditionalKeyboardBindings.$inject = [\"injector\"];\n\nAdditionalKeyboardBindings.prototype.registerBindings = function (\n keyboard,\n editorActions,\n) {\n // inherit default bindings\n KeyboardBindings.prototype.registerBindings.call(\n this,\n keyboard,\n editorActions,\n );\n\n function addListener(action, fn) {\n if (editorActions.isRegistered(action)) {\n keyboard.addListener(fn);\n }\n }\n\n // select all elements\n // CTRL + A\n addListener(\"selectElements\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.isKey([\"a\", \"A\"], event) && keyboard.isCmd(event)) {\n editorActions.trigger(\"selectElements\");\n\n return true;\n }\n });\n\n // activate space tool\n // S\n addListener(\"spaceTool\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"s\", \"S\"], event)) {\n editorActions.trigger(\"spaceTool\");\n\n return true;\n }\n });\n\n // activate lasso tool\n // L\n addListener(\"lassoTool\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"l\", \"L\"], event)) {\n editorActions.trigger(\"lassoTool\");\n\n return true;\n }\n });\n\n // activate hand tool\n // H\n addListener(\"handTool\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"h\", \"H\"], event)) {\n editorActions.trigger(\"handTool\");\n\n return true;\n }\n });\n\n // activate direct editing\n // E\n addListener(\"directEditing\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"e\", \"E\"], event)) {\n editorActions.trigger(\"directEditing\");\n\n return true;\n }\n });\n};\n","import EditorActionsModule from \"diagram-js/lib/features/editor-actions\";\nimport KeyboardModule from \"diagram-js/lib/features/keyboard\";\nimport AdditionalEditorActions from \"./AdditionalEditorActions\";\nimport AdditionalKeyboardBindings from \"./AdditionalKeyboardBindings\";\n\nexport default {\n __depends__: [EditorActionsModule, KeyboardModule],\n __init__: [\"additionalEditorActions\", \"additionalKeyBindings\"],\n additionalEditorActions: [\"type\", AdditionalEditorActions],\n additionalKeyBindings: [\"type\", AdditionalKeyboardBindings],\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/util\";\nimport { ElementTypes } from \"../../../../../domain/entities/elementTypes\";\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 if (\n semantic.type.includes(ElementTypes.TEXTANNOTATION) &&\n element.incoming[0]\n ) {\n element.incoming[0].businessObject.pickedColor = context.newColor;\n eventBus.fire(\"element.changed\", { element: element.incoming[0] });\n }\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 if (\n semantic.type.includes(ElementTypes.TEXTANNOTATION) &&\n element.incoming[0]\n ) {\n element.incoming[0].businessObject.pickedColor = context.oldColor;\n eventBus.fire(\"element.changed\", { element: element.incoming[0] });\n }\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","import { sanitizeTextForSVGExport } from \"src/app/utils/sanitizer\";\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 sanitizeTextForSVGExport(ctx.newTitle),\n sanitizeTextForSVGExport(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 { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { getBusinessObject, is } from \"../util/util\";\n\nconst NULL_DIMENSIONS = {\n width: 0,\n height: 0,\n};\n\n/**\n * a handler that updates the text or label of an element.\n */\nexport default function UpdateLabelHandler(\n modeling,\n textRenderer,\n commandStack,\n) {\n commandStack.registerHandler(\"element.updateLabel\", handlerFunction);\n\n function handlerFunction() {\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 newBounds = ctx.newBounds;\n\n // resize text annotation to amount of text that is entered\n if (is(element, ElementTypes.TEXTANNOTATION)) {\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}\n\nfunction setText(element, text, textNumber) {\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 { assign } from \"min-dash\";\n\nimport TextUtil from \"diagram-js/lib/util/Text\";\n\nvar DEFAULT_FONT_SIZE = 12;\nvar LINE_HEIGHT_RATIO = 1.2;\n\nvar MIN_TEXT_ANNOTATION_HEIGHT = 30;\n\n/**\n * @typedef { {\n * fontFamily: string;\n * fontSize: number;\n * fontWeight: string;\n * lineHeight: number;\n * } } TextRendererStyle\n *\n * @typedef { {\n * defaultStyle?: Partial;\n * externalStyle?: Partial;\n * } } TextRendererConfig\n *\n * @typedef { import('diagram-js/lib/util/Text').TextLayoutConfig } TextLayoutConfig\n *\n * @typedef { import('diagram-js/lib/util/Types').Rect } Rect\n */\n\n/**\n * Renders text and computes text bounding boxes.\n *\n * @param {TextRendererConfig} [config]\n */\nexport default function TextRenderer(config) {\n var defaultStyle = assign(\n {\n fontFamily: \"Arial, sans-serif\",\n fontSize: DEFAULT_FONT_SIZE,\n fontWeight: \"normal\",\n lineHeight: LINE_HEIGHT_RATIO,\n },\n (config && config.defaultStyle) || {},\n );\n\n var fontSize = parseInt(defaultStyle.fontSize, 10) - 1;\n\n var externalStyle = assign(\n {},\n defaultStyle,\n {\n fontSize: fontSize,\n },\n (config && config.externalStyle) || {},\n );\n\n var textUtil = new TextUtil({\n style: defaultStyle,\n });\n\n /**\n * Get the new bounds of an externally rendered,\n * layouted label.\n *\n * @param {Rect} bounds\n * @param {string} text\n *\n * @return {Rect}\n */\n this.getExternalLabelBounds = function (bounds, text) {\n var layoutedDimensions = textUtil.getDimensions(text, {\n box: {\n width: 90,\n height: 30,\n },\n style: externalStyle,\n });\n\n // resize label shape to fit label text\n return {\n x: Math.round(bounds.x + bounds.width / 2 - layoutedDimensions.width / 2),\n y: Math.round(bounds.y),\n width: Math.ceil(layoutedDimensions.width),\n height: Math.ceil(layoutedDimensions.height),\n };\n };\n\n /**\n * Get the new bounds of text annotation.\n *\n * @param {Rect} bounds\n * @param {string} text\n *\n * @return {Rect}\n */\n this.getTextAnnotationBounds = function (bounds, text) {\n var layoutedDimensions = textUtil.getDimensions(text, {\n box: bounds,\n style: defaultStyle,\n align: \"left-top\",\n padding: 5,\n });\n\n return {\n x: bounds.x,\n y: bounds.y,\n width: bounds.width,\n height: Math.max(\n MIN_TEXT_ANNOTATION_HEIGHT,\n Math.round(layoutedDimensions.height),\n ),\n };\n };\n\n /**\n * Create a layouted text element.\n *\n * @param {string} text\n * @param {TextLayoutConfig} [options]\n *\n * @return {SVGElement} rendered text\n */\n this.createText = function (text, options) {\n return textUtil.createText(text, options || {});\n };\n\n /**\n * Get default text style.\n */\n this.getDefaultStyle = function () {\n return defaultStyle;\n };\n\n /**\n * Get the external text style.\n */\n this.getExternalStyle = function () {\n return externalStyle;\n };\n}\n\nTextRenderer.$inject = [\"config.textRenderer\"];\n","// TODO: this will not work for actors and work objects as the name of the icon is part of the type\nexport function is(element, type) {\n const bo = getBusinessObject(element);\n\n return bo && bo.type === type;\n}\n\nexport function getBusinessObject(element) {\n return (element && element.businessObject) || element;\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\nexport function isCustomIcon(icon) {\n // default icons are provided as SVG\n // custom icons are provided as \"Data URL\" with a base64-encoded image as payload\n return icon.startsWith(\"data\");\n}\n\nexport function isCustomSvgIcon(icon) {\n // default icons are provided as SVG\n // custom icons are provided as \"Data URL\" with a base64-encoded image as payload\n return icon.startsWith(\"data:image/svg\");\n}\n\n/**\n * TODO: This is copied from bpmn-js 8.8.3 and might be simplified because we only use it for rendering annotations\n * ---\n * Scales the path to the given height and width.\n *

Use case

\n *

Use case is to scale the content of elements (event, gateways) based\n * on the element bounding box's size.\n *

\n *

Why not transform

\n *

Scaling a path with transform() will also scale the stroke and IE does not support\n * the option 'non-scaling-stroke' to prevent this.\n * Also there are use cases where only some parts of a path should be\n * scaled.

\n *\n * @param {string} pathId The ID of the path.\n * @param {Object} param

\n * Example param object scales the path to 60% size of the container (data.width, data.height).\n *

\n *   {\n *     xScaleFactor: 0.6,\n *     yScaleFactor:0.6,\n *     containerWidth: data.width,\n *     containerHeight: data.height,\n *     position: {\n *       mx: 0.46,\n *       my: 0.2,\n *     }\n *   }\n *   
\n *
    \n *
  • targetpathwidth = xScaleFactor * containerWidth
  • \n *
  • targetpathheight = yScaleFactor * containerHeight
  • \n *
  • Position is used to set the starting coordinate of the path. M is computed:\n *
      \n *
    • position.x * containerWidth
    • \n *
    • position.y * containerHeight
    • \n *
    \n * Center of the container
     position: {\n *       mx: 0.5,\n *       my: 0.5,\n *     }
    \n * Upper left corner of the container\n *
     position: {\n *       mx: 0.0,\n *       my: 0.0,\n *     }
    \n *
  • \n *
\n *

\n *\n */\nexport function getScaledPath(param) {\n const rawPath = {\n d: \"m {mx}, {my} m 10,0 l -10,0 l 0,{e.y0} l 10,0\",\n height: 30,\n width: 10,\n heightElements: [30],\n widthElements: [10],\n };\n\n // positioning\n // compute the start point of the path\n var mx, my;\n\n if (param.abspos) {\n mx = param.abspos.x;\n my = param.abspos.y;\n } else {\n mx = param.containerWidth * param.position.mx;\n my = param.containerHeight * param.position.my;\n }\n\n var coordinates = {}; // map for the scaled coordinates\n if (param.position) {\n // path\n var heightRatio =\n (param.containerHeight / rawPath.height) * param.yScaleFactor;\n var widthRatio =\n (param.containerWidth / rawPath.width) * param.xScaleFactor;\n\n // Apply height ratio\n for (\n var heightIndex = 0;\n heightIndex < rawPath.heightElements.length;\n heightIndex++\n ) {\n coordinates[\"y\" + heightIndex] =\n rawPath.heightElements[heightIndex] * heightRatio;\n }\n\n // Apply width ratio\n for (\n var widthIndex = 0;\n widthIndex < rawPath.widthElements.length;\n widthIndex++\n ) {\n coordinates[\"x\" + widthIndex] =\n rawPath.widthElements[widthIndex] * widthRatio;\n }\n }\n\n // Apply value to raw path\n var path = format(rawPath.d, {\n mx: mx,\n my: my,\n e: coordinates,\n });\n return path;\n}\n\nfunction format(str, obj) {\n return String(str).replace(tokenRegex, function (all, key) {\n return replacer(all, key, obj);\n });\n}\n\n// copied and adjusted from https://github.com/adobe-webplatform/Snap.svg/blob/master/src/svg.js\nvar tokenRegex = /\\{([^{}]+)\\}/g,\n objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g; // matches .xxxxx or [\"xxxxx\"] to run over object properties\n\nfunction replacer(all, key, obj) {\n var res = obj;\n key.replace(\n objNotationRegex,\n function (all, name, quote, quotedName, isFunc) {\n name = name || quotedName;\n if (res) {\n if (name in res) {\n res = res[name];\n }\n typeof res == \"function\" && isFunc && (res = res());\n }\n },\n );\n res = (res == null || res == obj ? all : res) + \"\";\n\n return res;\n}\n","import BaseViewer from \"./BaseViewer\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport { assign, isArray } from \"min-dash\";\nimport inherits from \"inherits\";\n\nimport DomainStoryModule from \"./features\";\nimport LabelEditingModule from \"./features/labeling\";\nimport ModelingModule from \"./features/modeling\";\nimport { ElementTypes } from \"../../../domain/entities/elementTypes\";\n\nimport MoveCanvasModule from \"diagram-js/lib/navigation/movecanvas\";\nimport KeyboardMoveModule from \"diagram-js/lib/navigation/keyboard-move\";\nimport ZoomScrollModule from \"diagram-js/lib/navigation/zoomscroll\";\n\nimport MoveModule from \"diagram-js/lib/features/move\";\nimport Bendpoints from \"diagram-js/lib/features/bendpoints\";\nimport ConnectionPreview from \"diagram-js/lib/features/connection-preview\";\nimport CopyPasteModule from \"./features/copyPaste\";\nimport SpaceToolModule from \"diagram-js/lib/features/space-tool\";\nimport LassoToolModule from \"diagram-js/lib/features/lasso-tool\";\nimport HandToolModule from \"diagram-js/lib/features/hand-tool\";\nimport ConnectModule from \"diagram-js/lib/features/connect\";\nimport KeyboardModule from \"diagram-js/lib/features/keyboard\";\nimport EditorActionsModule from \"diagram-js/lib/features/editor-actions\";\nimport SnappingModule from \"diagram-js/lib/features/snapping\";\nimport AdditionalShortcuts from \"./features/shortcuts\";\nimport minimapModule from \"diagram-js-minimap\";\n\nexport default function DomainStoryModeler(options) {\n BaseViewer.call(this, options);\n this._elements = [];\n this._groupElements = [];\n}\n\ninherits(DomainStoryModeler, BaseViewer);\n\nDomainStoryModeler.prototype._modules = [].concat(\n [DomainStoryModule, LabelEditingModule, ModelingModule],\n [ResizeModule],\n [SpaceToolModule, LassoToolModule, HandToolModule],\n [MoveCanvasModule, KeyboardMoveModule, ZoomScrollModule], // Navigation on Canvas\n [MoveModule, Bendpoints, ConnectionPreview, CopyPasteModule, ConnectModule], // Move/Create/Alter Elements\n [KeyboardModule, EditorActionsModule, AdditionalShortcuts], // Shortcuts\n [SnappingModule], // Alignment\n [minimapModule],\n);\n\nDomainStoryModeler.prototype._createElementFromBusinessObject = function (bo) {\n let parentId = bo.parent;\n delete bo.children;\n delete bo.parent;\n this._elements.push(bo);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\");\n\n let attributes = assign({ businessObject: bo }, bo);\n let shape = elementFactory.create(\"shape\", attributes);\n\n if (isOfTypeGroup(bo)) {\n this._groupElements[bo.id] = shape;\n }\n\n if (parentId) {\n let parentShape = this._groupElements[parentId];\n\n if (isOfTypeGroup(parentShape)) {\n return canvas.addShape(shape, parentShape, parentShape.id);\n }\n }\n return canvas.addShape(shape);\n};\n\nDomainStoryModeler.prototype._addConnection = function (element) {\n this._elements.push(element);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\"),\n elementRegistry = this.get(\"elementRegistry\");\n\n let attributes = assign({ businessObject: element }, element);\n\n let connection = elementFactory.create(\n \"connection\",\n assign(attributes, {\n source: elementRegistry.get(element.source),\n target: elementRegistry.get(element.target),\n }),\n elementRegistry.get(element.source).parent,\n );\n\n return canvas.addConnection(connection);\n};\n\nDomainStoryModeler.prototype.importBusinessObjects = function (\n businessObjects,\n) {\n this.get(\"eventBus\").fire(\"diagram.clear\", {});\n this._elements = [];\n this._groupElements = [];\n\n if (!isArray(businessObjects)) {\n throw new Error(\"argument must be an array\");\n }\n\n let connections = [],\n groups = [],\n otherElementTypes = [];\n\n businessObjects.forEach(function (bo) {\n if (isOfTypeConnection(bo)) {\n connections.push(bo);\n } else if (isOfTypeGroup(bo)) {\n groups.push(bo);\n } else {\n otherElementTypes.push(bo);\n }\n });\n\n // add groups before shapes and other element types before connections so that connections\n // can already rely on the shapes being part of the diagram\n groups.forEach(this._createElementFromBusinessObject, this);\n otherElementTypes.forEach(this._createElementFromBusinessObject, this);\n connections.forEach(this._addConnection, this);\n};\n\nfunction isOfTypeConnection(element) {\n return (\n element.type === ElementTypes.ACTIVITY ||\n element.type === ElementTypes.CONNECTION\n );\n}\n\nfunction isOfTypeGroup(element) {\n return element && element.type === ElementTypes.GROUP;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n HostListener,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { SettingsService } from 'src/app/workbench/services/settings/settings.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TitleService } from './tools/title/services/title.service';\nimport { ExportService } from './tools/export/services/export.service';\nimport { ReplayService } from './tools/replay/services/replay.service';\nimport { environment } from '../environments/environment';\nimport { ColorPickerDirective } from 'ngx-color-picker';\nimport { AutosaveService } from './tools/autosave/services/autosave.service';\nimport {\n BLACK,\n BLUE,\n CYAN,\n DARK_PINK,\n GREEN,\n GREY,\n LIGHT_PINK,\n LIME,\n ORANGE,\n PURPLE,\n RED,\n SNACKBAR_DURATION_LONG,\n SNACKBAR_INFO,\n YELLOW,\n} from './domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ModelerService } from './tools/modeler/services/modeler.service';\nimport { DirtyFlagService } from './domain/services/dirty-flag.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent implements OnInit, AfterViewInit {\n showSettings$: Observable | BehaviorSubject;\n showDescription$: Observable;\n version: string = environment.version;\n color: string = BLACK;\n\n @ViewChild(ColorPickerDirective, { static: false })\n colorPicker!: ColorPickerDirective;\n\n skipNextColorUpdate = false;\n\n // define preset colors that have good contrast on white background and are compatible to EventStorming notation\n colorBox: string[] = [\n YELLOW,\n ORANGE,\n RED,\n LIGHT_PINK,\n DARK_PINK,\n PURPLE,\n BLUE,\n CYAN,\n GREEN,\n LIME,\n GREY,\n BLACK,\n ];\n\n constructor(\n private settingsService: SettingsService,\n private titleService: TitleService,\n private exportService: ExportService,\n private autosaveService: AutosaveService,\n private cd: ChangeDetectorRef,\n private snackbar: MatSnackBar,\n replayService: ReplayService,\n private modelerService: ModelerService,\n private dirtyFlagService: DirtyFlagService,\n ) {\n this.showSettings$ = new BehaviorSubject(false);\n this.showDescription$ = new BehaviorSubject(true);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n const modifierPressed = e.ctrlKey || e.metaKey;\n if (modifierPressed && e.key === 's' && !e.altKey) {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadDST();\n }\n }\n\n if (modifierPressed && e.altKey && e.key === 's') {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadSVG(true, true, undefined);\n }\n }\n if (modifierPressed && 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 replayService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.nextSentence();\n }\n if (\n (e.key === 'ArrowLeft' || e.key === 'ArrowDown') &&\n replayService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.previousSentence();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n this.skipNextColorUpdate = true;\n this.colorPicker.closeDialog();\n }\n });\n\n document.addEventListener('defaultColor', (event: Event) => {\n const customEvent = event as CustomEvent;\n if (customEvent.detail.color === 'black') {\n this.color = BLACK;\n } else {\n this.color = customEvent.detail.color;\n }\n });\n\n document.addEventListener('openColorPicker', () => {\n this.colorPicker.openDialog();\n });\n\n document.addEventListener('errorColoringOnlySvg', () => {\n this.snackbar.open('Only SVG icons can be colored', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_INFO,\n });\n });\n }\n\n ngOnInit(): void {\n this.modelerService.postInit();\n this.showDescription$ = this.titleService.showDescription$;\n this.showSettings$ = this.settingsService.showSettings$;\n }\n\n onColorChanged(color: string) {\n if (this.skipNextColorUpdate) {\n this.skipNextColorUpdate = false;\n return;\n }\n document.dispatchEvent(\n new CustomEvent('pickedColor', { detail: { color: color } }),\n );\n }\n\n ngAfterViewInit(): void {\n this.autosaveService.loadLatestDraft();\n this.cd.detectChanges();\n }\n\n @HostListener('window:beforeunload', ['$event'])\n onWindowClose(event: any): void {\n if (this.dirtyFlagService.dirty) {\n event.returnValue = true;\n }\n }\n}\n","
\n \n\n @if (showSettings$ | async) {\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 {\n APP_INITIALIZER,\n ApplicationRef,\n DoBootstrap,\n NgModule,\n} 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 { AppComponent } from 'src/app/app.component';\nimport { ImportDomainStoryService } from 'src/app/tools/import/services/import-domain-story.service';\nimport { LabelDictionaryService } from 'src/app/tools/label-dictionary/services/label-dictionary.service';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { IconSetConfigurationService } from 'src/app/tools/icon-set-config/services/icon-set-configuration.service';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { IconDictionaryService } from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { AutosaveService } from './tools/autosave/services/autosave.service';\nimport { MaterialModule } from './material.module';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { DirtyFlagService } from './domain/services/dirty-flag.service';\nimport { IconSetChangedService } from './tools/icon-set-config/services/icon-set-customization.service';\nimport { initializeContextPadProvider } from './tools/modeler/diagram-js/features/context-pad/domainStoryContextPadProvider';\nimport { initializePalette } from './tools/modeler/diagram-js/features/palette/domainStoryPalette';\nimport { initializeRenderer } from './tools/modeler/diagram-js/features/domainStoryRenderer';\nimport { initializeLabelEditingProvider } from './tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider';\nimport { initializeReplaceOptions } from './tools/modeler/diagram-js/features/change-icon/replaceOptions';\nimport { initializeNumbering } from './tools/modeler/diagram-js/features/numbering/numbering';\nimport { initializeActivityUpdateHandler } from './tools/modeler/diagram-js/features/updateHandler/activityUpdateHandlers';\nimport { WorkbenchModule } from './workbench/presentation/workbench.module';\nimport { DomainModule } from './domain/presentation/domain.module';\nimport { AutosaveModule } from './tools/autosave/presentation/autosave.module';\nimport { ExportModule } from './tools/export/presentation/export.module';\nimport { IconSetConfigModule } from './tools/icon-set-config/presentation/icon-set-config.module';\nimport { ImportModule } from './tools/import/presentation/import.module';\nimport { LabelDictionaryModule } from './tools/label-dictionary/presentation/label-dictionary.module';\nimport { ModelerModule } from './tools/modeler/presentation/modeler.module';\nimport { TitleModule } from './tools/title/presentation/title.module';\nimport { DragDirective } from './tools/import/directive/dragDrop.directive';\n\n@NgModule({\n declarations: [AppComponent],\n imports: [\n BrowserModule,\n NoopAnimationsModule,\n MaterialModule,\n ColorPickerModule,\n WorkbenchModule,\n AutosaveModule,\n ExportModule,\n IconSetConfigModule,\n ImportModule,\n LabelDictionaryModule,\n ModelerModule,\n TitleModule,\n DomainModule,\n DragDirective,\n ],\n providers: [\n UntypedFormBuilder,\n {\n provide: MAT_CHECKBOX_DEFAULT_OPTIONS,\n useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: initialize,\n multi: true,\n deps: [\n DirtyFlagService,\n IconDictionaryService,\n IconSetConfigurationService,\n ElementRegistryService,\n LabelDictionaryService,\n ],\n },\n {\n provide: IconSetChangedService,\n useExisting: ImportDomainStoryService,\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\nfunction initialize(\n dirtyFlagService: DirtyFlagService,\n iconDictionaryService: IconDictionaryService,\n configurationService: IconSetConfigurationService,\n elementRegistryService: ElementRegistryService,\n labelDictionaryService: LabelDictionaryService,\n) {\n return () => {\n initializeContextPadProvider(dirtyFlagService, iconDictionaryService);\n\n initializePalette(iconDictionaryService);\n initializeRenderer(\n iconDictionaryService,\n elementRegistryService,\n dirtyFlagService,\n );\n initializeLabelEditingProvider(labelDictionaryService);\n initializeReplaceOptions(iconDictionaryService);\n initializeNumbering(elementRegistryService);\n initializeActivityUpdateHandler(elementRegistryService);\n };\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 = '';\nexport const INITIAL_DESCRIPTION = '';\nexport const INITIAL_ICON_SET_NAME = 'default';\n\n/** LocalStorage KEYS **/\nexport const ICON_SET_CONFIGURATION_KEY = 'iconSetConfiguration';\nexport const DRAFTS_KEY = 'autosaveDrafts';\nexport const VERSION_KEY = 'version';\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_DURATION_LONG = 4000;\nexport const SNACKBAR_DURATION_LONGER = 6000;\nexport const SNACKBAR_SUCCESS = 'snackbar_success';\nexport const SNACKBAR_ERROR = 'snackbar_error';\nexport const SNACKBAR_INFO = 'snackbar_info';\n\n/** COLOR PICKER DEFAULT COLORS **/\nexport const YELLOW = '#FDD835';\nexport const ORANGE = '#FB8C00';\nexport const RED = '#D32F2F';\nexport const LIGHT_PINK = '#F48FB1';\nexport const DARK_PINK = '#EC407A';\nexport const PURPLE = '#8E24AA';\nexport const BLUE = '#1E88E5';\nexport const CYAN = '#00ACC1';\nexport const GREEN = '#43A047';\nexport const LIME = '#C0CA33';\nexport const GREY = '#9E9E9E';\nexport const BLACK = '#000000';\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(entry);\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 addBuiltInIcons(builtInIcons: Dictionary): void {\n builtInIcons.entries.forEach((entry) => {\n if (!this.has(entry.key)) {\n this.entries.push(entry);\n }\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\nexport class Entry {\n value: any; // ToDo: dh, I think type of any is not a good choice. Try to figur out if we can use typed objects here.\n key: string;\n keyWords: string[];\n\n constructor(value: any, key: string, keyWords: string[] = []) {\n this.value = value;\n this.key = key;\n this.keyWords = keyWords;\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}\n\nexport namespace ElementTypes {\n export function getIconId(type: string): string {\n if (type.startsWith(ElementTypes.ACTOR)) {\n return type.replace(ElementTypes.ACTOR, '');\n } else if (type.startsWith(ElementTypes.WORKOBJECT)) {\n return type.replace(ElementTypes.WORKOBJECT, '');\n }\n return '';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../material.module';\nimport { KeyboardShortcutsDialogComponent } from './keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component';\n\n@NgModule({\n declarations: [KeyboardShortcutsDialogComponent],\n exports: [KeyboardShortcutsDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class DomainModule {}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport {\n ShortcutDialogData,\n ShortCut,\n} from '../../../entities/shortcut-dialog-data';\n\n@Component({\n selector: 'app-keyboard-shortcuts-dialog',\n templateUrl: './keyboard-shortcuts-dialog.component.html',\n styleUrl: './keyboard-shortcuts-dialog.component.scss',\n})\nexport class KeyboardShortcutsDialogComponent {\n title: string;\n shortCuts: ShortCut[] = [];\n\n constructor(@Inject(MAT_DIALOG_DATA) data: ShortcutDialogData) {\n this.title = data.title;\n this.shortCuts = data.shortCuts ?? [];\n }\n}\n","<mat-dialog-content class=\"content\">\n <h2 id=\"info-dialog-title\">{{ title }}</h2>\n\n @for (shortCut of shortCuts; track shortCut.description) {\n <div class=\"row\">\n <span class=\"description-width\">{{ shortCut.description }}:</span>\n <span>{{ shortCut.shortCut }}</span>\n </div>\n }\n</mat-dialog-content>\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';\nimport { KeyboardShortcutsDialogComponent } from '../presentation/keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component';\nimport { ShortCut, ShortcutDialogData } from '../entities/shortcut-dialog-data';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private matDialog: MatDialog) {}\n\n openDialog(dialog: ComponentType<any>, config: MatDialogConfig): void {\n this.matDialog.open(dialog, config);\n }\n\n openKeyboardShortcutsDialog(): void {\n const shortCuts: ShortCut[] = [];\n shortCuts.push({ description: 'Undo', shortCut: 'ctrl + Z' });\n shortCuts.push({\n description: 'Redo',\n shortCut: 'ctrl + Y OR ctrl + shift + Z',\n });\n shortCuts.push({ description: 'Select All', shortCut: 'ctrl + A' });\n shortCuts.push({ description: 'Export as EGN', shortCut: 'ctrl + S' });\n shortCuts.push({\n description: 'Export as SVG',\n shortCut: 'ctrl + alt + S',\n });\n shortCuts.push({\n description: 'Import Domain Story',\n shortCut: 'ctrl + L',\n });\n shortCuts.push({ description: 'Search for text', shortCut: 'ctrl + F' });\n shortCuts.push({ description: 'Direct editing', shortCut: 'E' });\n shortCuts.push({ description: 'Hand tool', shortCut: 'H' });\n shortCuts.push({ description: 'Lasso tool', shortCut: 'L' });\n shortCuts.push({ description: 'Space tool', shortCut: 'S' });\n\n const config = new MatDialogConfig();\n\n config.data = {\n title: 'Keyboard Shortcuts',\n shortCuts: shortCuts,\n };\n\n this.openDialog(KeyboardShortcutsDialogComponent, 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<boolean>(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';\n\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { CanvasObject } from 'src/app/domain/entities/canvasObject';\nimport { GroupCanvasObject } from '../entities/groupCanvasObject';\nimport { ActivityCanvasObject } from '../entities/activityCanvasObject';\nimport { UsedIconList } from 'src/app/domain/entities/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 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\n const seenIds = new Set<string>();\n\n return groupObjects.filter((groupObject) => {\n const isNewId = !seenIds.has(groupObject.id);\n if (isNewId) {\n seenIds.add(groupObject.id);\n }\n return isNewId;\n });\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\n // sort by activityBusinessObject number\n activitiesFromActors.sort(\n (\n activityCanvasA: ActivityCanvasObject,\n activityCanvasB: ActivityCanvasObject,\n ) => {\n const activityNumberA = Number(activityCanvasA.businessObject.number);\n const activityNumberB = Number(activityCanvasB.businessObject.number);\n\n return activityNumberA - activityNumberB;\n },\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 } from '@angular/core';\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","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","import { Component } from '@angular/core';\nimport { AutosaveConfigurationService } from '../../services/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/entities/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","@if (autosaveConfiguration.configuration$ | async; as configuration) {\n <div class=\"header\">\n <div class=\"content\">\n <div class=\"heading\">Autosave Options</div>\n <div class=\"option\">\n <input #activated type=\"checkbox\" [checked]=\"configuration.activated\" />\n Enabled\n </div>\n\n <div class=\"option\">\n <mat-form-field color=\"accent\">\n <mat-label>Interval [seconds]</mat-label>\n <input\n matInput\n #interval\n class=\"numberInput\"\n min=\"1\"\n type=\"number\"\n [value]=\"configuration.interval\"\n />\n </mat-form-field>\n </div>\n <div class=\"option\">\n <mat-form-field color=\"accent\">\n <mat-label>Keep last X drafts</mat-label>\n <input\n matInput\n #drafts\n class=\"numberInput\"\n min=\"1\"\n type=\"number\"\n [value]=\"configuration.maxDrafts\"\n />\n </mat-form-field>\n </div>\n <div class=\"option\">\n <span class=\"spacer\"></span>\n\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"save(activated.checked, +drafts.value, +interval.value)\"\n >\n Apply\n </button>\n </div>\n </div>\n </div>\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","<div class=\"content\">\n <app-autosaved-drafts />\n <app-autosave-options />\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { AutosaveService } from '../../services/autosave.service';\nimport { Draft } from '../../domain/draft';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_SUCCESS,\n} from 'src/app/domain/entities/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","<div class=\"header\">\n <div class=\"history\">\n {{ drafts.length ? drafts.length : \"no\" }}\n {{ drafts.length > 1 ? \"drafts\" : \"draft\" }} saved\n </div>\n <span class=\"spacer\"></span>\n <div class=\"buttons\">\n <button\n mat-stroked-button\n class=\"mr-1\"\n [disabled]=\"!drafts.length\"\n (click)=\"removeAllDrafts()\"\n >\n Remove all drafts\n </button>\n </div>\n</div>\n@if (drafts.length) {\n <mat-list>\n @for (draft of drafts; track draft) {\n <mat-list-item>\n <div class=\"draft\">\n <div class=\"item-title\">{{ draft.title }}</div>\n <div class=\"item-date\">{{ draft.date }}</div>\n <button mat-stroked-button (click)=\"loadDraft(draft)\">\n Load draft\n </button>\n </div>\n </mat-list-item>\n }\n </mat-list>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutosaveSettingsComponent } from './AutosaveSettings/autosave-settings.component';\nimport { AutosaveOptionsComponent } from './AutosaveOptions/autosave-options.component';\nimport { AutosavedDraftsComponent } from './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 AutosaveModule {}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport { AutosaveConfiguration } from '../domain/autosave-configuration';\nimport {\n DEFAULT_AUTOSAVES_MAX_DRAFTS,\n DEFAULT_AUTOSAVES_ENABLED,\n DEFAULT_AUTOSAVES_INTERVAL,\n} from 'src/app/domain/entities/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<AutosaveConfiguration>(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 '../../modeler/services/renderer.service';\nimport { ExportService } from '../../export/services/export.service';\nimport { Draft } from '../domain/draft';\nimport { AutosaveConfigurationService } from './autosave-configuration.service';\nimport { IconDictionaryService } from '../../icon-set-config/services/icon-dictionary.service';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport { TitleService } from '../../title/services/title.service';\nimport { AutosaveConfiguration } from '../domain/autosave-configuration';\nimport { Subject } from 'rxjs';\nimport {\n DRAFTS_KEY,\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { IconSetConfigurationService } from '../../icon-set-config/services/icon-set-configuration.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveService {\n private autosaveTimer: any;\n autosavedDraftsChanged$ = new Subject<void>();\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 private iconSetConfigurationService: IconSetConfigurationService,\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 =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\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_KEY, []);\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 const configAndDST = draft.configAndDST ?? { dst: '[]' };\n return (\n draft.title === INITIAL_TITLE &&\n draft.description === INITIAL_DESCRIPTION &&\n JSON.parse(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_KEY, drafts);\n }\n\n private readDrafts(): Draft[] {\n return this.storageService.get(DRAFTS_KEY) ?? [];\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","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 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\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path d=\\\\\"M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\\\\\"/>' +\n '<path d=\\\\\"M0 0h24v24H0z\\\\\" fill=\\\\\"none\\\\\"/></svg>\",' +\n '\"Group\":\"<svg xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\" width=\\\\\"48\\\\\" height=\\\\\"48\\\\\" viewBox=\\\\\"0 0 24 26\\\\\">' +\n '<path d=\\\\\"M0 0h24v24H0z\\\\\" fill=\\\\\"none\\\\\"/>' +\n '<path d=\\\\\"M16.5 13c-1.2 0-3.07.34-4.5 1-1.43-.67-3.3-1-4.5-1C5.33 13 1 14.08 1 16.25V19h22v-2.75c0-2.17-4.33-3.25-6.5-3.25zm-4 4.5h-10v-1.25c0-.54 2.56-1.75 5-1.75s5 1.21 5 1.75v1.25zm9 0H14v-1.25c0-.46-.2-.86-.52-1.22.88-.3 1.96-.53 3.02-.53 2.44 0 5 1.21 5 1.75v1.25zM7.5 12c1.93 0 3.5-1.57 3.5-3.5S9.43 5 7.5 5 4 6.57 4 8.5 5.57 12 7.5 12zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 5.5c1.93 0 3.5-1.57 3.5-3.5S18.43 5 16.5 5 13 6.57 13 8.5s1.57 3.5 3.5 3.5zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z\\\\\"/></svg>\",' +\n '\"System\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path d=\\\\\"M20,18c1.1,0,2-0.9,2-2V6c0-1.1-0.9-2-2-2H4C2.9,4,2,4.9,2,6v10c0,1.1,0.9,2,2,2H0v2h24v-2H20z M4,6h16v10H4V6z\\\\\"/></svg>\"},' +\n '\"workObjects\":{\"Document\":\"<svg xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\" width=\\\\\"24\\\\\" height=\\\\\"24\\\\\" viewBox=\\\\\"0 0 24 26\\\\\">' +\n '<path fill=\\\\\"none\\\\\" d=\\\\\"M0 0h24v24H0V0z\\\\\"/><path d=\\\\\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\\\\\"/></svg>\",' +\n '\"Folder\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path fill=\\\\\"none\\\\\" d=\\\\\"M0,0h24v24H0V0z\\\\\"/>' +\n '<path d=\\\\\"M9.17,6l2,2H20v10L4,18V6H9.17 M10,4H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8c0-1.1-0.9-2-2-2 h-8L10,4L10,4z\\\\\"/></svg>\",' +\n '\"Call\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path fill=\\\\\"none\\\\\" d=\\\\\"M0,0h24v24H0V0z\\\\\"/><path d=\\\\\"M6.54,5C6.6,5.89,6.75,6.76,6.99,7.59l-1.2,1.2C5.38,7.59,5.12,6.32,5.03,5H6.54 M16.4,17.02c0.85,0.24,1.72,0.39,2.6,0.45 v1.49c-1.32-0.09-2.59-0.35-3.8-0.75L16.4,17.02 M7.5,3H4C3.45,3,3,3.45,3,4c0,9.39,7.61,17,17,17c0.55,0,1-0.45,1-1v-3.49\\\\tc0-0.55-0.45-1-1-1c-1.24,0-2.45-0.2-3.57-0.57c-0.1-0.04-0.21-0.05-0.31-0.05c-0.26,0-0.51,0.1-0.71,0.29l-2.2,2.2 c-2.83-1.45-5.15-3.76-6.59-6.59l2.2-2.2C9.1,8.31,9.18,7.92,9.07,7.57C8.7,6.45,8.5,5.25,8.5,4C8.5,3.45,8.05,3,7.5,3L7.5,3z\\\\\"/></svg>\",' +\n '\"Email\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\"><path fill=\\\\\"none\\\\\" d=\\\\\"M0,0h24v24H0V0z\\\\\"/>' +\n '<path fill-opacity=\\\\\"0.9\\\\\" d=\\\\\"M12,1.95c-5.52,0-10,4.48-10,10s4.48,10,10,10h5v-2h-5c-4.34,0-8-3.66-8-8s3.66-8,8-8s8,3.66,8,8v1.43 c0,0.79-0.71,1.57-1.5,1.57S17,14.17,17,13.38v-1.43c0-2.76-2.24-5-5-5s-5,2.24-5,5s2.24,5,5,5c1.38,0,2.64-0.56,3.54-1.47 c0.65,0.89,1.77,1.47,2.96,1.47c1.97,0,3.5-1.6,3.5-3.57v-1.43C22,6.43,17.52,1.95,12,1.95z M12,14.95c-1.66,0-3-1.34-3-3 s1.34-3,3-3s3,1.34,3,3S13.66,14.95,12,14.95z\\\\\"/></svg>\",' +\n '\"Conversation\":\"<svg height=\\\\\"48\\\\\" viewBox=\\\\\"0 0 24 26\\\\\" width=\\\\\"48\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path d=\\\\\"M0 0h24v24H0V0z\\\\\" fill=\\\\\"none\\\\\"/><path d=\\\\\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\\\\\"/></svg>\",' +\n '\"Info\":\"<svg height=\\\\\"48\\\\\" viewBox=\\\\\"0 0 24 26\\\\\" width=\\\\\"48\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\"><path d=\\\\\"M0 0h24v24H0z\\\\\" fill=\\\\\"none\\\\\"/>' +\n '<path d=\\\\\"M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z\\\\\"/>' +\n '</svg>\"}}',\n ),\n dst:\n '[' +\n '{\"type\":\"domainStory:workObjectDocument\",\"name\":\"\",\"id\":\"shape_3792\",\"pickedColor\":\"black\",\"x\":302,\"y\":102},' +\n '{\"type\":\"domainStory:actorPerson\",\"name\":\"\",\"id\":\"shape_4666\",\"pickedColor\":\"black\",\"x\":103,\"y\":93},' +\n '{\"type\":\"domainStory:activity\",\"name\":\"\",\"id\":\"connection_4884\",\"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;\nexport const DEFAULT_PADDING = 15;\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ExportDialogData } from 'src/app/tools/export/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<boolean>;\n useWhiteBackground: BehaviorSubject<boolean>;\n isAnimatedSvgExport: boolean = false;\n animationSpeed: number = 2;\n\n constructor(\n private dialogRef: MatDialogRef<ExportDialogComponent>,\n @Inject(MAT_DIALOG_DATA) data: ExportDialogData,\n ) {\n this.withTitle = new BehaviorSubject<boolean>(true);\n this.useWhiteBackground = new BehaviorSubject<boolean>(true);\n this.title = data.title;\n this.options = data.options;\n }\n\n ngOnInit(): void {}\n\n doOption(i: number): void {\n if (this.isAnimatedSvgExport) {\n this.options[i].fn(\n this.withTitle.value,\n this.useWhiteBackground.value,\n this.animationSpeed,\n );\n } else {\n this.options[i].fn(this.withTitle.value, this.useWhiteBackground.value);\n }\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 onExportAnimatedSvg(): void {\n this.isAnimatedSvgExport = !this.isAnimatedSvgExport;\n }\n}\n","<mat-dialog-content>\n <h1>{{ title }}</h1>\n <div class=\"card\">\n <span>Options for image export:</span>\n <label class=\"row\">\n <input\n type=\"checkbox\"\n [checked]=\"withTitle | async\"\n (change)=\"updateWithTitle($event)\"\n />\n Add title and description to image\n </label>\n <label class=\"row\">\n <input\n type=\"checkbox\"\n [checked]=\"useWhiteBackground | async\"\n (change)=\"updateUseWhiteBackground($event)\"\n />\n Add white background to SVG (default: transparent)\n </label>\n <div class=\"row\">\n <input type=\"checkbox\" [(ngModel)]=\"isAnimatedSvgExport\" />\n <span (click)=\"onExportAnimatedSvg()\">Animated SVG</span>\n @if (isAnimatedSvgExport) {\n <span> - animation speed:</span>\n <input\n class=\"number-input\"\n [(ngModel)]=\"animationSpeed\"\n [max]=\"9\"\n [min]=\"1\"\n [maxLength]=\"1\"\n oninput=\"this.value = this.value.replace(/[^1-9]/g, '');\"\n />\n <span (click)=\"onExportAnimatedSvg()\">seconds</span>\n }\n </div>\n </div>\n</mat-dialog-content>\n<br />\n<br />\n<mat-dialog-actions>\n <div>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n @for (option of options; track option; let i = $index) {\n <button\n mat-stroked-button\n class=\"mr-1\"\n [title]=\"option.tooltip\"\n (click)=\"doOption(i)\"\n >\n {{ option.text }}\n </button>\n }\n </div>\n</mat-dialog-actions>\n","import { ExportDialogComponent } from './export-dialog/export-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [ExportDialogComponent],\n exports: [ExportDialogComponent],\n imports: [CommonModule, MaterialModule, FormsModule],\n})\nexport class ExportModule {}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { IconSetConfigurationService } from 'src/app/tools/icon-set-config/services/icon-set-configuration.service';\nimport { sanitizeForDesktop } from 'src/app/utils/sanitizer';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\nimport { ConfigAndDST } from 'src/app/tools/export/domain/export/configAndDst';\nimport { DirtyFlagService } from 'src/app/domain/services/dirty-flag.service';\nimport { PngService } from 'src/app/tools/export/services/png.service';\nimport { SvgService } from 'src/app/tools/export/services/svg.service';\nimport { Subscription } from 'rxjs';\nimport { RendererService } from '../../modeler/services/renderer.service';\nimport { HtmlPresentationService } from './html-presentation.service';\nimport { formatDate } from '@angular/common';\nimport { environment } from '../../../../environments/environment';\nimport {\n ExportDialogData,\n ExportOption,\n} from '../domain/dialog/exportDialogData';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ExportDialogComponent } from '../presentation/export-dialog/export-dialog.component';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\nimport { ModelerService } from '../../modeler/services/modeler.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { BusinessObject } from '../../../domain/entities/businessObject';\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: IconSetConfigurationService,\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 private modelerService: ModelerService,\n private dialogService: DialogService,\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 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(\n withTitle: boolean,\n useWhiteBackground: boolean,\n animationSpeed: number | undefined,\n ): 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 animationSpeed,\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(modeler: any): void {\n const filename = sanitizeForDesktop(\n this.title + '_' + this.getCurrentDateString(),\n );\n this.htmlPresentationService\n .downloadHTMLPresentation(filename, modeler)\n .then();\n }\n\n private getStoryForDownload(): unknown[] {\n let story = this.rendererService\n .getStory()\n .sort((objA: BusinessObject, objB: BusinessObject) => {\n if (objA.id !== undefined && objB.id !== undefined) {\n return objA.id.localeCompare(objB.id);\n } else {\n return 0;\n }\n }) 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 openDownloadDialog() {\n if (this.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 (\n withTitle: boolean,\n useWhiteBackground: boolean,\n animationSpeed: number | undefined,\n ) => this.downloadSVG(withTitle, useWhiteBackground, animationSpeed),\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.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.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.downloadHTMLPresentation(this.modelerService.getModeler()),\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","import { Injectable } from '@angular/core';\nimport { sanitizeForDesktop } from '../../../utils/sanitizer';\nimport { ReplayService } from '../../replay/services/replay.service';\n// @ts-ignore\nimport doT from 'dot';\nimport { TitleService } from '../../title/services/title.service';\nimport { StoryCreatorService } from '../../replay/services/story-creator.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 private storyCreatorService: StoryCreatorService,\n ) {}\n\n private multiplexSecret: any;\n private multiplexId: any;\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(\n filename: string,\n modeler: any,\n ): Promise<void> {\n const svgData = [];\n // export all sentences of domain story\n this.replayService.startReplay();\n try {\n const result = await modeler.saveSVG({});\n this.fixActivityMarkersForEachSentence(\n result,\n this.replayService.getCurrentSentenceNumber(),\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.getCurrentSentenceNumber() <\n this.replayService.getMaxSentenceNumber()\n ) {\n this.replayService.nextSentence();\n try {\n const result = await modeler.saveSVG({});\n this.fixActivityMarkersForEachSentence(\n result,\n this.replayService.getCurrentSentenceNumber(),\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('</ script', '</script');\n }\n\n // tslint:disable-next-line:align\n private static createSVGData(svg: any): string {\n let data = structuredClone(svg);\n\n // to ensure that the title and description are inside the SVG container and do not overlap with any elements,\n // we change the confines of the SVG viewbox\n let viewBoxIndex = data.indexOf('width=\"');\n\n const viewBox = HtmlPresentationService.viewBoxCoordinates(data);\n\n let xLeft: number;\n let width: number;\n let yUp: number;\n let height: number;\n const splitViewBox = viewBox.split(/\\s/);\n\n xLeft = +splitViewBox[0];\n yUp = +splitViewBox[1];\n width = +splitViewBox[2];\n height = +splitViewBox[3];\n\n if (width < 300) {\n width += 300;\n }\n\n const dataStart = data.substring(0, viewBoxIndex);\n viewBoxIndex = data.indexOf('\" version');\n const dataEnd = data.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n data = dataStart + this.createBounds(xLeft, yUp, width, height) + dataEnd;\n\n return encodeURIComponent(data);\n }\n\n private static createBounds(\n xLeft: number,\n yUp: number,\n width: number,\n height: number,\n ) {\n return (\n 'width=\"100%\"' +\n ' height=\"100%\" ' +\n ' preserveAspectRatio=\"xMidYMid meet\"' +\n ' viewBox=\"' +\n xLeft +\n ' ' +\n yUp +\n ' ' +\n (xLeft + width) +\n ' ' +\n (yUp + height)\n );\n }\n\n /**\n * There is a Problem in the HTML-Presentation, where the Arrow-Heads of the Activities are not shown after the 4th sentence\n * This is due to the fact, that the marker for the Arrow-Head is defined in each sentence with the same ID\n * When the 5th sentence is reached, the first marker is set to display none, which propagates to all other markers\n *\n * To fix this, for each sentence the marker and its references are renamed\n */\n private fixActivityMarkersForEachSentence(\n result: { svg: string },\n sectionIndex: number,\n ): void {\n const defs = result.svg.substring(\n result.svg.indexOf('<defs>'),\n result.svg.indexOf('</defs>') + 7,\n );\n const split = defs.split('<marker ');\n\n let newDefs = split[0];\n\n for (let i = 1; i < split.length; i++) {\n const ids = split[i].match(/(id=\"[^\"]*\")/g);\n ids?.forEach((id) => {\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 += '<marker display= \"block !important\"; ' + split[i];\n }\n\n result.svg = result.svg.replace(defs, newDefs);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { createTitleAndDescriptionSVGElement } from 'src/app/tools/export/services/exportUtil';\nimport { BrowserSpecs } from 'src/app/tools/export/domain/export/browserSpecs';\nimport { Box } from 'src/app/tools/export/domain/export/box';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PngService {\n private width: number;\n private height: number;\n\n constructor() {\n this.width = 0;\n this.height = 0;\n }\n\n private browserSpecs(): BrowserSpecs {\n const ua = navigator.userAgent;\n let tem;\n let M =\n ua.match(\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i,\n ) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return { name: 'IE', version: tem[1] || '' };\n }\n if (M[1] === 'Chrome') {\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem != null) {\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\n }\n }\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n // tslint:disable-next-line:no-conditional-assignment\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n M.splice(1, 1, tem[1]);\n }\n return { name: M[0], version: M[1] };\n }\n\n /** Needed for an SVG-Fix in CHrome where the # needs to be replaced by %23 **/\n URIHashtagFix(svg: string): string {\n let fix = false;\n\n const browser = this.browserSpecs();\n\n const name = browser.name;\n const version = parseInt(browser.version);\n\n // only implemented in chrome and firefox at the moment\n if (name.includes('Chrome')) {\n if (version >= 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(\n svg: HTMLElement,\n includeSpaceForDescription: boolean,\n ): 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 // we need to adjust yUp to have space for the description if necessary\n if (includeSpaceForDescription) {\n yUp -= 75;\n }\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(\n layerBase,\n description === undefined,\n );\n let viewBoxIndex = svg.indexOf('width=\"');\n\n this.calculateWidthAndHeight(box);\n\n const { insertText, dynamicHeightOffset } =\n createTitleAndDescriptionSVGElement(\n 0,\n title,\n description,\n box.xLeft + 10,\n box.yUp + 20,\n this.width,\n );\n if (withTitle) {\n this.height += dynamicHeightOffset;\n }\n\n const bounds = this.createBounds(box, withTitle ? dynamicHeightOffset : 0);\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('<g class=\"viewport\">') + 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/tools/export/domain/export/configAndDst';\nimport { createTitleAndDescriptionSVGElement } from 'src/app/tools/export/services/exportUtil';\nimport { ModelerService } from '../../modeler/services/modeler.service';\nimport {\n DEFAULT_PADDING,\n TEXTSPAN_TITLE_HEIGHT,\n} from '../domain/export/exportConstants';\nimport { StoryCreatorService } from '../../replay/services/story-creator.service';\nimport { StorySentence } from '../../replay/domain/storySentence';\nimport { sanitizeTextForSVGExport } from 'src/app/utils/sanitizer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SvgService {\n private cacheData = '';\n\n constructor(\n private modelerService: ModelerService,\n private storyCreatorService: StoryCreatorService,\n ) {}\n\n createSVGData(\n title: string,\n description: string,\n dst: ConfigAndDST,\n withTitle: boolean,\n useWhiteBackground: boolean,\n animationSpeed?: number,\n ): string {\n this.cacheData = this.modelerService.getEncoded();\n\n let domainStorySvg = structuredClone(this.cacheData);\n\n if (animationSpeed) {\n domainStorySvg = this.createAnimatedSvg(domainStorySvg, animationSpeed);\n }\n\n let viewBoxIndex = domainStorySvg.indexOf('width=\"');\n\n let { width, height, viewBox } = this.viewBoxCoordinates(domainStorySvg);\n\n // The value of the viewBox attribute is a list of four numbers separated by whitespace\n // and/or a comma: min-x, min-y, width, and height. min-x and min-y represent the smallest\n // X and Y coordinates that the viewBox may have (the origin coordinates of the viewBox)\n // and the width and height specify the viewBox size. The resulting viewBox is a\n // rectangle in user space mapped to the bounds of the viewport of an SVG element.\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox\n\n let min_x: number;\n let viewBoxWidth: number;\n let min_y: number;\n let viewBoxHeight: number;\n const splitViewBox = viewBox.split(/\\s/);\n\n min_x = +splitViewBox[0];\n min_y = +splitViewBox[1];\n viewBoxWidth = +splitViewBox[2];\n viewBoxHeight = +splitViewBox[3];\n\n // Set minimum width to ensure title and description are displayed reasonably\n if (viewBoxWidth < 300) {\n viewBoxWidth += 300;\n width += 300;\n }\n\n const { insertText, dynamicHeightOffset } =\n createTitleAndDescriptionSVGElement(\n 0,\n title,\n description,\n min_x,\n min_y,\n width,\n );\n\n const bounds = this.createBounds(\n width,\n height,\n min_x,\n min_y,\n viewBoxWidth,\n viewBoxHeight,\n withTitle,\n dynamicHeightOffset,\n );\n\n const dataStart = domainStorySvg.substring(0, viewBoxIndex);\n viewBoxIndex = domainStorySvg.indexOf('\" version');\n\n const dataEnd = domainStorySvg.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n domainStorySvg = dataStart + bounds + dataEnd;\n\n const insertIndex = this.findIndexToInsertData(domainStorySvg);\n\n if (withTitle) {\n domainStorySvg =\n domainStorySvg.slice(0, insertIndex) +\n insertText +\n domainStorySvg.slice(insertIndex);\n }\n\n if (useWhiteBackground) {\n const svgIndex = domainStorySvg.indexOf('width=\"');\n const backgroundColorWhite = 'style=\"background-color:white\" ';\n domainStorySvg =\n domainStorySvg.slice(0, svgIndex) +\n backgroundColorWhite +\n domainStorySvg.slice(svgIndex);\n }\n\n return this.appendDST(domainStorySvg, dst);\n }\n\n private createAnimatedSvg(\n domainStorySvg: string,\n animationSpeed: number = 2,\n ) {\n const story: StorySentence[] =\n this.storyCreatorService.traceActivitiesAndCreateStory();\n const usedElementId: string[] = [];\n const storyLength = story.length;\n const visibleTimeInPercent = Math.floor(100 / storyLength);\n const durationOfAnimation = storyLength * animationSpeed;\n let sentenceCounter = 1;\n let currentVisibleTimeInPercent = visibleTimeInPercent;\n let previousVisibleTimeInPercent = visibleTimeInPercent;\n story.forEach((sentence) => {\n const objects = sentence.objects.filter(\n (it) => !usedElementId.includes(it.id),\n );\n objects.forEach((objectId) => {\n usedElementId.push(objectId.id);\n const idIndex = domainStorySvg.indexOf(objectId.id);\n const insertIdIndex = domainStorySvg.indexOf('>', idIndex);\n domainStorySvg = `${domainStorySvg.slice(0, insertIdIndex)} id=\"group${sentenceCounter}\" ${domainStorySvg.slice(insertIdIndex)}`;\n\n const index = domainStorySvg.indexOf(objectId.id);\n const insertIndex = domainStorySvg.indexOf('>', index) + 1;\n if (sentenceCounter > 1) {\n domainStorySvg = `${domainStorySvg.slice(0, insertIndex)}\n <style>\n #group${sentenceCounter} {\n opacity: 0;\n animation: visibilityControl${sentenceCounter} ${durationOfAnimation}s infinite;\n }\n @keyframes visibilityControl${sentenceCounter} {\n ${previousVisibleTimeInPercent - 1}% { opacity: 0; } /* Initially invisible */\n ${previousVisibleTimeInPercent}% { opacity: 1; } /* Starts becoming visible */\n 98% { opacity: 1; } /* Stays visible */\n 99% { opacity: 0; } /* Starts disappearing */\n 100% { opacity: 0; } /* Fully invisible */\n }\n </style> ${domainStorySvg.slice(insertIndex)}`;\n }\n });\n sentenceCounter += 1;\n previousVisibleTimeInPercent = currentVisibleTimeInPercent;\n currentVisibleTimeInPercent = visibleTimeInPercent * sentenceCounter;\n });\n return domainStorySvg;\n }\n\n private findIndexToInsertData(data: string) {\n let insertIndex = data.indexOf('</defs>');\n if (insertIndex < 0) {\n insertIndex = data.indexOf('version=\"1.1\">') + 14; // diagram-js exports SVG v. 1.1\n } else {\n insertIndex += 7;\n }\n return insertIndex;\n }\n\n private createBounds(\n width: number,\n height: number,\n min_x: number,\n min_y: number,\n viewBoxWidth: number,\n viewBoxHeight: number,\n withTitle: boolean,\n dynamicHeightOffset: number,\n ): string {\n height = withTitle\n ? height + dynamicHeightOffset + TEXTSPAN_TITLE_HEIGHT\n : height;\n min_x = min_x - DEFAULT_PADDING;\n min_y = withTitle\n ? min_y - dynamicHeightOffset - TEXTSPAN_TITLE_HEIGHT\n : min_y;\n viewBoxHeight = withTitle\n ? viewBoxHeight +\n dynamicHeightOffset +\n TEXTSPAN_TITLE_HEIGHT +\n DEFAULT_PADDING\n : viewBoxHeight;\n viewBoxWidth = viewBoxWidth + DEFAULT_PADDING;\n\n return `width=\"${width}\" height=\"${height}\" viewBox=\"${min_x} ${min_y} ${viewBoxWidth} ${viewBoxHeight}`;\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<!-- <DST>\\n' +\n sanitizeTextForSVGExport(JSON.stringify(dst, null, 2)) +\n '\\n </DST> -->';\n return data;\n }\n}\n","import { Dictionary, Entry } from 'src/app/domain/entities/dictionary';\nexport let customIcons = new Dictionary();\n\nconst people = [\n 'person',\n 'group',\n 'team',\n 'community',\n 'actor',\n 'collective',\n 'account circle',\n 'avatar',\n 'identity',\n 'user',\n 'network',\n 'profile',\n 'contacts',\n];\nconst animal = ['animal', 'pet', 'companion', 'friend'];\nconst vehicle = [\n 'car',\n 'vehicle',\n 'bus',\n 'truck',\n 'train',\n 'motorcycle',\n 'taxi',\n 'bike',\n 'spaceship',\n 'rocket',\n];\nconst airport = [\n 'plane',\n 'airport',\n 'take off',\n 'landing',\n 'departure',\n 'arriving',\n 'destination',\n 'launch',\n 'flight',\n 'space',\n 'science',\n];\nconst driving = [\n 'traffic',\n 'walk',\n 'running',\n 'commute',\n 'traffic jam',\n 'traffic lights',\n 'crosswalk',\n 'move',\n];\nconst print = [\n 'media',\n 'pc',\n 'computer',\n 'update',\n 'ink',\n 'photo',\n 'print',\n 'draft',\n 'office',\n 'attach',\n 'edit',\n 'pencil',\n 'pdf',\n 'jpeg',\n 'pdf to image',\n 'picture as pdf',\n 'print to pdf',\n 'picture in picture',\n 'portrait',\n];\nconst calling = [\n 'mobile',\n 'cellphone',\n 'e-mail',\n 'microphone',\n 'message',\n 'content',\n 'contact',\n 'letter',\n 'sms',\n 'communication',\n 'letter',\n 'notification',\n 'inbox',\n 'send',\n 'incoming',\n 'attachments',\n];\nconst computer = [\n 'system',\n 'security',\n 'search',\n 'desktop',\n 'dashboard',\n 'update',\n 'computer',\n 'pc',\n 'signal',\n 'wifi',\n 'wi-fi',\n 'tablet',\n];\nconst speaker = [\n 'head',\n 'sound',\n 'microphone',\n 'acoustic',\n 'speaker',\n 'speak',\n 'noise',\n 'speaker',\n 'speaker phone',\n];\n\nconst legalSystem = [\n 'judge',\n 'justice',\n 'legal',\n 'court',\n 'hammer',\n 'judgment',\n 'lawyer',\n 'trial',\n 'ruling',\n 'judicial',\n 'sentence',\n 'authority',\n 'auction',\n 'legal system',\n 'courtroom',\n 'building',\n 'attorney',\n 'witness',\n 'honor',\n 'jury',\n];\n\nconst infoDialogs = [\n 'bug',\n 'alert',\n 'error',\n 'issue',\n 'warning',\n 'danger',\n 'risk',\n 'trouble',\n 'failure',\n 'broken',\n 'critical',\n 'caution',\n 'conflict',\n 'problem',\n 'info',\n];\n\nconst finance = [\n 'money',\n 'symbol',\n 'cash',\n 'currency',\n 'coin',\n 'sign',\n 'payment',\n 'funds',\n 'economy',\n 'investment',\n 'banking',\n 'finance',\n 'euro',\n 'dollar',\n 'credit-card',\n 'master',\n 'visa',\n];\n\nconst times = [\n 'clock',\n 'time',\n 'timer',\n 'smartwatch',\n 'hour',\n 'minute',\n 'second',\n 'stopwatch',\n 'countdown',\n 'clockwise',\n 'counter clockwise',\n 'schedule',\n 'alarm',\n 'snooze',\n 'devices',\n];\n\nconst rating = [\n 'star',\n 'grade',\n 'thumb up',\n 'bookmark',\n 'label',\n 'book',\n 'hart plus',\n 'added',\n 'more',\n 'shortcut',\n 'rate',\n 'grading',\n 'credits',\n 'check',\n 'like',\n 'feature',\n 'priority',\n 'loved',\n 'save',\n 'preferred',\n 'highlight',\n 'selected',\n];\n\nconst groceries = [\n 'menu',\n 'restaurant',\n 'lunch',\n 'meal',\n 'food',\n 'brunch',\n 'dessert',\n 'grocery',\n 'pizza',\n 'burger',\n 'snack',\n 'hot dog',\n 'soda',\n 'chips',\n 'restaurant',\n 'quick meal',\n];\n\nconst fingers = [\n 'thumb up',\n 'handshake',\n 'touch',\n 'controller',\n 'help',\n 'symbol',\n 'pointing',\n 'gesture',\n 'wave',\n 'fingers',\n 'hand',\n];\n\nconst entertainment = [\n 'recording',\n 'playback',\n 'play',\n 'pause',\n 'streaming',\n 'video',\n 'media',\n 'home entertainment',\n 'cinema',\n 'theatre',\n 'tv',\n 'camera',\n 'filming',\n 'webcam',\n 'digital',\n 'film',\n 'device',\n 'capture',\n];\n\n// These SVGs are used to render the actors/work objects on the canvas and in the iconset configuration. For palette and context pad, icons.css is used.\nexport const builtInIcons = new Dictionary();\nconst person = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>',\n 'Person',\n [...people],\n);\nbuiltInIcons.putEntry(person);\nconst group = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"48\" viewBox=\"0 0 24 26\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M16.5 13c-1.2 0-3.07.34-4.5 1-1.43-.67-3.3-1-4.5-1C5.33 13 1 14.08 1 16.25V19h22v-2.75c0-2.17-4.33-3.25-6.5-3.25zm-4 4.5h-10v-1.25c0-.54 2.56-1.75 5-1.75s5 1.21 5 1.75v1.25zm9 0H14v-1.25c0-.46-.2-.86-.52-1.22.88-.3 1.96-.53 3.02-.53 2.44 0 5 1.21 5 1.75v1.25zM7.5 12c1.93 0 3.5-1.57 3.5-3.5S9.43 5 7.5 5 4 6.57 4 8.5 5.57 12 7.5 12zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 5.5c1.93 0 3.5-1.57 3.5-3.5S18.43 5 16.5 5 13 6.57 13 8.5s1.57 3.5 3.5 3.5zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z\"/></svg>',\n 'Group',\n [...people],\n);\nbuiltInIcons.putEntry(group);\nconst pet = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><circle cx=\"4.5\" cy=\"9.5\" r=\"2.5\"/><circle cx=\"9\" cy=\"5.5\" r=\"2.5\"/><circle cx=\"15\" cy=\"5.5\" r=\"2.5\"/><circle cx=\"19.5\" cy=\"9.5\" r=\"2.5\"/><path d=\"M17.34 14.86c-.87-1.02-1.6-1.89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.04-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1.6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.15 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2.04-1.3-3.49-2.61-4.8z\"/></svg>',\n 'Pet',\n [...animal],\n);\nbuiltInIcons.putEntry(pet);\nconst conversation = new Entry(\n '<svg height=\"48\" viewBox=\"0 0 24 26\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\"/></svg>',\n 'Conversation',\n ['mobile', 'email', 'sms', 'office'],\n);\nbuiltInIcons.putEntry(conversation);\nconst world = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-.61.08-1.21.21-1.78L8.99 15v1c0 1.1.9 2 2 2v1.93C7.06 19.43 4 16.07 4 12zm13.89 5.4c-.26-.81-1-1.4-1.9-1.4h-1v-3c0-.55-.45-1-1-1h-6v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41C17.92 5.77 20 8.65 20 12c0 2.08-.81 3.98-2.11 5.4z\"/></svg>',\n 'World',\n ['globe', 'language', 'travel', 'public'],\n);\nbuiltInIcons.putEntry(world);\nconst store = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18.36 9l.6 3H5.04l.6-3h12.72M20 4H4v2h16V4zm0 3H4l-1 5v2h1v6h10v-6h4v6h2v-6h1v-2l-1-5zM6 18v-4h6v4H6z\"/></svg>',\n 'Store',\n ['history', 'shopping', 'shop', 'archive'],\n);\nbuiltInIcons.putEntry(store);\nconst theater = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm6 10h-4V5h4v14zm4-2h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z\"/></svg>',\n 'Theater',\n ['stadium', 'cinema', 'comedy', 'video'],\n);\nbuiltInIcons.putEntry(theater);\nconst business = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z\"/></svg>',\n 'Business',\n ['work', 'meeting-room', 'meeting'],\n);\nbuiltInIcons.putEntry(business);\nconst water = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M17 16.99c-1.35 0-2.2.42-2.95.8-.65.33-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.38-1.57-.8-2.95-.8s-2.2.42-2.95.8c-.65.33-1.17.6-2.05.6v1.95c1.35 0 2.2-.42 2.95-.8.65-.33 1.17-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.42 2.95-.8c.65-.33 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8v-1.95c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8zm0-4.45c-1.35 0-2.2.43-2.95.8-.65.32-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.38-1.57-.8-2.95-.8s-2.2.43-2.95.8c-.65.32-1.17.6-2.05.6v1.95c1.35 0 2.2-.43 2.95-.8.65-.35 1.15-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.35 1.15-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.58.8 2.95.8v-1.95c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8zm2.95-8.08c-.75-.38-1.58-.8-2.95-.8s-2.2.42-2.95.8c-.65.32-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.37-1.57-.8-2.95-.8s-2.2.42-2.95.8c-.65.33-1.17.6-2.05.6v1.93c1.35 0 2.2-.43 2.95-.8.65-.33 1.17-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.32 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8V5.04c-.9 0-1.4-.25-2.05-.58zM17 8.09c-1.35 0-2.2.43-2.95.8-.65.35-1.15.6-2.05.6s-1.4-.25-2.05-.6c-.75-.38-1.57-.8-2.95-.8s-2.2.43-2.95.8c-.65.35-1.15.6-2.05.6v1.95c1.35 0 2.2-.43 2.95-.8.65-.32 1.18-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.32 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8V9.49c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8z\"/></svg>',\n 'Water',\n ['pool', 'shower', 'swimming'],\n);\nbuiltInIcons.putEntry(water);\nconst hotel = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M7 14c1.66 0 3-1.34 3-3S8.66 8 7 8s-3 1.34-3 3 1.34 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm12-3h-8v8H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4zm2 8h-8V9h6c1.1 0 2 .9 2 2v4z\"/></svg>',\n 'Hotel',\n ['bed', 'concierge', 'room service', 'house keeping'],\n);\nbuiltInIcons.putEntry(hotel);\nconst dining = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M8.1 13.34l2.83-2.83L3.91 3.5c-1.56 1.56-1.56 4.09 0 5.66l4.19 4.18zm6.78-1.81c1.53.71 3.68.21 5.27-1.38 1.91-1.91 2.28-4.65.81-6.12-1.46-1.46-4.2-1.1-6.12.81-1.59 1.59-2.09 3.74-1.38 5.27L3.7 19.87l1.41 1.41L12 14.41l6.88 6.88 1.41-1.41L13.41 13l1.47-1.47z\"/></svg>',\n 'Dining',\n [...groceries],\n);\nbuiltInIcons.putEntry(dining);\nconst gasStation = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.77 7.23l.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77zM12 13.5V19H6v-7h6v1.5zm0-3.5H6V5h6v5zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Gas-station',\n ['gas', 'fuel', 'petrol'],\n);\nbuiltInIcons.putEntry(gasStation);\nconst meetingRoom = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 19V4h-4V3H5v16H3v2h12V6h2v15h4v-2h-2zm-6 0H7V5h6v14zm-3-8h2v2h-2z\"/></svg>',\n 'Meeting-room',\n ['office', 'room', 'business', 'work', 'group', 'conversation'],\n);\nbuiltInIcons.putEntry(meetingRoom);\nconst courthouse = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74m0-2.26L2 6v2h19V6l-9.5-5z\"/></svg>',\n 'Courthouse',\n [...legalSystem],\n);\nbuiltInIcons.putEntry(courthouse);\nconst flag = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12.36 6l.4 2H18v6h-3.36l-.4-2H7V6h5.36M14 4H5v17h2v-7h5.6l.4 2h7V6h-5.6L14 4z\"/></svg>',\n 'Flag',\n ['bookmark', 'country', 'place'],\n);\nbuiltInIcons.putEntry(flag);\nconst place = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zM7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 2.88-2.88 7.19-5 9.88C9.92 16.21 7 11.85 7 9z\"/><circle cx=\"12\" cy=\"9\" r=\"2.5\"/></svg>',\n 'Place',\n ['flag', 'location', 'border'],\n);\nbuiltInIcons.putEntry(place);\nconst car = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.85 7h10.29l1.08 3.11H5.77L6.85 7zM19 17H5v-5h14v5z\"/><circle cx=\"7.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"16.5\" cy=\"14.5\" r=\"1.5\"/></svg>',\n 'Car',\n [...vehicle],\n);\nbuiltInIcons.putEntry(car);\nconst bus = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2c-4.42 0-8 .5-8 4v10c0 .88.39 1.67 1 2.22V20c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h8v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.78c.61-.55 1-1.34 1-2.22V6c0-3.5-3.58-4-8-4zm5.66 2.99H6.34C6.89 4.46 8.31 4 12 4s5.11.46 5.66.99zm.34 2V10H6V6.99h12zm-.34 9.74l-.29.27H6.63l-.29-.27C6.21 16.62 6 16.37 6 16v-4h12v4c0 .37-.21.62-.34.73z\"/><circle cx=\"8.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"15.5\" cy=\"14.5\" r=\"1.5\"/></svg>',\n 'Bus',\n [...vehicle],\n);\nbuiltInIcons.putEntry(bus);\nconst train = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><circle cx=\"8.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"15.5\" cy=\"14.5\" r=\"1.5\"/><path d=\"M12 2c-4 0-8 .5-8 4v9.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h2l2-2h4l2 2h2v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V6c0-3.5-4-4-8-4zm0 2c3.51 0 4.96.48 5.57 1H6.43c.61-.52 2.06-1 5.57-1zM6 7h5v3H6V7zm12 8.5c0 .83-.67 1.5-1.5 1.5h-9c-.83 0-1.5-.67-1.5-1.5V12h12v3.5zm0-5.5h-5V7h5v3z\"/></svg>',\n 'Train',\n [...vehicle],\n);\nbuiltInIcons.putEntry(train);\nconst truck = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zm-.5 1.5l1.96 2.5H17V9.5h2.5zM6 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm2.22-3c-.55-.61-1.33-1-2.22-1s-1.67.39-2.22 1H3V6h12v9H8.22zM18 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Truck',\n [...vehicle],\n);\nbuiltInIcons.putEntry(truck);\nconst taxi = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18.92 6.01C18.72 5.42 18.16 5 17.5 5H15V3H9v2H6.5c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.85 7h10.29l1.04 3H5.81l1.04-3zM19 17H5v-4.66l.12-.34h13.77l.11.34V17z\"/><circle cx=\"7.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"16.5\" cy=\"14.5\" r=\"1.5\"/></svg>',\n 'Taxi',\n [...vehicle],\n);\nbuiltInIcons.putEntry(taxi);\nconst bike = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM5 12c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5-2.2-5-5-5zm0 8.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5zm5.8-10l2.4-2.4.8.8c1.3 1.3 3 2.1 5.1 2.1V9c-1.5 0-2.7-.6-3.6-1.5l-1.9-1.9c-.5-.4-1-.6-1.6-.6s-1.1.2-1.4.6L7.8 8.4c-.4.4-.6.9-.6 1.4 0 .6.2 1.1.6 1.4L11 14v5h2v-6.2l-2.2-2.3zM19 12c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5-2.2-5-5-5zm0 8.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z\"/></svg>',\n 'Bike',\n [...vehicle],\n);\nbuiltInIcons.putEntry(bike);\nconst boat = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M13 3v1h-2V3h2m-1 7.11l5.38 1.77 2.39.78-1.12 3.97c-.54-.3-.94-.71-1.14-.94L16 13.96l-1.51 1.72c-.34.4-1.28 1.32-2.49 1.32s-2.15-.92-2.49-1.32L8 13.96l-1.51 1.72c-.2.23-.6.63-1.14.93l-1.13-3.96 2.4-.79L12 10.11M15 1H9v3H6c-1.1 0-2 .9-2 2v4.62l-1.29.42c-.26.08-.48.26-.6.5s-.15.52-.06.78L3.95 19H4c1.6 0 3.02-.88 4-2 .98 1.12 2.4 2 4 2s3.02-.88 4-2c.98 1.12 2.4 2 4 2h.05l1.89-6.68c.08-.26.06-.54-.06-.78s-.34-.42-.6-.5L20 10.62V6c0-1.1-.9-2-2-2h-3V1zM6 9.97V6h12v3.97L12 8 6 9.97zm10 9.71c-1.22.85-2.61 1.28-4 1.28s-2.78-.43-4-1.28C6.78 20.53 5.39 21 4 21H2v2h2c1.38 0 2.74-.35 4-.99 1.26.64 2.63.97 4 .97s2.74-.32 4-.97c1.26.65 2.62.99 4 .99h2v-2h-2c-1.39 0-2.78-.47-4-1.32z\"/></svg>',\n 'Boat',\n [...vehicle],\n);\nbuiltInIcons.putEntry(boat);\nconst motorcycle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12.72 11l-2 2h-.77l-.25-.69c-.18-.48-.42-.92-.72-1.31h3.74m2.69-6H11v2h3.59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.54-.32 1.14-.32 1.77 0 2.8 2.2 5 5 5s5-2.2 5-5c0-2.65-1.97-4.77-4.56-4.97L15.41 5zM19 17c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zM5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h2.82C7.4 16.15 6.28 17 5 17z\"/></svg>',\n 'Motorcycle',\n [...vehicle],\n);\nbuiltInIcons.putEntry(motorcycle);\nconst plane = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\"/></svg>',\n 'Plane',\n [...vehicle, ...airport],\n);\nbuiltInIcons.putEntry(plane);\nconst flightTakeoff = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M2.5 19h19v2h-19v-2zm19.57-9.36c-.21-.8-1.04-1.28-1.84-1.06L14.92 10l-6.9-6.43-1.93.51 4.14 7.17-4.97 1.33-1.97-1.54-1.45.39 2.59 4.49L21 11.49c.81-.23 1.28-1.05 1.07-1.85z\"/></svg>',\n 'Flight-takeoff',\n [...airport],\n);\nbuiltInIcons.putEntry(flightTakeoff);\nconst flightLanding = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M2.5 19h19v2h-19v-2zm16.84-3.15c.8.21 1.62-.26 1.84-1.06.21-.8-.26-1.62-1.06-1.84l-5.31-1.42-2.76-9.02L10.12 2v8.28L5.15 8.95l-.93-2.32-1.45-.39v5.17l16.57 4.44z\"/></svg>',\n 'Flight-landing',\n [...airport],\n);\nbuiltInIcons.putEntry(flightLanding);\nconst shuttle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M17 5H3c-1.1 0-2 .89-2 2v9h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-6-6zm-2 2h1l3 3h-4V7zM9 7h4v3H9V7zM3 7h4v3H3V7zm3 10.25c-.69 0-1.25-.56-1.25-1.25s.56-1.25 1.25-1.25 1.25.56 1.25 1.25-.56 1.25-1.25 1.25zm12 0c-.69 0-1.25-.56-1.25-1.25s.56-1.25 1.25-1.25 1.25.56 1.25 1.25-.56 1.25-1.25 1.25zM21 14h-.78c-.55-.61-1.34-1-2.22-1s-1.67.39-2.22 1H8.22c-.55-.61-1.33-1-2.22-1s-1.67.39-2.22 1H3v-2h18v2z\"/></svg>',\n 'Shuttle',\n [...vehicle, ...airport],\n);\nbuiltInIcons.putEntry(shuttle);\nconst walking = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M13.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM9.8 8.9L7 23h2.1l1.8-8 2.1 2v6h2v-7.5l-2.1-2 .6-3C14.8 12 16.8 13 19 13v-2c-1.9 0-3.5-1-4.3-2.4l-1-1.6c-.56-.89-1.68-1.25-2.65-.84L6 8.3V13h2V9.6l1.8-.7\"/></svg>',\n 'Walking',\n [...driving],\n);\nbuiltInIcons.putEntry(walking);\nconst traffic = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 10h-3V8.86c1.72-.45 3-2 3-3.86h-3V4c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v1H4c0 1.86 1.28 3.41 3 3.86V10H4c0 1.86 1.28 3.41 3 3.86V15H4c0 1.86 1.28 3.41 3 3.86V20c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-1.14c1.72-.45 3-2 3-3.86h-3v-1.14c1.72-.45 3-2 3-3.86zm-5 9H9V5h6v14zm-3-1c.83 0 1.5-.67 1.5-1.5S12.83 15 12 15s-1.5.67-1.5 1.5.67 1.5 1.5 1.5zm0-4.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM12 9c.83 0 1.5-.67 1.5-1.5S12.83 6 12 6s-1.5.67-1.5 1.5S11.17 9 12 9z\"/></svg>',\n 'Traffic',\n [...driving],\n);\nbuiltInIcons.putEntry(traffic);\nconst commute = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 4H5C3.34 4 2 5.34 2 7v8c0 1.66 1.34 3 3 3l-1 1v1h1l2-2h2v-5H4V6h9v2h2V7c0-1.66-1.34-3-3-3zM5 14c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm15.57-4.34c-.14-.4-.52-.66-.97-.66h-7.19c-.46 0-.83.26-.98.66l-1.42 4.11v5.51c0 .38.31.72.69.72h.62c.38 0 .68-.38.68-.76V18h8v1.24c0 .38.31.76.69.76h.61c.38 0 .69-.34.69-.72l.01-1.37v-4.14l-1.43-4.11zm-8.16.34h7.19l1.03 3h-9.25l1.03-3zM12 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm8 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Commute',\n [...driving],\n);\nbuiltInIcons.putEntry(commute);\nconst system = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20,18c1.1,0,2-0.9,2-2V6c0-1.1-0.9-2-2-2H4C2.9,4,2,4.9,2,6v10c0,1.1,0.9,2,2,2H0v2h24v-2H20z M4,6h16v10H4V6z\"/></svg>',\n 'System',\n ['update', 'media', 'microservice', 'pc', 'computer'],\n);\nbuiltInIcons.putEntry(system);\nconst printer = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\"/><circle cx=\"18\" cy=\"11.5\" r=\"1\"/></svg>',\n 'Printer',\n [...print],\n);\nbuiltInIcons.putEntry(printer);\nconst document = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\"/></svg>',\n 'Document',\n ['folder', 'article', 'file', 'draft', 'paper', ...print],\n);\nbuiltInIcons.putEntry(document);\nconst folder = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0,0h24v24H0V0z\"/><path d=\"M9.17,6l2,2H20v10L4,18V6H9.17 M10,4H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8c0-1.1-0.9-2-2-2 h-8L10,4L10,4z\"/></svg>',\n 'Folder',\n [...print],\n);\nbuiltInIcons.putEntry(folder);\nconst call = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0,0h24v24H0V0z\"/><path d=\"M6.54,5C6.6,5.89,6.75,6.76,6.99,7.59l-1.2,1.2C5.38,7.59,5.12,6.32,5.03,5H6.54 M16.4,17.02c0.85,0.24,1.72,0.39,2.6,0.45 v1.49c-1.32-0.09-2.59-0.35-3.8-0.75L16.4,17.02 M7.5,3H4C3.45,3,3,3.45,3,4c0,9.39,7.61,17,17,17c0.55,0,1-0.45,1-1v-3.49\\tc0-0.55-0.45-1-1-1c-1.24,0-2.45-0.2-3.57-0.57c-0.1-0.04-0.21-0.05-0.31-0.05c-0.26,0-0.51,0.1-0.71,0.29l-2.2,2.2 c-2.83-1.45-5.15-3.76-6.59-6.59l2.2-2.2C9.1,8.31,9.18,7.92,9.07,7.57C8.7,6.45,8.5,5.25,8.5,4C8.5,3.45,8.05,3,7.5,3L7.5,3z\"/></svg>',\n 'Call',\n [...calling],\n);\nbuiltInIcons.putEntry(call);\nconst email = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0,0h24v24H0V0z\"/><path fill-opacity=\"0.9\" d=\"M12,1.95c-5.52,0-10,4.48-10,10s4.48,10,10,10h5v-2h-5c-4.34,0-8-3.66-8-8s3.66-8,8-8s8,3.66,8,8v1.43 c0,0.79-0.71,1.57-1.5,1.57S17,14.17,17,13.38v-1.43c0-2.76-2.24-5-5-5s-5,2.24-5,5s2.24,5,5,5c1.38,0,2.64-0.56,3.54-1.47 c0.65,0.89,1.77,1.47,2.96,1.47c1.97,0,3.5-1.6,3.5-3.57v-1.43C22,6.43,17.52,1.95,12,1.95z M12,14.95c-1.66,0-3-1.34-3-3 s1.34-3,3-3s3,1.34,3,3S13.66,14.95,12,14.95z\"/></svg>',\n 'Email',\n [...calling],\n);\nbuiltInIcons.putEntry(email);\nconst copyright = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M10.08 10.86c.05-.33.16-.62.3-.87s.34-.46.59-.62c.24-.15.54-.22.91-.23.23.01.44.05.63.13.2.09.38.21.52.36s.25.33.34.53.13.42.14.64h1.79c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22.11-1.7.34s-.88.53-1.2.92-.56.84-.71 1.36S8 11.29 8 11.87v.27c0 .58.08 1.12.23 1.64s.39.97.71 1.35.72.69 1.2.91c.48.22 1.05.34 1.7.34.47 0 .91-.08 1.32-.23s.77-.36 1.08-.63.56-.58.74-.94.29-.74.3-1.15h-1.79c-.01.21-.06.4-.15.58s-.21.33-.36.46-.32.23-.52.3c-.19.07-.39.09-.6.1-.36-.01-.66-.08-.89-.23-.25-.16-.45-.37-.59-.62s-.25-.55-.3-.88-.08-.67-.08-1v-.27c0-.35.03-.68.08-1.01zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/></svg>',\n 'Copyright',\n ['contract', 'legal', 'commercial', 'copyleft'],\n);\nbuiltInIcons.putEntry(copyright);\nconst dns = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 15v4H5v-4h14m1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zM7 18.5c-.82 0-1.5-.67-1.5-1.5s.68-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM19 5v4H5V5h14m1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM7 8.5c-.82 0-1.5-.67-1.5-1.5S6.18 5.5 7 5.5s1.5.68 1.5 1.5S7.83 8.5 7 8.5z\"/></svg>',\n 'DNS',\n ['server', 'domain', 'system', 'name', 'cloud'],\n);\nbuiltInIcons.putEntry(dns);\nconst settings = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.43 12.98c.04-.32.07-.64.07-.98 0-.34-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.09-.16-.26-.25-.44-.25-.06 0-.12.01-.17.03l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.06-.02-.12-.03-.18-.03-.17 0-.34.09-.43.25l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98 0 .33.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.09.16.26.25.44.25.06 0 .12-.01.17-.03l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.06.02.12.03.18.03.17 0 .34-.09.43-.25l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zm-1.98-1.71c.04.31.05.52.05.73 0 .21-.02.43-.05.73l-.14 1.13.89.7 1.08.84-.7 1.21-1.27-.51-1.04-.42-.9.68c-.43.32-.84.56-1.25.73l-1.06.43-.16 1.13-.2 1.35h-1.4l-.19-1.35-.16-1.13-1.06-.43c-.43-.18-.83-.41-1.23-.71l-.91-.7-1.06.43-1.27.51-.7-1.21 1.08-.84.89-.7-.14-1.13c-.03-.31-.05-.54-.05-.74s.02-.43.05-.73l.14-1.13-.89-.7-1.08-.84.7-1.21 1.27.51 1.04.42.9-.68c.43-.32.84-.56 1.25-.73l1.06-.43.16-1.13.2-1.35h1.39l.19 1.35.16 1.13 1.06.43c.43.18.83.41 1.23.71l.91.7 1.06-.43 1.27-.51.7 1.21-1.07.85-.89.7.14 1.13zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"/></svg>',\n 'Settings',\n [...computer],\n);\nbuiltInIcons.putEntry(settings);\nconst cellphone = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M7 22h2v2H7zm4 0h2v2h-2zm4 0h2v2h-2zM16 .01L8 0C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V2c0-1.1-.9-1.99-2-1.99zM16 18H8v-1h8v1zm0-3H8V5h8v10zm0-12H8V2h8v1z\"/></svg>',\n 'Cellphone',\n [...calling],\n);\nbuiltInIcons.putEntry(cellphone);\nconst update = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M11 8v5l4.25 2.52.77-1.28-3.52-2.09V8zm10 2V3l-2.64 2.64C16.74 4.01 14.49 3 12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9h-2c0 3.86-3.14 7-7 7s-7-3.14-7-7 3.14-7 7-7c1.93 0 3.68.79 4.95 2.05L14 10h7z\"/></svg>',\n 'Update',\n [...computer],\n);\nbuiltInIcons.putEntry(update);\nconst briefcase = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M14 6V4h-4v2h4zM4 8v11h16V8H4zm16-2c1.11 0 2 .89 2 2v11c0 1.11-.89 2-2 2H4c-1.11 0-2-.89-2-2l.01-11c0-1.11.88-2 1.99-2h4V4c0-1.11.89-2 2-2h4c1.11 0 2 .89 2 2v2h4z\"/></svg>',\n 'Briefcase',\n [...print],\n);\nbuiltInIcons.putEntry(briefcase);\nconst microphone = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm-1-9c0-.55.45-1 1-1s1 .45 1 1v6c0 .55-.45 1-1 1s-1-.45-1-1V5zm6 6c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z\"/></svg>',\n 'Microphone',\n [...print],\n);\nbuiltInIcons.putEntry(microphone);\nconst signal = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><circle cx=\"6.18\" cy=\"17.82\" r=\"2.18\"/><path d=\"M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z\"/></svg>',\n 'Signal',\n [...computer],\n);\nbuiltInIcons.putEntry(signal);\nconst key = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M22 19h-6v-4h-2.68c-1.14 2.42-3.6 4-6.32 4-3.86 0-7-3.14-7-7s3.14-7 7-7c2.72 0 5.17 1.58 6.32 4H24v6h-2v4zm-4-2h2v-4h2v-2H11.94l-.23-.67C11.01 8.34 9.11 7 7 7c-2.76 0-5 2.24-5 5s2.24 5 5 5c2.11 0 4.01-1.34 4.71-3.33l.23-.67H18v4zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z\"/></svg>',\n 'Key',\n ['keyboard', 'lock', 'security'],\n);\nbuiltInIcons.putEntry(key);\nconst pencil = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM5.92 19H5v-.92l9.06-9.06.92.92L5.92 19zM20.71 5.63l-2.34-2.34c-.2-.2-.45-.29-.71-.29s-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41z\"/></svg>',\n 'Pencil',\n [...print],\n);\nbuiltInIcons.putEntry(pencil);\nconst sum = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7V4z\"/></svg>',\n 'Sum',\n ['subtract', 'result', 'math', 'mathematics'],\n);\nbuiltInIcons.putEntry(sum);\nconst headset = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 14v4h-2v-4h2M7 14v4H6c-.55 0-1-.45-1-1v-3h2m5-13c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h4v1h-7v2h6c1.66 0 3-1.34 3-3V10c0-4.97-4.03-9-9-9z\"/></svg>',\n 'Headset',\n ['head', 'sound', 'microphone', 'acoustic', 'speaker', 'speak', 'noise'],\n);\nbuiltInIcons.putEntry(headset);\nconst keyboard = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M20 7v10H4V7h16m0-2H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2zm0 3h2v2h-2zM8 8h2v2H8zm0 3h2v2H8zm-3 0h2v2H5zm0-3h2v2H5zm3 6h8v2H8zm6-3h2v2h-2zm0-3h2v2h-2zm3 3h2v2h-2zm0-3h2v2h-2z\"/></svg>',\n 'Keyboard',\n [\n 'key',\n 'up',\n 'down',\n 'top',\n 'bottom',\n 'arrow',\n 'space',\n 'tab',\n 'enter',\n 'control',\n 'command',\n ...computer,\n 'mouse',\n ],\n);\nbuiltInIcons.putEntry(keyboard);\nconst mouse = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 9c-.04-4.39-3.6-7.93-8-7.93S4.04 4.61 4 9v6c0 4.42 3.58 8 8 8s8-3.58 8-8V9zm-2 0h-5V3.16c2.81.47 4.96 2.9 5 5.84zm-7-5.84V9H6c.04-2.94 2.19-5.37 5-5.84zM18 15c0 3.31-2.69 6-6 6s-6-2.69-6-6v-4h12v4z\"/></svg>',\n 'Mouse',\n ['scrolling', 'click', 'mouse up', 'mouse down', 'move'],\n);\nbuiltInIcons.putEntry(mouse);\nconst router = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M16 4.2c1.5 0 3 .6 4.2 1.7l.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2zm-3.3 2.5l.8.8c.7-.7 1.6-1 2.5-1s1.8.3 2.5 1l.8-.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm0 6H5v-4h14v4zM6 16h2v2H6zm3.5 0h2v2h-2zm3.5 0h2v2h-2z\"/></svg>',\n 'Router',\n ['net', 'network', 'dns', 'domain', 'wifi', 'wi-fi'],\n);\nbuiltInIcons.putEntry(router);\nconst scanner = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.8 10.7L4.2 5l-.7 1.9L17.6 12H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-5.5c0-.8-.5-1.6-1.2-1.8zM19 18H5v-4h14v4zM6 15h2v2H6zm4 0h8v2h-8z\"/></svg>',\n 'Scanner',\n ['qr code', 'bar code', 'document', ...print],\n);\nbuiltInIcons.putEntry(scanner);\nconst security = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"/></svg>',\n 'Security',\n [...computer],\n);\nbuiltInIcons.putEntry(security);\nconst desktop = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H3V4h18v12z\"/></svg>',\n 'Desktop',\n [...computer],\n);\nbuiltInIcons.putEntry(desktop);\nconst speakerPhone = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M7 7.07L8.43 8.5c.91-.91 2.18-1.48 3.57-1.48s2.66.57 3.57 1.48L17 7.07C15.72 5.79 13.95 5 12 5s-3.72.79-5 2.07zM12 1C8.98 1 6.24 2.23 4.25 4.21l1.41 1.41C7.28 4 9.53 3 12 3s4.72 1 6.34 2.62l1.41-1.41C17.76 2.23 15.02 1 12 1zm2.86 9.01L9.14 10C8.51 10 8 10.51 8 11.14v9.71c0 .63.51 1.14 1.14 1.14h5.71c.63 0 1.14-.51 1.14-1.14v-9.71c.01-.63-.5-1.13-1.13-1.13zM15 20H9v-8h6v8z\"/></svg>',\n 'Speaker-phone',\n [...speaker],\n);\nbuiltInIcons.putEntry(speakerPhone);\nconst tablet = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M18 0H6C4.34 0 3 1.34 3 3v18c0 1.66 1.34 3 3 3h12c1.66 0 3-1.34 3-3V3c0-1.66-1.34-3-3-3zm-4 22h-4v-1h4v1zm5.25-3H4.75V3h14.5v16z\"/></svg>',\n 'Tablet',\n [...computer],\n);\nbuiltInIcons.putEntry(tablet);\nconst label = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM16 17H5V7h11l3.55 5L16 17z\"/></svg>',\n 'Label',\n ['book', 'bookmark', 'flag'],\n);\nbuiltInIcons.putEntry(label);\nconst receipt = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6zm0-4h12v2H6zm0-4h12v2H6z\"/></svg>',\n 'Receipt',\n ['order', 'email receipt'],\n);\nbuiltInIcons.putEntry(receipt);\nconst calendar = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\" /><path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V9h14v10zm0-12H5V5h14v2zM7 11h5v5H7z\" /></svg>',\n 'Calendar',\n ['year', 'month', 'day', 'holiday', 'photo', 'meeting'],\n);\nbuiltInIcons.putEntry(calendar);\nconst cloud = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6m0-2C9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96C18.67 6.59 15.64 4 12 4z\"/></svg>',\n 'Cloud',\n [...computer],\n);\nbuiltInIcons.putEntry(cloud);\nconst assessment = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7zm4-3h2v10h-2zm4 6h2v4h-2z\"/></svg>',\n 'Assessment',\n ['evaluation', 'rating', 'judgment', 'estimate'],\n);\nbuiltInIcons.putEntry(assessment);\nconst dashboard = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 5v2h-4V5h4M9 5v6H5V5h4m10 8v6h-4v-6h4M9 17v2H5v-2h4M21 3h-8v6h8V3zM11 3H3v10h8V3zm10 8h-8v10h8V11zm-10 4H3v6h8v-6z\"/></svg>',\n 'Dashboard',\n [...computer],\n);\nbuiltInIcons.putEntry(dashboard);\nconst pieChart = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm7.93 9H13V4.07c3.61.45 6.48 3.32 6.93 6.93zM4 12c0-4.07 3.06-7.44 7-7.93v15.86c-3.94-.49-7-3.86-7-7.93zm9 7.93V13h6.93c-.45 3.61-3.32 6.48-6.93 6.93z\"/></svg>',\n 'Pie-chart',\n ['business', 'sales', 'financial', 'commercial', 'demographic', 'market'],\n);\nbuiltInIcons.putEntry(pieChart);\nconst problem = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"/></svg>',\n 'Problem',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(problem);\nconst pictureAsPdf = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\"/></svg>',\n 'Picture-as-PDF',\n [...print],\n);\nbuiltInIcons.putEntry(pictureAsPdf);\nconst grid = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z\"/></svg>',\n 'Grid',\n [\n 'table',\n 'matrix',\n 'layout',\n 'grid view',\n 'mesh',\n 'pattern',\n 'dashboard',\n 'window',\n ],\n);\nbuiltInIcons.putEntry(grid);\nconst watch = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M14.31 2l.41 2.48C13.87 4.17 12.96 4 12 4c-.95 0-1.87.17-2.71.47L9.7 2h4.61m.41 17.52L14.31 22H9.7l-.41-2.47c.84.3 1.76.47 2.71.47.96 0 1.87-.17 2.72-.48M16 0H8l-.95 5.73C5.19 7.19 4 9.45 4 12s1.19 4.81 3.05 6.27L8 24h8l.96-5.73C18.81 16.81 20 14.54 20 12s-1.19-4.81-3.04-6.27L16 0zm-4 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z\"/></svg>',\n 'Watch',\n [...times],\n);\nbuiltInIcons.putEntry(watch);\nconst euro = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15 18.5c-2.51 0-4.68-1.42-5.76-3.5H15v-2H8.58c-.05-.33-.08-.66-.08-1s.03-.67.08-1H15V9H9.24C10.32 6.92 12.5 5.5 15 5.5c1.61 0 3.09.59 4.23 1.57L21 5.3C19.41 3.87 17.3 3 15 3c-3.92 0-7.24 2.51-8.48 6H3v2h3.06c-.04.33-.06.66-.06 1s.02.67.06 1H3v2h3.52c1.24 3.49 4.56 6 8.48 6 2.31 0 4.41-.87 6-2.3l-1.78-1.77c-1.13.98-2.6 1.57-4.22 1.57z\"/></svg>',\n 'Euro',\n [...finance],\n);\nbuiltInIcons.putEntry(euro);\nconst dollar = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z\"/></svg>',\n 'Dollar',\n [...finance],\n);\nbuiltInIcons.putEntry(dollar);\nconst info = new Entry(\n '<svg height=\"48\" viewBox=\"0 0 24 26\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z\"/></svg>',\n 'Info',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(info);\nconst alarm = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12.5 8H11v6l4.75 2.85.75-1.23-4-2.37zm4.837-6.19l4.607 3.845-1.28 1.535-4.61-3.843zm-10.674 0l1.282 1.536L3.337 7.19l-1.28-1.536zM12 4c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9-4.03-9-9-9zm0 16c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7z\"/></svg>',\n 'Alarm',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(alarm);\nconst wrench = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M22.61 18.99l-9.08-9.08c.93-2.34.45-5.1-1.44-7C9.79.61 6.21.4 3.66 2.26L7.5 6.11 6.08 7.52 2.25 3.69C.39 6.23.6 9.82 2.9 12.11c1.86 1.86 4.57 2.35 6.89 1.48l9.11 9.11c.39.39 1.02.39 1.41 0l2.3-2.3c.4-.38.4-1.01 0-1.41zm-3 1.6l-9.46-9.46c-.61.45-1.29.72-2 .82-1.36.2-2.79-.21-3.83-1.25C3.37 9.76 2.93 8.5 3 7.26l3.09 3.09 4.24-4.24-3.09-3.09c1.24-.07 2.49.37 3.44 1.31 1.08 1.08 1.49 2.57 1.24 3.96-.12.71-.42 1.37-.88 1.96l9.45 9.45-.88.89z\"/></svg>',\n 'Wrench',\n [\n 'reset',\n 'build',\n 'plumbing',\n 'construction',\n 'tool',\n 'fix',\n 'repair',\n 'settings',\n 'mechanic',\n 'hardware',\n 'maintenance',\n 'spanner',\n 'tighten',\n ],\n);\nbuiltInIcons.putEntry(wrench);\nconst circleArrows = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13.57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z\"/></svg>',\n 'Circle-Arrows',\n [\n 'refresh',\n 'reload',\n 'rewind',\n 'cycle',\n 'rotate',\n 'loop',\n 'reset',\n 'continuous',\n 'recycle',\n 'sync',\n 'return',\n ],\n);\nbuiltInIcons.putEntry(circleArrows);\nconst creditCard = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z\"/></svg>',\n 'Credit-Card',\n [...finance],\n);\nbuiltInIcons.putEntry(creditCard);\nconst favorite = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z\"/></svg>',\n 'Favorite',\n [...rating],\n);\nbuiltInIcons.putEntry(favorite);\nconst gavel = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M1 21h12v2H1v-2zM5.24 8.07l2.83-2.83 14.14 14.14-2.83 2.83L5.24 8.07zM12.32 1l5.66 5.66-2.83 2.83-5.66-5.66L12.32 1zM3.83 9.48l5.66 5.66-2.83 2.83L1 12.31l2.83-2.83z\"/></svg>',\n 'Gavel',\n [...legalSystem],\n);\nbuiltInIcons.putEntry(gavel);\nconst blind = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/><circle cx=\"8\" cy=\"14\" r=\"2\"/><circle cx=\"12\" cy=\"8\" r=\"2\"/><circle cx=\"16\" cy=\"14\" r=\"2\"/></svg>',\n 'Blind',\n ['curtains', 'blinds', 'roller shades', 'closed', 'no sight', 'low vision'],\n);\nbuiltInIcons.putEntry(blind);\nconst hourglass = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z\"/></svg>',\n 'Hourglass',\n ['empty', 'top', 'bottom', 'disabled', ...times],\n);\nbuiltInIcons.putEntry(hourglass);\nconst time = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"/></svg>',\n 'Time',\n [...times],\n);\nbuiltInIcons.putEntry(time);\nconst search = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/></svg>',\n 'Search',\n [\n ...computer,\n 'query',\n 'zoom in',\n 'zoom out',\n 'since',\n 'policy',\n 'find',\n 'experiment',\n 'labs',\n 'check',\n 'biotech',\n 'signal',\n ],\n);\nbuiltInIcons.putEntry(search);\nconst shopping = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15.55 13c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.37-.66-.11-1.48-.87-1.48H5.21l-.94-2H1v2h2l3.6 7.59-1.35 2.44C4.52 15.37 5.48 17 7 17h12v-2H7l1.1-2h7.45zM6.16 6h12.15l-2.76 5H8.53L6.16 6zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z\"/></svg>',\n 'Shopping',\n [\n ...finance,\n 'sopping card',\n 'selling',\n 'buying',\n 'barcode',\n 'price',\n 'business',\n 'mall',\n 'paid',\n 'scanner',\n 'change',\n 'store',\n ],\n);\nbuiltInIcons.putEntry(shopping);\nconst thumbUp = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M9 21h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.58 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2zM9 9l4.34-4.34L12 10h9v2l-3 7H9V9zM1 9h4v12H1z\"/></svg>',\n 'Thumb-up',\n [...rating, 'thumb down', 'thumb up down'],\n);\nbuiltInIcons.putEntry(thumbUp);\nconst thumbDown = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm0 12l-4.34 4.34L12 14H3v-2l3-7h9v10zm4-12h4v12h-4z\"/></svg>',\n 'Thumb-down',\n [...rating, 'thumb up', 'thumb up down'],\n);\nbuiltInIcons.putEntry(thumbDown);\nconst thumbUpDown = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M12 6c0-.55-.45-1-1-1H5.82l.66-3.18.02-.23c0-.31-.13-.59-.33-.8L5.38 0 .44 4.94C.17 5.21 0 5.59 0 6v6.5c0 .83.67 1.5 1.5 1.5h6.75c.62 0 1.15-.38 1.38-.91l2.26-5.29c.07-.17.11-.36.11-.55V6zm-2 1.13L7.92 12H2V6.21l1.93-1.93L3.36 7H10v.13zM22.5 10h-6.75c-.62 0-1.15.38-1.38.91l-2.26 5.29c-.07.17-.11.36-.11.55V18c0 .55.45 1 1 1h5.18l-.66 3.18-.02.24c0 .31.13.59.33.8l.79.78 4.94-4.94c.27-.27.44-.65.44-1.06v-6.5c0-.83-.67-1.5-1.5-1.5zm-.5 7.79l-1.93 1.93.57-2.72H14v-.13L16.08 12H22v5.79z\"/></svg>',\n 'Thumb-up-down',\n [...rating, 'thumb down', 'thumb down'],\n);\nbuiltInIcons.putEntry(thumbUpDown);\nconst couch = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 9V7c0-1.65-1.35-3-3-3H6C4.35 4 3 5.35 3 7v2c-1.65 0-3 1.35-3 3v5c0 1.65 1.35 3 3 3h18c1.65 0 3-1.35 3-3v-5c0-1.65-1.35-3-3-3zM5 7c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v2.78c-.61.55-1 1.34-1 2.22v2H6v-2c0-.88-.39-1.67-1-2.22V7zm17 10c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1v-5c0-.55.45-1 1-1s1 .45 1 1v4h16v-4c0-.55.45-1 1-1s1 .45 1 1v5z\"/></svg>',\n 'Couch',\n [\n 'chair',\n 'weekend',\n 'scene',\n 'living',\n 'sofa',\n 'furniture',\n 'seat',\n 'rest',\n 'relax',\n 'living room',\n 'comfort',\n 'interior design',\n ],\n);\nbuiltInIcons.putEntry(couch);\nconst attach = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"/></svg>',\n 'Attach',\n [\n 'file',\n 'ling',\n 'email',\n 'media',\n 'money',\n 'include',\n 'pin',\n 'append',\n 'drag and drop',\n 'combine',\n 'join',\n 'insert',\n 'upload',\n ],\n);\nbuiltInIcons.putEntry(attach);\nconst ruler = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H3V8h2v4h2V8h2v4h2V8h2v4h2V8h2v4h2V8h2v8z\"/></svg>',\n 'Ruler',\n [\n 'design service',\n 'straighten',\n 'square foot',\n 'measuring tool',\n 'scale',\n 'geometry',\n 'math',\n 'length',\n 'inch',\n 'meter',\n 'line',\n 'precision',\n ],\n);\nbuiltInIcons.putEntry(ruler);\nconst education = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 3L1 9l4 2.18v6L12 21l7-3.82v-6l2-1.09V17h2V9L12 3zm6.82 6L12 12.72 5.18 9 12 5.28 18.82 9zM17 15.99l-5 2.73-5-2.73v-3.72L12 15l5-2.73v3.72z\"/></svg>',\n 'Education',\n [\n 'school',\n 'learning',\n 'books',\n 'teacher',\n 'student',\n 'classroom',\n 'knowledge',\n 'graduation',\n 'academics',\n 'academy',\n 'university',\n 'pencil',\n 'e-learning',\n 'literacy',\n 'research',\n 'tutoring',\n ],\n);\nbuiltInIcons.putEntry(education);\nconst howToReg = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"none\" d=\"M0 0h24v24H0z\"/><g fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path d=\"M9 17l3-2.94c-.39-.04-.68-.06-1-.06-2.67 0-8 1.34-8 4v2h9l-3-3zm2-5c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4\"/><path d=\"M15.47 20.5L12 17l1.4-1.41 2.07 2.08 5.13-5.17 1.4 1.41z\"/></g></svg>',\n 'How-To-Reg',\n ['registration', 'sign up', 'guid', 'tutorial', 'help', 'support'],\n);\nbuiltInIcons.putEntry(howToReg);\nconst viewList = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path opacity=\".87\" fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 5v14h17V5H3zm4 2v2H5V7h2zm-2 6v-2h2v2H5zm0 2h2v2H5v-2zm13 2H9v-2h9v2zm0-4H9v-2h9v2zm0-4H9V7h9v2z\"/></svg>',\n 'View-List',\n [\n 'filtered list',\n 'sorted',\n 'check list',\n 'summarized',\n 'items',\n 'data list',\n 'menu',\n 'catalog',\n 'overview',\n 'table',\n 'content List',\n 'grid view',\n ],\n);\nbuiltInIcons.putEntry(viewList);\nconst accessible = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><circle cx=\"12\" cy=\"4\" r=\"2\"/><path d=\"M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.45-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-9 7c-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28.46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07c-.41 1.16-1.52 2-2.83 2z\"/></svg>',\n 'Accessible',\n [\n 'subtitles',\n 'caption',\n 'forward',\n 'blind',\n 'disability',\n 'wheelchair',\n 'hearing',\n 'support',\n 'handicap',\n 'barrier free',\n ],\n);\nbuiltInIcons.putEntry(accessible);\nconst accountCircle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><g><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.35 18.5C8.66 17.56 10.26 17 12 17s3.34.56 4.65 1.5c-1.31.94-2.91 1.5-4.65 1.5s-3.34-.56-4.65-1.5zm10.79-1.38C16.45 15.8 14.32 15 12 15s-4.45.8-6.14 2.12C4.7 15.73 4 13.95 4 12c0-4.42 3.58-8 8-8s8 3.58 8 8c0 1.95-.7 3.73-1.86 5.12z\"/><path d=\"M12 6c-1.93 0-3.5 1.57-3.5 3.5S10.07 13 12 13s3.5-1.57 3.5-3.5S13.93 6 12 6zm0 5c-.83 0-1.5-.67-1.5-1.5S11.17 8 12 8s1.5.67 1.5 1.5S12.83 11 12 11z\"/></g></g></svg>',\n 'Account-Circle',\n [...people],\n);\nbuiltInIcons.putEntry(accountCircle);\nconst assignment = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M7 15h7v2H7zm0-4h10v2H7zm0-4h10v2H7zm12-4h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-.14 0-.27.01-.4.04-.39.08-.74.28-1.01.55-.18.18-.33.4-.43.64-.1.23-.16.49-.16.77v14c0 .27.06.54.16.78s.25.45.43.64c.27.27.62.47 1.01.55.13.02.26.03.4.03h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7-.25c.41 0 .75.34.75.75s-.34.75-.75.75-.75-.34-.75-.75.34-.75.75-.75zM19 19H5V5h14v14z\"/></svg>',\n 'Assignment',\n [\n 'task',\n 'projekt',\n 'work',\n 'due date',\n 'homework',\n 'list',\n 'checklist',\n 'introduction',\n 'schedule',\n ],\n);\nbuiltInIcons.putEntry(assignment);\nconst battery = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><path d=\"M17,5v16c0,0.55-0.45,1-1,1H8c-0.55,0-1-0.45-1-1V5c0-0.55,0.45-1,1-1h2V2h4v2h2C16.55,4,17,4.45,17,5z M15,6H9v14h6V6z\"/></g></svg>',\n 'Battery',\n [\n 'full',\n 'empty',\n 'charge',\n 'low',\n 'charging 90',\n 'charging 80',\n 'status',\n 'power',\n 'capacity',\n 'recharge',\n 'ac/dc',\n 'power source',\n 'lithium ion',\n 'power bank',\n 'electronics',\n 'energy',\n 'voltage',\n ],\n);\nbuiltInIcons.putEntry(battery);\nconst book = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM9 4h2v5l-1-.75L9 9V4zm9 16H6V4h1v9l3-2.25L13 13V4h5v16z\"/></svg>',\n 'Book',\n [...rating],\n);\nbuiltInIcons.putEntry(book);\nconst bug = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5s-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-4 4v3c0 .22-.03.47-.07.7l-.1.65-.37.65c-.72 1.24-2.04 2-3.46 2s-2.74-.77-3.46-2l-.37-.64-.1-.65C8.03 15.48 8 15.23 8 15v-4c0-.23.03-.48.07-.7l.1-.65.37-.65c.3-.52.72-.97 1.21-1.31l.57-.39.74-.18c.31-.08.63-.12.94-.12.32 0 .63.04.95.12l.68.16.61.42c.5.34.91.78 1.21 1.31l.38.65.1.65c.04.22.07.47.07.69v1zm-6 2h4v2h-4zm0-4h4v2h-4z\"/></svg>',\n 'Bug',\n [\n ...infoDialogs,\n 'report',\n 'nature',\n 'software',\n 'code',\n 'defect',\n 'fault',\n 'malfunction',\n 'debugging',\n 'insect',\n ],\n);\nbuiltInIcons.putEntry(bug);\nconst changeHistory = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 7.77L18.39 18H5.61L12 7.77M12 4L2 20h20L12 4z\"/></svg>',\n 'Change-History',\n [\n 'schedule',\n 'update',\n 'timeline',\n 'logging',\n 'backup',\n 'restore',\n 'documentation',\n 'tracking',\n 'vision control',\n ],\n);\nbuiltInIcons.putEntry(changeHistory);\nconst checkCircle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z\"/></svg>',\n 'Check-Circle',\n [\n 'confirmation',\n 'done',\n 'verified',\n 'approval',\n 'checked',\n 'complete',\n 'green check',\n 'mark',\n 'success',\n 'finish',\n 'good',\n ],\n);\nbuiltInIcons.putEntry(checkCircle);\nconst code = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"/></svg>',\n 'Code',\n [\n 'terminal',\n 'console',\n ...computer,\n 'password',\n 'barcode',\n 'programming',\n 'developer',\n 'script',\n 'software',\n 'syntax',\n 'security',\n ],\n);\nbuiltInIcons.putEntry(code);\nconst contactMail = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M22 3H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zm0 16H2V5h20v14zM21 6h-7v5h7V6zm-1 2l-2.5 1.75L15 8V7l2.5 1.75L20 7v1zM9 12c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm6 8.59c0-2.5-3.97-3.58-6-3.58s-6 1.08-6 3.58V18h12v-1.41zM5.48 16c.74-.5 2.22-1 3.52-1s2.77.49 3.52 1H5.48z\"/></svg>',\n 'Contact-Mail',\n [...calling],\n);\nbuiltInIcons.putEntry(contactMail);\nconst crop = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8v8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2H7z\"/></svg>',\n 'Crop',\n [\n 'screenshot',\n 'landscape',\n 'transform',\n 'cut',\n 'framing',\n 'select area',\n 'trimming',\n 'crop tool',\n 'rectangle',\n 'square',\n ],\n);\nbuiltInIcons.putEntry(crop);\nconst dvr = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 14H3V5h18v12zm-2-9H8v2h11V8zm0 4H8v2h11v-2zM7 8H5v2h2V8zm0 4H5v2h2v-2z\"/></svg>',\n 'DVR',\n [...entertainment],\n);\nbuiltInIcons.putEntry(dvr);\nconst error = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"/></svg>',\n 'Error',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(error);\nconst extension = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10.5 4.5c.28 0 .5.22.5.5v2h6v6h2c.28 0 .5.22.5.5s-.22.5-.5.5h-2v6h-2.12c-.68-1.75-2.39-3-4.38-3s-3.7 1.25-4.38 3H4v-2.12c1.75-.68 3-2.39 3-4.38 0-1.99-1.24-3.7-2.99-4.38L4 7h6V5c0-.28.22-.5.5-.5m0-2C9.12 2.5 8 3.62 8 5H4c-1.1 0-1.99.9-1.99 2v3.8h.29c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-.3c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7v.3H17c1.1 0 2-.9 2-2v-4c1.38 0 2.5-1.12 2.5-2.5S20.38 11 19 11V7c0-1.1-.9-2-2-2h-4c0-1.38-1.12-2.5-2.5-2.5z\"/></svg>',\n 'Extension',\n [\n 'add on',\n 'plugin',\n 'feature',\n 'modification',\n 'utility',\n 'package',\n 'upgrade',\n 'update',\n 'software',\n 'tool',\n ],\n);\nbuiltInIcons.putEntry(extension);\nconst face = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10.25 13c0 .69-.56 1.25-1.25 1.25S7.75 13.69 7.75 13s.56-1.25 1.25-1.25 1.25.56 1.25 1.25zM15 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm7 .25c0 5.52-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2s10 4.48 10 10zM10.66 4.12C12.06 6.44 14.6 8 17.5 8c.46 0 .91-.05 1.34-.12C17.44 5.56 14.9 4 12 4c-.46 0-.91.05-1.34.12zM4.42 9.47c1.71-.97 3.03-2.55 3.66-4.44C6.37 6 5.05 7.58 4.42 9.47zM20 12c0-.78-.12-1.53-.33-2.24-.7.15-1.42.24-2.17.24-3.13 0-5.92-1.44-7.76-3.69C8.69 8.87 6.6 10.88 4 11.86c.01.04 0 .09 0 .14 0 4.41 3.59 8 8 8s8-3.59 8-8z\"/></svg>',\n 'Face',\n [\n ...people,\n 'smile',\n 'emotion',\n 'expression',\n 'head',\n 'mask',\n 'appearance',\n 'character',\n ],\n);\nbuiltInIcons.putEntry(face);\nconst fastfood = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M1 21.98c0 .56.45 1.01 1.01 1.01H15c.56 0 1.01-.45 1.01-1.01V21H1v.98zM8.5 8.99C4.75 8.99 1 11 1 15h15c0-4-3.75-6.01-7.5-6.01zM3.62 13c1.11-1.55 3.47-2.01 4.88-2.01s3.77.46 4.88 2.01H3.62zM1 17h15v2H1zM18 5V1h-2v4h-5l.23 2h9.56l-1.4 14H18v2h1.72c.84 0 1.53-.65 1.63-1.47L23 5h-5z\"/></svg>',\n 'Fastfood',\n [...groceries],\n);\nbuiltInIcons.putEntry(fastfood);\nconst fingerprint = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.24.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28zM3.5 9.72c-.1 0-.2-.03-.29-.09-.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1.5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7-.23.16-.54.11-.7-.12-.9-1.26-2.04-2.25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.39.21zm6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.05-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39s-4.66 1.97-4.66 4.39c0 1.44.32 2.77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15zm7.17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s.5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27-.05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12zM14.91 22c-.04 0-.09-.01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38-2.94 3.08-2.94s3.08 1.32 3.08 2.94c0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08-1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73-2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08-1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07.42.35.35.61-.05.23-.26.38-.47.38z\"/></svg>',\n 'Fingerprint',\n ['security', 'crime', 'authentication', 'identity', 'access', 'login'],\n);\nbuiltInIcons.putEntry(fingerprint);\nconst hand = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M18 24h-6.55c-1.08 0-2.14-.45-2.89-1.23l-7.3-7.61 2.07-1.83c.62-.55 1.53-.66 2.26-.27L8 14.34V4.79c0-1.38 1.12-2.5 2.5-2.5.17 0 .34.02.51.05.09-1.3 1.17-2.33 2.49-2.33.86 0 1.61.43 2.06 1.09.29-.12.61-.18.94-.18 1.38 0 2.5 1.12 2.5 2.5v.28c.16-.03.33-.05.5-.05 1.38 0 2.5 1.12 2.5 2.5V20c0 2.21-1.79 4-4 4zM4.14 15.28l5.86 6.1c.38.39.9.62 1.44.62H18c1.1 0 2-.9 2-2V6.15c0-.28-.22-.5-.5-.5s-.5.22-.5.5V12h-2V3.42c0-.28-.22-.5-.5-.5s-.5.22-.5.5V12h-2V2.51c0-.28-.22-.5-.5-.5s-.5.22-.5.5V12h-2V4.79c0-.28-.22-.5-.5-.5s-.5.23-.5.5v12.87l-5.35-2.83-.51.45z\"/></svg>',\n 'Hand',\n [...fingers],\n);\nbuiltInIcons.putEntry(hand);\nconst help = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\"/></svg>',\n 'Help',\n [...fingers],\n);\nbuiltInIcons.putEntry(help);\nconst image = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86l-3 3.87L9 13.14 6 17h12l-3.86-5.14z\"/></svg>',\n 'Image',\n [...print],\n);\nbuiltInIcons.putEntry(image);\nconst lightbulb = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\"/></svg>',\n 'Lightbulb',\n [\n 'fluorescent',\n 'circle',\n 'idea',\n 'inspiration',\n 'creativity',\n 'illumination',\n 'energy',\n 'solution',\n 'lightning',\n 'lamp',\n 'vision',\n 'glow',\n 'light source',\n ],\n);\nbuiltInIcons.putEntry(lightbulb);\nconst lock = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g fill=\"none\"><path d=\"M0 0h24v24H0V0z\"/><path d=\"M0 0h24v24H0V0z\" opacity=\".87\"/></g><path d=\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6zm9 14H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"/></svg>',\n 'Lock',\n [\n 'key',\n 'timer',\n 'schedule',\n 'grid view',\n 'face',\n 'password',\n 'security',\n 'safety',\n 'secure',\n 'unlock',\n 'access',\n 'protection',\n ],\n);\nbuiltInIcons.putEntry(lock);\nconst loyalty = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41s-.23-1.06-.59-1.42zM13 20.01L4 11V4h7v-.01l9 9-7 7.02z\"/><circle cx=\"6.5\" cy=\"6.5\" r=\"1.5\"/><path d=\"M8.9 12.55c0 .57.23 1.07.6 1.45l3.5 3.5 3.5-3.5c.37-.37.6-.89.6-1.45 0-1.13-.92-2.05-2.05-2.05-.57 0-1.08.23-1.45.6l-.6.6-.6-.59c-.37-.38-.89-.61-1.45-.61-1.13 0-2.05.92-2.05 2.05z\"/></svg>',\n 'Loyalty',\n ['dog', 'trust', 'partnership', 'honor', 'faithfulness', 'long therm'],\n);\nbuiltInIcons.putEntry(loyalty);\nconst pictureInPicture = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M19 7h-8v6h8V7zm-2 4h-4V9h4v2zm4-8H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z\"/></svg>',\n 'Picture-in-Picture',\n [...print],\n);\nbuiltInIcons.putEntry(pictureInPicture);\nconst portrait = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 12c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm6 8.58c0-2.5-3.97-3.58-6-3.58s-6 1.08-6 3.58V18h12v-1.42zM8.48 16c.74-.51 2.23-1 3.52-1s2.78.49 3.52 1H8.48zM19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"/></svg>',\n 'Portrait',\n [...people, ...print],\n);\nbuiltInIcons.putEntry(portrait);\nconst rocket = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><g><g><path d=\"M14,11c0-1.1-0.9-2-2-2s-2,0.9-2,2s0.9,2,2,2S14,12.1,14,11z M7.98,18.25c-0.29-0.9-0.57-1.94-0.76-3L6,16.07v2.98 L7.98,18.25z M12,2c0,0,5,2,5,11l2.11,1.41c0.56,0.37,0.89,1,0.89,1.66V22l-5-2H9l-5,2v-5.93c0-0.67,0.33-1.29,0.89-1.66L7,13 C7,4,12,2,12,2z M12,4.36c0,0-3,2.02-3,8.64c0,2.25,1,5,1,5h4c0,0,1-2.75,1-5C15,6.38,12,4.36,12,4.36z M18,19.05v-2.98 l-1.22-0.81c-0.19,1.05-0.47,2.1-0.76,3L18,19.05z\"/></g></g></g></svg>',\n 'Rocket',\n [...vehicle, ...airport],\n);\nbuiltInIcons.putEntry(rocket);\nconst satellite = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><path d=\"M21,14l2,0c0,4.97-4.03,9-9,9l0-2C17.87,21,21,17.87,21,14z M14,17l0,2c2.76,0,5-2.24,5-5l-2,0C17,15.66,15.66,17,14,17z M18.26,0.59l3.54,3.54c0.78,0.78,0.78,2.05,0,2.83l-3.18,3.18c-0.78,0.78-2.05,0.78-2.83,0l-1.24-1.24L13.84,9.6l1.24,1.24 c0.78,0.78,0.78,2.05,0,2.83l-1.41,1.41c-0.78,0.78-2.05,0.78-2.83,0L9.6,13.84l-0.71,0.71l1.24,1.24c0.78,0.78,0.78,2.05,0,2.83 L6.95,21.8c-0.78,0.78-2.05,0.78-2.83,0l-3.54-3.54c-0.78-0.78-0.78-2.05,0-2.83l3.18-3.18c0.78-0.78,2.05-0.78,2.83,0l1.24,1.24 l0.71-0.71L7.3,11.55c-0.78-0.78-0.78-2.05,0-2.83L8.72,7.3c0.78-0.78,2.05-0.78,2.83,0l1.24,1.24l0.71-0.71L12.25,6.6 c-0.78-0.78-0.78-2.05,0-2.83l3.18-3.18C16.22-0.2,17.48-0.2,18.26,0.59z M3.06,15.79L2,16.85l3.54,3.54l1.06-1.06L3.06,15.79z M5.18,13.67l-1.06,1.06l3.54,3.54l1.06-1.06L5.18,13.67z M10.13,8.72l-1.41,1.41l3.54,3.54l1.41-1.41L10.13,8.72z M14.73,4.12 l-1.06,1.06l3.54,3.54l1.06-1.06L14.73,4.12z M16.85,2l-1.06,1.06l3.54,3.54l1.06-1.06L16.85,2z\"/></g></svg>',\n 'Satellite',\n [...airport],\n);\nbuiltInIcons.putEntry(satellite);\nconst share = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92c0-1.61-1.31-2.92-2.92-2.92zM18 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM6 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm12 7.02c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Share',\n ['send', 'link', 'mobile', 'location', 'upload', 'download', ...calling],\n);\nbuiltInIcons.putEntry(share);\nconst slideshow = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10 8v8l5-4-5-4zm9-5H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"/></svg>',\n 'Slideshow',\n ['send', 'link', 'mobile', 'location', 'upload', 'download', ...calling],\n);\nbuiltInIcons.putEntry(slideshow);\nconst star = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"/></svg>',\n 'Star',\n [...rating],\n);\nbuiltInIcons.putEntry(star);\nconst sun = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M6.76 4.84l-1.8-1.79-1.41 1.41 1.79 1.79zM1 10.5h3v2H1zM11 .55h2V3.5h-2zm8.04 2.495l1.408 1.407-1.79 1.79-1.407-1.408zm-1.8 15.115l1.79 1.8 1.41-1.41-1.8-1.79zM20 10.5h3v2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm-1 4h2v2.95h-2zm-7.45-.96l1.41 1.41 1.79-1.8-1.41-1.41z\"/></svg>',\n 'Sun',\n [\n 'light mode',\n 'solar power',\n 'clear day',\n 'curtains',\n 'star',\n 'summer',\n 'warm',\n 'energy',\n ],\n);\nbuiltInIcons.putEntry(sun);\nconst table = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><g><path d=\"M21.96,9.73l-1.43-5C20.41,4.3,20.02,4,19.57,4H4.43C3.98,4,3.59,4.3,3.47,4.73l-1.43,5C1.86,10.36,2.34,11,3,11h2.2L4,20 h2l0.67-5h10.67L18,20h2l-1.2-9H21C21.66,11,22.14,10.36,21.96,9.73z M6.93,13l0.27-2h9.6l0.27,2H6.93z M4.33,9l0.86-3h13.63 l0.86,3H4.33z\"/></g></g></svg>',\n 'Table',\n ['device', 'furniture', 'desk', 'dining', 'meeting'],\n);\nbuiltInIcons.putEntry(table);\nconst videocam = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M15 8v8H5V8h10m1-2H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4V7c0-.55-.45-1-1-1z\"/></svg>',\n 'Videocam',\n [...entertainment],\n);\nbuiltInIcons.putEntry(videocam);\nconst wysiwyg = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/><path d=\"M19,3H5C3.89,3,3,3.9,3,5v14c0,1.1,0.89,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.11,3,19,3z M19,19H5V7h14V19z M17,12H7v-2 h10V12z M13,16H7v-2h6V16z\"/></g></svg>',\n 'Wysiwyg',\n [\n 'editor',\n 'design',\n 'content',\n 'user interface',\n 'page builder',\n 'layout',\n 'preview',\n 'templates',\n ],\n);\nbuiltInIcons.putEntry(wysiwyg);\n\nexport function addCustomIcons(newIcons: Dictionary): void {\n for (const key in newIcons.keysArray().entries()) {\n customIcons.add(newIcons.get(key), key);\n }\n}\n","import { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { addCustomIcons } from 'src/app/tools/icon-set-config/domain/allIcons';\nimport { Configuration } from 'src/app/domain/entities/configuration';\nimport { INITIAL_ICON_SET_NAME } from '../../../domain/entities/constants';\nimport { IconSet } from '../../../domain/entities/iconSet';\n\nexport class IconConfiguration {\n iconSetName = INITIAL_ICON_SET_NAME;\n\n private allIconDictionary: Dictionary;\n\n constructor(allIconDictionary: Dictionary) {\n this.allIconDictionary = allIconDictionary;\n }\n\n getDefaultConf(): Configuration {\n return defaultIconSet;\n }\n\n addCustomIcons(\n actors: string[],\n actorsDict: Dictionary,\n workObjects: string[],\n workObjectsDict: Dictionary,\n ): void {\n const newCustomIcons: { [key: string]: any } = {};\n\n actors.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newCustomIcons[name] = actorsDict.get(name);\n }\n });\n\n workObjects.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newCustomIcons[name] = workObjectsDict.get(name);\n }\n });\n\n const customIcons = new Dictionary();\n Object.keys(newCustomIcons).forEach((key) => {\n customIcons.set(key, newCustomIcons[key]);\n });\n\n addCustomIcons(customIcons);\n }\n\n createCustomConf(iconSetConfiguration: IconSet): Configuration {\n this.iconSetName = iconSetConfiguration.name;\n\n let actors = iconSetConfiguration.actors;\n let workObjects = iconSetConfiguration.workObjects;\n\n this.addCustomIcons(\n actors.keysArray(),\n actors,\n workObjects.keysArray(),\n workObjects,\n );\n\n return new Configuration(actors.keysArray(), workObjects.keysArray());\n }\n}\n\nexport const defaultIconSet = {\n actors: ['Person', 'Group', 'System'],\n workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'],\n};\n","export enum IconFilterOptions {\n ONLY_ACTORS = 'ICON_FILTER_ACTOR',\n ONLY_WORKOBJECTS = 'ICON_FILTER_WORKOBJECT',\n ONLY_UNASSIGNED = 'ICON_FILTER_UNASSIGNED',\n NO_FILTER = '',\n}\n","import { AfterViewChecked, Component, Input } from '@angular/core';\nimport { IconListItem } from '../../domain/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","<div class=\"detailsListItem\">\n <img id=\"{{ id }}\" class=\"icon\" alt=\"{{ name }}\" [src]=\"icon.svg\" />\n <mat-label class=\"iconName\">{{ icon.name }}</mat-label>\n</div>\n","import { AfterViewChecked, Component, Input, OnInit } from '@angular/core';\nimport { IconListItem } from '../../domain/iconListItem';\nimport { BehaviorSubject } from 'rxjs';\nimport { IconSetCustomizationService } from '../../services/icon-set-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<IconListItem>({});\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(\n private iconSetCustomizationService: IconSetCustomizationService,\n ) {}\n\n ngOnInit(): void {\n this.icon = this.iconSetCustomizationService.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.iconSetCustomizationService.setAsUnassigned(\n this.iconName,\n this.icon.value.isActor,\n );\n }\n\n toggleActor(): void {\n this.iconSetCustomizationService.setAsActor(true, this.iconName);\n }\n\n toggleWorkobject(): void {\n this.iconSetCustomizationService.setAsWorkobject(true, this.iconName);\n }\n}\n","<div>\n <div class=\"content\">\n <img id=\"{{ id }}\" class=\"icon\" src=\"\" alt=\"{{ name }}\" />\n <div class=\"name\">{{ name }}</div>\n </div>\n <div class=\"footer\">\n <mat-button-toggle-group [hideSingleSelectionIndicator]=\"true\">\n <mat-button-toggle\n (change)=\"toggleNone()\"\n [value]=\"isNone\"\n [checked]=\"isNone\"\n >\n <span class=\"toggleButtonTitle\">None</span>\n </mat-button-toggle>\n <mat-button-toggle\n [class.activeMatButtonActor]=\"isActor\"\n (change)=\"toggleActor()\"\n [value]=\"isActor\"\n [checked]=\"isActor\"\n >\n <span class=\"toggleButtonTitle\">Actor</span>\n </mat-button-toggle>\n <mat-button-toggle\n [class.activeMatButtonWorkObject]=\"isWorkobject\"\n (change)=\"toggleWorkobject()\"\n [value]=\"isWorkobject\"\n [checked]=\"isWorkobject\"\n >\n <span class=\"toggleButtonTitle\">Work Object</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { DetailsListItemComponent } from './details-list-item/details-list-item.component';\nimport { IconListItemComponent } from './icon-list-item/icon-list-item.component';\nimport { IconSetConfigurationComponent } from './icon-set-configuration/icon-set-configuration.component';\nimport { IconSetDetailsComponent } from './icon-set-details/icon-set-details.component';\n\n@NgModule({\n declarations: [\n DetailsListItemComponent,\n IconListItemComponent,\n IconSetConfigurationComponent,\n IconSetDetailsComponent,\n ],\n exports: [\n DetailsListItemComponent,\n IconListItemComponent,\n IconSetConfigurationComponent,\n IconSetDetailsComponent,\n ],\n imports: [CommonModule, MaterialModule],\n})\nexport class IconSetConfigModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { IconSetConfigurationService } from 'src/app/tools/icon-set-config/services/icon-set-configuration.service';\nimport {\n ICON_PREFIX,\n IconDictionaryService,\n} from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { sanitizeIconName } from 'src/app/utils/sanitizer';\nimport { ElementTypes } from '../../../../domain/entities/elementTypes';\nimport { IconFilterOptions } from '../../domain/iconFilterOptions';\nimport { IconSetCustomizationService } from '../../services/icon-set-customization.service';\nimport { CustomIconSetConfiguration } from '../../../../domain/entities/custom-icon-set-configuration';\n\n@Component({\n selector: 'app-icon-set-configuration',\n templateUrl: './icon-set-configuration.component.html',\n styleUrls: ['./icon-set-configuration.component.scss'],\n})\nexport class IconSetConfigurationComponent implements OnInit {\n private iconSetConfigurationTypes: CustomIconSetConfiguration;\n\n filter = new BehaviorSubject<IconFilterOptions>(IconFilterOptions.NO_FILTER);\n\n selectedActors = new BehaviorSubject<string[]>([]);\n selectedWorkobjects = new BehaviorSubject<string[]>([]);\n\n allIcons: BehaviorSubject<Dictionary>;\n allIconNames = new BehaviorSubject<string[]>([]);\n allFilteredIconNames = new BehaviorSubject<string[]>([]);\n\n constructor(\n private iconSetConfigurationService: IconSetConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n private iconSetCustomizationService: IconSetCustomizationService,\n private elementRegistryService: ElementRegistryService,\n ) {\n this.iconSetConfigurationTypes =\n this.iconSetCustomizationService.getIconSetConfiguration().value;\n\n this.allIcons = new BehaviorSubject<Dictionary>(\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.iconSetCustomizationService.selectedActors$;\n this.selectedWorkobjects =\n this.iconSetCustomizationService.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 return a.toLowerCase().localeCompare(b.toLowerCase());\n }\n\n /** Default Icon Set **/\n loadMinimalIconConfigurationWithDefaultIcons(): void {\n this.iconSetCustomizationService.resetIconSet();\n }\n\n loadInitialConfiguration(): void {\n this.iconSetCustomizationService.cancel();\n }\n\n /** Persist Icon Set **/\n saveIconSet(): void {\n this.iconSetCustomizationService.saveIconSet(\n this.elementRegistryService.getUsedIcons(),\n );\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'; // this suffix helps users to see which icons they uploaded; it should not be used to check if an icon is actually custom or not since this convention was introduce after v1.3.0 and is therefore not reliable information\n\n reader.onloadend = (e: ProgressEvent<FileReader>) => {\n if (e.target) {\n const src: string = e.target.result as unknown as string;\n this.iconDictionaryService.addIMGToIconDictionary(src, iconName);\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n this.iconSetCustomizationService.addNewIcon(iconName);\n }\n };\n reader.readAsDataURL(iconInputFile);\n }\n }\n\n /** Import Icon Set **/\n startIconSetImport(): void {\n document.getElementById('importDomain')?.click();\n }\n\n importIconSet(): void {\n // @ts-ignore\n const iconSetInputFile = document.getElementById('importDomain').files[0];\n const reader = new FileReader();\n\n reader.onloadend = (e: ProgressEvent<FileReader>) => {\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 =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\n this.iconSetConfigurationService.loadConfiguration(config, false);\n\n this.iconSetCustomizationService.importConfiguration(config);\n\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n };\n\n reader.readAsText(iconSetInputFile);\n }\n\n /** Filter **/\n filterForActors(): void {\n if (this.filter.value !== IconFilterOptions.ONLY_ACTORS) {\n this.filter.next(IconFilterOptions.ONLY_ACTORS);\n } else {\n this.filter.next(IconFilterOptions.NO_FILTER);\n }\n }\n\n filterForWorkobjects(): void {\n if (this.filter.value !== IconFilterOptions.ONLY_WORKOBJECTS) {\n this.filter.next(IconFilterOptions.ONLY_WORKOBJECTS);\n } else {\n this.filter.next(IconFilterOptions.NO_FILTER);\n }\n }\n\n filterForUnassigned(): void {\n if (this.filter.value !== IconFilterOptions.ONLY_UNASSIGNED) {\n this.filter.next(IconFilterOptions.ONLY_UNASSIGNED);\n } else {\n this.filter.next(IconFilterOptions.NO_FILTER);\n }\n }\n\n filterByNameAndType($event: any) {\n const filteredByKeyWord = this.allIcons.value\n .all()\n .filter((entry) =>\n entry.keyWords.some((key) => {\n return key.toLowerCase().includes($event.target.value.toLowerCase());\n }),\n )\n .map((entry) => entry.key);\n\n const filteredByNameAndType = this.getFilteredNamesForType(\n this.filter.value,\n ).filter(\n (name) =>\n name.toLowerCase().includes($event.target.value.toLowerCase()) ||\n filteredByKeyWord.includes(name),\n );\n this.allFilteredIconNames.next(filteredByNameAndType.sort(this.sortByName));\n }\n\n private getFilteredNamesForType(type: IconFilterOptions): string[] {\n let allFiltered: string[] = [];\n switch (type) {\n case IconFilterOptions.NO_FILTER:\n allFiltered = this.allIconNames.value;\n break;\n case IconFilterOptions.ONLY_ACTORS:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconActor(name),\n );\n break;\n case IconFilterOptions.ONLY_WORKOBJECTS:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconWorkObject(name),\n );\n break;\n case IconFilterOptions.ONLY_UNASSIGNED:\n allFiltered = this.allIconNames.value.filter(\n (name) =>\n !this.iconSetCustomizationService.isIconActor(name) &&\n !this.iconSetCustomizationService.isIconWorkObject(name),\n );\n break;\n }\n return allFiltered;\n }\n}\n","<div class=\"content\">\n <div>\n <div class=\"header\">\n <div class=\"searchbar\">\n <div class=\"heading\">Filter:</div>\n <button\n mat-button\n [class.activeNone]=\"(filter | async) === 'ICON_FILTER_UNASSIGNED'\"\n title=\"Unassigned Icons\"\n (click)=\"filterForUnassigned()\"\n >\n <span>Unassigned</span>\n </button>\n <button\n mat-button\n [class.activeActor]=\"(filter | async) === 'ICON_FILTER_ACTOR'\"\n title=\"Icons used as actors\"\n (click)=\"filterForActors()\"\n >\n <span>Actors</span>\n </button>\n <button\n mat-button\n [class.activeWorkObject]=\"\n (filter | async) === 'ICON_FILTER_WORKOBJECT'\n \"\n title=\"Icons used as work objects\"\n (click)=\"filterForWorkobjects()\"\n >\n <span>Work Objects</span>\n </button>\n <mat-form-field\n class=\"searchForm dense-8\"\n color=\"accent\"\n subscriptSizing=\"dynamic\"\n appearance=\"outline\"\n >\n <mat-label>Search icons</mat-label>\n <input matInput type=\"text\" (input)=\"filterByNameAndType($event)\" />\n </mat-form-field>\n </div>\n <div class=\"buttons\">\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Import icon set\"\n (click)=\"startIconSetImport()\"\n >\n <span>Import icon set</span>\n <input\n type=\"file\"\n accept=\".domain, .iconset\"\n style=\"display: none\"\n id=\"importDomain\"\n name=\"file\"\n onclick=\"this.value=null\"\n (change)=\"importIconSet()\"\n />\n </button>\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Upload icon\"\n (click)=\"startIconUpload()\"\n >\n <span>Upload icon</span>\n <input\n type=\"file\"\n multiple\n accept=\".svg, image/png, image/jpeg, image/gif\"\n style=\"display: none\"\n id=\"importIcon\"\n name=\"file\"\n onclick=\"this.value=null\"\n (change)=\"importIcon()\"\n />\n </button>\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Reset to default icon set\"\n (click)=\"loadMinimalIconConfigurationWithDefaultIcons()\"\n >\n <span>Reset to default</span>\n </button>\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Cancel changes\"\n (click)=\"loadInitialConfiguration()\"\n >\n <span>Cancel changes</span>\n </button>\n <button\n mat-flat-button\n class=\"mr-1\"\n title=\"Save changes\"\n color=\"primary\"\n (click)=\"saveIconSet()\"\n >\n <span>Save changes</span>\n </button>\n </div>\n </div>\n <div class=\"iconList smallScrollbar\">\n @for (iconName of allFilteredIconNames | async; track iconName) {\n <app-icon-list-item [iconName]=\"iconName\"></app-icon-list-item>\n }\n </div>\n </div>\n <app-icon-set-details></app-icon-set-details>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { IconSetCustomizationService } from 'src/app/tools/icon-set-config/services/icon-set-customization.service';\nimport { IconSetConfigurationService } from 'src/app/tools/icon-set-config/services/icon-set-configuration.service';\nimport { IconListItem } from 'src/app/tools/icon-set-config/domain/iconListItem';\n\n@Component({\n selector: 'app-icon-set-details',\n templateUrl: './icon-set-details.component.html',\n styleUrls: ['./icon-set-details.component.scss'],\n})\nexport class IconSetDetailsComponent implements OnInit {\n iconSetName: Observable<string>;\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: IconSetCustomizationService,\n private configurationService: IconSetConfigurationService,\n ) {\n this.iconSetName = configurationService.iconSetName$;\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 exportIconSet(): void {\n this.configurationService.exportConfiguration();\n }\n}\n","<div class=\"details smallScrollbar\">\n <div>\n <h3>Export as File:</h3>\n <div class=\"iconSetDetails\">\n <mat-form-field class=\"exportForm\" color=\"accent\">\n <mat-label>Icon set name</mat-label>\n <input\n matInput\n type=\"text\"\n subscriptSizing=\"dynamic\"\n class=\"dense-8\"\n (input)=\"changeName($event)\"\n [value]=\"iconSetName | async\"\n />\n </mat-form-field>\n <button\n mat-stroked-button\n class=\"exportForm\"\n title=\"Export icon set\"\n (click)=\"exportIconSet()\"\n >\n <span>Export icon set</span>\n </button>\n </div>\n </div>\n <div class=\"actorList\">\n <h3>Order of Actors:</h3>\n <mat-list>\n @for (\n iconName of selectedActors$ | async;\n track iconName;\n let i = $index\n ) {\n <mat-list-item\n class=\"compactItem\"\n draggable=\"true\"\n (dragover)=\"allowDrop($event, 'actorList')\"\n (dragstart)=\"onDragStart(i, 'actorList')\"\n (drop)=\"onDrop($event, iconName, true, i)\"\n >\n <app-details-list-item [icon]=\"getIconForName(iconName)\" />\n </mat-list-item>\n }\n </mat-list>\n </div>\n <div class=\"workobjectList\">\n <h3>Order of Work Objects:</h3>\n <mat-list>\n @for (\n iconName of selectedWorkobjects$ | async;\n track iconName;\n let i = $index\n ) {\n <mat-list-item\n class=\"compactItem\"\n draggable=\"true\"\n (dragover)=\"allowDrop($event, 'workobjectList')\"\n (dragstart)=\"onDragStart(i, 'workobjectList')\"\n (drop)=\"onDrop($event, iconName, false, i)\"\n >\n <app-details-list-item [icon]=\"getIconForName(iconName)\" />\n </mat-list-item>\n }\n </mat-list>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { Configuration } from 'src/app/domain/entities/configuration';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport {\n defaultIconSet,\n IconConfiguration,\n} from 'src/app/tools/icon-set-config/domain/iconConfiguration';\nimport {\n builtInIcons,\n customIcons,\n} from 'src/app/tools/icon-set-config/domain/allIcons';\nimport { sanitizeIconName } from '../../../utils/sanitizer';\nimport getIconId = ElementTypes.getIconId;\nimport { IconSet } from '../../../domain/entities/iconSet';\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 builtInIconsDictionary = new Dictionary();\n private iconDictionaryForMenu = new Dictionary();\n\n private customConfiguration?: IconSet;\n\n private readonly iconConfig: IconConfiguration;\n\n constructor() {\n this.builtInIconsDictionary.addBuiltInIcons(builtInIcons);\n this.iconConfig = new IconConfiguration(this.builtInIconsDictionary);\n }\n\n initTypeDictionaries(actors: string[], workObjects: string[]): void {\n if (!actors || actors.length == 0) {\n actors = defaultIconSet.actors;\n }\n if (!workObjects || workObjects.length == 0) {\n workObjects = defaultIconSet.workObjects;\n }\n\n const allTypes = new Dictionary();\n allTypes.addBuiltInIcons(builtInIcons);\n allTypes.appendDict(this.getCustomIcons());\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 selectedIconNames: string[],\n allIcons: Dictionary,\n dictionary: Dictionary,\n elementType: ElementTypes,\n ) {\n dictionary.clear();\n for (const key of selectedIconNames) {\n dictionary.add(allIcons.get(key), key);\n }\n\n dictionary.keysArray().forEach((name) => {\n this.registerIconForMenu(\n name,\n ICON_PREFIX + sanitizeIconName(name.toLowerCase()),\n elementType,\n );\n });\n }\n\n getCurrentIconConfigurationForMenu(): 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(getIconId(element.type))) {\n allIn = false;\n }\n });\n } else {\n return false;\n }\n return allIn;\n }\n\n /** Load Icons from Configuration **/\n addIconsFromIconSetConfiguration(\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.addBuiltInIcons(builtInIcons);\n allTypes.appendDict(customIcons);\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.registerIconForMenu(\n name,\n sanitizeIconName(ICON_PREFIX + name.toLowerCase()),\n dictionaryType,\n );\n }\n }\n });\n }\n\n /** Add Icon(s) to Dictionary **/\n private registerIconForMenu(\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.iconDictionaryForMenu.set(`${elementType}${name}`, src);\n }\n\n addIconsToTypeDictionary(\n actorIcons: BusinessObject[],\n workObjectIcons: BusinessObject[],\n ) {\n if (!this.allInTypeDictionary(ElementTypes.ACTOR, actorIcons)) {\n this.addIconsFromIconSetConfiguration(\n ElementTypes.ACTOR,\n actorIcons.map((element) => getIconId(element.type)),\n );\n }\n if (!this.allInTypeDictionary(ElementTypes.WORKOBJECT, workObjectIcons)) {\n this.addIconsFromIconSetConfiguration(\n ElementTypes.WORKOBJECT,\n workObjectIcons.map((element) => getIconId(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: IconSet,\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.registerIconForMenu(\n ICON_PREFIX + name.toLowerCase(),\n getIconId(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 private addNewIconsToDictionary(customIcons: Dictionary) {\n customIcons.keysArray().forEach((key) => {\n const custom = customIcons.get(key);\n this.addIMGToIconDictionary(custom, key);\n });\n this.addIconsToCss(customIcons);\n }\n\n addIMGToIconDictionary(input: string, name: string): void {\n customIcons.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 \"<svg viewBox='0 0 22 22' width='22' height='22' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><image width='22' height='22' xlink:href='\" +\n src +\n \"'/></svg>\"\n );\n }\n\n /** Getter & Setter **/\n\n getFullDictionary(): Dictionary {\n const fullDictionary = new Dictionary();\n fullDictionary.appendDict(this.builtInIconsDictionary);\n fullDictionary.appendDict(this.getCustomIcons());\n return fullDictionary;\n }\n\n getCustomIcons(): Dictionary {\n const appendedDict = new Dictionary();\n customIcons.keysArray().forEach((key) => {\n if (!this.builtInIconsDictionary.has(key)) {\n appendedDict.set(key, customIcons.get(key));\n }\n });\n return appendedDict;\n }\n\n getIconsAssignedAs(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 getNamesOfIconsAssignedAs(type: ElementTypes): string[] {\n return this.getIconsAssignedAs(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 getIconForMenu(elementType: ElementTypes, name: string): string | null {\n return this.iconDictionaryForMenu.get(`${elementType}${name}`);\n }\n\n getIconSource(name: string): string | null {\n if (this.builtInIconsDictionary.has(name)) {\n return this.builtInIconsDictionary.get(name);\n } else if (customIcons.has(name)) {\n return customIcons.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.builtInIconsDictionary;\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: IconSet): void {\n this.customConfiguration = customConfiguration;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { IconDictionaryService } from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { defaultIconSet } from '../domain/iconConfiguration';\nimport {\n ICON_SET_CONFIGURATION_KEY,\n INITIAL_ICON_SET_NAME,\n} from '../../../domain/entities/constants';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { IconSetConfigurationForExport } from '../../../domain/entities/icon-set-configuration-for-export';\nimport { CustomIconSetConfiguration } from '../../../domain/entities/custom-icon-set-configuration';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport { sanitizeIconName } from '../../../utils/sanitizer';\n\nexport interface FileConfiguration {\n name: string;\n actors: { [p: string]: any };\n workObjects: { [p: string]: any };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconSetConfigurationService {\n private iconSetNameSubject = new BehaviorSubject<string>(\n INITIAL_ICON_SET_NAME,\n );\n\n iconSetName$ = this.iconSetNameSubject.asObservable();\n\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private storageService: StorageService,\n ) {}\n\n setIconSetName(name: string): void {\n this.iconSetNameSubject.next(name); // ? name : INITIAL_ICON_SET_NAME);\n }\n\n exportConfiguration(): void {\n const iconSetConfiguration = this.getCurrentConfigurationForExport();\n if (!iconSetConfiguration) {\n return;\n }\n\n const configJSONString = JSON.stringify(iconSetConfiguration, null, 2);\n const filename = this.iconSetNameSubject.value;\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 + '.iconset');\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n loadConfiguration(customConfig: IconSet, updateIconSetName = true): 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 .addCustomIcons(actorKeys, actorDict, workObjectKeys, workObjectDict);\n\n this.iconDictionaryService.addIconsFromIconSetConfiguration(\n ElementTypes.ACTOR,\n actorKeys.map((a) => ElementTypes.ACTOR + a),\n );\n this.iconDictionaryService.addIconsFromIconSetConfiguration(\n ElementTypes.WORKOBJECT,\n workObjectKeys.map((w) => ElementTypes.WORKOBJECT + w),\n );\n\n if (updateIconSetName) {\n const configurationName = customConfig.name;\n this.setIconSetName(configurationName);\n }\n }\n\n getCurrentConfiguration(): IconSet | undefined {\n const actors = this.iconDictionaryService.getActorsDictionary();\n const workObjects = this.iconDictionaryService.getWorkObjectsDictionary();\n\n let iconSetConfiguration;\n\n if (actors.size() > 0 && workObjects.size() > 0) {\n iconSetConfiguration = this.createConfigFromDictionaries(\n actors,\n workObjects,\n );\n }\n return iconSetConfiguration;\n }\n\n getCurrentConfigurationForExport():\n | IconSetConfigurationForExport\n | 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(): CustomIconSetConfiguration {\n return {\n name: this.iconSetNameSubject.value || INITIAL_ICON_SET_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(): IconSet {\n const minimalConfig = this.createConfigFromCanvas();\n\n defaultIconSet.actors.forEach((iconName) => {\n minimalConfig.actors.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName,\n );\n });\n defaultIconSet.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 ): IconSet {\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.iconSetNameSubject.value,\n actors: newActors,\n workObjects: newWorkobjects,\n };\n }\n\n public createIconSetConfiguration(\n fileConfiguration: FileConfiguration,\n ): IconSet {\n if (fileConfiguration === undefined) {\n return {\n name: '',\n actors: new Dictionary(),\n workObjects: new Dictionary(),\n };\n }\n\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n Object.keys(fileConfiguration.actors).forEach((key) => {\n let icon = fileConfiguration.actors[key];\n if (icon) {\n // make sure the actor has an icon\n actorsDict.add(icon, sanitizeIconName(key));\n }\n });\n\n Object.keys(fileConfiguration.workObjects).forEach((key) => {\n let icon = fileConfiguration.workObjects[key];\n if (icon) {\n // make sure the work object has an icon\n workObjectsDict.add(icon, sanitizeIconName(key));\n }\n });\n\n return {\n name: fileConfiguration.name,\n actors: actorsDict,\n workObjects: workObjectsDict,\n };\n }\n\n public getStoredIconSetConfiguration(): IconSet | undefined {\n const iconSetString = this.storageService.get(ICON_SET_CONFIGURATION_KEY);\n\n if (!iconSetString) {\n return;\n } else {\n const configurationFromFile = this.createIconSetConfiguration(\n JSON.parse(iconSetString),\n );\n if (this.checkValidityOfConfiguration(configurationFromFile)) {\n return configurationFromFile;\n }\n }\n return;\n }\n\n public setStoredIconSetConfiguration(config: IconSet): 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 this.storageService.set(\n ICON_SET_CONFIGURATION_KEY,\n JSON.stringify(configForStorage, null, 2),\n );\n }\n\n private createConfigFromCanvas(): IconSet {\n const config = {\n name: INITIAL_ICON_SET_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 private checkValidityOfConfiguration(iconSetConfiguration: IconSet) {\n return (\n iconSetConfiguration.actors.keysArray().length > 1 &&\n iconSetConfiguration.workObjects.keysArray().length > 1 &&\n !iconSetConfiguration.actors\n .all()\n .some((e) => typeof e.value !== 'string') &&\n !iconSetConfiguration.workObjects\n .all()\n .some((e) => typeof e.value !== 'string')\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { UsedIconList } from 'src/app/domain/entities/UsedIconList';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n SNACKBAR_SUCCESS,\n} from '../../../domain/entities/constants';\nimport { Dictionary } from '../../../domain/entities/dictionary';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { IconListItem } from '../domain/iconListItem';\nimport { IconSetConfigurationService } from './icon-set-configuration.service';\nimport { IconDictionaryService } from './icon-dictionary.service';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { CustomIconSetConfiguration } from '../../../domain/entities/custom-icon-set-configuration';\n\n/**\n * We are not allowed to call ImportDomainStoryService directly,\n * so we use this \"interface\" instead.\n */\nexport abstract class IconSetChangedService {\n public abstract iconConfigrationChanged(): Observable<IconSet>;\n public abstract getConfiguration(): IconSet;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconSetCustomizationService {\n private readonly iconSetConfigurationTypes: BehaviorSubject<CustomIconSetConfiguration>;\n\n private allIconListItems = new Dictionary();\n\n private configurationHasChanged = false;\n\n selectedActors$ = new BehaviorSubject<string[]>([]);\n selectedWorkobjects$ = new BehaviorSubject<string[]>([]);\n private changedIconSetConfiguration: IconSet | undefined;\n\n constructor(\n private iconSetConfigurationService: IconSetConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n iconSetChangedService: IconSetChangedService,\n private elementRegistryService: ElementRegistryService,\n private snackbar: MatSnackBar,\n ) {\n this.iconSetConfigurationTypes = new BehaviorSubject(\n this.iconSetConfigurationService.getCurrentConfigurationNamesWithoutPrefix(),\n );\n\n this.selectedWorkobjects$.next(\n this.iconSetConfigurationTypes.value.workObjects,\n );\n this.selectedActors$.next(this.iconSetConfigurationTypes.value.actors);\n\n iconDictionaryService\n .getAllIconDictionary()\n .keysArray()\n .forEach((iconName) => {\n this.addIconToAllIconList(iconName);\n });\n\n iconSetChangedService.iconConfigrationChanged().subscribe((config) => {\n this.importConfiguration(config);\n });\n\n const storedIconSetConfiguration =\n this.iconSetConfigurationService.getStoredIconSetConfiguration();\n if (storedIconSetConfiguration) {\n this.importConfiguration(storedIconSetConfiguration, false);\n }\n }\n\n importConfiguration(customConfig: IconSet, saveIconSet = true): void {\n const actorKeys = customConfig.actors.keysArray();\n const workObjectKeys = customConfig.workObjects.keysArray();\n const usedIcons = this.elementRegistryService.getUsedIcons();\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 this.selectedActors$.value.forEach((iconName) => {\n if (\n !actorKeys.includes(iconName) &&\n !usedIcons.actors.includes(iconName)\n ) {\n this.deselectActor(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 this.selectedWorkobjects$.value.forEach((iconName) => {\n if (\n !workObjectKeys.includes(iconName) &&\n !usedIcons.workobjects.includes(iconName)\n ) {\n this.deselectWorkobject(iconName);\n }\n });\n if (saveIconSet) {\n this.saveIconSet(usedIcons, true);\n }\n }\n\n /** Getter & Setter **/\n getIconSetConfiguration(): BehaviorSubject<CustomIconSetConfiguration> {\n return this.iconSetConfigurationTypes;\n }\n\n getIconForName(iconName: string): BehaviorSubject<IconListItem> {\n return this.allIconListItems.get(iconName);\n }\n\n isIconActor(iconName: string): boolean {\n return (\n this.iconSetConfigurationTypes.value.actors.filter(\n (actor: string) => actor === iconName,\n ).length > 0\n );\n }\n\n isIconWorkObject(iconName: string): boolean {\n return (\n this.iconSetConfigurationTypes.value.workObjects.filter(\n (workObject: string) => workObject === iconName,\n ).length > 0\n );\n }\n\n changeName(iconSetName: string): void {\n this.iconSetConfigurationService.setIconSetName(iconSetName);\n const changedIconSet = this.iconSetConfigurationTypes.value;\n changedIconSet.name = iconSetName;\n this.iconSetConfigurationTypes.next(changedIconSet);\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.iconSetConfigurationTypes.value;\n if (!value.actors.includes(actor)) {\n value.actors.push(actor);\n this.iconSetConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n }\n\n selectWorkObject(workObject: string): void {\n const value = this.iconSetConfigurationTypes.value;\n if (!value.workObjects.includes(workObject)) {\n value.workObjects.push(workObject);\n this.iconSetConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n }\n\n deselectActor(actor: string): void {\n if (this.iconSetConfigurationTypes) {\n this.iconSetConfigurationTypes.next({\n name: this.iconSetConfigurationTypes.value.name,\n actors: this.iconSetConfigurationTypes.value.actors.filter(\n (a: string) => !a.includes(actor),\n ),\n workObjects: this.iconSetConfigurationTypes.value.workObjects,\n });\n }\n this.updateActorSubject();\n }\n\n deselectWorkobject(workobject: string): void {\n if (this.iconSetConfigurationTypes) {\n this.iconSetConfigurationTypes.next({\n name: this.iconSetConfigurationTypes.value.name,\n actors: this.iconSetConfigurationTypes.value.actors,\n workObjects: this.iconSetConfigurationTypes.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.iconSetConfigurationTypes.value;\n value.workObjects = sortedList;\n this.iconSetConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n\n setSelectedActors(sortedList: string[]): void {\n const value = this.iconSetConfigurationTypes.value;\n value.actors = sortedList;\n this.iconSetConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n\n private updateActorSubject(): void {\n this.selectedActors$.next(this.iconSetConfigurationTypes.value.actors);\n this.configurationHasChanged = true;\n }\n\n private updateWorkObjectSubject(): void {\n this.selectedWorkobjects$.next(\n this.iconSetConfigurationTypes.value.workObjects,\n );\n this.configurationHasChanged = true;\n }\n\n /** Revert Icon Set **/\n resetIconSet(): void {\n const defaultConfig =\n this.iconSetConfigurationService.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.iconSetConfigurationTypes.next({\n name: defaultConfig.name,\n actors: defaultConfig.actors.keysArray(),\n workObjects: defaultConfig.workObjects.keysArray(),\n } as CustomIconSetConfiguration);\n\n this.updateAllIconBehaviourSubjects();\n }\n\n cancel(): void {\n this.iconSetConfigurationTypes.next(\n this.iconSetConfigurationService.getCurrentConfigurationNamesWithoutPrefix(),\n );\n this.updateAllIconBehaviourSubjects();\n this.resetToInitialConfiguration();\n }\n\n private resetToInitialConfiguration(): void {\n this.updateActorSubject();\n this.updateWorkObjectSubject();\n }\n\n /** Persist Icon Set **/\n saveIconSet(usedIcons: UsedIconList, imported = false): void {\n const changedActors: string[] = [];\n const changedWorkobjects: string[] = [];\n if (this.configurationHasChanged) {\n const changedIconSet = this.createIconSetConfiguration();\n\n const configurationActors = changedIconSet.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 = changedIconSet.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.changedIconSetConfiguration = changedIconSet;\n\n this.updateIcons(changedIconSet);\n\n this.iconSetConfigurationService.setStoredIconSetConfiguration(\n this.changedIconSetConfiguration,\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_LONGER,\n panelClass: SNACKBAR_ERROR,\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 work objects and cannot be changed: ${workobjects}`,\n undefined,\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_ERROR,\n },\n );\n }\n }\n }\n\n getAndClearSavedConfiguration(): IconSet | undefined {\n const temp = this.changedIconSetConfiguration;\n this.changedIconSetConfiguration = undefined;\n\n return temp;\n }\n\n private createIconSetConfiguration(): IconSet {\n const actors = new Dictionary();\n const workObjects = new Dictionary();\n\n this.iconSetConfigurationTypes.value.actors.forEach((name: string) => {\n actors.add(this.iconDictionaryService.getIconSource(name), name);\n });\n this.iconSetConfigurationTypes.value.workObjects.forEach((name: string) => {\n workObjects.add(this.iconDictionaryService.getIconSource(name), name);\n });\n\n return {\n name: this.iconSetConfigurationTypes.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.getDataUrlForIcon(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.getDataUrlForIcon(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 customIconSetConfiguration = this.iconSetConfigurationTypes.value;\n this.allIconListItems.keysArray().forEach((iconName) => {\n if (customIconSetConfiguration.actors.includes(iconName)) {\n this.updateIcon(true, false, iconName);\n } else if (customIconSetConfiguration.workObjects.includes(iconName)) {\n this.updateIcon(false, true, iconName);\n } else {\n this.updateIcon(false, false, iconName);\n }\n });\n }\n\n private getDataUrlForIcon(iconName: string): string {\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(changedIconSet: IconSet) {\n this.allIconListItems\n .keysArray()\n .forEach((item) => this.setAsUnassigned(item, this.isIconActor(item)));\n changedIconSet.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 changedIconSet.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 { Directive, HostBinding, HostListener } from '@angular/core';\nimport { ImportDomainStoryService } from '../services/import-domain-story.service';\nimport {\n SNACKBAR_DURATION_LONG,\n SNACKBAR_ERROR,\n} from '../../../domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { DirtyFlagService } from '../../../domain/services/dirty-flag.service';\n\n@Directive({\n standalone: true,\n selector: '[appDrag]',\n})\nexport class DragDirective {\n @HostBinding('style.background') private background = '';\n\n constructor(\n private importDomainStoryService: ImportDomainStoryService,\n private snackbar: MatSnackBar,\n private dirtyFlagService: DirtyFlagService,\n ) {}\n\n @HostListener('dragover', ['$event']) public onDragOver(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#999';\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '';\n }\n\n @HostListener('drop', ['$event']) public onDrop(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '';\n\n if (evt.dataTransfer?.files[0]) {\n if (this.dirtyFlagService.dirty) {\n this.importDomainStoryService.openUnsavedChangesReminderDialog(() =>\n this.importDomainStoryService.performDropImport(\n evt.dataTransfer!.files[0],\n ),\n );\n } else {\n this.importDomainStoryService.performDropImport(\n evt.dataTransfer.files[0],\n );\n }\n } else {\n this.snackbar.open('Nothing to import', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n }\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n selector: 'app-import-dialog',\n templateUrl: './import-dialog.component.html',\n styleUrls: ['./import-dialog.component.scss'],\n})\nexport class ImportDialogComponent implements OnInit {\n fn: any;\n fileUrl: BehaviorSubject<string>;\n\n constructor(\n private dialogRef: MatDialogRef<ImportDialogComponent>,\n @Inject(MAT_DIALOG_DATA) data: () => {},\n ) {\n this.fileUrl = new BehaviorSubject<string>('');\n this.fn = data;\n }\n\n ngOnInit(): void {}\n\n doImport(): void {\n this.fn(this.fileUrl.value);\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n updateUrl($event: Event) {\n // @ts-ignore\n this.fileUrl.next($event.target.value);\n }\n}\n","<mat-dialog-content>\n <label for=\"urlInput\">\n <h2>Import Domain Story</h2>\n </label>\n <mat-form-field class=\"form-width\" color=\"accent\">\n <mat-label>URL</mat-label>\n <input\n matInput\n class=\"dense-8\"\n type=\"url\"\n id=\"urlInput\"\n subscriptSizing=\"dynamic\"\n [value]=\"fileUrl | async\"\n (input)=\"updateUrl($event)\"\n />\n </mat-form-field>\n</mat-dialog-content>\n<mat-dialog-actions>\n <br />\n <div>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"doImport()\"\n [disabled]=\"!fileUrl.value\"\n >\n Import\n </button>\n </div>\n</mat-dialog-actions>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ImportDialogComponent } from './import-dialog/import-dialog.component';\n\n@NgModule({\n declarations: [ImportDialogComponent],\n exports: [ImportDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class ImportModule {}\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\nimport { IconDictionaryService } from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\nimport { ImportRepairService } from 'src/app/tools/import/services/import-repair.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { RendererService } from 'src/app/tools/modeler/services/renderer.service';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_DURATION_LONG,\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n SNACKBAR_SUCCESS,\n} from '../../../domain/entities/constants';\nimport { IconSetConfigurationService } from '../../icon-set-config/services/icon-set-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { IconSetChangedService } from '../../icon-set-config/services/icon-set-customization.service';\nimport { ModelerService } from '../../modeler/services/modeler.service';\nimport { ImportDialogComponent } from '../presentation/import-dialog/import-dialog.component';\nimport { UnsavedChangesReminderComponent } from '../../unsavedChangesReminder/presentation/unsavedChangesReminder-dialog/unsaved-changes-reminder/unsaved-changes-reminder.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImportDomainStoryService\n implements OnDestroy, IconSetChangedService\n{\n titleSubscription: Subscription;\n descriptionSubscription: Subscription;\n\n title = INITIAL_TITLE;\n description = INITIAL_DESCRIPTION;\n private importedConfiguration: IconSet | null = null;\n\n private importedConfigurationEmitter = new EventEmitter<IconSet>();\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 iconSetConfigurationService: IconSetConfigurationService,\n private modelerService: ModelerService,\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 iconConfigrationChanged(): Observable<IconSet> {\n return this.importedConfigurationEmitter.asObservable();\n }\n\n getConfiguration(): IconSet {\n const config: IconSet = {\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 performImport(): void {\n // @ts-ignore\n const file = document.getElementById('import').files[0];\n this.import(file, file.name);\n this.modelerService.commandStackChanged();\n }\n\n performDropImport(file: File): void {\n if (this.isSupportedFileEnding(file.name)) {\n this.import(file, file.name);\n } else {\n this.snackbar.open('File type not supported', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n }\n this.modelerService.commandStackChanged();\n }\n\n importNotDirtyFromUrl(fileUrl: string, isDirty: boolean) {\n if (isDirty) {\n this.openUnsavedChangesReminderDialog(() => this.importFromUrl(fileUrl));\n } else {\n this.importFromUrl(fileUrl);\n }\n }\n\n importFromUrl(fileUrl: string): void {\n if (!fileUrl.startsWith('http')) {\n this.snackbar.open('Url not valid', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n return;\n }\n\n fileUrl = this.convertToDownloadableUrl(fileUrl);\n\n fetch(fileUrl)\n .then((response) => {\n return response.blob();\n })\n .then((blob) => {\n const string = fileUrl.split('/');\n const filename = string[string.length - 1]\n .replace(/%20/g, ' ')\n .replace(/(\\.egn\\.svg).*/, '$1');\n\n if (!filename) {\n throw new Error('Unable to extract filename from URL');\n }\n\n if (this.isSupportedFileEnding(filename)) {\n this.import(blob, filename);\n } else {\n this.snackbar.open('File type not supported', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n }\n this.modelerService.commandStackChanged();\n })\n .catch(() =>\n this.snackbar.open(\n 'Request blocked by server (CORS error)',\n undefined,\n {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n },\n ),\n );\n }\n\n private convertToDownloadableUrl(fileUrl: string): string {\n // Convert GitHub URLs to raw content\n const githubPattern = /https:\\/\\/github\\.com\\/(.+)\\/(blob|blame)\\/(.+)/;\n if (githubPattern.test(fileUrl)) {\n fileUrl = fileUrl.replace(\n githubPattern,\n 'https://raw.githubusercontent.com/$1/$3',\n );\n }\n\n //Convert Dropbox URLs to dl content\n const dropboxPattern = /https:\\/\\/www\\.dropbox\\.com\\/(.+)/;\n if (dropboxPattern.test(fileUrl)) {\n fileUrl = fileUrl.replace(dropboxPattern, 'https://dl.dropbox.com/$1');\n }\n\n return fileUrl;\n }\n\n private isSupportedFileEnding(filename: string) {\n let isSupported = false;\n\n const dstSvgPattern = /.*(.dst)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n\n if (filename != null) {\n isSupported =\n filename.endsWith('.dst') ||\n filename.endsWith('.egn') ||\n filename.match(dstSvgPattern) != null ||\n filename.match(egnSvgPattern) != null;\n }\n\n return isSupported;\n }\n\n openImportFromUrlDialog(isDirty: boolean): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = (fileUrl: string) =>\n this.importNotDirtyFromUrl(fileUrl, isDirty);\n this.dialogService.openDialog(ImportDialogComponent, config);\n }\n\n openUnsavedChangesReminderDialog(fn: Function): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = fn;\n this.dialogService.openDialog(UnsavedChangesReminderComponent, config);\n }\n\n import(input: Blob, filename: string): void {\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const isSVG = filename.endsWith('.svg');\n let isEGN = filename.endsWith('.egn');\n\n if (isSVG) {\n isEGN = filename.match(egnSvgPattern) != null;\n }\n\n try {\n const fileReader = new FileReader();\n\n const titleText = this.restoreTitleFromFileName(filename, isSVG);\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, isEGN);\n }\n };\n fileReader.readAsText(input);\n this.importSuccessful();\n } catch (error) {\n this.importFailed();\n }\n }\n\n private fileReaderFunction(\n text: string | ArrayBuffer | null,\n isSvgFile: boolean,\n isEgnFormat: boolean,\n ): void {\n let contentAsJson;\n if (typeof text === 'string') {\n if (isSvgFile) {\n contentAsJson = this.extractJsonFromSvgComment(text);\n } else {\n contentAsJson = text;\n }\n\n let elements: any[];\n let iconSetConfig: IconSet;\n let iconSetFromFile: {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n\n let storyAndIconSet = this.extractStoryAndIconSet(contentAsJson);\n if (storyAndIconSet == null) {\n return;\n }\n\n // current implementation\n if (storyAndIconSet.domain) {\n iconSetFromFile = isEgnFormat\n ? storyAndIconSet.domain\n : JSON.parse(storyAndIconSet.domain);\n iconSetConfig =\n this.iconSetConfigurationService.createIconSetConfiguration(\n iconSetFromFile,\n );\n elements = isEgnFormat\n ? storyAndIconSet.dst\n : JSON.parse(storyAndIconSet.dst);\n } else {\n // legacy implementation\n if (storyAndIconSet.config) {\n iconSetFromFile = JSON.parse(storyAndIconSet.config);\n iconSetConfig =\n this.iconSetConfigurationService.createIconSetConfiguration(\n iconSetFromFile,\n );\n elements = JSON.parse(storyAndIconSet.dst);\n } else {\n // even older legacy implementation (prior to configurable icon set):\n elements = JSON.parse(contentAsJson);\n iconSetConfig =\n this.iconSetConfigurationService.createMinimalConfigurationWithDefaultIcons();\n }\n }\n\n this.importRepairService.removeWhitespacesFromIcons(elements);\n this.importRepairService.removeUnnecessaryBpmnProperties(elements);\n\n const configChanged = this.checkConfigForChanges(iconSetConfig);\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 tag 'version',\n // then there exists another tag 'info' for the description\n if (importVersionNumber.version) {\n lastElement = elements.pop();\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();\n }\n\n this.titleService.updateTitleAndDescription(\n this.title,\n lastElement.info,\n false,\n );\n\n this.updateIconRegistries(elements, iconSetConfig);\n this.rendererService.importStory(elements, configChanged, iconSetConfig);\n }\n }\n\n private importSuccessful() {\n this.snackbar.open('Import successful', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n });\n }\n\n private importFailed() {\n this.snackbar.open('Import failed', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\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 extractStoryAndIconSet(dstText: string) {\n let dstAndConfig = null;\n try {\n dstAndConfig = JSON.parse(dstText);\n } catch (e) {\n this.showBrokenImportDialog();\n }\n return dstAndConfig;\n }\n\n private extractJsonFromSvgComment(xmlText: string): string {\n xmlText = xmlText.substring(xmlText.indexOf('<DST>'));\n while (xmlText.includes('<!--') || xmlText.includes('-->')) {\n xmlText = xmlText.replace('<!--', '').replace('-->', '');\n }\n xmlText = xmlText.replace('<DST>', '');\n xmlText = xmlText.replace('</DST>', '');\n return xmlText;\n }\n\n checkConfigForChanges(iconSetConfiguration: IconSet): boolean {\n const newActorKeys = iconSetConfiguration.actors.keysArray();\n const newWorkObjectKeys = iconSetConfiguration.workObjects.keysArray();\n\n const currentActorKeys =\n this.iconDictionaryService.getNamesOfIconsAssignedAs(ElementTypes.ACTOR);\n const currentWorkobjectKeys =\n this.iconDictionaryService.getNamesOfIconsAssignedAs(\n ElementTypes.WORKOBJECT,\n );\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: IconSet,\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 message = `Your domain story was created with Egon version ${version}. The file format has since changed.\n Your Domain Story was converted to the new format. Please check if it is complete.`;\n\n this.snackbar.open(message, undefined, {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n });\n }\n\n private setImportedConfigurationAndEmit(config: IconSet) {\n this.importedConfiguration = config;\n this.importedConfigurationEmitter.emit(config);\n }\n\n private showBrokenImportDialog() {\n const message = `Error during import: The imported domain story is not complete. Please check if there are elements missing from the canvas.`;\n\n this.snackbar.open(message, undefined, {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_ERROR,\n });\n }\n\n private restoreTitleFromFileName(filename: string, isSVG: boolean): 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 filenameWithoutDateSuffix = filenameWithoutDateSuffix\n .replace(svgSuffix, '')\n .replace(dstSuffix, '')\n .replace(egnSuffix, '');\n title = filenameWithoutDateSuffix;\n return title;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { ActivityBusinessObject } from '../../../domain/entities/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 // Early versions of Egon allowed Whitespaces in Icon names which are now not supported anymore.\n // To find the right icon in the dictionary, they need to be replaced.\n removeWhitespacesFromIcons(elements: BusinessObject[]) {\n elements.forEach((bo) => {\n if (bo.type) {\n bo.type = bo.type.replace(/ /g, '-');\n }\n });\n }\n\n removeUnnecessaryBpmnProperties(elements: BusinessObject[]) {\n elements.forEach((bo) => {\n // @ts-ignore\n if (bo.$type) {\n // @ts-ignore\n bo.$type = undefined;\n }\n // @ts-ignore\n if (bo.$descriptor) {\n // @ts-ignore\n bo.$descriptor = undefined;\n }\n // @ts-ignore\n if (bo.di) {\n // @ts-ignore\n bo.di = undefined;\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<LabelDictionaryDialogComponent>,\n ) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","<mat-dialog-content>\n <h2 class=\"sticky-top\">Label Dictionary</h2>\n <app-label-dictionary (closeEmitter)=\"close()\"></app-label-dictionary>\n</mat-dialog-content>\n","import { NgModule } from '@angular/core';\nimport { LabelDictionaryComponent } from './label-dictionary/label-dictionary.component';\nimport { LabelDictionaryDialogComponent } from './label-dictionary-dialog/label-dictionary-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\n\n@NgModule({\n declarations: [LabelDictionaryComponent, LabelDictionaryDialogComponent],\n exports: [LabelDictionaryComponent, LabelDictionaryDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class LabelDictionaryModule {}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { WorkObjectLabelEntry } from '../../domain/workObjectLabelEntry';\nimport { LabelEntry } from '../../domain/labelEntry';\nimport { LabelDictionaryService } from '../../services/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<WorkObjectLabelEntry[]>;\n activityEntriesSubject: BehaviorSubject<LabelEntry[]>;\n\n workObjectEntries: WorkObjectLabelEntry[];\n activityEntries: LabelEntry[];\n\n @Output()\n closeEmitter: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private labelDictionaryService: LabelDictionaryService,\n private cd: ChangeDetectorRef,\n ) {\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 this.cd.detectChanges();\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","<div class=\"list-content\">\n <div>\n <h3 class=\"listTitle\">Work Objects</h3>\n <mat-list>\n @for (\n workobjectEntry of workobjectEntriesSubject | async;\n track workobjectEntry\n ) {\n <mat-list-item>\n <mat-form-field class=\"inputText dense-8\" color=\"accent\">\n <input\n matInput\n class=\"inputText\"\n [value]=\"workobjectEntry.name\"\n (change)=\"updateWorkobjectEntry($event, workobjectEntry)\"\n />\n </mat-form-field>\n </mat-list-item>\n }\n </mat-list>\n </div>\n <div>\n <h3 class=\"listTitle\">Activities</h3>\n <mat-list>\n @for (\n activityEntry of activityEntriesSubject | async;\n track activityEntry\n ) {\n <mat-list-item>\n <mat-form-field class=\"inputText dense-8\" color=\"accent\">\n <textarea\n matInput\n class=\"inputText activity\"\n [value]=\"activityEntry.name\"\n (change)=\"updateActivityEntry($event, activityEntry)\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"3\"\n (keydown.enter)=\"preventDefault($event)\"\n (keyup.enter)=\"save()\"\n (keyup.escape)=\"close()\"\n ></textarea>\n </mat-form-field>\n </mat-list-item>\n }\n </mat-list>\n </div>\n</div>\n<mat-dialog-actions class=\"sticky-bottom\">\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\">Save</button>\n</mat-dialog-actions>\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { MassNamingService } from 'src/app/tools/label-dictionary/services/mass-naming.service';\nimport { IconDictionaryService } from '../../icon-set-config/services/icon-dictionary.service';\nimport { WorkObjectLabelEntry } from '../domain/workObjectLabelEntry';\nimport { LabelEntry } from '../domain/labelEntry';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { LabelDictionaryDialogComponent } from '../presentation/label-dictionary-dialog/label-dictionary-dialog.component';\nimport {\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CanvasObject } from '../../../domain/entities/canvasObject';\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 private dialogService: DialogService,\n private snackbar: MatSnackBar,\n ) {}\n\n openLabelDictionary() {\n const isActivityWithLabel = (element: CanvasObject) =>\n element.type.includes(ElementTypes.ACTIVITY) &&\n element.businessObject.name;\n const isWorkObjectWithLabel = (element: CanvasObject) =>\n element.type.includes(ElementTypes.WORKOBJECT) &&\n element.businessObject.name;\n\n const hasAtLeastOneLabel = this.elementRegistryService\n .getAllCanvasObjects()\n .some(\n (element) =>\n isActivityWithLabel(element) || isWorkObjectWithLabel(element),\n );\n if (hasAtLeastOneLabel) {\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 activities or work objects with labels on the canvas',\n undefined,\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n },\n );\n }\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/domain/services/element-registry.service';\nimport { CanvasObject } from 'src/app/domain/entities/canvasObject';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { CommandStackService } from '../../../domain/services/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 { FormControl, FormGroup, Validators } from '@angular/forms';\n\nexport interface ActivityDialogForm {\n activityLabel: FormControl<string>;\n activityNumber: FormControl<number | null>;\n multipleNumbers: FormControl<boolean>;\n}\n\nexport namespace ActivityDialogForm {\n export function create(\n activityLabel: string,\n activityNumber: number | null,\n numberIsAllowedMultipleTimes: boolean,\n ): FormGroup<ActivityDialogForm> {\n return new FormGroup<ActivityDialogForm>({\n activityLabel: new FormControl<string>(activityLabel, {\n nonNullable: true,\n }),\n activityNumber: new FormControl<number | null>(activityNumber, [\n Validators.required,\n ]),\n multipleNumbers: new FormControl<boolean>(numberIsAllowedMultipleTimes, {\n nonNullable: true,\n }),\n });\n }\n}\n","import { ActivityCanvasObject } from '../../../domain/entities/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","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormGroup } from '@angular/forms';\nimport { ActivityDialogData } from 'src/app/tools/modeler/domain/activityDialogData';\nimport { ActivityCanvasObject } from '../../../../domain/entities/activityCanvasObject';\nimport { ActivityDialogForm } from '../../domain/activity-dialog-form';\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: FormGroup<ActivityDialogForm>;\n activityLabel: string;\n activityNumber: number | null;\n numberIsAllowedMultipleTimes: boolean;\n showNumberFields: boolean;\n activity: ActivityCanvasObject;\n\n saveFN: any;\n\n constructor(\n private dialogRef: MatDialogRef<ActivityDialogComponent>,\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 ?? null;\n this.showNumberFields = data.showNumberFields;\n\n this.saveFN = data.saveFN;\n\n this.form = ActivityDialogForm.create(\n this.activityLabel,\n this.activityNumber,\n this.numberIsAllowedMultipleTimes,\n );\n\n this.form.controls.activityNumber.valueChanges.subscribe(\n (activityNumber) => {\n if (activityNumber !== null) {\n if (activityNumber < 1) {\n this.form.controls.activityNumber.setValue(1);\n }\n }\n },\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","<mat-dialog-content>\n <h2>Edit Activity</h2>\n <form [formGroup]=\"form\">\n <div [hidden]=\"!showNumberFields\">\n <mat-form-field color=\"accent\">\n <mat-label>Number</mat-label>\n <input matInput type=\"number\" formControlName=\"activityNumber\" />\n </mat-form-field>\n <input\n type=\"checkbox\"\n formControlName=\"multipleNumbers\"\n (change)=\"onSubmit()\"\n />\n multiple\n </div>\n <mat-form-field class=\"fullWidth\" color=\"accent\">\n <mat-label>Label</mat-label>\n <textarea\n matInput\n type=\"text\"\n formControlName=\"activityLabel\"\n autofocus\n cdkFocusInitial\n (keydown.enter)=\"preventDefault($event)\"\n (keyup.enter)=\"save()\"\n (keyup.escape)=\"close()\"\n ></textarea>\n </mat-form-field>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\">Save</button>\n</mat-dialog-actions>\n","import { NgModule } from '@angular/core';\nimport { ActivityDialogComponent } from './activity-dialog/activity-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [ActivityDialogComponent],\n exports: [ActivityDialogComponent],\n imports: [CommonModule, MaterialModule, ReactiveFormsModule],\n})\nexport class ModelerModule {}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from '../../../domain/services/element-registry.service';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ActivityDialogData } from '../domain/activityDialogData';\nimport { ActivityDialogComponent } from '../presentation/activity-dialog/activity-dialog.component';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { TitleService } from '../../title/services/title.service';\nimport { ActivityCanvasObject } from '../../../domain/entities/activityCanvasObject';\nimport { positionsMatch } from '../../../utils/mathExtensions';\nimport { CommandStackService } from '../../../domain/services/command-stack.service';\n\nimport { toggleStashUse } from 'src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider';\nimport {\n getMultipleNumberRegistry,\n getNumberRegistry,\n setNumberIsMultiple,\n updateExistingNumbersAtEditing,\n} from 'src/app/tools/modeler/diagram-js/features/numbering/numbering';\nimport activityUpdateHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/activityUpdateHandlers';\n\nimport massRenameHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/massRenameHandler';\nimport elementUpdateHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/elementUpdateHandler';\nimport headlineAndDescriptionUpdateHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/headlineAndDescriptionUpdateHandler';\nimport { ReplayService } from '../../replay/services/replay.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializerService {\n constructor(\n private elementRegistryService: ElementRegistryService,\n private replayService: ReplayService,\n private dialogService: DialogService,\n private commandStackService: CommandStackService,\n private titleService: TitleService,\n ) {}\n\n propagateDomainStoryModelerClassesToServices(\n commandStack: any,\n elementRegistry: any,\n ): void {\n this.commandStackService.setCommandStack(commandStack);\n this.elementRegistryService.setElementRegistry(elementRegistry);\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.replayService.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.replayService.getReplayOn()) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n );\n\n let pasteColor: string[] = [];\n let pasteText: string[] = [];\n let pasteHeight: number[] = [];\n eventBus.on('copyPaste.pasteElement', 10000, (e: any) => {\n pasteColor.push(e.descriptor.oldBusinessObject.pickedColor);\n if (\n e.descriptor.oldBusinessObject.type.includes(\n ElementTypes.TEXTANNOTATION,\n )\n ) {\n pasteText.push(e.descriptor.oldBusinessObject.text ?? '');\n pasteHeight.push(e.descriptor.oldBusinessObject.height);\n }\n });\n\n eventBus.on('create.end', (e: any) => {\n if (!pasteColor) {\n return;\n }\n for (let elementsKey in e.elements) {\n const element = e.elements[elementsKey];\n if (element.businessObject.type.includes(ElementTypes.TEXTANNOTATION)) {\n element.businessObject.text = pasteText[0];\n element.businessObject.number = pasteHeight[0];\n element.businessObject.height = pasteHeight[0];\n pasteText.shift();\n pasteHeight.shift();\n }\n element.businessObject.pickedColor = pasteColor[parseInt(elementsKey)];\n eventBus.fire('element.changed', { element });\n }\n pasteColor = [];\n pasteText = [];\n pasteHeight = [];\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) =>\n 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/tools/modeler/diagram-js';\nimport { InitializerService } from './initializer.service';\nimport { ElementRegistryService } from '../../../domain/services/element-registry.service';\nimport { IconDictionaryService } from '../../icon-set-config/services/icon-dictionary.service';\nimport { IconSetConfigurationService } from '../../icon-set-config/services/icon-set-configuration.service';\nimport { BusinessObject } from '../../../domain/entities/businessObject';\nimport { ActivityBusinessObject } from '../../../domain/entities/activityBusinessObject';\nimport { updateMultipleNumberRegistry } from 'src/app/tools/modeler/diagram-js/features/numbering/numbering';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport {\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_INFO,\n VERSION_KEY,\n} from '../../../domain/entities/constants';\nimport { environment } from '../../../../environments/environment';\nimport { MatSnackBar } from '@angular/material/snack-bar';\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 iconSetConfigurationService: IconSetConfigurationService,\n private storageService: StorageService,\n private snackbar: MatSnackBar,\n ) {}\n\n private modeler: any;\n private elementRegistry: any;\n private commandStack: any;\n private eventBus: any;\n\n private encoded: string | undefined;\n postInit(): void {\n this.checkCurrentVersion();\n\n const storedIconSetConfiguration =\n this.iconSetConfigurationService.getStoredIconSetConfiguration();\n if (storedIconSetConfiguration) {\n this.iconDictionaryService.setCustomConfiguration(\n storedIconSetConfiguration,\n );\n this.iconSetConfigurationService.loadConfiguration(\n storedIconSetConfiguration,\n );\n }\n this.modeler = new DomainStoryModeler({\n container: '#canvas',\n keyboard: {\n bind: true,\n },\n });\n\n if (this.modeler.get) {\n this.elementRegistry = this.modeler.get('elementRegistry');\n this.eventBus = this.modeler.get('eventBus');\n this.commandStack = this.modeler.get('commandStack');\n }\n\n this.initializerService.initializeDomainStoryModelerEventHandlers(\n this.commandStack,\n this.eventBus,\n );\n this.initializerService.propagateDomainStoryModelerClassesToServices(\n this.commandStack,\n this.elementRegistry,\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 // expose modeler to window for debugging purposes\n assign(window, { egon: this.modeler });\n\n this.startDebounce();\n }\n\n private checkCurrentVersion() {\n const version = this.storageService.get(VERSION_KEY);\n if (version === null) {\n this.storageService.set(VERSION_KEY, environment.version);\n }\n\n if (version !== null && version !== environment.version) {\n this.snackbar\n .open(\n \"Egon was updated. Clear your browser's local storage.\",\n 'More information',\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n },\n )\n .onAction()\n .subscribe(() => {\n window.open('https://egon.io/howto#launching-egon');\n });\n }\n }\n\n restart(\n iconSetConfiguration?: IconSet,\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 (!iconSetConfiguration) {\n iconSetConfiguration =\n this.iconSetConfigurationService.getStoredIconSetConfiguration();\n }\n if (iconSetConfiguration) {\n this.iconSetConfigurationService.setStoredIconSetConfiguration(\n iconSetConfiguration,\n );\n this.iconDictionaryService.setCustomConfiguration(iconSetConfiguration);\n this.iconSetConfigurationService.loadConfiguration(iconSetConfiguration);\n }\n\n this.elementRegistryService.clear();\n this.modeler?.destroy();\n this.postInit();\n updateMultipleNumberRegistry(\n currentStory\n .filter((bo) => bo.type === 'domainStory:activity')\n .map((bo) => <ActivityBusinessObject>bo)\n .filter((bo) => bo.number !== null),\n );\n if (currentStory && this.modeler.get) {\n this.modeler.importBusinessObjects(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<any>;\n }, timeout);\n };\n }\n\n getEncoded(): string {\n return this.encoded ? this.encoded : '';\n }\n\n async saveSVG(modeler: any): Promise<any> {\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/tools/modeler/services/modeler.service';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { DirtyFlagService } from 'src/app/domain/services/dirty-flag.service';\nimport { IconSet } from '../../../domain/entities/iconSet';\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().importBusinessObjects(domainStory);\n }\n\n reset(): void {\n this.renderStory([]);\n this.dirtyFlagService.makeClean();\n }\n\n importStory(\n domainStory: BusinessObject[],\n configurationChange: boolean,\n config?: IconSet,\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","export const NUMBER_BACKGROUND_COLOR = 'white';\nexport const NUMBER_COLOR = 'black';\nexport const STROKE_WIDTH = '1.5';\n\nexport const HIGHLIGHT_NUMBER_BACKGROUND_COLOR = '#a4d7e1';\nexport const HIGHLIGHT_NUMBER_COLOR = 'black';\nexport const HIGHLIGHT_STROKE_WIDTH = '4';\n\nexport const CONNECTION_PATH_DOM_SELECTOR = 'path';\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { StorySentence } from 'src/app/tools/replay/domain/storySentence';\nimport {\n HIGHLIGHT_NUMBER_BACKGROUND_COLOR,\n HIGHLIGHT_NUMBER_COLOR,\n HIGHLIGHT_STROKE_WIDTH,\n NUMBER_BACKGROUND_COLOR,\n NUMBER_COLOR,\n STROKE_WIDTH,\n CONNECTION_PATH_DOM_SELECTOR,\n} from '../domain/replayConstants';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Manipulates the DOM during replay to only show the elements of the current Sentence\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 showSentence(\n replaySentence: StorySentence,\n previousSentence?: StorySentence,\n ): void {\n this.removeHighlights();\n const notShown = this.getAllNotShown(replaySentence.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.highlightSentence(\n previousSentence\n ? replaySentence.objects.filter(\n (o) => !previousSentence.objects.includes(o),\n )\n : replaySentence.objects,\n );\n\n replaySentence.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: SVGPathElement): any {\n const numberText =\n activity.parentElement?.getElementsByClassName('djs-labelNumber')[0] ??\n '';\n const circle = (numberText as HTMLElement)?.previousSibling ?? '';\n return {\n numberBackgroundDom: circle,\n numberTextDom: numberText,\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 = querySelector.getElementsByTagName(\n CONNECTION_PATH_DOM_SELECTOR,\n )[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(CONNECTION_PATH_DOM_SELECTOR)[0];\n\n connectionDomObject.style.stroke =\n connection.businessObject.pickedColor || 'black';\n connectionDomObject.style.strokeWidth = '1.5';\n });\n }\n\n private highlightSentence(sentenceObjects: BusinessObject[]): void {\n sentenceObjects\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 = querySelector.getElementsByTagName(\n CONNECTION_PATH_DOM_SELECTOR,\n )[0];\n\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_BACKGROUND_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 notShownElements.push(element.businessObject);\n }\n });\n return notShownElements;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DomManipulationService } from 'src/app/tools/replay/services/dom-manipulation.service';\nimport { StorySentence } from 'src/app/tools/replay/domain/storySentence';\nimport { StoryCreatorService } from './story-creator.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION_LONG,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplayService {\n private story: StorySentence[] = [];\n private currentSentence = new BehaviorSubject<number>(-1);\n private maxSentenceNumber = new BehaviorSubject<number>(0);\n private replayOnSubject = new BehaviorSubject<boolean>(false);\n\n currentSentence$: Observable<number> = this.currentSentence.asObservable();\n maxSentenceNumber$: Observable<number> =\n this.maxSentenceNumber.asObservable();\n replayOn$ = this.replayOnSubject.asObservable();\n\n constructor(\n private domManipulationService: DomManipulationService,\n private storyCreatorService: StoryCreatorService,\n private snackbar: MatSnackBar,\n ) {}\n\n setReplayState(state: boolean): void {\n this.replayOnSubject.next(state);\n }\n\n getReplayOn(): boolean {\n return this.replayOnSubject.value;\n }\n\n isReplayable(): boolean {\n return this.storyCreatorService.traceActivitiesAndCreateStory().length > 0;\n }\n\n initializeReplay(story: StorySentence[]): void {\n this.currentSentence.next(1);\n this.story = story;\n this.maxSentenceNumber.next(this.story.length);\n }\n\n getCurrentSentenceNumber(): number {\n return this.currentSentence.value;\n }\n\n getMaxSentenceNumber(): number {\n return this.maxSentenceNumber.value;\n }\n\n nextSentence(): void {\n if (this.currentSentence.value < this.story.length) {\n this.currentSentence.next(this.currentSentence.value + 1);\n this.showCurrentSentence();\n }\n }\n\n previousSentence(): void {\n if (this.currentSentence.value > 1) {\n this.currentSentence.next(this.currentSentence.value - 1);\n this.showCurrentSentence();\n }\n }\n\n private showCurrentSentence() {\n this.domManipulationService.showSentence(\n this.story[this.currentSentence.value - 1],\n this.currentSentence.value > 1\n ? this.story[this.currentSentence.value - 2]\n : undefined,\n );\n }\n\n startReplay(checkSequenceNumbers = false): void {\n const story = this.storyCreatorService.traceActivitiesAndCreateStory();\n\n if (checkSequenceNumbers) {\n const missingSentences =\n this.storyCreatorService.getMissingSentences(story);\n if (missingSentences.length > 0) {\n const sentence = missingSentences.join(', ');\n this.snackbar.open(\n missingSentences.length === 1\n ? `The Domain Story is not complete. Sentence ${sentence} is missing.`\n : `The Domain Story is not complete. Sentences ${sentence} are missing.`,\n undefined,\n {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n },\n );\n return;\n }\n }\n\n this.initializeReplay(story);\n if (this.story.length > 0) {\n this.setReplayState(true);\n this.domManipulationService.showSentence(\n this.story[this.currentSentence.getValue() - 1],\n );\n } else {\n this.snackbar.open('You need a Domain Story for replay.', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_INFO,\n });\n }\n }\n\n stopReplay(): void {\n this.currentSentence.next(-1);\n this.maxSentenceNumber.next(0);\n this.setReplayState(false);\n this.domManipulationService.showAll();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { ActivityCanvasObject } from '../../../domain/entities/activityCanvasObject';\nimport { BusinessObject } from '../../../domain/entities/businessObject';\nimport { CanvasObject } from '../../../domain/entities/canvasObject';\nimport { ElementRegistryService } from '../../../domain/services/element-registry.service';\nimport { StorySentence } from '../domain/storySentence';\nimport { Dictionary } from '../../../domain/entities/dictionary';\nimport { ActivityBusinessObject } from '../../../domain/entities/activityBusinessObject';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StoryCreatorService {\n constructor(private elementRegistryService: ElementRegistryService) {}\n\n traceActivitiesAndCreateStory(): StorySentence[] {\n const tracedActivityMap = new Dictionary();\n const story: StorySentence[] = [];\n const activities = this.elementRegistryService.getActivitiesFromActors();\n const tracedActivityMapKeys: number[] = [];\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}`) ?? [];\n if (!tracedActivityMapKeys.includes(activityNumber)) {\n tracedActivityMapKeys.push(activityNumber);\n }\n tracedItem.push(activity);\n tracedActivityMap.set(`${activityNumber}`, tracedItem);\n });\n\n let storyIndex = 0;\n tracedActivityMapKeys.forEach((key) => {\n this.createSentence(tracedActivityMap, key, story, storyIndex);\n storyIndex++;\n });\n\n this.addGroupsToLastSentence(story);\n return story;\n }\n\n private createSentence(\n tracedActivityMap: Dictionary,\n tracedActivityMapKey: number,\n story: StorySentence[],\n storyIndex: number,\n ): void {\n let tracedActivity = tracedActivityMap.get(`${tracedActivityMapKey}`) ?? [];\n const sentenceObjects = this.getSentenceObjects(tracedActivity);\n const highlightedElements = sentenceObjects.map((t) => t.id);\n if (storyIndex > 0) {\n story[storyIndex - 1].objects.forEach((object) => {\n if (!sentenceObjects.includes(object)) {\n sentenceObjects.push(object);\n }\n });\n }\n story[storyIndex] = {\n highlightedObjects: highlightedElements,\n objects: sentenceObjects,\n };\n }\n\n getMissingSentences(story: StorySentence[]): number[] {\n // if the story is empty, no sequence number is missing\n if (!story || story.length === 0) {\n return [];\n }\n\n // collect all sequence numbers of the story\n const allActivityNumbersFromActors: number[] = story.map((sentence) => {\n // find all activity numbers of the ActivityBusinessObject\n // and returned the highest one\n const allActivityNumbers = sentence.objects.map((businessObject) => {\n if (businessObject.type.includes('activity')) {\n const activity = businessObject as ActivityBusinessObject;\n return activity.number ?? 0;\n } else {\n return 0;\n }\n });\n return Math.max(...allActivityNumbers);\n });\n\n const highestSequenceNumber: number = Math.max(\n ...allActivityNumbersFromActors,\n );\n\n const missingSentences: number[] = [];\n // with a high sequence number like 1_000_000, this could be led\n // to long calculation or completely stop from Egon.io\n for (let i = 1; i <= highestSequenceNumber; i++) {\n if (!allActivityNumbersFromActors.includes(i)) {\n missingSentences.push(i);\n }\n }\n return missingSentences;\n }\n\n private getSentenceObjects(\n tracedActivity: ActivityCanvasObject[],\n ): BusinessObject[] {\n const actorsAndWorkObjects: CanvasObject[] = [];\n const activities = tracedActivity;\n const actorTextAnnotations: CanvasObject[] = [];\n\n tracedActivity.forEach((parallelSentence: ActivityCanvasObject) => {\n const parallelSentenceTargetObjects: CanvasObject[] = [];\n\n if (!actorsAndWorkObjects.includes(parallelSentence.source)) {\n actorsAndWorkObjects.push(parallelSentence.source);\n }\n\n const firstTarget = parallelSentence.target;\n actorsAndWorkObjects.push(firstTarget);\n parallelSentenceTargetObjects.push(firstTarget);\n\n // check the outgoing activities for each target\n for (const checkTarget of parallelSentenceTargetObjects) {\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 (\n activityTarget &&\n !actorsAndWorkObjects.includes(activityTarget)\n ) {\n actorsAndWorkObjects.push(activityTarget);\n parallelSentenceTargetObjects.push(activityTarget);\n }\n });\n }\n }\n });\n actorsAndWorkObjects.forEach((object) => {\n if (object.businessObject.type.includes(ElementTypes.ACTOR)) {\n this.addTextAnnotationsForActorOrGroup(object, actorTextAnnotations);\n }\n });\n\n return actorsAndWorkObjects\n .map((e) => e.businessObject)\n .concat(activities.map((a) => a.businessObject))\n .concat(actorTextAnnotations.map((ta) => ta.businessObject));\n }\n\n private addTextAnnotationsForActorOrGroup(\n object: CanvasObject,\n objectTextAnnotations: CanvasObject[],\n ) {\n object.outgoing?.forEach((connection) => {\n // connections outgoing from actors or groups without number must be connections to text annotations\n if (!connection.businessObject.number) {\n objectTextAnnotations.push(connection);\n objectTextAnnotations.push(connection.target);\n }\n });\n }\n\n private addGroupsToLastSentence(story: StorySentence[]): void {\n const groups = this.elementRegistryService.getAllGroups() as CanvasObject[];\n const annotationsForGroups: CanvasObject[] = [];\n groups.forEach((group) =>\n this.addTextAnnotationsForActorOrGroup(group, annotationsForGroups),\n );\n if (groups.length > 0 && story.length > 0) {\n story[story.length - 1].objects = story[story.length - 1].objects\n .concat(groups.map((g) => g.businessObject))\n .concat(annotationsForGroups.map((a) => a.businessObject));\n }\n }\n}\n","import { FormControl, FormGroup } from '@angular/forms';\n\nexport interface TitleDialogForm {\n title: FormControl<string | null>;\n description: FormControl<string | null>;\n}\n\nexport namespace TitleDialogForm {\n export function create(\n titel: string,\n description: string,\n ): FormGroup<TitleDialogForm> {\n return new FormGroup<TitleDialogForm>({\n title: new FormControl<string | null>(titel),\n description: new FormControl<string | null>(description),\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { FormGroup } from '@angular/forms';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\nimport { TitleDialogForm } from '../../domain/title-dialog-form';\nimport { DirtyFlagService } from '../../../../domain/services/dirty-flag.service';\n\n@Component({\n selector: 'app-header-dialog',\n templateUrl: './title-dialog.component.html',\n styleUrls: ['./title-dialog.component.scss'],\n})\nexport class TitleDialogComponent implements OnInit {\n form!: FormGroup<TitleDialogForm>;\n\n constructor(\n private dialogRef: MatDialogRef<TitleDialogComponent>,\n private titleService: TitleService,\n private dirtyFlagService: DirtyFlagService,\n ) {}\n\n ngOnInit(): void {\n const title = this.titleService.getTitle();\n const description = this.titleService.getDescription();\n\n this.form = TitleDialogForm.create(title, description);\n }\n\n save(): void {\n if (this.form.dirty) {\n this.dirtyFlagService.makeDirty();\n\n this.titleService.updateTitleAndDescription(\n this.form.getRawValue().title,\n this.form.getRawValue().description,\n true,\n );\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","<mat-dialog-content>\n <form [formGroup]=\"form\">\n <mat-form-field class=\"dialogWidth\" color=\"accent\">\n <mat-label>Title</mat-label>\n <input matInput type=\"text\" formControlName=\"title\" />\n </mat-form-field>\n <br />\n <mat-form-field class=\"dialogWidth\" color=\"accent\">\n <mat-label>Description</mat-label>\n <textarea\n maxlength=\"2000\"\n matInput\n class=\"descriptionInput\"\n formControlName=\"description\"\n (keydown.enter)=\"preventDefault($event)\"\n (keyup.enter)=\"save()\"\n (keyup.escape)=\"close()\"\n ></textarea>\n </mat-form-field>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\">Save</button>\n</mat-dialog-actions>\n","import { NgModule } from '@angular/core';\nimport { TitleDialogComponent } from './title-dialog/title-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [TitleDialogComponent],\n exports: [TitleDialogComponent],\n imports: [CommonModule, MaterialModule, ReactiveFormsModule],\n})\nexport class TitleModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from '../../../../environments/environment';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n} from '../../../domain/entities/constants';\nimport { CommandStackService } from '../../../domain/services/command-stack.service';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { TitleDialogComponent } from '../presentation/title-dialog/title-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TitleService {\n private titleSubject = new BehaviorSubject<string>(INITIAL_TITLE);\n private descriptionSubject = new BehaviorSubject<string>(INITIAL_DESCRIPTION);\n private showDescriptionSubject = new BehaviorSubject<boolean>(true);\n\n title$ = this.titleSubject.asObservable();\n description$ = this.descriptionSubject.asObservable();\n showDescription$ = this.showDescriptionSubject.asObservable();\n\n constructor(\n private commandStackService: CommandStackService,\n private dialogService: DialogService,\n ) {}\n\n openHeaderDialog(): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n this.dialogService.openDialog(TitleDialogComponent, config);\n }\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 getTitle(): string {\n return this.titleSubject.value;\n }\n\n getDescription(): string {\n return this.descriptionSubject.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","import { Component, Inject, OnInit } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogContent,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\n@Component({\n selector: 'app-unsaved-changes-reminder',\n standalone: true,\n imports: [\n AsyncPipe,\n MatButton,\n MatDialogActions,\n MatDialogContent,\n MatFormField,\n MatInput,\n MatLabel,\n ],\n templateUrl: './unsaved-changes-reminder.component.html',\n styleUrl: './unsaved-changes-reminder.component.scss',\n})\nexport class UnsavedChangesReminderComponent implements OnInit {\n fn: any;\n\n constructor(\n private dialogRef: MatDialogRef<UnsavedChangesReminderComponent>,\n @Inject(MAT_DIALOG_DATA) data: () => {},\n ) {\n this.fn = data;\n }\n\n ngOnInit(): void {}\n\n continueAction(): void {\n this.fn();\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","<mat-dialog-content>\n <label>\n <h2>Attention</h2>\n </label>\n\n <p>There are some unsaved changes. Do you want to discard them?</p>\n</mat-dialog-content>\n<mat-dialog-actions>\n <br />\n <div>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"continueAction()\">\n Discard changes\n </button>\n </div>\n</mat-dialog-actions>\n","export function rgbaToHex(rgba: string) {\n if (isValidHex(rgba)) {\n return rgba;\n }\n const [r, g, b, a] = rgba.match(/\\d+(\\.\\d+)?/g)!.map((it) => +it);\n const red = r.toString(16).padStart(2, '0');\n const green = g.toString(16).padStart(2, '0');\n const blue = b.toString(16).padStart(2, '0');\n const alpha = Math.round(a * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${red}${green}${blue}${alpha}`;\n}\n\nconst isValidHex = (hex: string) => /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\nconst getChunksFromString = (st: string, chunkSize: number) =>\n st.match(new RegExp(`.{${chunkSize}}`, 'g')) ?? [];\nconst convertHexUnitTo256 = (hexStr: string) =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\nconst getAlphafloat = (a: number | undefined) => {\n if (typeof a !== 'undefined') {\n return Math.round((a / 255 + Number.EPSILON) * 100) / 100; // Runden auf 2 oder weniger Nachkommastellen\n }\n return 1;\n};\n\nexport const isHexWithAlpha = (hex: string | null | undefined) =>\n hex?.startsWith('#') && (hex?.length === 5 || hex?.length === 9);\n\nexport const hexToRGBA = (hex: string) => {\n if (!isValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n const chunkSize = Math.floor((hex.length - 1) / 3); // 1 falls hex 3-4 Stellen, 2 falls hex 6 oder 8 Stellen\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r, g, b, a] = hexArr.map(convertHexUnitTo256);\n return `rgba(${r},${g},${b},${getAlphafloat(a)})`;\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","'use strict';\n\nexport function sanitizeTextForSVGExport(str: string): string {\n // @ts-ignore Typescript does not realize that replaceAll exists, no idea why not.\n return str.replaceAll('--', '––');\n}\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\n ? sanitizeTextForSVGExport(str.replace(reg, (match) => map[match]))\n : '';\n}\n\nexport function sanitizeIconName(name: string): string {\n if (!name) {\n return '';\n }\n let nameWithoutFileEnding =\n name.lastIndexOf('.') > 0 ? name.substring(0, name.lastIndexOf('.')) : name;\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n '(': '',\n ')': '',\n ' ': '-',\n };\n const reg = /[/\\\\:*?\"<>|() ]/gi;\n return nameWithoutFileEnding.trim().replace(reg, (match) => map[match]);\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { ReplayService } from '../../../../tools/replay/services/replay.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 sentenceDescription$: Observable<string>;\n\n constructor(private replayService: ReplayService) {\n this.sentenceDescription$ = combineLatest([\n this.replayService.currentSentence$,\n this.replayService.maxSentenceNumber$,\n ]).pipe(map(([sentence, count]) => `${sentence}/${count}`));\n }\n\n @Input()\n hasDomainStory = false;\n @Input()\n hasTitle = false;\n @Input()\n isReplaying: boolean | null = false;\n @Input()\n isDirty: boolean | null = false;\n @Input()\n isReplayable = false;\n\n @Output()\n import = new EventEmitter<void>();\n @Output()\n openSettings = new EventEmitter<void>();\n @Output()\n startReplay = new EventEmitter<void>();\n @Output()\n stopReplay = new EventEmitter<void>();\n @Output()\n previousSentence = new EventEmitter<void>();\n @Output()\n nextSentence = new EventEmitter<void>();\n @Output()\n newStory = new EventEmitter<void>();\n @Output()\n showKeyboardShortCuts = new EventEmitter<void>();\n @Output()\n openLabelDictionary = new EventEmitter<void>();\n @Output()\n openDownloadDialog = new EventEmitter<void>();\n @Output()\n openImportFromUrlDialog = new EventEmitter<void>();\n}\n","@if (!isReplaying) {\n <div>\n <button\n [disabled]=\"!isReplayable\"\n [class.disabled]=\"!isReplayable\"\n id=\"buttonStartReplay\"\n class=\"headerButton\"\n title=\"Start replay\"\n (click)=\"startReplay.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n play_arrow\n </span>\n <div class=\"button-label\">Replay</div>\n </button>\n\n <button\n id=\"buttonImport\"\n class=\"headerButton\"\n title=\"Import story from file\"\n onclick=\"document.getElementById('import').click();\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n file_upload\n </span>\n <div class=\"button-label\">Import from file</div>\n </button>\n\n <button\n id=\"buttonUrlImport\"\n class=\"headerButton\"\n title=\"Import story from URL\"\n (click)=\"openImportFromUrlDialog.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n cloud_upload\n </span>\n <div class=\"button-label\">Import from URL</div>\n </button>\n\n <input\n type=\"file\"\n accept=\".dst, .svg, .egn, .svg\"\n style=\"display: none\"\n id=\"import\"\n onclick=\"this.value=null;\"\n (change)=\"import.emit()\"\n />\n <button\n [disabled]=\"!hasDomainStory && !hasTitle\"\n [class.disabled]=\"!hasDomainStory && !hasTitle\"\n class=\"headerButton\"\n [class.dirty]=\"isDirty\"\n id=\"export\"\n title=\"Export story as .egn, .svg or .png file\"\n (click)=\"openDownloadDialog.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n file_download\n </span>\n <div class=\"button-label\">Export</div>\n </button>\n <button\n [disabled]=\"!hasDomainStory\"\n [class.disabled]=\"!hasDomainStory\"\n class=\"headerButton\"\n title=\"Label Dictionary\"\n (click)=\"openLabelDictionary.emit()\"\n >\n <span class=\"material-icons materialIconButton\" title=\"Label Dictionary\">\n spellcheck\n </span>\n <div class=\"button-label\">Dictionary</div>\n </button>\n\n <button\n class=\"headerButton\"\n title=\"Create a new domain story\"\n (click)=\"newStory.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> note_add </span>\n <div class=\"button-label\">New story</div>\n </button>\n\n <button class=\"headerButton\" title=\"Settings\" (click)=\"openSettings.emit()\">\n <span\n class=\"material-icons-outlined materialIconButton\"\n title=\"Change Icons and Settings\"\n >\n settings\n </span>\n <div class=\"button-label\">Settings</div>\n </button>\n\n <button\n class=\"headerButton\"\n title=\"Show keyboard shortcuts\"\n (click)=\"showKeyboardShortCuts.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> keyboard </span>\n <div class=\"button-label\">Shortcuts</div>\n </button>\n </div>\n}\n@if (isReplaying) {\n <div class=\"replaying\">\n <button\n class=\"headerButton\"\n title=\"Previous sentence\"\n (click)=\"previousSentence.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n skip_previous\n </span>\n <div class=\"button-label\">Prev.</div>\n </button>\n <button\n class=\"headerButton\"\n title=\"Next sentence\"\n (click)=\"nextSentence.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n skip_next\n </span>\n <div class=\"button-label\">Next</div>\n </button>\n <button\n class=\"headerButton\"\n title=\"Stop replay\"\n (click)=\"stopReplay.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> stop </span>\n <div class=\"button-label\">Stop</div>\n </button>\n <div class=\"sentences\">Sentence: {{ sentenceDescription$ | async }}</div>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TitleService } from '../../../../tools/title/services/title.service';\nimport { ReplayService } from '../../../../tools/replay/services/replay.service';\nimport { ImportDomainStoryService } from '../../../../tools/import/services/import-domain-story.service';\nimport { SettingsService } from '../../../services/settings/settings.service';\nimport { RendererService } from '../../../../tools/modeler/services/renderer.service';\nimport { DirtyFlagService } from '../../../../domain/services/dirty-flag.service';\nimport { DialogService } from '../../../../domain/services/dialog.service';\nimport { ExportService } from '../../../../tools/export/services/export.service';\nimport { LabelDictionaryService } from '../../../../tools/label-dictionary/services/label-dictionary.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<boolean>;\n isDirty$: Observable<boolean>;\n\n showDescription: Observable<boolean>;\n\n constructor(\n private titleService: TitleService,\n private replayService: ReplayService,\n private importService: ImportDomainStoryService,\n private settingsService: SettingsService,\n private renderService: RendererService,\n private dirtyFlagService: DirtyFlagService,\n private dialogService: DialogService,\n private exportService: ExportService,\n private labelDictionaryService: LabelDictionaryService,\n ) {\n this.isReplay$ = this.replayService.replayOn$;\n this.isDirty$ = this.dirtyFlagService.dirty$;\n\n this.showDescription = this.titleService.showDescription$;\n }\n\n openHeaderDialog(): void {\n this.titleService.openHeaderDialog();\n }\n\n openSettings(): void {\n this.settingsService.open();\n }\n\n setShowDescription(show: boolean): void {\n this.titleService.setShowDescription(show);\n }\n\n createNewDomainStory(): void {\n if (this.dirtyFlagService.dirty) {\n this.importService.openUnsavedChangesReminderDialog(() => {\n this.titleService.reset();\n this.renderService.reset();\n });\n } else {\n this.titleService.reset();\n this.renderService.reset();\n }\n }\n\n onImport(): void {\n if (this.dirtyFlagService.dirty) {\n this.importService.openUnsavedChangesReminderDialog(() =>\n this.importService.performImport(),\n );\n } else {\n this.importService.performImport();\n }\n }\n\n startReplay(): void {\n this.replayService.startReplay(true);\n }\n\n stopReplay(): void {\n this.replayService.stopReplay();\n }\n\n previousSentence(): void {\n this.replayService.previousSentence();\n }\n\n nextSentence(): void {\n this.replayService.nextSentence();\n }\n\n openKeyboardShortcutsDialog(): void {\n this.dialogService.openKeyboardShortcutsDialog();\n }\n\n openLabelDictionary(): void {\n this.labelDictionaryService.openLabelDictionary();\n }\n\n openDownloadDialog(): void {\n this.exportService.openDownloadDialog();\n }\n\n openImportFromUrlDialog(): void {\n this.importService.openImportFromUrlDialog(this.dirtyFlagService.dirty);\n }\n\n get hasDomainStory() {\n return this.exportService.isDomainStoryExportable();\n }\n\n get hasTitle(): boolean {\n return this.titleService.hasTitleOrDescription();\n }\n\n get isReplayable() {\n return this.replayService.isReplayable();\n }\n}\n","<mat-toolbar color=\"primary\">\n <mat-toolbar-row class=\"firstRow\">\n <div class=\"mr-10 titel-scrollbar\">\n <span\n class=\"headline\"\n (click)=\"openHeaderDialog()\"\n title=\"Edit title and description\"\n >\n {{ title$ | async }}\n </span>\n </div>\n\n <button\n class=\"headerButton\"\n (click)=\"openHeaderDialog()\"\n title=\"Edit title and description\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> edit </span>\n <div class=\"button-label\">Title</div>\n </button>\n @if (showDescription | async) {\n <button\n class=\"headerButton\"\n title=\"Hide description\"\n (click)=\"setShowDescription(false)\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n visibility_off\n </span>\n <div class=\"button-label\">Description</div>\n </button>\n }\n @if (!(showDescription | async)) {\n <button\n class=\"headerButton\"\n title=\"Show description\"\n (click)=\"setShowDescription(true)\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n visibility\n </span>\n <div class=\"button-label\">Description</div>\n </button>\n }\n <span class=\"titleSpacer\"></span>\n\n <app-header-buttons\n class=\"nowrap\"\n [hasDomainStory]=\"hasDomainStory\"\n [hasTitle]=\"hasTitle\"\n [isDirty]=\"isDirty$ | async\"\n [isReplayable]=\"isReplayable\"\n [isReplaying]=\"isReplay$ | async\"\n (import)=\"onImport()\"\n (openSettings)=\"openSettings()\"\n (startReplay)=\"startReplay()\"\n (stopReplay)=\"stopReplay()\"\n (nextSentence)=\"nextSentence()\"\n (previousSentence)=\"previousSentence()\"\n (newStory)=\"createNewDomainStory()\"\n (showKeyboardShortCuts)=\"openKeyboardShortcutsDialog()\"\n (openLabelDictionary)=\"openLabelDictionary()\"\n (openDownloadDialog)=\"openDownloadDialog()\"\n (openImportFromUrlDialog)=\"openImportFromUrlDialog()\"\n />\n </mat-toolbar-row>\n</mat-toolbar>\n@if (showDescription$ | async) {\n <mat-card class=\"smallScrollbar description\">\n <span class=\"descriptionText\">{{ description$ | async }}</span>\n </mat-card>\n}\n","import { Component } from '@angular/core';\nimport { SettingsService } from 'src/app/workbench/services/settings/settings.service';\nimport { ModelerService } from 'src/app/tools/modeler/services/modeler.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { IconSetCustomizationService } from '../../../tools/icon-set-config/services/icon-set-customization.service';\nimport { IconSet } from '../../../domain/entities/iconSet';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent {\n iconSetConfiguration: IconSet | undefined;\n showAutosaveSettings = new BehaviorSubject<boolean>(false);\n showIconSetCustomization = new BehaviorSubject<boolean>(true);\n\n constructor(\n private settingsService: SettingsService,\n private modelerService: ModelerService,\n private iconSetCustomizationService: IconSetCustomizationService,\n ) {}\n\n close(): void {\n const savedConfiguration =\n this.iconSetCustomizationService.getAndClearSavedConfiguration();\n if (savedConfiguration) {\n this.modelerService.restart(savedConfiguration);\n }\n this.settingsService.close();\n }\n\n openGeneralSettings() {\n this.showAutosaveSettings.next(true);\n this.showIconSetCustomization.next(false);\n }\n\n openIconSetCustomization() {\n this.showAutosaveSettings.next(false);\n this.showIconSetCustomization.next(true);\n }\n}\n","<div class=\"settings\">\n <mat-toolbar color=\"primary\">\n <mat-toolbar-row class=\"firstRow\">\n <button class=\"headerButton tab-small\" mat-button (click)=\"close()\">\n <span class=\"material-icons\">navigate_before</span>\n Back\n </button>\n <button\n class=\"headerButton tab-like\"\n [class.highlight]=\"showIconSetCustomization | async\"\n mat-button\n (click)=\"openIconSetCustomization()\"\n >\n <span class=\"headline\">Customize Icon Set</span>\n </button>\n <button\n class=\"headerButton tab-like\"\n [class.highlight]=\"showAutosaveSettings | async\"\n mat-button\n (click)=\"openGeneralSettings()\"\n >\n <span class=\"headline\">Autosave Settings</span>\n </button>\n </mat-toolbar-row>\n </mat-toolbar>\n\n @if (showAutosaveSettings | async) {\n <app-autosave-settings />\n }\n @if (showIconSetCustomization | async) {\n <app-icon-set-configuration />\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../material.module';\nimport { HeaderComponent } from './header/header/header.component';\nimport { HeaderButtonsComponent } from './header/header-buttons/header-buttons.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { IconSetConfigModule } from '../../tools/icon-set-config/presentation/icon-set-config.module';\nimport { AutosaveModule } from '../../tools/autosave/presentation/autosave.module';\n\n@NgModule({\n declarations: [HeaderComponent, HeaderButtonsComponent, SettingsComponent],\n exports: [HeaderComponent, HeaderButtonsComponent, SettingsComponent],\n imports: [\n CommonModule,\n FormsModule,\n MaterialModule,\n IconSetConfigModule,\n AutosaveModule,\n ],\n})\nexport class WorkbenchModule {}\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","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --configuration production` 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: '3.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":["SVG_LINK","TEXTSPAN_DESCRIPTION_HEIGHT","TEXTSPAN_TITLE_HEIGHT","X_OFFSET_UTIL","dynamicHeightOffset","createTitleAndDescriptionSVGElement","initDynamicHeightOffset","title","description","min_x","min_y","width","replace","titleElement","createTitle","descriptionElement","createDescription","insertText","text","tempCanvas","document","createElement","ctx","getContext","font","createTextSpans","descriptionParts","split","i","length","yOffset","heightOffset","fontSize","textSpans","words","removeLeadingEmptyStrings","textTag","textSpan","createElementNS","textNode","createTextNode","setAttribute","appendChild","j","firstChild","data","len","measureText","slice","outerHTML","stringArray","firstNonEmptyIndex","findIndex","string","assign","isNumber","omit","domify","assignStyle","query","domQuery","remove","domRemove","innerSVG","Diagram","inherits","BaseViewer","options","DEFAULT_OPTIONS","_container","_createContainer","_init","prototype","saveSVG","_saveSVG","_asyncToGenerator","_emit","svg","err","canvas","get","contentNode","getActiveLayer","defsNode","_svg","contents","defs","bbox","getBBox","height","x","y","e","error","apply","arguments","getModules","_modules","clear","getDefinitions","call","destroy","on","events","priority","callback","that","off","attachTo","parentNode","Error","detach","constructor","jquery","resized","container","removeChild","baseModules","modules","additionalModules","staticModules","egon","diagramModules","concat","diagramOptions","type","event","fire","ensureUnit","position","val","Replace","modeling","_modeling","replaceElement","oldElement","newElementData","newElement","setCenterOfElement","outgoingActivities","outgoing","incomingActivities","incoming","forEach","element","businessObject","source","id","target","Math","ceil","name","replaceShape","ElementTypes","replaceOptions","ReplaceMenuProvider","_dsReplace","$inject","getEntries","entries","includes","ACTOR","actorReplaceOptions","WORKOBJECT","workObjectReplaceOptions","_createEntries","menuEntries","self","definition","entry","_createMenuEntry","push","action","replaceAction","label","className","actionName","iconDictionaryService","initializeReplaceOptions","iconDictionary","actors","getIconsAssignedAs","replaceOption","keysArray","actorType","typeName","toLowerCase","getIconForMenu","workObjects","workObjectType","isArray","generateAutomaticNumber","hexToRGBA","isHexWithAlpha","rgbaToHex","hasPrimaryModifier","dirtyFlagService","initializeContextPadProvider","dirtyFlag","DomainStoryContextPadProvider","connect","translate","elementFactory","create","contextPad","popupMenu","replaceMenuProvider","commandStack","eventBus","rules","registerProvider","_selectedElement","startConnect","context","shape","isOpen","click","addEventListener","executeCommandStack","getContextPadEntries","pickedColor","dispatchEvent","CustomEvent","detail","color","actions","autoActivate","start","addDelete","addColorChange","addConnectWithActivity","addTextAnnotation","addActors","appendAction","addWorkObjects","addChangeWorkObjectTypeMenu","addChangeActorTypeMenu","GROUP","addDeleteGroupWithoutChildren","ACTIVITY","addChangeDirection","TEXTANNOTATION","CONNECTION","getMultiElementContextPadEntries","elements","deleteAllowed","allowed","delete","group","groups","filter","el","otherElements","removeGroup","removeElements","makeDirty","deleteGroup","changeDirection","getReplaceMenuPosition","cursor","open","colorChange","dragstart","icon","newNumber","execute","Y_OFFSET","diagramContainer","getContainer","pad","getPad","html","diagramRect","getBoundingClientRect","padRect","top","left","appendStart","createShape","hints","getSelectedBusinessObject","oldColor","newColor","selectedBusinessObject","getBusinessObject","isUndefined","reduce","copyProperties","properties","property","removeProperties","LOW_PRIORITY","EgonCopyPaste","propertyCopy","descriptor","oldBusinessObject","isLabel","references","resolveReferences","cache","host","attachedToRef","array","reference","key","newBusinessObject","labelTarget","copyElement","isDefined","isObject","has","sortBy","DISALLOWED_PROPERTIES","PropertyCopy","_eventBus","propertyNames","propertyName","indexOf","sourceElement","targetElement","canCopyProperties","sourceProperty","copiedProperty","copyProperty","canSetProperty","parent","set","$parent","childProperties","childProperty","CopyPasteModule","__depends__","__init__","egonCopyPaste","BaseElementFactory","DomainStoryIdFactory","DomainStoryElementFactory","domainStoryIdFactory","djsElementType","attrs","dstElementType","registerId","getId","value","alreadyHasSize","_getShapeSize","Object","defineProperty","baseCreate","shapes","__default","Dimensions","idList","generateId","idNumber","fourDigitsId","idSuffix","containsId","floor","random","same","BaseRenderer","Ids","componentsToPath","createLine","append","svgAppend","attr","svgAttr","classes","svgClasses","svgCreate","getNumberStash","addNumberToRegistry","numberBoxDefinitions","calculateTextWidth","countLines","labelPosition","angleBetween","isCustomIcon","isCustomSvgIcon","getScaledPath","RENDERER_IDS","numbers","DEFAULT_COLOR","_iconDictionaryService","_elementRegistryService","_dirtyFlagService","initializeRenderer","elementRegistryService","DomainStoryRenderer","styles","textRenderer","rendererId","next","markers","computeStyle","generateActivityNumber","parentGfx","box","numberStash","semantic","use","number","newRenderedNumber","renderNumber","numberStyle","fitBox","style","getExternalStyle","fill","renderActorAndWorkObjectLabel","align","padding","renderLabel","renderActivityLabel","waypoints","lines","startPoint","selected","endPoint","angle","alignment","boxWidth","xStart","abs","textAlign","wordWrap","overflowWrap","hyphens","renderExternalNumber","String","createText","add","setCoordinates","circle","radius","d","stroke","test","innerHTML","manipulateInnerHTMLXLabel","children","manipulateInnerHTMLYLabel","attributes","nodeValue","offset","result","Number","drawGroup","rect","drawRect","applyColorToCustomSvgIcon","iconSvg","rest","base64Svg","atob","coloredSvg","applyColorToIcon","encodedColoredSvg","btoa","match","some","it","replaceAll","index","substring","getIconSvg","dataURL","drawActor","svgDynamicSizeAttributes","iconSRC","getTypeIconSRC","getIconId","actor","drawWorkObject","workObject","useColorForActivity","strokeWidth","strokeLinejoin","markerEnd","marker","drawActivity","p","adjustForTextOverlap","fixConnectionInHTML","parentElement","baseVal","checkIfPointOverlapsText","point","lineOffset","getLineOffset","objects","getElementsByClassName","data_id","item","getAttribute","object","getElementsByTagName","tspans","tspan","wantedConnection","polylines","drawDSConnection","strokeDasharray","drawAnnotation","textElement","textPathData","xScaleFactor","yScaleFactor","containerWidth","containerHeight","mx","my","drawPath","path","r","rx","ry","createMarker","activityArrow","addMarker","ref","scale","strokeLinecap","viewBox","refX","refY","markerWidth","markerHeight","orient","getWorkObjectPath","rectangle","getRectPath","getGroupPath","getActivityPath","connection","map","original","activityPath","waypoint","getActorPath","draggerGfx","removeMarker","canRender","drawShape","startsWith","search","pos","correctInitialize","getShapePath","drawConnection","every","RuleProvider","is","HIGH_PRIORITY","MIN_SIZE","isGroup","isActor","isWorkObject","isActivity","isConnection","isAnnotation","isBackground","nonExistingOrLabel","canStartConnection","canConnect","canResize","newBounds","lowerLeft","lowerRight","upperRight","canConnectToAnnotation","DomainStoryRules","init","canCreate","addRule","s","undefined","hover","pick","CommandInterceptor","collectionAdd","collectionRemove","reworkGroupElements","DomainStoryUpdater","connectionDocking","updateElement","_elements","updateConnection","newTarget","newSource","copyWaypoints","cropConnection","cropped","createElementsBehavior","getCroppedWaypoints","executed","reverted","LassoTool","SpaceTool","Palette","TextRenderer","DomainStoryPalette","CreateModule","ContextPadModule","CommandStack","UpdateLabelHandler","headlineAndDescriptionUpdateHandler","DSModeling","BaseLayouter","CroppingConnectionDocking","layouter","domainStoryRenderer","paletteProvider","domainStoryRules","domainStoryUpdater","contextPadProvider","updateLabelHandler","svgRemove","MARKER_HIDDEN","MARKER_LABEL_HIDDEN","DSLabelEditingPreview","defaultLayer","getDefaultLayer","absoluteElementBBox","gfx","activeProvider","active","getAbsoluteBBox","dy","newElementHeight","max","autocomplete","getLabel","sanitizeTextForSVGExport","dictionaryService","stashUse","initializeLabelEditingProvider","labelingDictionary","toggleStashUse","focusElement","setTimeout","focus","DSLabelEditingProvider","directEditing","resizeHandles","_canvas","_textRenderer","_updateLabelHandler","activateDirectEdit","complete","isActive","cancel","removeResizers","createAutocomplete","canExecute","editingBox","activate","getUniqueWorkObjectNames","bounds","getEditingBBox","resizable","autoResize","zoom","defaultStyle","getDefaultStyle","defaultFontSize","defaultLineHeight","lineHeight","fontFamily","fontWeight","minWidth","maxWidth","minHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","update","newLabel","activeContextText","updateLabel","getLabelAttr","getNumberAttr","getNumber","setLabel","setNumber","textNumber","selectPartOfActivity","angleActivity","selectedActivity","linelength","fontsize","input","workObjectNames","closeAllLists","currentFocus","filteredWorkObjectNames","autocompleteList","autocompleteItem","toUpperCase","visibility","onkeydown","getElementById","keyCode","addActive","preventDefault","removeActive","classList","survivor","ChangeSupportModule","ResizeModule","DirectEditingModule","dSlabelEditingProvider","dSlabelEditingPreview","str","amountWaypoints","determinedPosition","xPos","yPos","Array","labelPositionX","labelPositionY","offsetX","scaledAngle","offsetY","Modeling","_commandStack","updateNumber","oldShape","newShape","newData","Connect","Translate","PopupMenu","numberRegistry","multipleNumberRegistry","canvasElementRegistry","initializeNumbering","canvasElementRegistryService","updateMultipleNumberRegistry","activityBusinessObjects","activity","multipleNumberAllowed","boxHeight","fixedOffsetX","fixedOffsetY","angleDependantOffsetX","angleDependantOffsetY","elementActivity","usedNumbers","wantedNumber","activitiesFromActors","getActivitiesFromActors","updateExistingNumbersAtGeneration","updateExistingNumbersAtEditing","sortedActivities","oldMultipleNumberRegistry","currentNumber","setNumberOfActivity","getNumbersAndIDs","iDWithNumber","activities","renderedNumber","setNumberIsMultiple","multi","getNumberRegistry","getMultipleNumberRegistry","elementArray","initializePalette","PaletteProvider","palette","spaceTool","lassoTool","_create","_elementFactory","_spaceTool","_lassoTool","getPaletteEntries","createAction","createListener","shortType","initPalette","config","getCurrentIconConfigurationForMenu","initTypeDictionaries","actorTypes","addCanvasObjectTypes","separator","workObjectTypes","activateSelection","elementType","EditorActions","AdditionalEditorActions","injector","invoke","_registerDefaultActions","elementRegistry","selection","handTool","_registerAction","rootElement","getRootElement","select","toggle","currentSelection","KeyboardBindings","AdditionalKeyboardBindings","registerBindings","keyboard","editorActions","addListener","fn","isRegistered","keyEvent","isKey","isCmd","trigger","hasModifier","EditorActionsModule","KeyboardModule","additionalEditorActions","additionalKeyBindings","initializeActivityUpdateHandler","activityUpdateHandler","registerHandler","activity_directionChange","activity_changed","preExecute","oldLabel","oldNumbersWithIDs","oldNumber","revert","revertAutomaticNumberGenerationChange","oldWaypoints","swapSource","newWaypoints","getActivitesFromActors","splice","undoGroupRework","elementUpdateHandler","element_colorChange","removeGroupWithoutChildren","child","titleService","handlerFunction","oldTitle","getTitle","oldDescription","getDescription","updateTitleAndDescription","newTitle","newDescription","DSMassRenameHandler","massRename","relevantElements","confirm","newValue","NULL_DIMENSIONS","setText","postExecute","bo","getLayoutedBounds","resizeShape","numberTarget","TextUtil","DEFAULT_FONT_SIZE","LINE_HEIGHT_RATIO","MIN_TEXT_ANNOTATION_HEIGHT","parseInt","externalStyle","textUtil","getExternalLabelBounds","layoutedDimensions","getDimensions","round","getTextAnnotationBounds","innerShape","superParent","svgShape","querySelector","svgGroup","svgGroupParent","param","rawPath","heightElements","widthElements","abspos","coordinates","heightRatio","widthRatio","heightIndex","widthIndex","format","obj","tokenRegex","all","replacer","objNotationRegex","res","quote","quotedName","isFunc","DomainStoryModule","LabelEditingModule","ModelingModule","MoveCanvasModule","KeyboardMoveModule","ZoomScrollModule","MoveModule","Bendpoints","ConnectionPreview","SpaceToolModule","LassoToolModule","HandToolModule","ConnectModule","SnappingModule","AdditionalShortcuts","minimapModule","DomainStoryModeler","_groupElements","_createElementFromBusinessObject","parentId","isOfTypeGroup","parentShape","addShape","_addConnection","addConnection","importBusinessObjects","businessObjects","connections","otherElementTypes","isOfTypeConnection","BehaviorSubject","environment","ColorPickerDirective","BLACK","BLUE","CYAN","DARK_PINK","GREEN","GREY","LIGHT_PINK","LIME","ORANGE","PURPLE","RED","SNACKBAR_DURATION_LONG","SNACKBAR_INFO","YELLOW","i0","ɵɵelement","AppComponent","settingsService","exportService","autosaveService","cd","snackbar","replayService","modelerService","version","skipNextColorUpdate","colorBox","showSettings$","showDescription$","modifierPressed","ctrlKey","metaKey","altKey","stopPropagation","isDomainStoryExportable","downloadDST","downloadSVG","getReplayOn","nextSentence","previousSentence","colorPicker","closeDialog","customEvent","openDialog","duration","panelClass","ngOnInit","postInit","onColorChanged","ngAfterViewInit","loadLatestDraft","detectChanges","onWindowClose","dirty","returnValue","ɵɵdirectiveInject","i1","SettingsService","i2","TitleService","i3","ExportService","i4","AutosaveService","ChangeDetectorRef","i5","MatSnackBar","i6","ReplayService","i7","ModelerService","i8","DirtyFlagService","selectors","viewQuery","AppComponent_Query","rf","ɵɵlistener","AppComponent_beforeunload_HostBindingHandler","$event","ɵɵresolveWindow","ɵɵelementStart","ɵɵtwoWayListener","AppComponent_Template_input_colorPickerChange_1_listener","ɵɵtwoWayBindingSet","AppComponent_Template_input_colorPickerClose_1_listener","ɵɵelementEnd","ɵɵtemplate","AppComponent_Conditional_2_Template","ɵɵtext","ɵɵadvance","ɵɵstyleProp","ɵɵproperty","ɵɵtwoWayProperty","ɵɵconditional","ɵɵpipeBind1","ɵɵclassProp","ɵɵtextInterpolate","APP_INITIALIZER","BrowserModule","MAT_CHECKBOX_DEFAULT_OPTIONS","NoopAnimationsModule","ImportDomainStoryService","LabelDictionaryService","ElementRegistryService","IconSetConfigurationService","UntypedFormBuilder","IconDictionaryService","MaterialModule","ColorPickerModule","IconSetChangedService","WorkbenchModule","DomainModule","AutosaveModule","ExportModule","IconSetConfigModule","ImportModule","LabelDictionaryModule","ModelerModule","TitleModule","DragDirective","AppModule","ngDoBootstrap","app","componentElement","body","bootstrap","ɵɵinject","provide","useValue","clickAction","useFactory","initialize","deps","useExisting","imports","declarations","configurationService","labelDictionaryService","Configuration","INITIAL_TITLE","INITIAL_DESCRIPTION","INITIAL_ICON_SET_NAME","ICON_SET_CONFIGURATION_KEY","DRAFTS_KEY","VERSION_KEY","DEFAULT_AUTOSAVES_ENABLED","DEFAULT_AUTOSAVES_MAX_DRAFTS","DEFAULT_AUTOSAVES_INTERVAL","SNACKBAR_DURATION","SNACKBAR_DURATION_LONGER","SNACKBAR_SUCCESS","SNACKBAR_ERROR","Dictionary","size","isEmpty","Entry","putEntry","addEach","keys","addBuiltInIcons","builtInIcons","appendDict","dict","found","keyWords","CommonModule","KeyboardShortcutsDialogComponent","exports","MAT_DIALOG_DATA","ɵɵtextInterpolate1","shortCut_r1","shortCut","shortCuts","decls","vars","consts","template","KeyboardShortcutsDialogComponent_Template","ɵɵrepeaterCreate","KeyboardShortcutsDialogComponent_For_4_Template","_forTrack0","ɵɵrepeater","CommandStackService","setCommandStack","payload","factory","ɵfac","providedIn","MatDialogConfig","DialogService","matDialog","dialog","openKeyboardShortcutsDialog","MatDialog","isDirtySubject","dirty$","asObservable","makeClean","fullyInitialized","registry","__implicitroot","setElementRegistry","createObjectListForDSTDownload","allObjectsFromCanvas","getAllCanvasObjects","getAllGroups","objectList","fillListOfCanvasObjects","canvasElement","unshift","getAllActivities","getAllConnections","allObjects","groupObjects","checkChildForGroup","currentGroup","pop","seenIds","Set","groupObject","isNewId","registryElementNames","sort","activityCanvasA","activityCanvasB","activityNumberA","activityNumberB","getUsedIcons","getAllActors","workobjects","getAllWorkobjects","a","w","co","StorageService","localStorage","setItem","JSON","stringify","json","getItem","parse","MatDialogModule","MatFormFieldModule","MatInputModule","MatToolbarModule","MatExpansionModule","MatCardModule","MatSnackBarModule","MatButtonModule","MatGridListModule","MatButtonToggleModule","MatListModule","MatCheckboxModule","AutosaveOptionsComponent_Conditional_0_Template_button_click_22_listener","ɵɵrestoreView","_r1","activated_r2","ɵɵreference","interval_r3","drafts_r4","ctx_r4","ɵɵnextContext","ɵɵresetView","save","checked","configuration_r6","activated","interval","maxDrafts","AutosaveOptionsComponent","autosaveConfiguration","setConfiguration","AutosaveConfigurationService","AutosaveOptionsComponent_Template","AutosaveOptionsComponent_Conditional_0_Template","tmp_0_0","configuration$","AutosaveSettingsComponent","AutosaveSettingsComponent_Template","AutosavedDraftsComponent_Conditional_7_For_2_Template_button_click_6_listener","draft_r2","$implicit","ctx_r2","loadDraft","date","AutosavedDraftsComponent_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIdentity","drafts","AutosavedDraftsComponent","subscription","autosavedDraftsChanged$","subscribe","initDrafts","loadCurrentDrafts","draft","removeAllDrafts","AutosavedDraftsComponent_Template","AutosavedDraftsComponent_Template_button_click_5_listener","AutosavedDraftsComponent_Conditional_7_Template","ɵɵtextInterpolate2","FormsModule","ReplaySubject","AUTOSAVE_CONFIGURATION_TAG","defaultConfiguration","storageService","configuration","configurationSubject","initializeConfiguration","loadConfiguration","saveConfiguration","Subject","rendererService","iconSetConfigurationService","updateConfiguration","readDrafts","sortDrafts","configFromFile","configAndDST","domain","createIconSetConfiguration","story","dst","actorIcons","getElementsOfType","workObjectIcons","updateIconRegistries","importStory","stopTimer","startTimer","autosaveTimer","clearInterval","setInterval","savedDrafts","newDraft","createDraft","isChanged","isSame","isDraftEmpty","writeDrafts","b","getStory","createConfigAndDST","Date","toString","aDate","bDate","RendererService","ExportDialogData","ExportOption","tooltip","ConfigAndDST","testConfigAndDst","DEFAULT_PADDING","ExportDialogComponent_Conditional_18_Template_input_ngModelChange_2_listener","ctx_r1","animationSpeed","ExportDialogComponent_Conditional_18_Template_span_click_3_listener","onExportAnimatedSvg","ExportDialogComponent_For_26_Template_button_click_0_listener","ɵ$index_50_r4","_r3","$index","doOption","option_r5","ExportDialogComponent","dialogRef","isAnimatedSvgExport","withTitle","useWhiteBackground","close","updateWithTitle","updateUseWhiteBackground","MatDialogRef","ExportDialogComponent_Template","ExportDialogComponent_Template_input_change_7_listener","ExportDialogComponent_Template_input_change_11_listener","ExportDialogComponent_Template_input_ngModelChange_15_listener","ExportDialogComponent_Template_span_click_16_listener","ExportDialogComponent_Conditional_18_Template","ExportDialogComponent_Template_button_click_23_listener","ExportDialogComponent_For_26_Template","sanitizeForDesktop","formatDate","pngService","svgService","htmlPresentationService","dialogService","titleSubscription","title$","descriptionSubscription","description$","ngOnDestroy","unsubscribe","DomainStory","getCurrentConfigurationForExport","getStoryForDownload","filename","getCurrentDateString","downloadFile","datatype","fileEnding","encodeURIComponent","display","svgData","createSVGData","downloadPNG","svgElements","outerSVGElement","viewport","layerBase","image","extractSVG","prepareSVG","onload","getWidth","getHeight","fillStyle","drawImage","png64","toDataURL","ele","src","onchange","downloadHTMLPresentation","modeler","then","objA","objB","localeCompare","info","openDownloadDialog","SVGDownloadOption","EGNDownloadOption","PNGDownloadOption","HTMLDownloadOption","getModeler","disableClose","autoFocus","PngService","SvgService","HtmlPresentationService","i9","i10","doT","storyCreatorService","viewBoxCoordinates","ViewBoxCoordinate","_this","startReplay","fixActivityMarkersForEachSentence","getCurrentSentenceNumber","content","transition","alert","getMaxSentenceNumber","stopReplay","revealjsTemplate","dots","revealjsData","script","sentences","multiplexSecret","multiplexId","fixMalformedHtmlScript","structuredClone","viewBoxIndex","xLeft","yUp","splitViewBox","dataStart","dataEnd","createBounds","sectionIndex","newDefs","ids","idToReplace","newId","StoryCreatorService","browserSpecs","ua","navigator","userAgent","tem","M","exec","appName","appVersion","URIHashtagFix","fix","browser","findMostOuterElements","includeSpaceForDescription","xRight","yDown","sub","elXLeft","elXRight","elYUp","elYDown","transform","nums","rects","outerRect","calculateWidthAndHeight","insertIndex","join","extraHeight","layerResizers","layerOverlays","removeAttribute","XMLSerializer","serializeToString","cacheData","getEncoded","domainStorySvg","createAnimatedSvg","viewBoxWidth","viewBoxHeight","findIndexToInsertData","svgIndex","backgroundColorWhite","appendDST","traceActivitiesAndCreateStory","usedElementId","storyLength","visibleTimeInPercent","durationOfAnimation","sentenceCounter","currentVisibleTimeInPercent","previousVisibleTimeInPercent","sentence","objectId","idIndex","insertIdIndex","customIcons","people","animal","vehicle","airport","driving","print","calling","computer","speaker","legalSystem","infoDialogs","finance","times","rating","groceries","fingers","entertainment","person","pet","conversation","world","store","theater","business","water","hotel","dining","gasStation","meetingRoom","courthouse","flag","place","car","bus","train","truck","taxi","bike","boat","motorcycle","plane","flightTakeoff","flightLanding","shuttle","walking","traffic","commute","system","printer","folder","email","copyright","dns","settings","cellphone","briefcase","microphone","signal","pencil","sum","headset","mouse","router","scanner","security","desktop","speakerPhone","tablet","receipt","calendar","cloud","assessment","dashboard","pieChart","problem","pictureAsPdf","grid","watch","euro","dollar","alarm","wrench","circleArrows","creditCard","favorite","gavel","blind","hourglass","time","shopping","thumbUp","thumbDown","thumbUpDown","couch","attach","ruler","education","howToReg","viewList","accessible","accountCircle","assignment","battery","book","bug","changeHistory","checkCircle","code","contactMail","crop","dvr","extension","face","fastfood","fingerprint","hand","help","lightbulb","lock","loyalty","pictureInPicture","portrait","rocket","satellite","share","slideshow","star","sun","table","videocam","wysiwyg","addCustomIcons","newIcons","IconConfiguration","allIconDictionary","iconSetName","getDefaultConf","defaultIconSet","actorsDict","workObjectsDict","newCustomIcons","createCustomConf","iconSetConfiguration","IconFilterOptions","DetailsListItemComponent","iconInitiated","ngAfterViewChecked","createIcon","img","inputs","DetailsListItemComponent_Template","ɵɵpropertyInterpolate","ɵɵsanitizeUrl","IconListItemComponent","iconName","iconSetCustomizationService","isWorkobject","isNone","getIconForName","toggleNone","setAsUnassigned","toggleActor","setAsActor","toggleWorkobject","setAsWorkobject","IconSetCustomizationService","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","IconSetConfigurationComponent","IconSetDetailsComponent","sanitizeIconName","iconName_r1","NO_FILTER","selectedActors","selectedWorkobjects","allIconNames","allFilteredIconNames","iconSetConfigurationTypes","getIconSetConfiguration","allIcons","getFullDictionary","sortByName","selectedActors$","selectedWorkobjects$","allFiltered","getFilteredNamesForType","loadMinimalIconConfigurationWithDefaultIcons","resetIconSet","loadInitialConfiguration","saveIconSet","startIconUpload","importIcon","files","iconInputFile","reader","FileReader","onloadend","addIMGToIconDictionary","addNewIcon","readAsDataURL","startIconSetImport","importIconSet","iconSetInputFile","importConfiguration","readAsText","filterForActors","ONLY_ACTORS","filterForWorkobjects","ONLY_WORKOBJECTS","filterForUnassigned","ONLY_UNASSIGNED","filterByNameAndType","filteredByKeyWord","filteredByNameAndType","isIconActor","isIconWorkObject","IconSetConfigurationComponent_Template","IconSetConfigurationComponent_Template_button_click_6_listener","IconSetConfigurationComponent_Template_button_click_10_listener","IconSetConfigurationComponent_Template_button_click_14_listener","IconSetConfigurationComponent_Template_input_input_21_listener","IconSetConfigurationComponent_Template_button_click_23_listener","IconSetConfigurationComponent_Template_input_change_26_listener","IconSetConfigurationComponent_Template_button_click_27_listener","IconSetConfigurationComponent_Template_input_change_30_listener","IconSetConfigurationComponent_Template_button_click_31_listener","IconSetConfigurationComponent_Template_button_click_34_listener","IconSetConfigurationComponent_Template_button_click_37_listener","IconSetConfigurationComponent_For_42_Template","IconSetDetailsComponent_For_18_Template_mat_list_item_dragover_0_listener","allowDrop","IconSetDetailsComponent_For_18_Template_mat_list_item_dragstart_0_listener","ɵ$index_30_r3","onDragStart","IconSetDetailsComponent_For_18_Template_mat_list_item_drop_0_listener","ctx_r3","iconName_r5","onDrop","IconSetDetailsComponent_For_25_Template_mat_list_item_dragover_0_listener","_r6","IconSetDetailsComponent_For_25_Template_mat_list_item_dragstart_0_listener","ɵ$index_43_r7","IconSetDetailsComponent_For_25_Template_mat_list_item_drop_0_listener","ctx_r7","iconName_r9","customizationService","draggedList","draggedIndex","iconSetName$","changeName","listName","list","sortedList","setSelectedActors","setSelectedWorkObject","exportIconSet","exportConfiguration","IconSetDetailsComponent_Template","IconSetDetailsComponent_Template_input_input_8_listener","IconSetDetailsComponent_Template_button_click_10_listener","IconSetDetailsComponent_For_18_Template","IconSetDetailsComponent_For_25_Template","ICON_PREFIX","actorIconDictionary","workObjectDictionary","builtInIconsDictionary","iconDictionaryForMenu","iconConfig","allTypes","getCustomIcons","initDictionary","selectedIconNames","dictionary","registerIconForMenu","customConfiguration","allInTypeDictionary","collection","allIn","addIconsFromIconSetConfiguration","dictionaryType","iconTypes","registerIconForType","addIconsToTypeDictionary","unregisterIconForType","extractCustomIconsFromDictionary","addNewIconsToDictionary","elementDictionary","sanitizedName","custom","addIconsToCss","sheetEl","iconStyle","wrapSRCInSVG","sheet","insertRule","cssRules","fullDictionary","appendedDict","getNamesOfIconsAssignedAs","getIconSource","elementOfType","getAllIconDictionary","getActorsDictionary","getWorkObjectsDictionary","getIconConfiguration","setCustomConfiguration","iconSetNameSubject","setIconSetName","configJSONString","customConfig","updateIconSetName","actorDict","workObjectDict","actorKeys","workObjectKeys","configurationName","getCurrentConfiguration","createConfigFromDictionaries","currentConfiguration","getCurrentConfigurationNamesWithoutPrefix","createMinimalConfigurationWithDefaultIcons","minimalConfig","createConfigFromCanvas","actorNames","workobjectNames","newActors","newWorkobjects","fileConfiguration","getStoredIconSetConfiguration","iconSetString","configurationFromFile","checkValidityOfConfiguration","setStoredIconSetConfiguration","configForStorage","allCanvasObjects","iconSetChangedService","allIconListItems","configurationHasChanged","addIconToAllIconList","iconConfigrationChanged","storedIconSetConfiguration","usedIcons","selectedActorNames","selectActor","deselectActor","selectedWorkobjectNames","selectWorkObject","deselectWorkobject","changedIconSet","updateIcon","workobject","updateActorSubject","updateWorkObjectSubject","defaultConfig","workObjectName","actorName","updateAllIconBehaviourSubjects","resetToInitialConfiguration","imported","changedActors","changedWorkobjects","configurationActors","configurationWorkobjects","changedIconSetConfiguration","updateIcons","getAndClearSavedConfiguration","temp","iconDict","getDataUrlForIcon","iconBehaviourSubject","customIconSetConfiguration","rawSrc","importDomainStoryService","background","onDragOver","evt","onDragLeave","dataTransfer","openUnsavedChangesReminderDialog","performDropImport","hostVars","hostBindings","DragDirective_HostBindings","DragDirective_dragover_HostBindingHandler","DragDirective_dragleave_HostBindingHandler","DragDirective_drop_HostBindingHandler","ImportDialogComponent","fileUrl","doImport","updateUrl","ImportDialogComponent_Template","ImportDialogComponent_Template_input_input_7_listener","ImportDialogComponent_Template_button_click_12_listener","ImportDialogComponent_Template_button_click_14_listener","EventEmitter","UnsavedChangesReminderComponent","importRepairService","importedConfiguration","importedConfigurationEmitter","getConfiguration","performImport","file","import","commandStackChanged","isSupportedFileEnding","importNotDirtyFromUrl","isDirty","importFromUrl","convertToDownloadableUrl","fetch","response","blob","catch","githubPattern","dropboxPattern","isSupported","dstSvgPattern","egnSvgPattern","endsWith","openImportFromUrlDialog","isSVG","isEGN","fileReader","titleText","restoreTitleFromFileName","fileReaderFunction","importSuccessful","importFailed","isSvgFile","isEgnFormat","contentAsJson","extractJsonFromSvgComment","iconSetConfig","iconSetFromFile","storyAndIconSet","extractStoryAndIconSet","removeWhitespacesFromIcons","removeUnnecessaryBpmnProperties","configChanged","checkConfigForChanges","lastElement","importVersionNumber","handleVersionNumber","checkForUnreferencedElementsInActivitiesAndRepair","showBrokenImportDialog","versionPrefix","lastIndexOf","updateCustomElementsPreviousV050","showPreviousV050Dialog","dstText","dstAndConfig","xmlText","newActorKeys","newWorkObjectKeys","currentActorKeys","currentWorkobjectKeys","changed","clearName","setImportedConfigurationAndEmit","message","emit","domainStoryRegex","svgRegex","egnSuffix","dstSuffix","svgSuffix","filenameWithoutDateSuffix","ImportRepairService","objectIDs","activityIndex","$type","$descriptor","di","LabelDictionaryDialogComponent","LabelDictionaryDialogComponent_Template","LabelDictionaryDialogComponent_Template_app_label_dictionary_closeEmitter_3_listener","LabelDictionaryComponent","MatDialogContent","LabelDictionaryComponent_For_6_Template_input_change_2_listener","workobjectEntry_r2","updateWorkobjectEntry","LabelDictionaryComponent_For_13_Template_textarea_change_2_listener","activityEntry_r5","_r4","updateActivityEntry","LabelDictionaryComponent_For_13_Template_textarea_keydown_enter_2_listener","LabelDictionaryComponent_For_13_Template_textarea_keyup_enter_2_listener","LabelDictionaryComponent_For_13_Template_textarea_keyup_escape_2_listener","closeEmitter","createLabelDictionaries","workObjectEntries","getWorkObjectLabels","activityEntries","getActivityLabels","workobjectEntriesSubject","activityEntriesSubject","activityNames","originalActivityNames","originalWorkObjectNames","originalName","massRenameLabels","activityEntry","workobjectEntry","outputs","LabelDictionaryComponent_Template","LabelDictionaryComponent_For_6_Template","LabelDictionaryComponent_For_13_Template","LabelDictionaryComponent_Template_button_click_16_listener","LabelDictionaryComponent_Template_button_click_18_listener","massNamingService","activityLabels","workObjektLabels","openLabelDictionary","isActivityWithLabel","isWorkObjectWithLabel","hasAtLeastOneLabel","massChangeNames","MassNamingService","commandStackService","oldValue","allRelevantObjects","FormControl","FormGroup","Validators","ActivityDialogForm","activityLabel","activityNumber","numberIsAllowedMultipleTimes","nonNullable","required","multipleNumbers","ActivityDialogData","showNumberFields","saveFN","ActivityDialogComponent","form","controls","valueChanges","setValue","onSubmit","patchValue","ActivityDialogComponent_Template","ActivityDialogComponent_Template_input_change_9_listener","ActivityDialogComponent_Template_textarea_keydown_enter_14_listener","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","ReactiveFormsModule","positionsMatch","massRenameHandler","InitializerService","propagateDomainStoryModelerClassesToServices","initializeDomainStoryModelerEventHandlers","initiateEventBusListeners","activityDoubleClick","renderedNumberRegistry","allActivities","htmlCanvas","transformX","transformY","zoomX","zoomY","clickX","originalEvent","clickY","parseFloat","currentNum","tx","ty","tNumber","elementX","elementY","pasteColor","pasteText","pasteHeight","elementsKey","shift","saveActivityInputLabel","activityData","hasNumber","initializerService","checkCurrentVersion","bind","exportArtifacts","debounce","window","startDebounce","onAction","restart","domainStory","currentStory","timeout","timer","clearTimeout","encoded","renderStory","reset","configurationChange","c","NUMBER_BACKGROUND_COLOR","NUMBER_COLOR","STROKE_WIDTH","HIGHLIGHT_NUMBER_BACKGROUND_COLOR","HIGHLIGHT_NUMBER_COLOR","HIGHLIGHT_STROKE_WIDTH","CONNECTION_PATH_DOM_SELECTOR","DomManipulationService","showAll","removeHighlights","domObject","showSentence","replaySentence","notShown","getAllNotShown","highlightSentence","o","getNumberDomForActivity","numberText","previousSibling","numberBackgroundDom","numberTextDom","allConnections","activityDomObject","connectionDomObject","sentenceObjects","shownElements","notShownElements","domManipulationService","currentSentence","maxSentenceNumber","replayOnSubject","currentSentence$","maxSentenceNumber$","replayOn$","setReplayState","state","isReplayable","initializeReplay","showCurrentSentence","checkSequenceNumbers","missingSentences","getMissingSentences","getValue","tracedActivityMap","tracedActivityMapKeys","tracedItem","storyIndex","createSentence","addGroupsToLastSentence","tracedActivityMapKey","tracedActivity","getSentenceObjects","highlightedElements","t","highlightedObjects","allActivityNumbersFromActors","allActivityNumbers","highestSequenceNumber","actorsAndWorkObjects","actorTextAnnotations","parallelSentence","parallelSentenceTargetObjects","firstTarget","checkTarget","activityTarget","addTextAnnotationsForActorOrGroup","ta","objectTextAnnotations","annotationsForGroups","g","TitleDialogForm","titel","TitleDialogComponent","getRawValue","TitleDialogComponent_Template","TitleDialogComponent_Template_textarea_keydown_enter_10_listener","TitleDialogComponent_Template_textarea_keyup_enter_10_listener","TitleDialogComponent_Template_textarea_keyup_escape_10_listener","TitleDialogComponent_Template_button_click_12_listener","TitleDialogComponent_Template_button_click_14_listener","titleSubject","descriptionSubject","showDescriptionSubject","openHeaderDialog","allowUndo","fireTitleAndDescriptionUpdate","updateTitle","updateDescription","inputTitle","trim","setShowDescription","show","getVersion","hasTitleOrDescription","MatButton","MatDialogActions","continueAction","standalone","features","ɵɵStandaloneFeature","UnsavedChangesReminderComponent_Template","UnsavedChangesReminderComponent_Template_button_click_9_listener","UnsavedChangesReminderComponent_Template_button_click_11_listener","rgba","isValidHex","red","padStart","green","blue","alpha","hex","getChunksFromString","st","chunkSize","RegExp","convertHexUnitTo256","hexStr","repeat","getAlphafloat","EPSILON","hexArr","degrees","radians","PI","quadrant","adjacent","opposite","atan2","Point","reg","nameWithoutFileEnding","combineLatest","HeaderButtonsComponent_Conditional_0_Template_button_click_1_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_11_listener","HeaderButtonsComponent_Conditional_0_Template_input_change_16_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_17_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_22_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_27_listener","newStory","HeaderButtonsComponent_Conditional_0_Template_button_click_32_listener","openSettings","HeaderButtonsComponent_Conditional_0_Template_button_click_37_listener","showKeyboardShortCuts","hasDomainStory","hasTitle","HeaderButtonsComponent_Conditional_1_Template_button_click_1_listener","HeaderButtonsComponent_Conditional_1_Template_button_click_6_listener","HeaderButtonsComponent_Conditional_1_Template_button_click_11_listener","sentenceDescription$","HeaderButtonsComponent","isReplaying","pipe","count","HeaderButtonsComponent_Template","HeaderButtonsComponent_Conditional_0_Template","HeaderButtonsComponent_Conditional_1_Template","HeaderComponent_Conditional_11_Template_button_click_0_listener","HeaderComponent_Conditional_13_Template_button_click_0_listener","HeaderComponent","importService","renderService","isReplay$","isDirty$","showDescription","createNewDomainStory","onImport","HeaderComponent_Template","HeaderComponent_Template_span_click_3_listener","HeaderComponent_Template_button_click_6_listener","HeaderComponent_Conditional_11_Template","HeaderComponent_Conditional_13_Template","HeaderComponent_Template_app_header_buttons_import_16_listener","HeaderComponent_Template_app_header_buttons_openSettings_16_listener","HeaderComponent_Template_app_header_buttons_startReplay_16_listener","HeaderComponent_Template_app_header_buttons_stopReplay_16_listener","HeaderComponent_Template_app_header_buttons_nextSentence_16_listener","HeaderComponent_Template_app_header_buttons_previousSentence_16_listener","HeaderComponent_Template_app_header_buttons_newStory_16_listener","HeaderComponent_Template_app_header_buttons_showKeyboardShortCuts_16_listener","HeaderComponent_Template_app_header_buttons_openLabelDictionary_16_listener","HeaderComponent_Template_app_header_buttons_openDownloadDialog_16_listener","HeaderComponent_Template_app_header_buttons_openImportFromUrlDialog_16_listener","HeaderComponent_Conditional_19_Template","SettingsComponent","showAutosaveSettings","showIconSetCustomization","savedConfiguration","openGeneralSettings","openIconSetCustomization","SettingsComponent_Template","SettingsComponent_Template_button_click_3_listener","SettingsComponent_Template_button_click_7_listener","SettingsComponent_Template_button_click_11_listener","SettingsComponent_Conditional_15_Template","SettingsComponent_Conditional_17_Template","showSettings","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","console"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file +{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/tools/export/services/exportUtil.js","./src/app/tools/modeler/diagram-js/BaseViewer.js","./src/app/tools/modeler/diagram-js/features/change-icon/replace.js","./src/app/tools/modeler/diagram-js/features/change-icon/replaceMenuProvider.js","./src/app/tools/modeler/diagram-js/features/change-icon/replaceOptions.js","./src/app/tools/modeler/diagram-js/features/context-pad/domainStoryContextPadProvider.js","./src/app/tools/modeler/diagram-js/features/copyPaste/EgonCopyPaste.js","./src/app/tools/modeler/diagram-js/features/copyPaste/PropertyCopy.js","./src/app/tools/modeler/diagram-js/features/copyPaste/index.js","./src/app/tools/modeler/diagram-js/features/domainStoryElementFactory.js","./src/app/tools/modeler/diagram-js/features/domainStoryIdFactory.js","./src/app/tools/modeler/diagram-js/features/domainStoryRenderer.js","./src/app/tools/modeler/diagram-js/features/domainStoryRules.js","./src/app/tools/modeler/diagram-js/features/domainStoryUpdater.js","./src/app/tools/modeler/diagram-js/features/index.js","./src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingPreview.js","./src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider.js","./src/app/tools/modeler/diagram-js/features/labeling/dsLabelUtil.js","./src/app/tools/modeler/diagram-js/features/labeling/index.js","./src/app/tools/modeler/diagram-js/features/labeling/position.js","./src/app/tools/modeler/diagram-js/features/modeling/dSModeling.js","./src/app/tools/modeler/diagram-js/features/modeling/index.js","./src/app/tools/modeler/diagram-js/features/numbering/numbering.js","./src/app/tools/modeler/diagram-js/features/palette/domainStoryPalette.js","./src/app/tools/modeler/diagram-js/features/shortcuts/AdditionalEditorActions.js","./src/app/tools/modeler/diagram-js/features/shortcuts/AdditionalKeyboardBindings.js","./src/app/tools/modeler/diagram-js/features/shortcuts/index.js","./src/app/tools/modeler/diagram-js/features/updateHandler/activityUpdateHandlers.js","./src/app/tools/modeler/diagram-js/features/updateHandler/elementUpdateHandler.js","./src/app/tools/modeler/diagram-js/features/updateHandler/headlineAndDescriptionUpdateHandler.js","./src/app/tools/modeler/diagram-js/features/updateHandler/massRenameHandler.js","./src/app/tools/modeler/diagram-js/features/updateHandler/updateLabelHandler.js","./src/app/tools/modeler/diagram-js/features/util/TextRenderer.js","./src/app/tools/modeler/diagram-js/features/util/util.js","./src/app/tools/modeler/diagram-js/index.js","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/domain/entities/configuration.ts","./src/app/domain/entities/constants.ts","./src/app/domain/entities/dictionary.ts","./src/app/domain/entities/elementTypes.ts","./src/app/domain/presentation/domain.module.ts","./src/app/domain/presentation/keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component.ts","./src/app/domain/presentation/keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component.html","./src/app/domain/services/command-stack.service.ts","./src/app/domain/services/dialog.service.ts","./src/app/domain/services/dirty-flag.service.ts","./src/app/domain/services/element-registry.service.ts","./src/app/domain/services/storage.service.ts","./src/app/material.module.ts","./src/app/tools/autosave/presentation/AutosaveOptions/autosave-options.component.ts","./src/app/tools/autosave/presentation/AutosaveOptions/autosave-options.component.html","./src/app/tools/autosave/presentation/AutosaveSettings/autosave-settings.component.ts","./src/app/tools/autosave/presentation/AutosaveSettings/autosave-settings.component.html","./src/app/tools/autosave/presentation/AutosavedDrafts/autosaved-drafts.component.ts","./src/app/tools/autosave/presentation/AutosavedDrafts/autosaved-drafts.component.html","./src/app/tools/autosave/presentation/autosave.module.ts","./src/app/tools/autosave/services/autosave-configuration.service.ts","./src/app/tools/autosave/services/autosave.service.ts","./src/app/tools/export/domain/dialog/exportDialogData.ts","./src/app/tools/export/domain/export/configAndDst.ts","./src/app/tools/export/domain/export/exportConstants.ts","./src/app/tools/export/presentation/export-dialog/export-dialog.component.ts","./src/app/tools/export/presentation/export-dialog/export-dialog.component.html","./src/app/tools/export/presentation/export.module.ts","./src/app/tools/export/services/export.service.ts","./src/app/tools/export/services/html-presentation.service.ts","./src/app/tools/export/services/png.service.ts","./src/app/tools/export/services/svg.service.ts","./src/app/tools/icon-set-config/domain/allIcons.ts","./src/app/tools/icon-set-config/domain/iconConfiguration.ts","./src/app/tools/icon-set-config/domain/iconFilterOptions.ts","./src/app/tools/icon-set-config/presentation/details-list-item/details-list-item.component.ts","./src/app/tools/icon-set-config/presentation/details-list-item/details-list-item.component.html","./src/app/tools/icon-set-config/presentation/icon-list-item/icon-list-item.component.ts","./src/app/tools/icon-set-config/presentation/icon-list-item/icon-list-item.component.html","./src/app/tools/icon-set-config/presentation/icon-set-config.module.ts","./src/app/tools/icon-set-config/presentation/icon-set-configuration/icon-set-configuration.component.ts","./src/app/tools/icon-set-config/presentation/icon-set-configuration/icon-set-configuration.component.html","./src/app/tools/icon-set-config/presentation/icon-set-details/icon-set-details.component.ts","./src/app/tools/icon-set-config/presentation/icon-set-details/icon-set-details.component.html","./src/app/tools/icon-set-config/services/icon-dictionary.service.ts","./src/app/tools/icon-set-config/services/icon-set-customization.service.ts","./src/app/tools/icon-set-config/services/icon-set-import-export.service.ts","./src/app/tools/import/directive/dragDrop.directive.ts","./src/app/tools/import/presentation/import-dialog/import-dialog.component.ts","./src/app/tools/import/presentation/import-dialog/import-dialog.component.html","./src/app/tools/import/presentation/import.module.ts","./src/app/tools/import/services/import-domain-story.service.ts","./src/app/tools/import/services/import-repair.service.ts","./src/app/tools/label-dictionary/presentation/label-dictionary-dialog/label-dictionary-dialog.component.ts","./src/app/tools/label-dictionary/presentation/label-dictionary-dialog/label-dictionary-dialog.component.html","./src/app/tools/label-dictionary/presentation/label-dictionary.module.ts","./src/app/tools/label-dictionary/presentation/label-dictionary/label-dictionary.component.ts","./src/app/tools/label-dictionary/presentation/label-dictionary/label-dictionary.component.html","./src/app/tools/label-dictionary/services/label-dictionary.service.ts","./src/app/tools/label-dictionary/services/mass-naming.service.ts","./src/app/tools/modeler/domain/activity-dialog-form.ts","./src/app/tools/modeler/domain/activityDialogData.ts","./src/app/tools/modeler/presentation/activity-dialog/activity-dialog.component.ts","./src/app/tools/modeler/presentation/activity-dialog/activity-dialog.component.html","./src/app/tools/modeler/presentation/modeler.module.ts","./src/app/tools/modeler/services/initializer.service.ts","./src/app/tools/modeler/services/modeler.service.ts","./src/app/tools/modeler/services/renderer.service.ts","./src/app/tools/replay/domain/replayConstants.ts","./src/app/tools/replay/services/dom-manipulation.service.ts","./src/app/tools/replay/services/replay.service.ts","./src/app/tools/replay/services/story-creator.service.ts","./src/app/tools/title/domain/title-dialog-form.ts","./src/app/tools/title/presentation/title-dialog/title-dialog.component.ts","./src/app/tools/title/presentation/title-dialog/title-dialog.component.html","./src/app/tools/title/presentation/title.module.ts","./src/app/tools/title/services/title.service.ts","./src/app/tools/unsavedChangesReminder/presentation/unsavedChangesReminder-dialog/unsaved-changes-reminder/unsaved-changes-reminder.component.ts","./src/app/tools/unsavedChangesReminder/presentation/unsavedChangesReminder-dialog/unsaved-changes-reminder/unsaved-changes-reminder.component.html","./src/app/utils/colorConverter.ts","./src/app/utils/mathExtensions.ts","./src/app/utils/sanitizer.ts","./src/app/workbench/presentation/header/header-buttons/header-buttons.component.ts","./src/app/workbench/presentation/header/header-buttons/header-buttons.component.html","./src/app/workbench/presentation/header/header/header.component.ts","./src/app/workbench/presentation/header/header/header.component.html","./src/app/workbench/presentation/settings/settings.component.ts","./src/app/workbench/presentation/settings/settings.component.html","./src/app/workbench/presentation/workbench.module.ts","./src/app/workbench/services/settings/settings.service.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import {\n SVG_LINK,\n TEXTSPAN_DESCRIPTION_HEIGHT,\n TEXTSPAN_TITLE_HEIGHT,\n X_OFFSET_UTIL,\n} from \"../domain/export/exportConstants\";\n\nlet dynamicHeightOffset = 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 initDynamicHeightOffset,\n title,\n description,\n min_x,\n min_y,\n width,\n) {\n dynamicHeightOffset = initDynamicHeightOffset;\n\n title = title.replace(\"<\", \"\").replace(\">\", \"\");\n\n let titleElement = createTitle(title, width);\n\n let descriptionElement = \"\";\n if (description) {\n descriptionElement = createDescription(description, width);\n }\n\n // to display the title and description in the SVG-file, we need to add a container for our text-elements\n\n let insertText =\n '<g class=\"djs-group\"><g class=\"djs-element djs-shape\" style = \"display:block\" transform=\"translate(' +\n (min_x - 10) +\n \" \" +\n (min_y - dynamicHeightOffset) +\n ')\"><g class=\"djs-visual\">' +\n titleElement +\n descriptionElement +\n \"</g></g></g>\";\n return { insertText, dynamicHeightOffset: dynamicHeightOffset };\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(\"<br>\");\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 // every leading empty strings in the array must be removed, otherwise the text elements\n // will not be filled with text\n words = removeLeadingEmptyStrings(words);\n\n let textTag =\n '<text lineHeight=\"1.2\" class=\"djs-label\" style=\"font-family: Arial, sans-serif; font-size: ' +\n fontSize +\n '; font-weight: normal; fill: rgb(0, 0, 0);\">';\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 + dynamicHeightOffset);\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 dynamicHeightOffset += heightOffset;\n textSpan.firstChild.data = textSpan.firstChild.data.slice(0, len); // remove overflow word\n\n textSpans += textTag + textSpan.outerHTML + \"</text>\"; // 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 + dynamicHeightOffset);\n textSpan.appendChild(textNode);\n }\n }\n }\n dynamicHeightOffset += heightOffset;\n\n textSpans += textTag + textSpan.outerHTML + \"</text>\";\n return textSpans;\n}\n\nfunction removeLeadingEmptyStrings(stringArray) {\n const firstNonEmptyIndex = stringArray.findIndex((string) => string !== \"\");\n return stringArray.slice(\n firstNonEmptyIndex === -1 ? stringArray.length : firstNonEmptyIndex,\n );\n}\n","import { assign, isNumber, omit } from \"min-dash\";\n\nimport {\n domify,\n assignStyle,\n query as domQuery,\n remove as domRemove,\n} from \"min-dom\";\n\nimport { innerSVG } from \"tiny-svg\";\n\nimport Diagram from \"diagram-js\";\n\nimport inherits from \"inherits-browser\";\n\nexport default function BaseViewer(options) {\n options = assign({}, DEFAULT_OPTIONS, options);\n this._container = this._createContainer(options);\n this._init(this._container, options);\n}\n\ninherits(BaseViewer, Diagram);\n\nBaseViewer.prototype.saveSVG = async function saveSVG() {\n this._emit(\"saveSVG.start\");\n\n let svg, err;\n\n try {\n const canvas = this.get(\"canvas\");\n\n const contentNode = canvas.getActiveLayer(),\n defsNode = domQuery(\":scope > defs\", canvas._svg);\n\n const contents = innerSVG(contentNode),\n defs = defsNode ? \"<defs>\" + innerSVG(defsNode) + \"</defs>\" : \"\";\n\n const bbox = contentNode.getBBox();\n\n svg =\n '<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n' +\n \"<!-- created with diagram-js / http://bpmn.io -->\\n\" +\n '<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n' +\n '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" ' +\n 'width=\"' +\n bbox.width +\n '\" height=\"' +\n bbox.height +\n '\" ' +\n 'viewBox=\"' +\n bbox.x +\n \" \" +\n bbox.y +\n \" \" +\n bbox.width +\n \" \" +\n bbox.height +\n '\" version=\"1.1\">' +\n defs +\n contents +\n \"</svg>\";\n } catch (e) {\n err = e;\n }\n\n this._emit(\"saveSVG.done\", {\n error: err,\n svg: svg,\n });\n\n if (err) {\n throw err;\n }\n\n return { svg };\n};\n\nBaseViewer.prototype.getModules = function () {\n return this._modules;\n};\n\nBaseViewer.prototype.clear = function () {\n if (!this.getDefinitions()) {\n // no diagram to clear\n return;\n }\n\n // remove drawn elements\n Diagram.prototype.clear.call(this);\n};\n\nBaseViewer.prototype.destroy = function () {\n // diagram destroy\n Diagram.prototype.destroy.call(this);\n\n // dom detach\n domRemove(this._container);\n};\n\nBaseViewer.prototype.on = function (events, priority, callback, that) {\n return this.get(\"eventBus\").on(events, priority, callback, that);\n};\n\nBaseViewer.prototype.off = function (events, callback) {\n this.get(\"eventBus\").off(events, callback);\n};\n\nBaseViewer.prototype.attachTo = function (parentNode) {\n if (!parentNode) {\n throw new Error(\"parentNode required\");\n }\n\n // ensure we detach from the\n // previous, old parent\n this.detach();\n\n // unwrap jQuery if provided\n if (parentNode.get && parentNode.constructor.prototype.jquery) {\n parentNode = parentNode.get(0);\n }\n\n if (typeof parentNode === \"string\") {\n parentNode = domQuery(parentNode);\n }\n\n parentNode.appendChild(this._container);\n\n this._emit(\"attach\", {});\n\n this.get(\"canvas\").resized();\n};\n\nBaseViewer.prototype.detach = function () {\n const container = this._container,\n parentNode = container.parentNode;\n\n if (!parentNode) {\n return;\n }\n this._emit(\"detach\", {});\n\n parentNode.removeChild(container);\n};\n\nBaseViewer.prototype._init = function (container, options) {\n const baseModules = options.modules || this.getModules(options),\n additionalModules = options.additionalModules || [],\n staticModules = [\n {\n egon: [\"value\", this],\n },\n ];\n\n const diagramModules = [].concat(\n staticModules,\n baseModules,\n additionalModules,\n );\n\n const diagramOptions = assign(omit(options, [\"additionalModules\"]), {\n canvas: assign({}, options.canvas, { container: container }),\n modules: diagramModules,\n });\n\n // invoke diagram constructor\n Diagram.call(this, diagramOptions);\n\n if (options && options.container) {\n this.attachTo(options.container);\n }\n};\n\nBaseViewer.prototype._emit = function (type, event) {\n return this.get(\"eventBus\").fire(type, event);\n};\n\nBaseViewer.prototype._createContainer = function (options) {\n const container = domify('<div class=\"egon-container\"></div>');\n\n assignStyle(container, {\n width: ensureUnit(options.width),\n height: ensureUnit(options.height),\n position: options.position,\n });\n\n return container;\n};\n\nBaseViewer.prototype._modules = [];\n\n// helpers ///////////////\n\nconst DEFAULT_OPTIONS = {\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n};\n\n/**\n * Ensure the passed argument is a proper unit (defaulting to px)\n */\nfunction ensureUnit(val) {\n return val + (isNumber(val) ? \"px\" : \"\");\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 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 { ElementTypes } from \"src/app/domain/entities/elementTypes\";\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<Object>} a list of menu entry items\n */\nReplaceMenuProvider.prototype.getEntries = function (element) {\n let entries;\n if (element.type.includes(ElementTypes.ACTOR)) {\n entries = replaceOptions.actorReplaceOptions(element.type);\n } else if (element.type.includes(ElementTypes.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<Object>} 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/entities/elementTypes\";\n\nlet iconDictionaryService;\n\nexport function initializeReplaceOptions(iconDictionary) {\n iconDictionaryService = iconDictionary;\n}\n\nexport function actorReplaceOptions(name) {\n const actors = iconDictionaryService.getIconsAssignedAs(ElementTypes.ACTOR);\n\n let replaceOption = {};\n let i = 0;\n\n actors.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.getIconForMenu(\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 workObjects = iconDictionaryService.getIconsAssignedAs(\n ElementTypes.WORKOBJECT,\n );\n\n let replaceOption = {};\n let i = 0;\n\n workObjects.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.getIconForMenu(\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 { assign, isArray } from \"min-dash\";\nimport { generateAutomaticNumber } from \"../numbering/numbering\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport {\n hexToRGBA,\n isHexWithAlpha,\n rgbaToHex,\n} from \"../../../../../utils/colorConverter\";\nimport { hasPrimaryModifier } from \"diagram-js/lib/util/Mouse\";\n\nlet dirtyFlagService;\nlet iconDictionaryService;\n\nexport function initializeContextPadProvider(dirtyFlag, iconDictionary) {\n dirtyFlagService = dirtyFlag;\n iconDictionaryService = iconDictionary;\n}\n\nexport default function DomainStoryContextPadProvider(\n connect,\n translate,\n elementFactory,\n create,\n canvas,\n contextPad,\n popupMenu,\n replaceMenuProvider,\n commandStack,\n eventBus,\n modeling,\n rules,\n) {\n contextPad.registerProvider(this);\n popupMenu.registerProvider(\"ds-replace\", replaceMenuProvider);\n\n let _selectedElement;\n let startConnect;\n\n eventBus.on(\"create.end\", 250, function (event) {\n var context = event.context,\n shape = context.shape;\n\n if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) {\n return;\n }\n\n var entries = contextPad.getEntries(shape);\n\n if (entries.replace) {\n entries.replace.action.click(event, shape);\n }\n });\n\n document.addEventListener(\"pickedColor\", (event) => {\n if (_selectedElement) {\n executeCommandStack(event);\n }\n });\n\n this.getContextPadEntries = function (element) {\n _selectedElement = element;\n\n let pickedColor = _selectedElement.businessObject.pickedColor;\n\n if (isHexWithAlpha(pickedColor)) {\n pickedColor = hexToRGBA(pickedColor);\n }\n document.dispatchEvent(\n new CustomEvent(\"defaultColor\", {\n detail: {\n color: pickedColor ?? \"#000000\",\n },\n }),\n );\n\n let actions = {};\n\n startConnect = function (event, element, autoActivate) {\n connect.start(event, element, autoActivate);\n };\n\n if (element.type.includes(ElementTypes.WORKOBJECT)) {\n addDelete(actions, element);\n addColorChange(actions);\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 addDelete(actions, element);\n addColorChange(actions);\n addConnectWithActivity(actions, startConnect);\n addTextAnnotation(actions);\n addWorkObjects(appendAction, actions);\n addChangeActorTypeMenu(actions);\n } else if (element.type.includes(ElementTypes.GROUP)) {\n addTextAnnotation(actions);\n addDeleteGroupWithoutChildren(actions, element);\n addColorChange(actions);\n } else if (element.type.includes(ElementTypes.ACTIVITY)) {\n addChangeDirection(actions);\n addColorChange(actions);\n addDelete(actions, element);\n } else if (element.type.includes(ElementTypes.TEXTANNOTATION)) {\n addDelete(actions, element);\n addColorChange(actions);\n } else if (element.type.includes(ElementTypes.CONNECTION)) {\n addDelete(actions, element);\n }\n\n return actions;\n };\n\n this.getMultiElementContextPadEntries = function (elements) {\n let actions = {};\n addDelete(actions, elements);\n return actions;\n };\n\n function addDelete(actions, element) {\n // delete element entry, only show if allowed by rules\n var deleteAllowed = rules.allowed(\"elements.delete\", {\n elements: { element },\n });\n\n if (isArray(deleteAllowed)) {\n // was the element returned as a deletion candidate?\n deleteAllowed = deleteAllowed[0] === element;\n }\n\n if (deleteAllowed) {\n assign(actions, {\n delete: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: translate(\"Remove\"),\n action: {\n click: function (event, element) {\n if (isArray(element)) {\n const groups = element.filter((el) =>\n el.type.includes(ElementTypes.GROUP),\n );\n const otherElements = element.filter(\n (el) => !el.type.includes(ElementTypes.GROUP),\n );\n groups.forEach((group) => modeling.removeGroup(group));\n modeling.removeElements(otherElements.slice());\n } else {\n modeling.removeElements({ element });\n }\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n }\n }\n\n function addDeleteGroupWithoutChildren(actions, element) {\n assign(actions, {\n deleteGroup: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: translate(\"Remove Group without Child-Elements\"),\n action: {\n click: function (event, element) {\n modeling.removeGroup(element);\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n }\n\n function addChangeDirection(actions) {\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 dirtyFlagService.makeDirty();\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 document.dispatchEvent(new CustomEvent(\"openColorPicker\"));\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 workObjects = iconDictionaryService.getIconsAssignedAs(\n ElementTypes.WORKOBJECT,\n );\n workObjects.keysArray().forEach((workObjectType) => {\n let name = workObjectType;\n let icon = iconDictionaryService.getIconForMenu(\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 actors = iconDictionaryService.getIconsAssignedAs(ElementTypes.ACTOR);\n actors.keysArray().forEach((actorType) => {\n let name = actorType;\n let icon = iconDictionaryService.getIconForMenu(\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 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 function getSelectedBusinessObject(event) {\n const oldColor = _selectedElement.businessObject.pickedColor;\n let newColor = event.detail.color;\n if (isHexWithAlpha(oldColor)) {\n newColor = rgbaToHex(newColor);\n }\n\n return {\n businessObject: _selectedElement.businessObject,\n newColor: newColor,\n element: _selectedElement,\n };\n }\n\n function executeCommandStack(event) {\n const selectedBusinessObject = getSelectedBusinessObject(event);\n\n commandStack.execute(\"element.colorChange\", selectedBusinessObject);\n dirtyFlagService.makeDirty();\n }\n}\n\nDomainStoryContextPadProvider.$inject = [\n \"connect\",\n \"translate\",\n \"elementFactory\",\n \"create\",\n \"canvas\",\n \"contextPad\",\n \"popupMenu\",\n \"replaceMenuProvider\",\n \"commandStack\",\n \"eventBus\",\n \"modeling\",\n \"rules\",\n];\n","import { getBusinessObject } from \"../util/util\";\n\nimport { forEach, isArray, isUndefined, omit, reduce } from \"min-dash\";\n\nfunction copyProperties(source, target, properties) {\n if (!isArray(properties)) {\n properties = [properties];\n }\n\n forEach(properties, function (property) {\n if (!isUndefined(source[property])) {\n target[property] = source[property];\n }\n });\n}\n\nfunction removeProperties(element, properties) {\n if (!isArray(properties)) {\n properties = [properties];\n }\n\n forEach(properties, function (property) {\n if (element[property]) {\n delete element[property];\n }\n });\n}\n\nvar LOW_PRIORITY = 750;\n\nexport default function EgonCopyPaste(eventBus, propertyCopy) {\n eventBus.on(\"copyPaste.copyElement\", LOW_PRIORITY, function (context) {\n var descriptor = context.descriptor,\n element = context.element;\n\n var businessObject = (descriptor.oldBusinessObject =\n getBusinessObject(element));\n\n descriptor.type = element.type;\n\n copyProperties(businessObject, descriptor, \"name\");\n\n if (isLabel(descriptor)) {\n return descriptor;\n }\n });\n\n var references;\n\n function resolveReferences(descriptor, cache) {\n var businessObject = getBusinessObject(descriptor);\n\n // boundary events\n if (descriptor.host) {\n // relationship can be resolved immediately\n getBusinessObject(descriptor).attachedToRef = getBusinessObject(\n cache[descriptor.host],\n );\n }\n\n references = omit(\n references,\n reduce(\n references,\n function (array, reference, key) {\n var element = reference.element,\n property = reference.property;\n\n if (key === descriptor.id) {\n element[property] = businessObject;\n\n array.push(descriptor.id);\n }\n\n return array;\n },\n [],\n ),\n );\n }\n\n eventBus.on(\"copyPaste.pasteElements\", function () {\n references = {};\n });\n\n eventBus.on(\"copyPaste.pasteElement\", function (context) {\n var cache = context.cache,\n descriptor = context.descriptor,\n oldBusinessObject = descriptor.oldBusinessObject,\n newBusinessObject;\n\n // do NOT copy business object if external label\n if (isLabel(descriptor)) {\n descriptor.businessObject = getBusinessObject(\n cache[descriptor.labelTarget],\n );\n\n return;\n }\n\n newBusinessObject = {};\n\n descriptor.businessObject = propertyCopy.copyElement(\n oldBusinessObject,\n newBusinessObject,\n );\n\n // resolve references e.g. default sequence flow\n resolveReferences(descriptor, cache);\n\n copyProperties(descriptor, newBusinessObject, [\"name\"]);\n\n removeProperties(descriptor, \"oldBusinessObject\");\n });\n}\n\nEgonCopyPaste.$inject = [\"eventBus\", \"propertyCopy\"];\n\n// helpers //////////\n\nfunction isLabel(element) {\n return !!element.labelTarget;\n}\n","import {\n forEach,\n isArray,\n isDefined,\n isObject,\n reduce,\n has,\n sortBy,\n} from \"min-dash\";\n\nvar DISALLOWED_PROPERTIES = [\"incoming\", \"outgoing\"];\n\nexport default function PropertyCopy(eventBus) {\n this._eventBus = eventBus;\n\n // copy extension elements last\n eventBus.on(\"propertyCopy.canCopyProperties\", function (context) {\n var propertyNames = context.propertyNames;\n\n if (!propertyNames || !propertyNames.length) {\n return;\n }\n\n return sortBy(propertyNames, function (propertyName) {\n return propertyName === \"extensionElements\";\n });\n });\n\n // default check whether property can be copied\n eventBus.on(\"propertyCopy.canCopyProperty\", function (context) {\n var propertyName = context.propertyName;\n\n if (propertyName && DISALLOWED_PROPERTIES.indexOf(propertyName) !== -1) {\n // disallow copying property\n return false;\n }\n });\n}\n\nPropertyCopy.$inject = [\"eventBus\"];\n\nPropertyCopy.prototype.copyElement = function (\n sourceElement,\n targetElement,\n propertyNames,\n) {\n var self = this;\n\n if (propertyNames && !isArray(propertyNames)) {\n propertyNames = [propertyNames];\n }\n\n var canCopyProperties = this._eventBus.fire(\n \"propertyCopy.canCopyProperties\",\n {\n propertyNames: propertyNames,\n sourceElement: sourceElement,\n targetElement: targetElement,\n },\n );\n\n if (canCopyProperties === false) {\n return targetElement;\n }\n\n if (isArray(canCopyProperties)) {\n propertyNames = canCopyProperties;\n }\n\n // copy properties\n forEach(propertyNames, function (propertyName) {\n var sourceProperty;\n\n if (has(sourceElement, propertyName)) {\n sourceProperty = sourceElement.get(propertyName);\n }\n\n var copiedProperty = self.copyProperty(\n sourceProperty,\n targetElement,\n propertyName,\n );\n\n var canSetProperty = self._eventBus.fire(\n \"propertyCopy.canSetCopiedProperty\",\n {\n parent: targetElement,\n property: copiedProperty,\n propertyName: propertyName,\n },\n );\n\n if (canSetProperty === false) {\n return;\n }\n\n if (isDefined(copiedProperty)) {\n targetElement.set(propertyName, copiedProperty);\n }\n });\n\n return targetElement;\n};\n\nPropertyCopy.prototype.copyProperty = function (\n property,\n parent,\n propertyName,\n) {\n var self = this;\n\n // allow others to copy property\n var copiedProperty = this._eventBus.fire(\"propertyCopy.canCopyProperty\", {\n parent: parent,\n property: property,\n propertyName: propertyName,\n });\n\n // return if copying is NOT allowed\n if (copiedProperty === false) {\n return;\n }\n\n if (copiedProperty) {\n if (isObject(copiedProperty) && !copiedProperty.$parent) {\n copiedProperty.$parent = parent;\n }\n\n return copiedProperty;\n }\n\n // copy arrays\n if (isArray(property)) {\n return reduce(\n property,\n function (childProperties, childProperty) {\n // recursion\n copiedProperty = self.copyProperty(childProperty, parent, propertyName);\n\n // copying might NOT be allowed\n if (copiedProperty) {\n copiedProperty.$parent = parent;\n\n return childProperties.concat(copiedProperty);\n }\n\n return childProperties;\n },\n [],\n );\n }\n\n // copy model elements\n if (isObject(property)) {\n copiedProperty = {};\n\n copiedProperty.$parent = parent;\n\n // recursion\n copiedProperty = self.copyElement(property, copiedProperty);\n\n return copiedProperty;\n }\n\n // copy primitive properties\n return property;\n};\n","import CopyPasteModule from \"diagram-js/lib/features/copy-paste\";\n\nimport EgonCopyPaste from \"./EgonCopyPaste\";\nimport PropertyCopy from \"./PropertyCopy\";\n\nexport default {\n __depends__: [CopyPasteModule],\n __init__: [\"egonCopyPaste\", \"propertyCopy\"],\n egonCopyPaste: [\"type\", EgonCopyPaste],\n propertyCopy: [\"type\", PropertyCopy],\n};\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport BaseElementFactory from \"diagram-js/lib/core/ElementFactory\";\n\nimport DomainStoryIdFactory from \"./domainStoryIdFactory\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\nexport default function DomainStoryElementFactory() {\n let self = this;\n let domainStoryIdFactory = new DomainStoryIdFactory();\n\n /**\n * create a diagram-js element\n *\n * @param {String} djsElementType\n * @param {Object} attrs\n *\n * @return {djs.model.Base}\n */\n this.create = function (djsElementType, attrs) {\n let dstElementType = attrs.type;\n\n if (!attrs.businessObject) {\n attrs.businessObject = {\n type: dstElementType,\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(djsElementType);\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 // add width and height if shape\n if (djsElementType === \"shape\") {\n let alreadyHasSize = attrs.height || attrs.width; // if a story is imported, groups and annotations already have dimensions; we must not overwrite them with default values\n\n if (!alreadyHasSize) {\n assign(attrs, self._getShapeSize(dstElementType));\n }\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(djsElementType, attrs);\n };\n}\n\ninherits(DomainStoryElementFactory, BaseElementFactory);\n\nDomainStoryElementFactory.prototype.baseCreate =\n BaseElementFactory.prototype.create;\n\n/**\n * returns the default size for shapes.\n * *\n * @param {String} dstElementType\n *\n * @return {Dimensions} a {width, height} object representing the size of the element\n */\nDomainStoryElementFactory.prototype._getShapeSize = function (dstElementType) {\n let shapes = {\n __default: { width: 75, height: 75 },\n [ElementTypes.TEXTANNOTATION]: { width: 100, height: 30 },\n [ElementTypes.GROUP]: { width: 300, height: 200 },\n };\n\n return shapes[dstElementType] || 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-browser\";\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\nimport Ids from \"ids\";\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 \"src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider\";\nimport {\n addNumberToRegistry,\n generateAutomaticNumber,\n numberBoxDefinitions,\n} from \"src/app/tools/modeler/diagram-js/features/numbering/numbering\";\n\nimport { calculateTextWidth } from \"src/app/tools/modeler/diagram-js/features/labeling/dsLabelUtil\";\nimport {\n countLines,\n labelPosition,\n} from \"src/app/tools/modeler/diagram-js/features/labeling/position\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { angleBetween } from \"../../../../utils/mathExtensions\";\nimport { isCustomIcon, isCustomSvgIcon, getScaledPath } from \"./util/util\";\n\nlet RENDERER_IDS = new Ids();\nlet numbers = [];\nconst DEFAULT_COLOR = \"#000000\";\n\nlet _iconDictionaryService;\nlet _elementRegistryService;\nlet _dirtyFlagService;\n\nexport function initializeRenderer(\n iconDictionaryService,\n elementRegistryService,\n dirtyFlagService,\n) {\n _iconDictionaryService = iconDictionaryService;\n _elementRegistryService = elementRegistryService;\n _dirtyFlagService = dirtyFlagService;\n}\n\nexport default function DomainStoryRenderer(\n eventBus,\n styles,\n canvas,\n textRenderer,\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 box.x -= 26;\n box.y -= 16;\n\n if (semantic.number < 10) {\n box.x += 3;\n }\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 renderActorAndWorkObjectLabel(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 function renderActivityLabel(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 // !IMPORTANT!\n // When converting svg-files via Inkscape or Photoshop the svg-circle is converted to a black dot that obscures the number.\n // To circumvent this, we draw an arc.\n let circle = svgCreate(\"path\");\n let radius = 11;\n let x = options.box.x + 18 + (number > 9 ? 3 : 0);\n let y = options.box.y - radius + 7;\n svgAttr(circle, {\n d: `\n M ${x} ${y}\n m ${radius},0\n a ${radius},${radius} 0 1,0 ${-radius * 2},0\n a ${radius},${radius} 0 1,0 ${radius * 2},0\n `,\n fill: \"white\",\n stroke: \"black\",\n });\n\n svgAppend(parentGfx, circle);\n svgAppend(parentGfx, text);\n\n return text;\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 renderActorAndWorkObjectLabel(parentGfx, element, \"left-top\", 8);\n\n return rect;\n };\n\n function applyColorToCustomSvgIcon(pickedColor, iconSvg) {\n if (!pickedColor) {\n return iconSvg;\n }\n const [rest, base64Svg] = iconSvg.split(\"base64,\");\n const svg = atob(base64Svg);\n const coloredSvg = applyColorToIcon(pickedColor, svg);\n const encodedColoredSvg = btoa(coloredSvg);\n return rest + \"base64,\" + encodedColoredSvg;\n }\n\n function applyColorToIcon(pickedColor = DEFAULT_COLOR, iconSvg) {\n const match = iconSvg.match(\n /fill=\\s*\"(?!none).*?\"|fill:\\s*[#r]\\w*[;\\s]{1}/,\n );\n if (match && match.some((it) => it)) {\n return iconSvg\n .replaceAll(/fill=\\s*\"(?!none).*?\"/g, `fill=\"${pickedColor} \"`)\n .replaceAll(/fill:\\s*[#r]\\w*[;\\s]{1}/g, `fill:${pickedColor};`);\n } else {\n const index = iconSvg.indexOf(\"<svg \") + 5;\n return (\n iconSvg.substring(0, index) +\n ' fill=\" ' +\n pickedColor +\n '\" ' +\n iconSvg.substring(index)\n );\n }\n }\n\n function getIconSvg(icon, element) {\n const pickedColor = element.businessObject.pickedColor;\n if (isCustomIcon(icon)) {\n let dataURL;\n if (isCustomSvgIcon(icon)) {\n dataURL = applyColorToCustomSvgIcon(pickedColor, icon);\n } else {\n dataURL = icon;\n if (pickedColor && pickedColor !== DEFAULT_COLOR) {\n document.dispatchEvent(new CustomEvent(\"errorColoringOnlySvg\"));\n }\n }\n return (\n '<svg viewBox=\"0 0 24 24\" width=\"48\" height=\"48\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">' +\n '<image width=\"24\" height=\"24\" xlink:href=\"' +\n dataURL +\n '\"/></svg>'\n );\n } else {\n return applyColorToIcon(pickedColor, icon);\n }\n }\n\n this.drawActor = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width,\n height: element.height,\n };\n let iconSRC = _iconDictionaryService.getTypeIconSRC(\n ElementTypes.ACTOR,\n ElementTypes.getIconId(element.type),\n );\n iconSRC = getIconSvg(iconSRC, element);\n let actor = svgCreate(iconSRC);\n\n svgAttr(actor, svgDynamicSizeAttributes);\n svgAppend(parent, actor);\n\n renderActorAndWorkObjectLabel(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 = _iconDictionaryService.getTypeIconSRC(\n ElementTypes.WORKOBJECT,\n ElementTypes.getIconId(element.type),\n );\n iconSRC = getIconSvg(iconSRC, element);\n workObject = svgCreate(iconSRC);\n\n svgAttr(workObject, svgDynamicSizeAttributes);\n svgAppend(parent, workObject);\n renderActorAndWorkObjectLabel(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 renderActivityLabel(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 // changes the color of the moved activity back to original instead of blue\n if (p.className.baseVal === \"djs-dragger\") {\n svgClasses(p).remove(\"djs-dragger\");\n svgClasses(p).add(\"djs-connection-preview\");\n }\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: element.businessObject.pickedColor ?? \"black\",\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 = element.height ?? 0;\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 = getScaledPath({\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: element.businessObject.pickedColor ?? \"black\",\n });\n\n renderLabel(parentGfx, text, {\n box: element,\n align: \"left-top\",\n padding: 5,\n style: {\n fill: element.businessObject.pickedColor ?? \"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 (\"markers\" are arrowheads of activities)\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 activityArrow = svgCreate(\"path\");\n svgAttr(activityArrow, { d: \"M 1 5 L 11 10 L 1 15 Z\" });\n\n addMarker(id, {\n element: activityArrow,\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 eventBus.on(\"bendpoint.move.start\", 200, function (event) {\n // the bendpoint which we are dragging will otherwise be displayed with 0.3 opacity\n // through bendpoint-dragging we match the css class more specificly, hence our style applies\n svgClasses(event.context.draggerGfx).add(\"bendpoint-dragging\");\n // the old path of the activity will otherwise be displayed in gray\n canvas.addMarker(event.context.connection, \"djs-element-hidden\");\n });\n\n eventBus.on(\"bendpoint.move.end\", 2000, function (event) {\n // the acitvity will not be displayed if we don't remove the marker we added during bendpoint.move.start\n // high priority is neccessary, so we come before something that might stop the execution\n canvas.removeMarker(event.context.connection, \"djs-element-hidden\");\n });\n}\n\ninherits(DomainStoryRenderer, BaseRenderer);\n\nDomainStoryRenderer.$inject = [\n \"eventBus\",\n \"styles\",\n \"canvas\",\n \"textRenderer\",\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 _elementRegistryService.correctInitialize();\n _dirtyFlagService.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 _dirtyFlagService.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/entities/elementTypes\";\nimport { is } from \"./util/util\";\n\nconst HIGH_PRIORITY = 1500;\nconst MIN_SIZE = 125;\n\nfunction isGroup(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// indirect usage of IMPLICIT_ROOT_ID, constant not used because of Regex\nexport function isBackground(element) {\n return element && /^__implicitroot/.test(element.id);\n}\n\nexport function isLabel(element) {\n return element && !!element.labelTarget;\n}\n\nfunction nonExistingOrLabel(element) {\n return !element || isLabel(element);\n}\n\nfunction canStartConnection(element) {\n if (nonExistingOrLabel(element)) {\n return null;\n }\n return false;\n}\n\n/**\n * can source and target be connected?\n */\nfunction canConnect(source, target) {\n // never connect to background; since the direction of the activity can get reversed during dragging, we also have to check if the source\n if (isBackground(target) || isBackground(source)) {\n return false;\n }\n\n if (isGroup(target)) {\n return false;\n }\n\n // do not allow a connection from one element to itself\n if (source === target) {\n return false;\n }\n\n // do not allow a connection between two actors\n if (isActor(source) && isActor(target)) {\n return false;\n }\n\n // do not allow a connection, where the source or target is an activity\n if (isActivity(source) || isActivity(target)) {\n return false;\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 false;\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 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\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 a shape be created on target?\n */\n function canCreate(shape, target) {\n // allow creation on canvas || allow groups on everything || allow everything on groups\n return isBackground(target) || isGroup(shape) || isGroup(target);\n }\n\n this.addRule(\"elements.create\", function (context) {\n const elements = context.elements,\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 return canCreate(element, target);\n });\n });\n\n this.addRule(\"elements.move\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shapes = context.shapes;\n\n // The idea of this code is to make sure that if any of the selected shapes cannot be moved,\n // then the whole selection cannot be moved. However, it actually only checks\n // if the shape that is under the mouse cursor is over another shape.\n // This is probably enough as a full detection over overlapping shapes might make it hard\n // to move large selections\n return reduce(\n shapes,\n function (result, s) {\n if (result === false) {\n return false;\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 let result = canConnectToAnnotation(source, target, connection);\n\n if (!result) {\n return;\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 this.addRule(\"connection.start\", function (context) {\n var source = context.source;\n\n return canStartConnection(source);\n });\n\n this.addRule(\"connection.updateWaypoints\", function (context) {\n return {\n type: context.connection.type,\n };\n });\n\n // CopyPaste.js requires this empty-looking rule to exist\n this.addRule(\"element.copy\", function (context) {\n return true;\n });\n};\n\nDomainStoryRules.prototype.canConnect = canConnect;\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/util\";\nimport { ElementTypes } from \"../../../../domain/entities/elementTypes\";\n\n/**\n * a handler responsible for updating the element's businessObject\n * once changes on the diagram happen.\n */\nexport default function DomainStoryUpdater(eventBus, egon, connectionDocking) {\n CommandInterceptor.call(this, eventBus);\n\n function updateElement(e) {\n let context = e.context,\n shape = context.shape;\n\n if (!shape) {\n return;\n }\n let businessObject = shape.businessObject;\n let parent = shape.parent;\n let elements = egon._elements;\n\n // make sure element is added / removed from egon._elements\n if (!parent) {\n collectionRemove(elements, businessObject);\n } else {\n collectionAdd(elements, businessObject);\n }\n\n // save element position\n assign(businessObject, pick(shape, [\"x\", \"y\"]));\n\n // save 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 updateConnection(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 elements = egon._elements;\n\n // make sure element is added / removed from egon._elements\n if (!parent) {\n collectionRemove(elements, businessObject);\n } else {\n collectionAdd(elements, 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 // crop connection ends during create/update\n function cropConnection(e) {\n var context = e.context,\n hints = context.hints || {},\n connection;\n\n if (!context.cropped && hints.createElementsBehavior !== false) {\n connection = context.connection;\n connection.waypoints = connectionDocking.getCroppedWaypoints(connection);\n context.cropped = true;\n }\n }\n\n // cropping must be done before updateElement\n // do not change the order of these .executed calls\n this.executed([\"connection.layout\", \"connection.create\"], cropConnection);\n\n this.reverted([\"connection.layout\"], function (e) {\n delete e.context.cropped;\n });\n\n this.executed(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n updateElement,\n );\n\n this.reverted(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n updateElement,\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 updateConnection,\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 updateConnection,\n );\n}\n\ninherits(DomainStoryUpdater, CommandInterceptor);\n\nDomainStoryUpdater.$inject = [\"eventBus\", \"egon\", \"connectionDocking\"];\n","\"use strict\";\n\nimport LassoTool from \"diagram-js/lib/features/lasso-tool\";\nimport SpaceTool from \"diagram-js/lib/features/space-tool\";\nimport Palette from \"diagram-js/lib/features/palette\";\nimport TextRenderer from \"./util/TextRenderer\";\nimport DomainStoryElementFactory from \"./domainStoryElementFactory\";\nimport DomainStoryRenderer from \"./domainStoryRenderer\";\nimport DomainStoryPalette from \"./palette/domainStoryPalette\";\nimport DomainStoryRules from \"./domainStoryRules\";\nimport DomainStoryUpdater from \"./domainStoryUpdater\";\nimport CreateModule from \"diagram-js/lib/features/create\";\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\";\nimport BaseLayouter from \"diagram-js/lib/layout/BaseLayouter\";\nimport CroppingConnectionDocking from \"diagram-js/lib/layout/CroppingConnectionDocking\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, Palette, SpaceTool, LassoTool],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n connectionDocking: [\"type\", CroppingConnectionDocking],\n layouter: [\"type\", BaseLayouter],\n textRenderer: [\"type\", TextRenderer],\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 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 \"src/app/domain/entities/elementTypes\";\nimport { is, getScaledPath } from \"../util/util\";\n\nconst MARKER_HIDDEN = \"djs-element-hidden\",\n MARKER_LABEL_HIDDEN = \"djs-label-hidden\";\n\nexport default function DSLabelEditingPreview(eventBus, canvas) {\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 if (is(element, ElementTypes.TEXTANNOTATION)) {\n absoluteElementBBox = canvas.getAbsoluteBBox(element);\n gfx = svgCreate(\"g\");\n\n let textPathData = getScaledPath({\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: \"black\",\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 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\n let textPathData = getScaledPath({\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\"];\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport { autocomplete, getLabel } from \"./dsLabelUtil\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { sanitizeTextForSVGExport } from \"src/app/utils/sanitizer\";\nimport { is } from \"../util/util\";\nimport { isBackground } from \"../domainStoryRules\";\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);\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\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) {\n directEditing.activate(element);\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 (isBackground(element)) {\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 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 // default position\n let bounds = { x: bbox.x, y: bbox.y };\n\n /** The canvas is an object from diagram-js. The IDE might say that zoom is deprecated,\n * because it thinks that canvas is the standard HTML element.**/\n let zoom = canvas.zoom();\n let defaultStyle = this._textRenderer.getDefaultStyle();\n\n // take zoom into account\n let 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 if (\n // we can't use util's is() function here because the type contains the name of the icon\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 // 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(\n element,\n sanitizeTextForSVGExport(newLabel),\n newBounds,\n );\n};\n","\"use strict\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util/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 if (semantic.type.includes(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 \"<strong>\" +\n name.substring(0, val.length) +\n \"</strong>\" +\n name.substring(val.length);\n\n /* insert an input field that will hold the current name:*/\n autocompleteItem.innerHTML +=\n \"<input type='hidden' value='\" + name + \"'>\";\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 \"src/app/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 \"diagram-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 this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\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 this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\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 CreateModule from \"diagram-js/lib/features/create\";\nimport Connect from \"diagram-js/lib/features/connect\";\nimport Translate from \"diagram-js/lib/i18n/translate\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport PopupMenu from \"diagram-js/lib/features/popup-menu\";\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, Connect, Translate, PopupMenu],\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 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 { angleBetween } from \"src/app/utils/mathExtensions\";\n\nlet numberRegistry = [];\nlet multipleNumberRegistry = [false];\n\nlet canvasElementRegistry;\n\nexport function initializeNumbering(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\nexport function updateMultipleNumberRegistry(activityBusinessObjects) {\n activityBusinessObjects.forEach(\n (activity) =>\n (multipleNumberRegistry[activity.number] =\n activity.multipleNumberAllowed),\n );\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 angle = 0;\n if (element.waypoints.length > 1) {\n angle = angleBetween(\n // Start of first arrow segment\n element.waypoints[0],\n // End of first arrow segment\n element.waypoints[1],\n );\n }\n let x = element.waypoints[0].x;\n let y = element.waypoints[0].y;\n\n let fixedOffsetX = 0;\n let fixedOffsetY = 0;\n let angleDependantOffsetX = 0;\n let angleDependantOffsetY = 0;\n\n // Fine tune positioning of sequence number above beginning of first arrow segment\n if (angle >= 0 && angle <= 45) {\n fixedOffsetX = 25;\n angleDependantOffsetY = 20 * (1 - angle / 45);\n } else if (angle <= 90) {\n fixedOffsetX = 5;\n angleDependantOffsetX = 15 * (1 - (angle - 45) / 45);\n } else if (angle <= 135) {\n fixedOffsetX = 5;\n angleDependantOffsetX = -20 * ((angle - 90) / 45);\n } else if (angle <= 180) {\n fixedOffsetX = -15;\n angleDependantOffsetY = 20 * ((angle - 135) / 45);\n } else if (angle <= 225) {\n fixedOffsetX = -15;\n fixedOffsetY = 15;\n angleDependantOffsetY = 25 * ((angle - 180) / 45);\n } else if (angle <= 270) {\n fixedOffsetX = 5;\n angleDependantOffsetX = -20 * (1 - (angle - 225) / 45);\n fixedOffsetY = 40;\n } else if (angle <= 315) {\n fixedOffsetX = 5;\n angleDependantOffsetX = 25 * ((angle - 270) / 45);\n fixedOffsetY = 40;\n } else {\n fixedOffsetX = 25;\n fixedOffsetY = 20;\n angleDependantOffsetY = 15 * (1 - (angle - 315) / 45);\n }\n\n x = x + fixedOffsetX + angleDependantOffsetX;\n y = y + fixedOffsetY + angleDependantOffsetY;\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 oldMultipleNumberRegistry = [...multipleNumberRegistry];\n let currentNumber = wantedNumber;\n for (\n currentNumber;\n currentNumber < sortedActivities.length;\n currentNumber++\n ) {\n if (sortedActivities[currentNumber]) {\n wantedNumber++;\n multipleNumberRegistry[wantedNumber] =\n oldMultipleNumberRegistry[currentNumber];\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 { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\nlet iconDictionary;\n\nexport function initializePalette(iconDictionaryService) {\n iconDictionary = iconDictionaryService;\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 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 initPalette(actions, spaceTool, lassoTool, createAction) {\n let config = iconDictionary?.getCurrentIconConfigurationForMenu();\n\n iconDictionary?.initTypeDictionaries(config.actors, config.workObjects);\n\n let actorTypes = iconDictionary?.getIconsAssignedAs(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?.getIconsAssignedAs(\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.getIconForMenu(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","import inherits from \"inherits-browser\";\n\nimport EditorActions from \"diagram-js/lib/features/editor-actions/EditorActions\";\n\nexport default function AdditionalEditorActions(injector) {\n injector.invoke(EditorActions, this);\n}\n\ninherits(AdditionalEditorActions, EditorActions);\n\nAdditionalEditorActions.$inject = [\"injector\"];\n\n/**\n * Register default actions.\n *\n * @param {Injector} injector\n */\nAdditionalEditorActions.prototype._registerDefaultActions = function (\n injector,\n) {\n // (0) invoke super method\n\n EditorActions.prototype._registerDefaultActions.call(this, injector);\n\n // (1) retrieve optional components to integrate with\n\n var canvas = injector.get(\"canvas\", false);\n var elementRegistry = injector.get(\"elementRegistry\", false);\n var selection = injector.get(\"selection\", false);\n var spaceTool = injector.get(\"spaceTool\", false);\n var lassoTool = injector.get(\"lassoTool\", false);\n var handTool = injector.get(\"handTool\", false);\n var directEditing = injector.get(\"directEditing\", false);\n\n if (canvas && elementRegistry && selection) {\n this._registerAction(\"selectElements\", function () {\n // select all elements except for the invisible\n // root element\n var rootElement = canvas.getRootElement();\n\n var elements = elementRegistry.filter(function (element) {\n return element !== rootElement;\n });\n\n selection.select(elements);\n\n return elements;\n });\n }\n\n if (spaceTool) {\n this._registerAction(\"spaceTool\", function () {\n spaceTool.toggle();\n });\n }\n\n if (lassoTool) {\n this._registerAction(\"lassoTool\", function () {\n lassoTool.toggle();\n });\n }\n\n if (handTool) {\n this._registerAction(\"handTool\", function () {\n handTool.toggle();\n });\n }\n\n if (selection && directEditing) {\n this._registerAction(\"directEditing\", function () {\n var currentSelection = selection.get();\n\n if (currentSelection.length) {\n directEditing.activate(currentSelection[0]);\n }\n });\n }\n};\n","import inherits from \"inherits-browser\";\n\nimport KeyboardBindings from \"diagram-js/lib/features/keyboard/KeyboardBindings\";\n\nexport default function AdditionalKeyboardBindings(injector) {\n injector.invoke(KeyboardBindings, this);\n}\n\ninherits(AdditionalKeyboardBindings, KeyboardBindings);\n\nAdditionalKeyboardBindings.$inject = [\"injector\"];\n\nAdditionalKeyboardBindings.prototype.registerBindings = function (\n keyboard,\n editorActions,\n) {\n // inherit default bindings\n KeyboardBindings.prototype.registerBindings.call(\n this,\n keyboard,\n editorActions,\n );\n\n function addListener(action, fn) {\n if (editorActions.isRegistered(action)) {\n keyboard.addListener(fn);\n }\n }\n\n // select all elements\n // CTRL + A\n addListener(\"selectElements\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.isKey([\"a\", \"A\"], event) && keyboard.isCmd(event)) {\n editorActions.trigger(\"selectElements\");\n\n return true;\n }\n });\n\n // activate space tool\n // S\n addListener(\"spaceTool\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"s\", \"S\"], event)) {\n editorActions.trigger(\"spaceTool\");\n\n return true;\n }\n });\n\n // activate lasso tool\n // L\n addListener(\"lassoTool\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"l\", \"L\"], event)) {\n editorActions.trigger(\"lassoTool\");\n\n return true;\n }\n });\n\n // activate hand tool\n // H\n addListener(\"handTool\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"h\", \"H\"], event)) {\n editorActions.trigger(\"handTool\");\n\n return true;\n }\n });\n\n // activate direct editing\n // E\n addListener(\"directEditing\", function (context) {\n var event = context.keyEvent;\n\n if (keyboard.hasModifier(event)) {\n return;\n }\n\n if (keyboard.isKey([\"e\", \"E\"], event)) {\n editorActions.trigger(\"directEditing\");\n\n return true;\n }\n });\n};\n","import EditorActionsModule from \"diagram-js/lib/features/editor-actions\";\nimport KeyboardModule from \"diagram-js/lib/features/keyboard\";\nimport AdditionalEditorActions from \"./AdditionalEditorActions\";\nimport AdditionalKeyboardBindings from \"./AdditionalKeyboardBindings\";\n\nexport default {\n __depends__: [EditorActionsModule, KeyboardModule],\n __init__: [\"additionalEditorActions\", \"additionalKeyBindings\"],\n additionalEditorActions: [\"type\", AdditionalEditorActions],\n additionalKeyBindings: [\"type\", AdditionalKeyboardBindings],\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/util\";\nimport { ElementTypes } from \"../../../../../domain/entities/elementTypes\";\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 if (\n semantic.type.includes(ElementTypes.TEXTANNOTATION) &&\n element.incoming[0]\n ) {\n element.incoming[0].businessObject.pickedColor = context.newColor;\n eventBus.fire(\"element.changed\", { element: element.incoming[0] });\n }\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 if (\n semantic.type.includes(ElementTypes.TEXTANNOTATION) &&\n element.incoming[0]\n ) {\n element.incoming[0].businessObject.pickedColor = context.oldColor;\n eventBus.fire(\"element.changed\", { element: element.incoming[0] });\n }\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","import { sanitizeTextForSVGExport } from \"src/app/utils/sanitizer\";\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 sanitizeTextForSVGExport(ctx.newTitle),\n sanitizeTextForSVGExport(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 { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { getBusinessObject, is } from \"../util/util\";\n\nconst NULL_DIMENSIONS = {\n width: 0,\n height: 0,\n};\n\n/**\n * a handler that updates the text or label of an element.\n */\nexport default function UpdateLabelHandler(\n modeling,\n textRenderer,\n commandStack,\n) {\n commandStack.registerHandler(\"element.updateLabel\", handlerFunction);\n\n function handlerFunction() {\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 newBounds = ctx.newBounds;\n\n // resize text annotation to amount of text that is entered\n if (is(element, ElementTypes.TEXTANNOTATION)) {\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}\n\nfunction setText(element, text, textNumber) {\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 { assign } from \"min-dash\";\n\nimport TextUtil from \"diagram-js/lib/util/Text\";\n\nvar DEFAULT_FONT_SIZE = 12;\nvar LINE_HEIGHT_RATIO = 1.2;\n\nvar MIN_TEXT_ANNOTATION_HEIGHT = 30;\n\n/**\n * @typedef { {\n * fontFamily: string;\n * fontSize: number;\n * fontWeight: string;\n * lineHeight: number;\n * } } TextRendererStyle\n *\n * @typedef { {\n * defaultStyle?: Partial<TextRendererStyle>;\n * externalStyle?: Partial<TextRendererStyle>;\n * } } TextRendererConfig\n *\n * @typedef { import('diagram-js/lib/util/Text').TextLayoutConfig } TextLayoutConfig\n *\n * @typedef { import('diagram-js/lib/util/Types').Rect } Rect\n */\n\n/**\n * Renders text and computes text bounding boxes.\n *\n * @param {TextRendererConfig} [config]\n */\nexport default function TextRenderer(config) {\n var defaultStyle = assign(\n {\n fontFamily: \"Arial, sans-serif\",\n fontSize: DEFAULT_FONT_SIZE,\n fontWeight: \"normal\",\n lineHeight: LINE_HEIGHT_RATIO,\n },\n (config && config.defaultStyle) || {},\n );\n\n var fontSize = parseInt(defaultStyle.fontSize, 10) - 1;\n\n var externalStyle = assign(\n {},\n defaultStyle,\n {\n fontSize: fontSize,\n },\n (config && config.externalStyle) || {},\n );\n\n var textUtil = new TextUtil({\n style: defaultStyle,\n });\n\n /**\n * Get the new bounds of an externally rendered,\n * layouted label.\n *\n * @param {Rect} bounds\n * @param {string} text\n *\n * @return {Rect}\n */\n this.getExternalLabelBounds = function (bounds, text) {\n var layoutedDimensions = textUtil.getDimensions(text, {\n box: {\n width: 90,\n height: 30,\n },\n style: externalStyle,\n });\n\n // resize label shape to fit label text\n return {\n x: Math.round(bounds.x + bounds.width / 2 - layoutedDimensions.width / 2),\n y: Math.round(bounds.y),\n width: Math.ceil(layoutedDimensions.width),\n height: Math.ceil(layoutedDimensions.height),\n };\n };\n\n /**\n * Get the new bounds of text annotation.\n *\n * @param {Rect} bounds\n * @param {string} text\n *\n * @return {Rect}\n */\n this.getTextAnnotationBounds = function (bounds, text) {\n var layoutedDimensions = textUtil.getDimensions(text, {\n box: bounds,\n style: defaultStyle,\n align: \"left-top\",\n padding: 5,\n });\n\n return {\n x: bounds.x,\n y: bounds.y,\n width: bounds.width,\n height: Math.max(\n MIN_TEXT_ANNOTATION_HEIGHT,\n Math.round(layoutedDimensions.height),\n ),\n };\n };\n\n /**\n * Create a layouted text element.\n *\n * @param {string} text\n * @param {TextLayoutConfig} [options]\n *\n * @return {SVGElement} rendered text\n */\n this.createText = function (text, options) {\n return textUtil.createText(text, options || {});\n };\n\n /**\n * Get default text style.\n */\n this.getDefaultStyle = function () {\n return defaultStyle;\n };\n\n /**\n * Get the external text style.\n */\n this.getExternalStyle = function () {\n return externalStyle;\n };\n}\n\nTextRenderer.$inject = [\"config.textRenderer\"];\n","// TODO: this will not work for actors and work objects as the name of the icon is part of the type\nexport function is(element, type) {\n const bo = getBusinessObject(element);\n\n return bo && bo.type === type;\n}\n\nexport function getBusinessObject(element) {\n return (element && element.businessObject) || element;\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\nexport function isCustomIcon(icon) {\n // default icons are provided as SVG\n // custom icons are provided as \"Data URL\" with a base64-encoded image as payload\n return icon.startsWith(\"data\");\n}\n\nexport function isCustomSvgIcon(icon) {\n // default icons are provided as SVG\n // custom icons are provided as \"Data URL\" with a base64-encoded image as payload\n return icon.startsWith(\"data:image/svg\");\n}\n\n/**\n * TODO: This is copied from bpmn-js 8.8.3 and might be simplified because we only use it for rendering annotations\n * ---\n * Scales the path to the given height and width.\n * <h1>Use case</h1>\n * <p>Use case is to scale the content of elements (event, gateways) based\n * on the element bounding box's size.\n * </p>\n * <h1>Why not transform</h1>\n * <p>Scaling a path with transform() will also scale the stroke and IE does not support\n * the option 'non-scaling-stroke' to prevent this.\n * Also there are use cases where only some parts of a path should be\n * scaled.</p>\n *\n * @param {string} pathId The ID of the path.\n * @param {Object} param <p>\n * Example param object scales the path to 60% size of the container (data.width, data.height).\n * <pre>\n * {\n * xScaleFactor: 0.6,\n * yScaleFactor:0.6,\n * containerWidth: data.width,\n * containerHeight: data.height,\n * position: {\n * mx: 0.46,\n * my: 0.2,\n * }\n * }\n * </pre>\n * <ul>\n * <li>targetpathwidth = xScaleFactor * containerWidth</li>\n * <li>targetpathheight = yScaleFactor * containerHeight</li>\n * <li>Position is used to set the starting coordinate of the path. M is computed:\n * <ul>\n * <li>position.x * containerWidth</li>\n * <li>position.y * containerHeight</li>\n * </ul>\n * Center of the container <pre> position: {\n * mx: 0.5,\n * my: 0.5,\n * }</pre>\n * Upper left corner of the container\n * <pre> position: {\n * mx: 0.0,\n * my: 0.0,\n * }</pre>\n * </li>\n * </ul>\n * </p>\n *\n */\nexport function getScaledPath(param) {\n const rawPath = {\n d: \"m {mx}, {my} m 10,0 l -10,0 l 0,{e.y0} l 10,0\",\n height: 30,\n width: 10,\n heightElements: [30],\n widthElements: [10],\n };\n\n // positioning\n // compute the start point of the path\n var mx, my;\n\n if (param.abspos) {\n mx = param.abspos.x;\n my = param.abspos.y;\n } else {\n mx = param.containerWidth * param.position.mx;\n my = param.containerHeight * param.position.my;\n }\n\n var coordinates = {}; // map for the scaled coordinates\n if (param.position) {\n // path\n var heightRatio =\n (param.containerHeight / rawPath.height) * param.yScaleFactor;\n var widthRatio =\n (param.containerWidth / rawPath.width) * param.xScaleFactor;\n\n // Apply height ratio\n for (\n var heightIndex = 0;\n heightIndex < rawPath.heightElements.length;\n heightIndex++\n ) {\n coordinates[\"y\" + heightIndex] =\n rawPath.heightElements[heightIndex] * heightRatio;\n }\n\n // Apply width ratio\n for (\n var widthIndex = 0;\n widthIndex < rawPath.widthElements.length;\n widthIndex++\n ) {\n coordinates[\"x\" + widthIndex] =\n rawPath.widthElements[widthIndex] * widthRatio;\n }\n }\n\n // Apply value to raw path\n var path = format(rawPath.d, {\n mx: mx,\n my: my,\n e: coordinates,\n });\n return path;\n}\n\nfunction format(str, obj) {\n return String(str).replace(tokenRegex, function (all, key) {\n return replacer(all, key, obj);\n });\n}\n\n// copied and adjusted from https://github.com/adobe-webplatform/Snap.svg/blob/master/src/svg.js\nvar tokenRegex = /\\{([^{}]+)\\}/g,\n objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g; // matches .xxxxx or [\"xxxxx\"] to run over object properties\n\nfunction replacer(all, key, obj) {\n var res = obj;\n key.replace(\n objNotationRegex,\n function (all, name, quote, quotedName, isFunc) {\n name = name || quotedName;\n if (res) {\n if (name in res) {\n res = res[name];\n }\n typeof res == \"function\" && isFunc && (res = res());\n }\n },\n );\n res = (res == null || res == obj ? all : res) + \"\";\n\n return res;\n}\n","import BaseViewer from \"./BaseViewer\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport { assign, isArray } from \"min-dash\";\nimport inherits from \"inherits\";\n\nimport DomainStoryModule from \"./features\";\nimport LabelEditingModule from \"./features/labeling\";\nimport ModelingModule from \"./features/modeling\";\nimport { ElementTypes } from \"../../../domain/entities/elementTypes\";\n\nimport MoveCanvasModule from \"diagram-js/lib/navigation/movecanvas\";\nimport KeyboardMoveModule from \"diagram-js/lib/navigation/keyboard-move\";\nimport ZoomScrollModule from \"diagram-js/lib/navigation/zoomscroll\";\n\nimport MoveModule from \"diagram-js/lib/features/move\";\nimport Bendpoints from \"diagram-js/lib/features/bendpoints\";\nimport ConnectionPreview from \"diagram-js/lib/features/connection-preview\";\nimport CopyPasteModule from \"./features/copyPaste\";\nimport SpaceToolModule from \"diagram-js/lib/features/space-tool\";\nimport LassoToolModule from \"diagram-js/lib/features/lasso-tool\";\nimport HandToolModule from \"diagram-js/lib/features/hand-tool\";\nimport ConnectModule from \"diagram-js/lib/features/connect\";\nimport KeyboardModule from \"diagram-js/lib/features/keyboard\";\nimport EditorActionsModule from \"diagram-js/lib/features/editor-actions\";\nimport SnappingModule from \"diagram-js/lib/features/snapping\";\nimport AdditionalShortcuts from \"./features/shortcuts\";\nimport minimapModule from \"diagram-js-minimap\";\n\nexport default function DomainStoryModeler(options) {\n BaseViewer.call(this, options);\n this._elements = [];\n this._groupElements = [];\n}\n\ninherits(DomainStoryModeler, BaseViewer);\n\nDomainStoryModeler.prototype._modules = [].concat(\n [DomainStoryModule, LabelEditingModule, ModelingModule],\n [ResizeModule],\n [SpaceToolModule, LassoToolModule, HandToolModule],\n [MoveCanvasModule, KeyboardMoveModule, ZoomScrollModule], // Navigation on Canvas\n [MoveModule, Bendpoints, ConnectionPreview, CopyPasteModule, ConnectModule], // Move/Create/Alter Elements\n [KeyboardModule, EditorActionsModule, AdditionalShortcuts], // Shortcuts\n [SnappingModule], // Alignment\n [minimapModule],\n);\n\nDomainStoryModeler.prototype._createElementFromBusinessObject = function (bo) {\n let parentId = bo.parent;\n delete bo.children;\n delete bo.parent;\n this._elements.push(bo);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\");\n\n let attributes = assign({ businessObject: bo }, bo);\n let shape = elementFactory.create(\"shape\", attributes);\n\n if (isOfTypeGroup(bo)) {\n this._groupElements[bo.id] = shape;\n }\n\n if (parentId) {\n let parentShape = this._groupElements[parentId];\n\n if (isOfTypeGroup(parentShape)) {\n return canvas.addShape(shape, parentShape, parentShape.id);\n }\n }\n return canvas.addShape(shape);\n};\n\nDomainStoryModeler.prototype._addConnection = function (element) {\n this._elements.push(element);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\"),\n elementRegistry = this.get(\"elementRegistry\");\n\n let attributes = assign({ businessObject: element }, element);\n\n let connection = elementFactory.create(\n \"connection\",\n assign(attributes, {\n source: elementRegistry.get(element.source),\n target: elementRegistry.get(element.target),\n }),\n elementRegistry.get(element.source).parent,\n );\n\n return canvas.addConnection(connection);\n};\n\nDomainStoryModeler.prototype.importBusinessObjects = function (\n businessObjects,\n) {\n this.get(\"eventBus\").fire(\"diagram.clear\", {});\n this._elements = [];\n this._groupElements = [];\n\n if (!isArray(businessObjects)) {\n throw new Error(\"argument must be an array\");\n }\n\n let connections = [],\n groups = [],\n otherElementTypes = [];\n\n businessObjects.forEach(function (bo) {\n if (isOfTypeConnection(bo)) {\n connections.push(bo);\n } else if (isOfTypeGroup(bo)) {\n groups.push(bo);\n } else {\n otherElementTypes.push(bo);\n }\n });\n\n // add groups before shapes and other element types before connections so that connections\n // can already rely on the shapes being part of the diagram\n groups.forEach(this._createElementFromBusinessObject, this);\n otherElementTypes.forEach(this._createElementFromBusinessObject, this);\n connections.forEach(this._addConnection, this);\n};\n\nfunction isOfTypeConnection(element) {\n return (\n element.type === ElementTypes.ACTIVITY ||\n element.type === ElementTypes.CONNECTION\n );\n}\n\nfunction isOfTypeGroup(element) {\n return element && element.type === ElementTypes.GROUP;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n HostListener,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { SettingsService } from 'src/app/workbench/services/settings/settings.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { TitleService } from './tools/title/services/title.service';\nimport { ExportService } from './tools/export/services/export.service';\nimport { ReplayService } from './tools/replay/services/replay.service';\nimport { environment } from '../environments/environment';\nimport { ColorPickerDirective } from 'ngx-color-picker';\nimport { AutosaveService } from './tools/autosave/services/autosave.service';\nimport {\n BLACK,\n BLUE,\n CYAN,\n DARK_PINK,\n GREEN,\n GREY,\n LIGHT_PINK,\n LIME,\n ORANGE,\n PURPLE,\n RED,\n SNACKBAR_DURATION_LONG,\n SNACKBAR_INFO,\n YELLOW,\n} from './domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ModelerService } from './tools/modeler/services/modeler.service';\nimport { DirtyFlagService } from './domain/services/dirty-flag.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent implements OnInit, AfterViewInit {\n showSettings$: Observable<boolean> | BehaviorSubject<boolean>;\n showDescription$: Observable<boolean>;\n version: string = environment.version;\n color: string = BLACK;\n\n @ViewChild(ColorPickerDirective, { static: false })\n colorPicker!: ColorPickerDirective;\n\n skipNextColorUpdate = false;\n\n // define preset colors that have good contrast on white background and are compatible to EventStorming notation\n colorBox: string[] = [\n YELLOW,\n ORANGE,\n RED,\n LIGHT_PINK,\n DARK_PINK,\n PURPLE,\n BLUE,\n CYAN,\n GREEN,\n LIME,\n GREY,\n BLACK,\n ];\n\n constructor(\n private settingsService: SettingsService,\n private titleService: TitleService,\n private exportService: ExportService,\n private autosaveService: AutosaveService,\n private cd: ChangeDetectorRef,\n private snackbar: MatSnackBar,\n replayService: ReplayService,\n private modelerService: ModelerService,\n private dirtyFlagService: DirtyFlagService,\n ) {\n this.showSettings$ = new BehaviorSubject(false);\n this.showDescription$ = new BehaviorSubject(true);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n const modifierPressed = e.ctrlKey || e.metaKey;\n if (modifierPressed && e.key === 's' && !e.altKey) {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadDST();\n }\n }\n\n if (modifierPressed && e.altKey && e.key === 's') {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadSVG(true, true, undefined);\n }\n }\n if (modifierPressed && 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 replayService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.nextSentence();\n }\n if (\n (e.key === 'ArrowLeft' || e.key === 'ArrowDown') &&\n replayService.getReplayOn()\n ) {\n e.preventDefault();\n e.stopPropagation();\n replayService.previousSentence();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n this.skipNextColorUpdate = true;\n this.colorPicker.closeDialog();\n }\n });\n\n document.addEventListener('defaultColor', (event: Event) => {\n const customEvent = event as CustomEvent;\n if (customEvent.detail.color === 'black') {\n this.color = BLACK;\n } else {\n this.color = customEvent.detail.color;\n }\n });\n\n document.addEventListener('openColorPicker', () => {\n this.colorPicker.openDialog();\n });\n\n document.addEventListener('errorColoringOnlySvg', () => {\n this.snackbar.open('Only SVG icons can be colored', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_INFO,\n });\n });\n }\n\n ngOnInit(): void {\n this.modelerService.postInit();\n this.showDescription$ = this.titleService.showDescription$;\n this.showSettings$ = this.settingsService.showSettings$;\n }\n\n onColorChanged(color: string) {\n if (this.skipNextColorUpdate) {\n this.skipNextColorUpdate = false;\n return;\n }\n document.dispatchEvent(\n new CustomEvent('pickedColor', { detail: { color: color } }),\n );\n }\n\n ngAfterViewInit(): void {\n this.autosaveService.loadLatestDraft();\n this.cd.detectChanges();\n }\n\n @HostListener('window:beforeunload', ['$event'])\n onWindowClose(event: any): void {\n if (this.dirtyFlagService.dirty) {\n event.returnValue = true;\n }\n }\n}\n","<div class=\"content\" role=\"main\">\n <input\n id=\"colorPicker\"\n [style.background]=\"color\"\n [cpPresetColors]=\"colorBox\"\n [(colorPicker)]=\"color\"\n (colorPickerClose)=\"onColorChanged($event)\"\n style=\"display: none; height: 0\"\n />\n\n @if (showSettings$ | async) {\n <app-settings />\n }\n <div\n [class.headerAndCanvas]=\"\n !(showSettings$ | async) && (showDescription$ | async)\n \"\n [class.headerAndCanvasCollapsed]=\"\n !(showSettings$ | async) && !(showDescription$ | async)\n \"\n [class.hidden]=\"showSettings$ | async\"\n >\n <app-header\n [class.header]=\"showDescription$ | async\"\n [class.headerCollapsed]=\"!(showDescription$ | async)\"\n />\n <div appDrag id=\"canvas\"></div>\n </div>\n\n <div\n [class.logoContainer]=\"!(showSettings$ | async)\"\n [class.hidden]=\"showSettings$ | async\"\n >\n <span>\n <img src=\"favicon.ico\" height=\"24\" alt=\"Egon Logo\" />\n <a href=\"https://egon.io\" target=\"_blank\"> egon.io</a>\n <span>version: </span>\n <a href=\"https://egon.io/changelog\" target=\"_blank\">{{ version }}</a>\n <span>by </span>\n <img src=\"assets/logo/wps-icon.ico\" height=\"24\" alt=\"WPS Logo\" />\n <a href=\"https://www.wps.de/\" target=\"_blank\">WPS</a>\n </span>\n\n <span>\n <a href=\"https://www.wps.de/datenschutz/\" target=\"_blank\">Privacy</a>\n </span>\n\n <span>\n <a href=\"https://www.wps.de/impressum/\" target=\"_blank\">Imprint</a>\n </span>\n </div>\n</div>\n","import {\n APP_INITIALIZER,\n ApplicationRef,\n DoBootstrap,\n NgModule,\n} 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 { AppComponent } from 'src/app/app.component';\nimport { ImportDomainStoryService } from 'src/app/tools/import/services/import-domain-story.service';\nimport { LabelDictionaryService } from 'src/app/tools/label-dictionary/services/label-dictionary.service';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { IconSetImportExportService } from 'src/app/tools/icon-set-config/services/icon-set-import-export.service';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { IconDictionaryService } from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { AutosaveService } from './tools/autosave/services/autosave.service';\nimport { MaterialModule } from './material.module';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { DirtyFlagService } from './domain/services/dirty-flag.service';\nimport { IconSetChangedService } from './tools/icon-set-config/services/icon-set-customization.service';\nimport { initializeContextPadProvider } from './tools/modeler/diagram-js/features/context-pad/domainStoryContextPadProvider';\nimport { initializePalette } from './tools/modeler/diagram-js/features/palette/domainStoryPalette';\nimport { initializeRenderer } from './tools/modeler/diagram-js/features/domainStoryRenderer';\nimport { initializeLabelEditingProvider } from './tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider';\nimport { initializeReplaceOptions } from './tools/modeler/diagram-js/features/change-icon/replaceOptions';\nimport { initializeNumbering } from './tools/modeler/diagram-js/features/numbering/numbering';\nimport { initializeActivityUpdateHandler } from './tools/modeler/diagram-js/features/updateHandler/activityUpdateHandlers';\nimport { WorkbenchModule } from './workbench/presentation/workbench.module';\nimport { DomainModule } from './domain/presentation/domain.module';\nimport { AutosaveModule } from './tools/autosave/presentation/autosave.module';\nimport { ExportModule } from './tools/export/presentation/export.module';\nimport { IconSetConfigModule } from './tools/icon-set-config/presentation/icon-set-config.module';\nimport { ImportModule } from './tools/import/presentation/import.module';\nimport { LabelDictionaryModule } from './tools/label-dictionary/presentation/label-dictionary.module';\nimport { ModelerModule } from './tools/modeler/presentation/modeler.module';\nimport { TitleModule } from './tools/title/presentation/title.module';\nimport { DragDirective } from './tools/import/directive/dragDrop.directive';\n\n@NgModule({\n declarations: [AppComponent],\n imports: [\n BrowserModule,\n NoopAnimationsModule,\n MaterialModule,\n ColorPickerModule,\n WorkbenchModule,\n AutosaveModule,\n ExportModule,\n IconSetConfigModule,\n ImportModule,\n LabelDictionaryModule,\n ModelerModule,\n TitleModule,\n DomainModule,\n DragDirective,\n ],\n providers: [\n UntypedFormBuilder,\n {\n provide: MAT_CHECKBOX_DEFAULT_OPTIONS,\n useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: initialize,\n multi: true,\n deps: [\n DirtyFlagService,\n IconDictionaryService,\n IconSetImportExportService,\n ElementRegistryService,\n LabelDictionaryService,\n ],\n },\n {\n provide: IconSetChangedService,\n useExisting: ImportDomainStoryService,\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\nfunction initialize(\n dirtyFlagService: DirtyFlagService,\n iconDictionaryService: IconDictionaryService,\n importExportService: IconSetImportExportService,\n elementRegistryService: ElementRegistryService,\n labelDictionaryService: LabelDictionaryService,\n) {\n return () => {\n initializeContextPadProvider(dirtyFlagService, iconDictionaryService);\n\n initializePalette(iconDictionaryService);\n initializeRenderer(\n iconDictionaryService,\n elementRegistryService,\n dirtyFlagService,\n );\n initializeLabelEditingProvider(labelDictionaryService);\n initializeReplaceOptions(iconDictionaryService);\n initializeNumbering(elementRegistryService);\n initializeActivityUpdateHandler(elementRegistryService);\n };\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_ICON_SET_NAME = 'default';\n\n/** LocalStorage KEYS **/\nexport const ICON_SET_CONFIGURATION_KEY = 'iconSetConfiguration';\nexport const DRAFTS_KEY = 'autosaveDrafts';\nexport const VERSION_KEY = 'version';\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_DURATION_LONG = 4000;\nexport const SNACKBAR_DURATION_LONGER = 6000;\nexport const SNACKBAR_SUCCESS = 'snackbar_success';\nexport const SNACKBAR_ERROR = 'snackbar_error';\nexport const SNACKBAR_INFO = 'snackbar_info';\n\n/** COLOR PICKER DEFAULT COLORS **/\nexport const YELLOW = '#FDD835';\nexport const ORANGE = '#FB8C00';\nexport const RED = '#D32F2F';\nexport const LIGHT_PINK = '#F48FB1';\nexport const DARK_PINK = '#EC407A';\nexport const PURPLE = '#8E24AA';\nexport const BLUE = '#1E88E5';\nexport const CYAN = '#00ACC1';\nexport const GREEN = '#43A047';\nexport const LIME = '#C0CA33';\nexport const GREY = '#9E9E9E';\nexport const BLACK = '#000000';\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(entry);\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 addBuiltInIcons(builtInIcons: Dictionary): void {\n builtInIcons.entries.forEach((entry) => {\n if (!this.has(entry.key)) {\n this.entries.push(entry);\n }\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\nexport class Entry {\n value: any; // ToDo: dh, I think type of any is not a good choice. Try to figur out if we can use typed objects here.\n key: string;\n keyWords: string[];\n\n constructor(value: any, key: string, keyWords: string[] = []) {\n this.value = value;\n this.key = key;\n this.keyWords = keyWords;\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}\n\nexport namespace ElementTypes {\n export function getIconId(type: string): string {\n if (type.startsWith(ElementTypes.ACTOR)) {\n return type.replace(ElementTypes.ACTOR, '');\n } else if (type.startsWith(ElementTypes.WORKOBJECT)) {\n return type.replace(ElementTypes.WORKOBJECT, '');\n }\n return '';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../material.module';\nimport { KeyboardShortcutsDialogComponent } from './keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component';\n\n@NgModule({\n declarations: [KeyboardShortcutsDialogComponent],\n exports: [KeyboardShortcutsDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class DomainModule {}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport {\n ShortcutDialogData,\n ShortCut,\n} from '../../../entities/shortcut-dialog-data';\n\n@Component({\n selector: 'app-keyboard-shortcuts-dialog',\n templateUrl: './keyboard-shortcuts-dialog.component.html',\n styleUrl: './keyboard-shortcuts-dialog.component.scss',\n})\nexport class KeyboardShortcutsDialogComponent {\n title: string;\n shortCuts: ShortCut[] = [];\n\n constructor(@Inject(MAT_DIALOG_DATA) data: ShortcutDialogData) {\n this.title = data.title;\n this.shortCuts = data.shortCuts ?? [];\n }\n}\n","<mat-dialog-content class=\"content\">\n <h2 id=\"info-dialog-title\">{{ title }}</h2>\n\n @for (shortCut of shortCuts; track shortCut.description) {\n <div class=\"row\">\n <span class=\"description-width\">{{ shortCut.description }}:</span>\n <span>{{ shortCut.shortCut }}</span>\n </div>\n }\n</mat-dialog-content>\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';\nimport { KeyboardShortcutsDialogComponent } from '../presentation/keyboard-shortcuts-dialog/keyboard-shortcuts/keyboard-shortcuts-dialog.component';\nimport { ShortCut, ShortcutDialogData } from '../entities/shortcut-dialog-data';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private matDialog: MatDialog) {}\n\n openDialog(dialog: ComponentType<any>, config: MatDialogConfig): void {\n this.matDialog.open(dialog, config);\n }\n\n openKeyboardShortcutsDialog(): void {\n const shortCuts: ShortCut[] = [];\n shortCuts.push({ description: 'Undo', shortCut: 'ctrl + Z' });\n shortCuts.push({\n description: 'Redo',\n shortCut: 'ctrl + Y OR ctrl + shift + Z',\n });\n shortCuts.push({ description: 'Select All', shortCut: 'ctrl + A' });\n shortCuts.push({ description: 'Export as EGN', shortCut: 'ctrl + S' });\n shortCuts.push({\n description: 'Export as SVG',\n shortCut: 'ctrl + alt + S',\n });\n shortCuts.push({\n description: 'Import Domain Story',\n shortCut: 'ctrl + L',\n });\n shortCuts.push({ description: 'Search for text', shortCut: 'ctrl + F' });\n shortCuts.push({ description: 'Direct editing', shortCut: 'E' });\n shortCuts.push({ description: 'Hand tool', shortCut: 'H' });\n shortCuts.push({ description: 'Lasso tool', shortCut: 'L' });\n shortCuts.push({ description: 'Space tool', shortCut: 'S' });\n\n const config = new MatDialogConfig();\n\n config.data = {\n title: 'Keyboard Shortcuts',\n shortCuts: shortCuts,\n };\n\n this.openDialog(KeyboardShortcutsDialogComponent, 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<boolean>(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';\n\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { CanvasObject } from 'src/app/domain/entities/canvasObject';\nimport { GroupCanvasObject } from '../entities/groupCanvasObject';\nimport { ActivityCanvasObject } from '../entities/activityCanvasObject';\nimport { UsedIconList } from 'src/app/domain/entities/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 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\n const seenIds = new Set<string>();\n\n return groupObjects.filter((groupObject) => {\n const isNewId = !seenIds.has(groupObject.id);\n if (isNewId) {\n seenIds.add(groupObject.id);\n }\n return isNewId;\n });\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\n // sort by activityBusinessObject number\n activitiesFromActors.sort(\n (\n activityCanvasA: ActivityCanvasObject,\n activityCanvasB: ActivityCanvasObject,\n ) => {\n const activityNumberA = Number(activityCanvasA.businessObject.number);\n const activityNumberB = Number(activityCanvasB.businessObject.number);\n\n return activityNumberA - activityNumberB;\n },\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 } from '@angular/core';\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","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","import { Component } from '@angular/core';\nimport { AutosaveConfigurationService } from '../../services/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/entities/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","@if (autosaveConfiguration.configuration$ | async; as configuration) {\n <div class=\"header\">\n <div class=\"content\">\n <div class=\"heading\">Autosave Options</div>\n <div class=\"option\">\n <input #activated type=\"checkbox\" [checked]=\"configuration.activated\" />\n Enabled\n </div>\n\n <div class=\"option\">\n <mat-form-field color=\"accent\">\n <mat-label>Interval [seconds]</mat-label>\n <input\n matInput\n #interval\n class=\"numberInput\"\n min=\"1\"\n type=\"number\"\n [value]=\"configuration.interval\"\n />\n </mat-form-field>\n </div>\n <div class=\"option\">\n <mat-form-field color=\"accent\">\n <mat-label>Keep last X drafts</mat-label>\n <input\n matInput\n #drafts\n class=\"numberInput\"\n min=\"1\"\n type=\"number\"\n [value]=\"configuration.maxDrafts\"\n />\n </mat-form-field>\n </div>\n <div class=\"option\">\n <span class=\"spacer\"></span>\n\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"save(activated.checked, +drafts.value, +interval.value)\"\n >\n Apply\n </button>\n </div>\n </div>\n </div>\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","<div class=\"content\">\n <app-autosaved-drafts />\n <app-autosave-options />\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { AutosaveService } from '../../services/autosave.service';\nimport { Draft } from '../../domain/draft';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_SUCCESS,\n} from 'src/app/domain/entities/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","<div class=\"header\">\n <div class=\"history\">\n {{ drafts.length ? drafts.length : \"no\" }}\n {{ drafts.length > 1 ? \"drafts\" : \"draft\" }} saved\n </div>\n <span class=\"spacer\"></span>\n <div class=\"buttons\">\n <button\n mat-stroked-button\n class=\"mr-1\"\n [disabled]=\"!drafts.length\"\n (click)=\"removeAllDrafts()\"\n >\n Remove all drafts\n </button>\n </div>\n</div>\n@if (drafts.length) {\n <mat-list>\n @for (draft of drafts; track draft) {\n <mat-list-item>\n <div class=\"draft\">\n <div class=\"item-title\">{{ draft.title }}</div>\n <div class=\"item-date\">{{ draft.date }}</div>\n <button mat-stroked-button (click)=\"loadDraft(draft)\">\n Load draft\n </button>\n </div>\n </mat-list-item>\n }\n </mat-list>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AutosaveSettingsComponent } from './AutosaveSettings/autosave-settings.component';\nimport { AutosaveOptionsComponent } from './AutosaveOptions/autosave-options.component';\nimport { AutosavedDraftsComponent } from './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 AutosaveModule {}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport { AutosaveConfiguration } from '../domain/autosave-configuration';\nimport {\n DEFAULT_AUTOSAVES_MAX_DRAFTS,\n DEFAULT_AUTOSAVES_ENABLED,\n DEFAULT_AUTOSAVES_INTERVAL,\n} from 'src/app/domain/entities/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<AutosaveConfiguration>(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 '../../modeler/services/renderer.service';\nimport { ExportService } from '../../export/services/export.service';\nimport { Draft } from '../domain/draft';\nimport { AutosaveConfigurationService } from './autosave-configuration.service';\nimport { IconDictionaryService } from '../../icon-set-config/services/icon-dictionary.service';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport { TitleService } from '../../title/services/title.service';\nimport { AutosaveConfiguration } from '../domain/autosave-configuration';\nimport { Subject } from 'rxjs';\nimport {\n DRAFTS_KEY,\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { IconSetImportExportService } from '../../icon-set-config/services/icon-set-import-export.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveService {\n private autosaveTimer: any;\n autosavedDraftsChanged$ = new Subject<void>();\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 private iconSetConfigurationService: IconSetImportExportService,\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 =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\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, config, false);\n }\n\n removeAllDrafts() {\n this.storageService.set(DRAFTS_KEY, []);\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 const configAndDST = draft.configAndDST ?? { dst: '[]' };\n return (\n draft.title === INITIAL_TITLE &&\n draft.description === INITIAL_DESCRIPTION &&\n JSON.parse(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_KEY, drafts);\n }\n\n private readDrafts(): Draft[] {\n return this.storageService.get(DRAFTS_KEY) ?? [];\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","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 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\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path d=\\\\\"M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\\\\\"/>' +\n '<path d=\\\\\"M0 0h24v24H0z\\\\\" fill=\\\\\"none\\\\\"/></svg>\",' +\n '\"Group\":\"<svg xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\" width=\\\\\"48\\\\\" height=\\\\\"48\\\\\" viewBox=\\\\\"0 0 24 26\\\\\">' +\n '<path d=\\\\\"M0 0h24v24H0z\\\\\" fill=\\\\\"none\\\\\"/>' +\n '<path d=\\\\\"M16.5 13c-1.2 0-3.07.34-4.5 1-1.43-.67-3.3-1-4.5-1C5.33 13 1 14.08 1 16.25V19h22v-2.75c0-2.17-4.33-3.25-6.5-3.25zm-4 4.5h-10v-1.25c0-.54 2.56-1.75 5-1.75s5 1.21 5 1.75v1.25zm9 0H14v-1.25c0-.46-.2-.86-.52-1.22.88-.3 1.96-.53 3.02-.53 2.44 0 5 1.21 5 1.75v1.25zM7.5 12c1.93 0 3.5-1.57 3.5-3.5S9.43 5 7.5 5 4 6.57 4 8.5 5.57 12 7.5 12zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 5.5c1.93 0 3.5-1.57 3.5-3.5S18.43 5 16.5 5 13 6.57 13 8.5s1.57 3.5 3.5 3.5zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z\\\\\"/></svg>\",' +\n '\"System\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path d=\\\\\"M20,18c1.1,0,2-0.9,2-2V6c0-1.1-0.9-2-2-2H4C2.9,4,2,4.9,2,6v10c0,1.1,0.9,2,2,2H0v2h24v-2H20z M4,6h16v10H4V6z\\\\\"/></svg>\"},' +\n '\"workObjects\":{\"Document\":\"<svg xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\" width=\\\\\"24\\\\\" height=\\\\\"24\\\\\" viewBox=\\\\\"0 0 24 26\\\\\">' +\n '<path fill=\\\\\"none\\\\\" d=\\\\\"M0 0h24v24H0V0z\\\\\"/><path d=\\\\\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\\\\\"/></svg>\",' +\n '\"Folder\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path fill=\\\\\"none\\\\\" d=\\\\\"M0,0h24v24H0V0z\\\\\"/>' +\n '<path d=\\\\\"M9.17,6l2,2H20v10L4,18V6H9.17 M10,4H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8c0-1.1-0.9-2-2-2 h-8L10,4L10,4z\\\\\"/></svg>\",' +\n '\"Call\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path fill=\\\\\"none\\\\\" d=\\\\\"M0,0h24v24H0V0z\\\\\"/><path d=\\\\\"M6.54,5C6.6,5.89,6.75,6.76,6.99,7.59l-1.2,1.2C5.38,7.59,5.12,6.32,5.03,5H6.54 M16.4,17.02c0.85,0.24,1.72,0.39,2.6,0.45 v1.49c-1.32-0.09-2.59-0.35-3.8-0.75L16.4,17.02 M7.5,3H4C3.45,3,3,3.45,3,4c0,9.39,7.61,17,17,17c0.55,0,1-0.45,1-1v-3.49\\\\tc0-0.55-0.45-1-1-1c-1.24,0-2.45-0.2-3.57-0.57c-0.1-0.04-0.21-0.05-0.31-0.05c-0.26,0-0.51,0.1-0.71,0.29l-2.2,2.2 c-2.83-1.45-5.15-3.76-6.59-6.59l2.2-2.2C9.1,8.31,9.18,7.92,9.07,7.57C8.7,6.45,8.5,5.25,8.5,4C8.5,3.45,8.05,3,7.5,3L7.5,3z\\\\\"/></svg>\",' +\n '\"Email\":\"<svg viewBox=\\\\\"0 0 24 26\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\"><path fill=\\\\\"none\\\\\" d=\\\\\"M0,0h24v24H0V0z\\\\\"/>' +\n '<path fill-opacity=\\\\\"0.9\\\\\" d=\\\\\"M12,1.95c-5.52,0-10,4.48-10,10s4.48,10,10,10h5v-2h-5c-4.34,0-8-3.66-8-8s3.66-8,8-8s8,3.66,8,8v1.43 c0,0.79-0.71,1.57-1.5,1.57S17,14.17,17,13.38v-1.43c0-2.76-2.24-5-5-5s-5,2.24-5,5s2.24,5,5,5c1.38,0,2.64-0.56,3.54-1.47 c0.65,0.89,1.77,1.47,2.96,1.47c1.97,0,3.5-1.6,3.5-3.57v-1.43C22,6.43,17.52,1.95,12,1.95z M12,14.95c-1.66,0-3-1.34-3-3 s1.34-3,3-3s3,1.34,3,3S13.66,14.95,12,14.95z\\\\\"/></svg>\",' +\n '\"Conversation\":\"<svg height=\\\\\"48\\\\\" viewBox=\\\\\"0 0 24 26\\\\\" width=\\\\\"48\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\">' +\n '<path d=\\\\\"M0 0h24v24H0V0z\\\\\" fill=\\\\\"none\\\\\"/><path d=\\\\\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\\\\\"/></svg>\",' +\n '\"Info\":\"<svg height=\\\\\"48\\\\\" viewBox=\\\\\"0 0 24 26\\\\\" width=\\\\\"48\\\\\" xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\"><path d=\\\\\"M0 0h24v24H0z\\\\\" fill=\\\\\"none\\\\\"/>' +\n '<path d=\\\\\"M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z\\\\\"/>' +\n '</svg>\"}}',\n ),\n dst:\n '[' +\n '{\"type\":\"domainStory:workObjectDocument\",\"name\":\"\",\"id\":\"shape_3792\",\"pickedColor\":\"black\",\"x\":302,\"y\":102},' +\n '{\"type\":\"domainStory:actorPerson\",\"name\":\"\",\"id\":\"shape_4666\",\"pickedColor\":\"black\",\"x\":103,\"y\":93},' +\n '{\"type\":\"domainStory:activity\",\"name\":\"\",\"id\":\"connection_4884\",\"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;\nexport const DEFAULT_PADDING = 15;\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { ExportDialogData } from 'src/app/tools/export/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<boolean>;\n useWhiteBackground: BehaviorSubject<boolean>;\n isAnimatedSvgExport: boolean = false;\n animationSpeed: number = 2;\n\n constructor(\n private dialogRef: MatDialogRef<ExportDialogComponent>,\n @Inject(MAT_DIALOG_DATA) data: ExportDialogData,\n ) {\n this.withTitle = new BehaviorSubject<boolean>(true);\n this.useWhiteBackground = new BehaviorSubject<boolean>(true);\n this.title = data.title;\n this.options = data.options;\n }\n\n ngOnInit(): void {}\n\n doOption(i: number): void {\n if (this.isAnimatedSvgExport) {\n this.options[i].fn(\n this.withTitle.value,\n this.useWhiteBackground.value,\n this.animationSpeed,\n );\n } else {\n this.options[i].fn(this.withTitle.value, this.useWhiteBackground.value);\n }\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 onExportAnimatedSvg(): void {\n this.isAnimatedSvgExport = !this.isAnimatedSvgExport;\n }\n}\n","<mat-dialog-content>\n <h1>{{ title }}</h1>\n <div class=\"card\">\n <span>Options for image export:</span>\n <label class=\"row\">\n <input\n type=\"checkbox\"\n [checked]=\"withTitle | async\"\n (change)=\"updateWithTitle($event)\"\n />\n Add title and description to image\n </label>\n <label class=\"row\">\n <input\n type=\"checkbox\"\n [checked]=\"useWhiteBackground | async\"\n (change)=\"updateUseWhiteBackground($event)\"\n />\n Add white background to SVG (default: transparent)\n </label>\n <div class=\"row\">\n <input type=\"checkbox\" [(ngModel)]=\"isAnimatedSvgExport\" />\n <span (click)=\"onExportAnimatedSvg()\">Animated SVG</span>\n @if (isAnimatedSvgExport) {\n <span> - animation speed:</span>\n <input\n class=\"number-input\"\n [(ngModel)]=\"animationSpeed\"\n [max]=\"9\"\n [min]=\"1\"\n [maxLength]=\"1\"\n oninput=\"this.value = this.value.replace(/[^1-9]/g, '');\"\n />\n <span (click)=\"onExportAnimatedSvg()\">seconds</span>\n }\n </div>\n </div>\n</mat-dialog-content>\n<br />\n<br />\n<mat-dialog-actions>\n <div>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n @for (option of options; track option; let i = $index) {\n <button\n mat-stroked-button\n class=\"mr-1\"\n [title]=\"option.tooltip\"\n (click)=\"doOption(i)\"\n >\n {{ option.text }}\n </button>\n }\n </div>\n</mat-dialog-actions>\n","import { ExportDialogComponent } from './export-dialog/export-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [ExportDialogComponent],\n exports: [ExportDialogComponent],\n imports: [CommonModule, MaterialModule, FormsModule],\n})\nexport class ExportModule {}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { IconSetImportExportService } from 'src/app/tools/icon-set-config/services/icon-set-import-export.service';\nimport { sanitizeForDesktop } from 'src/app/utils/sanitizer';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\nimport { ConfigAndDST } from 'src/app/tools/export/domain/export/configAndDst';\nimport { DirtyFlagService } from 'src/app/domain/services/dirty-flag.service';\nimport { PngService } from 'src/app/tools/export/services/png.service';\nimport { SvgService } from 'src/app/tools/export/services/svg.service';\nimport { Subscription } from 'rxjs';\nimport { RendererService } from '../../modeler/services/renderer.service';\nimport { HtmlPresentationService } from './html-presentation.service';\nimport { formatDate } from '@angular/common';\nimport { environment } from '../../../../environments/environment';\nimport {\n ExportDialogData,\n ExportOption,\n} from '../domain/dialog/exportDialogData';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ExportDialogComponent } from '../presentation/export-dialog/export-dialog.component';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\nimport { ModelerService } from '../../modeler/services/modeler.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { BusinessObject } from '../../../domain/entities/businessObject';\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 importExportService: IconSetImportExportService,\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 private modelerService: ModelerService,\n private dialogService: DialogService,\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 isDomainStoryExportable(): boolean {\n return this.rendererService.getStory().length >= 1;\n }\n\n createConfigAndDST(DomainStory: any): ConfigAndDST {\n return new ConfigAndDST(\n this.importExportService.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(\n withTitle: boolean,\n useWhiteBackground: boolean,\n animationSpeed: number | undefined,\n ): 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 animationSpeed,\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(modeler: any): void {\n const filename = sanitizeForDesktop(\n this.title + '_' + this.getCurrentDateString(),\n );\n this.htmlPresentationService\n .downloadHTMLPresentation(filename, modeler)\n .then();\n }\n\n private getStoryForDownload(): unknown[] {\n let story = this.rendererService\n .getStory()\n .sort((objA: BusinessObject, objB: BusinessObject) => {\n if (objA.id !== undefined && objB.id !== undefined) {\n return objA.id.localeCompare(objB.id);\n } else {\n return 0;\n }\n }) 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 openDownloadDialog() {\n if (this.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 (\n withTitle: boolean,\n useWhiteBackground: boolean,\n animationSpeed: number | undefined,\n ) => this.downloadSVG(withTitle, useWhiteBackground, animationSpeed),\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.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.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.downloadHTMLPresentation(this.modelerService.getModeler()),\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","import { Injectable } from '@angular/core';\nimport { sanitizeForDesktop } from '../../../utils/sanitizer';\nimport { ReplayService } from '../../replay/services/replay.service';\n// @ts-ignore\nimport doT from 'dot';\nimport { TitleService } from '../../title/services/title.service';\nimport { StoryCreatorService } from '../../replay/services/story-creator.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 private storyCreatorService: StoryCreatorService,\n ) {}\n\n private multiplexSecret: any;\n private multiplexId: any;\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(\n filename: string,\n modeler: any,\n ): Promise<void> {\n const svgData = [];\n // export all sentences of domain story\n this.replayService.startReplay();\n try {\n const result = await modeler.saveSVG({});\n this.fixActivityMarkersForEachSentence(\n result,\n this.replayService.getCurrentSentenceNumber(),\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.getCurrentSentenceNumber() <\n this.replayService.getMaxSentenceNumber()\n ) {\n this.replayService.nextSentence();\n try {\n const result = await modeler.saveSVG({});\n this.fixActivityMarkersForEachSentence(\n result,\n this.replayService.getCurrentSentenceNumber(),\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('</ script', '</script');\n }\n\n // tslint:disable-next-line:align\n private static createSVGData(svg: any): string {\n let data = structuredClone(svg);\n\n // to ensure that the title and description are inside the SVG container and do not overlap with any elements,\n // we change the confines of the SVG viewbox\n let viewBoxIndex = data.indexOf('width=\"');\n\n const viewBox = HtmlPresentationService.viewBoxCoordinates(data);\n\n let xLeft: number;\n let width: number;\n let yUp: number;\n let height: number;\n const splitViewBox = viewBox.split(/\\s/);\n\n xLeft = +splitViewBox[0];\n yUp = +splitViewBox[1];\n width = +splitViewBox[2];\n height = +splitViewBox[3];\n\n if (width < 300) {\n width += 300;\n }\n\n const dataStart = data.substring(0, viewBoxIndex);\n viewBoxIndex = data.indexOf('\" version');\n const dataEnd = data.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n data = dataStart + this.createBounds(xLeft, yUp, width, height) + dataEnd;\n\n return encodeURIComponent(data);\n }\n\n private static createBounds(\n xLeft: number,\n yUp: number,\n width: number,\n height: number,\n ) {\n return (\n 'width=\"100%\"' +\n ' height=\"100%\" ' +\n ' preserveAspectRatio=\"xMidYMid meet\"' +\n ' viewBox=\"' +\n xLeft +\n ' ' +\n yUp +\n ' ' +\n (xLeft + width) +\n ' ' +\n (yUp + height)\n );\n }\n\n /**\n * There is a Problem in the HTML-Presentation, where the Arrow-Heads of the Activities are not shown after the 4th sentence\n * This is due to the fact, that the marker for the Arrow-Head is defined in each sentence with the same ID\n * When the 5th sentence is reached, the first marker is set to display none, which propagates to all other markers\n *\n * To fix this, for each sentence the marker and its references are renamed\n */\n private fixActivityMarkersForEachSentence(\n result: { svg: string },\n sectionIndex: number,\n ): void {\n const defs = result.svg.substring(\n result.svg.indexOf('<defs>'),\n result.svg.indexOf('</defs>') + 7,\n );\n const split = defs.split('<marker ');\n\n let newDefs = split[0];\n\n for (let i = 1; i < split.length; i++) {\n const ids = split[i].match(/(id=\"[^\"]*\")/g);\n ids?.forEach((id) => {\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 += '<marker display= \"block !important\"; ' + split[i];\n }\n\n result.svg = result.svg.replace(defs, newDefs);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { createTitleAndDescriptionSVGElement } from 'src/app/tools/export/services/exportUtil';\nimport { BrowserSpecs } from 'src/app/tools/export/domain/export/browserSpecs';\nimport { Box } from 'src/app/tools/export/domain/export/box';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PngService {\n private width: number;\n private height: number;\n\n constructor() {\n this.width = 0;\n this.height = 0;\n }\n\n private browserSpecs(): BrowserSpecs {\n const ua = navigator.userAgent;\n let tem;\n let M =\n ua.match(\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i,\n ) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return { name: 'IE', version: tem[1] || '' };\n }\n if (M[1] === 'Chrome') {\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem != null) {\n return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\n }\n }\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n // tslint:disable-next-line:no-conditional-assignment\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n M.splice(1, 1, tem[1]);\n }\n return { name: M[0], version: M[1] };\n }\n\n /** Needed for an SVG-Fix in CHrome where the # needs to be replaced by %23 **/\n URIHashtagFix(svg: string): string {\n let fix = false;\n\n const browser = this.browserSpecs();\n\n const name = browser.name;\n const version = parseInt(browser.version);\n\n // only implemented in chrome and firefox at the moment\n if (name.includes('Chrome')) {\n if (version >= 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(\n svg: HTMLElement,\n includeSpaceForDescription: boolean,\n ): 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 // we need to adjust yUp to have space for the description if necessary\n if (includeSpaceForDescription) {\n yUp -= 75;\n }\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(\n layerBase,\n description === undefined,\n );\n let viewBoxIndex = svg.indexOf('width=\"');\n\n this.calculateWidthAndHeight(box);\n\n const { insertText, dynamicHeightOffset } =\n createTitleAndDescriptionSVGElement(\n 0,\n title,\n description,\n box.xLeft + 10,\n box.yUp + 20,\n this.width,\n );\n if (withTitle) {\n this.height += dynamicHeightOffset;\n }\n\n const bounds = this.createBounds(box, withTitle ? dynamicHeightOffset : 0);\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('<g class=\"viewport\">') + 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/tools/export/domain/export/configAndDst';\nimport { createTitleAndDescriptionSVGElement } from 'src/app/tools/export/services/exportUtil';\nimport { ModelerService } from '../../modeler/services/modeler.service';\nimport {\n DEFAULT_PADDING,\n TEXTSPAN_TITLE_HEIGHT,\n} from '../domain/export/exportConstants';\nimport { StoryCreatorService } from '../../replay/services/story-creator.service';\nimport { StorySentence } from '../../replay/domain/storySentence';\nimport { sanitizeTextForSVGExport } from 'src/app/utils/sanitizer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SvgService {\n private cacheData = '';\n\n constructor(\n private modelerService: ModelerService,\n private storyCreatorService: StoryCreatorService,\n ) {}\n\n createSVGData(\n title: string,\n description: string,\n dst: ConfigAndDST,\n withTitle: boolean,\n useWhiteBackground: boolean,\n animationSpeed?: number,\n ): string {\n this.cacheData = this.modelerService.getEncoded();\n\n let domainStorySvg = structuredClone(this.cacheData);\n\n if (animationSpeed) {\n domainStorySvg = this.createAnimatedSvg(domainStorySvg, animationSpeed);\n }\n\n let viewBoxIndex = domainStorySvg.indexOf('width=\"');\n\n let { width, height, viewBox } = this.viewBoxCoordinates(domainStorySvg);\n\n // The value of the viewBox attribute is a list of four numbers separated by whitespace\n // and/or a comma: min-x, min-y, width, and height. min-x and min-y represent the smallest\n // X and Y coordinates that the viewBox may have (the origin coordinates of the viewBox)\n // and the width and height specify the viewBox size. The resulting viewBox is a\n // rectangle in user space mapped to the bounds of the viewport of an SVG element.\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox\n\n let min_x: number;\n let viewBoxWidth: number;\n let min_y: number;\n let viewBoxHeight: number;\n const splitViewBox = viewBox.split(/\\s/);\n\n min_x = +splitViewBox[0];\n min_y = +splitViewBox[1];\n viewBoxWidth = +splitViewBox[2];\n viewBoxHeight = +splitViewBox[3];\n\n // Set minimum width to ensure title and description are displayed reasonably\n if (viewBoxWidth < 300) {\n viewBoxWidth += 300;\n width += 300;\n }\n\n const { insertText, dynamicHeightOffset } =\n createTitleAndDescriptionSVGElement(\n 0,\n title,\n description,\n min_x,\n min_y,\n width,\n );\n\n const bounds = this.createBounds(\n width,\n height,\n min_x,\n min_y,\n viewBoxWidth,\n viewBoxHeight,\n withTitle,\n dynamicHeightOffset,\n );\n\n const dataStart = domainStorySvg.substring(0, viewBoxIndex);\n viewBoxIndex = domainStorySvg.indexOf('\" version');\n\n const dataEnd = domainStorySvg.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n domainStorySvg = dataStart + bounds + dataEnd;\n\n const insertIndex = this.findIndexToInsertData(domainStorySvg);\n\n if (withTitle) {\n domainStorySvg =\n domainStorySvg.slice(0, insertIndex) +\n insertText +\n domainStorySvg.slice(insertIndex);\n }\n\n if (useWhiteBackground) {\n const svgIndex = domainStorySvg.indexOf('width=\"');\n const backgroundColorWhite = 'style=\"background-color:white\" ';\n domainStorySvg =\n domainStorySvg.slice(0, svgIndex) +\n backgroundColorWhite +\n domainStorySvg.slice(svgIndex);\n }\n\n return this.appendDST(domainStorySvg, dst);\n }\n\n private createAnimatedSvg(\n domainStorySvg: string,\n animationSpeed: number = 2,\n ) {\n const story: StorySentence[] =\n this.storyCreatorService.traceActivitiesAndCreateStory();\n const usedElementId: string[] = [];\n const storyLength = story.length;\n const visibleTimeInPercent = Math.floor(100 / storyLength);\n const durationOfAnimation = storyLength * animationSpeed;\n let sentenceCounter = 1;\n let currentVisibleTimeInPercent = visibleTimeInPercent;\n let previousVisibleTimeInPercent = visibleTimeInPercent;\n story.forEach((sentence) => {\n const objects = sentence.objects.filter(\n (it) => !usedElementId.includes(it.id),\n );\n objects.forEach((objectId) => {\n usedElementId.push(objectId.id);\n const idIndex = domainStorySvg.indexOf(objectId.id);\n const insertIdIndex = domainStorySvg.indexOf('>', idIndex);\n domainStorySvg = `${domainStorySvg.slice(0, insertIdIndex)} id=\"group${sentenceCounter}\" ${domainStorySvg.slice(insertIdIndex)}`;\n\n const index = domainStorySvg.indexOf(objectId.id);\n const insertIndex = domainStorySvg.indexOf('>', index) + 1;\n if (sentenceCounter > 1) {\n domainStorySvg = `${domainStorySvg.slice(0, insertIndex)}\n <style>\n #group${sentenceCounter} {\n opacity: 0;\n animation: visibilityControl${sentenceCounter} ${durationOfAnimation}s infinite;\n }\n @keyframes visibilityControl${sentenceCounter} {\n ${previousVisibleTimeInPercent - 1}% { opacity: 0; } /* Initially invisible */\n ${previousVisibleTimeInPercent}% { opacity: 1; } /* Starts becoming visible */\n 98% { opacity: 1; } /* Stays visible */\n 99% { opacity: 0; } /* Starts disappearing */\n 100% { opacity: 0; } /* Fully invisible */\n }\n </style> ${domainStorySvg.slice(insertIndex)}`;\n }\n });\n sentenceCounter += 1;\n previousVisibleTimeInPercent = currentVisibleTimeInPercent;\n currentVisibleTimeInPercent = visibleTimeInPercent * sentenceCounter;\n });\n return domainStorySvg;\n }\n\n private findIndexToInsertData(data: string) {\n let insertIndex = data.indexOf('</defs>');\n if (insertIndex < 0) {\n insertIndex = data.indexOf('version=\"1.1\">') + 14; // diagram-js exports SVG v. 1.1\n } else {\n insertIndex += 7;\n }\n return insertIndex;\n }\n\n private createBounds(\n width: number,\n height: number,\n min_x: number,\n min_y: number,\n viewBoxWidth: number,\n viewBoxHeight: number,\n withTitle: boolean,\n dynamicHeightOffset: number,\n ): string {\n height = withTitle\n ? height + dynamicHeightOffset + TEXTSPAN_TITLE_HEIGHT\n : height;\n min_x = min_x - DEFAULT_PADDING;\n min_y = withTitle\n ? min_y - dynamicHeightOffset - TEXTSPAN_TITLE_HEIGHT\n : min_y;\n viewBoxHeight = withTitle\n ? viewBoxHeight +\n dynamicHeightOffset +\n TEXTSPAN_TITLE_HEIGHT +\n DEFAULT_PADDING\n : viewBoxHeight;\n viewBoxWidth = viewBoxWidth + DEFAULT_PADDING;\n\n return `width=\"${width}\" height=\"${height}\" viewBox=\"${min_x} ${min_y} ${viewBoxWidth} ${viewBoxHeight}`;\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<!-- <DST>\\n' +\n sanitizeTextForSVGExport(JSON.stringify(dst, null, 2)) +\n '\\n </DST> -->';\n return data;\n }\n}\n","import { Dictionary, Entry } from 'src/app/domain/entities/dictionary';\nexport let customIcons = new Dictionary();\n\nconst people = [\n 'person',\n 'group',\n 'team',\n 'community',\n 'actor',\n 'collective',\n 'account circle',\n 'avatar',\n 'identity',\n 'user',\n 'network',\n 'profile',\n 'contacts',\n];\nconst animal = ['animal', 'pet', 'companion', 'friend'];\nconst vehicle = [\n 'car',\n 'vehicle',\n 'bus',\n 'truck',\n 'train',\n 'motorcycle',\n 'taxi',\n 'bike',\n 'spaceship',\n 'rocket',\n];\nconst airport = [\n 'plane',\n 'airport',\n 'take off',\n 'landing',\n 'departure',\n 'arriving',\n 'destination',\n 'launch',\n 'flight',\n 'space',\n 'science',\n];\nconst driving = [\n 'traffic',\n 'walk',\n 'running',\n 'commute',\n 'traffic jam',\n 'traffic lights',\n 'crosswalk',\n 'move',\n];\nconst print = [\n 'media',\n 'pc',\n 'computer',\n 'update',\n 'ink',\n 'photo',\n 'print',\n 'draft',\n 'office',\n 'attach',\n 'edit',\n 'pencil',\n 'pdf',\n 'jpeg',\n 'pdf to image',\n 'picture as pdf',\n 'print to pdf',\n 'picture in picture',\n 'portrait',\n];\nconst calling = [\n 'mobile',\n 'cellphone',\n 'e-mail',\n 'microphone',\n 'message',\n 'content',\n 'contact',\n 'letter',\n 'sms',\n 'communication',\n 'letter',\n 'notification',\n 'inbox',\n 'send',\n 'incoming',\n 'attachments',\n];\nconst computer = [\n 'system',\n 'security',\n 'search',\n 'desktop',\n 'dashboard',\n 'update',\n 'computer',\n 'pc',\n 'signal',\n 'wifi',\n 'wi-fi',\n 'tablet',\n];\nconst speaker = [\n 'head',\n 'sound',\n 'microphone',\n 'acoustic',\n 'speaker',\n 'speak',\n 'noise',\n 'speaker',\n 'speaker phone',\n];\n\nconst legalSystem = [\n 'judge',\n 'justice',\n 'legal',\n 'court',\n 'hammer',\n 'judgment',\n 'lawyer',\n 'trial',\n 'ruling',\n 'judicial',\n 'sentence',\n 'authority',\n 'auction',\n 'legal system',\n 'courtroom',\n 'building',\n 'attorney',\n 'witness',\n 'honor',\n 'jury',\n];\n\nconst infoDialogs = [\n 'bug',\n 'alert',\n 'error',\n 'issue',\n 'warning',\n 'danger',\n 'risk',\n 'trouble',\n 'failure',\n 'broken',\n 'critical',\n 'caution',\n 'conflict',\n 'problem',\n 'info',\n];\n\nconst finance = [\n 'money',\n 'symbol',\n 'cash',\n 'currency',\n 'coin',\n 'sign',\n 'payment',\n 'funds',\n 'economy',\n 'investment',\n 'banking',\n 'finance',\n 'euro',\n 'dollar',\n 'credit-card',\n 'master',\n 'visa',\n];\n\nconst times = [\n 'clock',\n 'time',\n 'timer',\n 'smartwatch',\n 'hour',\n 'minute',\n 'second',\n 'stopwatch',\n 'countdown',\n 'clockwise',\n 'counter clockwise',\n 'schedule',\n 'alarm',\n 'snooze',\n 'devices',\n];\n\nconst rating = [\n 'star',\n 'grade',\n 'thumb up',\n 'bookmark',\n 'label',\n 'book',\n 'hart plus',\n 'added',\n 'more',\n 'shortcut',\n 'rate',\n 'grading',\n 'credits',\n 'check',\n 'like',\n 'feature',\n 'priority',\n 'loved',\n 'save',\n 'preferred',\n 'highlight',\n 'selected',\n];\n\nconst groceries = [\n 'menu',\n 'restaurant',\n 'lunch',\n 'meal',\n 'food',\n 'brunch',\n 'dessert',\n 'grocery',\n 'pizza',\n 'burger',\n 'snack',\n 'hot dog',\n 'soda',\n 'chips',\n 'restaurant',\n 'quick meal',\n];\n\nconst fingers = [\n 'thumb up',\n 'handshake',\n 'touch',\n 'controller',\n 'help',\n 'symbol',\n 'pointing',\n 'gesture',\n 'wave',\n 'fingers',\n 'hand',\n];\n\nconst entertainment = [\n 'recording',\n 'playback',\n 'play',\n 'pause',\n 'streaming',\n 'video',\n 'media',\n 'home entertainment',\n 'cinema',\n 'theatre',\n 'tv',\n 'camera',\n 'filming',\n 'webcam',\n 'digital',\n 'film',\n 'device',\n 'capture',\n];\n\n// These SVGs are used to render the actors/work objects on the canvas and in the iconset configuration. For palette and context pad, icons.css is used.\nexport const builtInIcons = new Dictionary();\nconst person = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 5.9c1.16 0 2.1.94 2.1 2.1s-.94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>',\n 'Person',\n [...people],\n);\nbuiltInIcons.putEntry(person);\nconst group = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"48\" viewBox=\"0 0 24 26\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M16.5 13c-1.2 0-3.07.34-4.5 1-1.43-.67-3.3-1-4.5-1C5.33 13 1 14.08 1 16.25V19h22v-2.75c0-2.17-4.33-3.25-6.5-3.25zm-4 4.5h-10v-1.25c0-.54 2.56-1.75 5-1.75s5 1.21 5 1.75v1.25zm9 0H14v-1.25c0-.46-.2-.86-.52-1.22.88-.3 1.96-.53 3.02-.53 2.44 0 5 1.21 5 1.75v1.25zM7.5 12c1.93 0 3.5-1.57 3.5-3.5S9.43 5 7.5 5 4 6.57 4 8.5 5.57 12 7.5 12zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 5.5c1.93 0 3.5-1.57 3.5-3.5S18.43 5 16.5 5 13 6.57 13 8.5s1.57 3.5 3.5 3.5zm0-5.5c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2z\"/></svg>',\n 'Group',\n [...people],\n);\nbuiltInIcons.putEntry(group);\nconst pet = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><circle cx=\"4.5\" cy=\"9.5\" r=\"2.5\"/><circle cx=\"9\" cy=\"5.5\" r=\"2.5\"/><circle cx=\"15\" cy=\"5.5\" r=\"2.5\"/><circle cx=\"19.5\" cy=\"9.5\" r=\"2.5\"/><path d=\"M17.34 14.86c-.87-1.02-1.6-1.89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.04-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1.6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.15 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2.04-1.3-3.49-2.61-4.8z\"/></svg>',\n 'Pet',\n [...animal],\n);\nbuiltInIcons.putEntry(pet);\nconst conversation = new Entry(\n '<svg height=\"48\" viewBox=\"0 0 24 26\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\"/></svg>',\n 'Conversation',\n ['mobile', 'email', 'sms', 'office'],\n);\nbuiltInIcons.putEntry(conversation);\nconst world = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-.61.08-1.21.21-1.78L8.99 15v1c0 1.1.9 2 2 2v1.93C7.06 19.43 4 16.07 4 12zm13.89 5.4c-.26-.81-1-1.4-1.9-1.4h-1v-3c0-.55-.45-1-1-1h-6v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41C17.92 5.77 20 8.65 20 12c0 2.08-.81 3.98-2.11 5.4z\"/></svg>',\n 'World',\n ['globe', 'language', 'travel', 'public'],\n);\nbuiltInIcons.putEntry(world);\nconst store = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18.36 9l.6 3H5.04l.6-3h12.72M20 4H4v2h16V4zm0 3H4l-1 5v2h1v6h10v-6h4v6h2v-6h1v-2l-1-5zM6 18v-4h6v4H6z\"/></svg>',\n 'Store',\n ['history', 'shopping', 'shop', 'archive'],\n);\nbuiltInIcons.putEntry(store);\nconst theater = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm6 10h-4V5h4v14zm4-2h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2z\"/></svg>',\n 'Theater',\n ['stadium', 'cinema', 'comedy', 'video'],\n);\nbuiltInIcons.putEntry(theater);\nconst business = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z\"/></svg>',\n 'Business',\n ['work', 'meeting-room', 'meeting'],\n);\nbuiltInIcons.putEntry(business);\nconst water = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M17 16.99c-1.35 0-2.2.42-2.95.8-.65.33-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.38-1.57-.8-2.95-.8s-2.2.42-2.95.8c-.65.33-1.17.6-2.05.6v1.95c1.35 0 2.2-.42 2.95-.8.65-.33 1.17-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.42 2.95-.8c.65-.33 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8v-1.95c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8zm0-4.45c-1.35 0-2.2.43-2.95.8-.65.32-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.38-1.57-.8-2.95-.8s-2.2.43-2.95.8c-.65.32-1.17.6-2.05.6v1.95c1.35 0 2.2-.43 2.95-.8.65-.35 1.15-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.35 1.15-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.58.8 2.95.8v-1.95c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8zm2.95-8.08c-.75-.38-1.58-.8-2.95-.8s-2.2.42-2.95.8c-.65.32-1.18.6-2.05.6-.9 0-1.4-.25-2.05-.6-.75-.37-1.57-.8-2.95-.8s-2.2.42-2.95.8c-.65.33-1.17.6-2.05.6v1.93c1.35 0 2.2-.43 2.95-.8.65-.33 1.17-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.32 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8V5.04c-.9 0-1.4-.25-2.05-.58zM17 8.09c-1.35 0-2.2.43-2.95.8-.65.35-1.15.6-2.05.6s-1.4-.25-2.05-.6c-.75-.38-1.57-.8-2.95-.8s-2.2.43-2.95.8c-.65.35-1.15.6-2.05.6v1.95c1.35 0 2.2-.43 2.95-.8.65-.32 1.18-.6 2.05-.6s1.4.25 2.05.6c.75.38 1.57.8 2.95.8s2.2-.43 2.95-.8c.65-.32 1.18-.6 2.05-.6.9 0 1.4.25 2.05.6.75.38 1.58.8 2.95.8V9.49c-.9 0-1.4-.25-2.05-.6-.75-.38-1.6-.8-2.95-.8z\"/></svg>',\n 'Water',\n ['pool', 'shower', 'swimming'],\n);\nbuiltInIcons.putEntry(water);\nconst hotel = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M7 14c1.66 0 3-1.34 3-3S8.66 8 7 8s-3 1.34-3 3 1.34 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm12-3h-8v8H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4zm2 8h-8V9h6c1.1 0 2 .9 2 2v4z\"/></svg>',\n 'Hotel',\n ['bed', 'concierge', 'room service', 'house keeping'],\n);\nbuiltInIcons.putEntry(hotel);\nconst dining = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M8.1 13.34l2.83-2.83L3.91 3.5c-1.56 1.56-1.56 4.09 0 5.66l4.19 4.18zm6.78-1.81c1.53.71 3.68.21 5.27-1.38 1.91-1.91 2.28-4.65.81-6.12-1.46-1.46-4.2-1.1-6.12.81-1.59 1.59-2.09 3.74-1.38 5.27L3.7 19.87l1.41 1.41L12 14.41l6.88 6.88 1.41-1.41L13.41 13l1.47-1.47z\"/></svg>',\n 'Dining',\n [...groceries],\n);\nbuiltInIcons.putEntry(dining);\nconst gasStation = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.77 7.23l.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77zM12 13.5V19H6v-7h6v1.5zm0-3.5H6V5h6v5zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Gas-station',\n ['gas', 'fuel', 'petrol'],\n);\nbuiltInIcons.putEntry(gasStation);\nconst meetingRoom = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 19V4h-4V3H5v16H3v2h12V6h2v15h4v-2h-2zm-6 0H7V5h6v14zm-3-8h2v2h-2z\"/></svg>',\n 'Meeting-room',\n ['office', 'room', 'business', 'work', 'group', 'conversation'],\n);\nbuiltInIcons.putEntry(meetingRoom);\nconst courthouse = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74m0-2.26L2 6v2h19V6l-9.5-5z\"/></svg>',\n 'Courthouse',\n [...legalSystem],\n);\nbuiltInIcons.putEntry(courthouse);\nconst flag = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12.36 6l.4 2H18v6h-3.36l-.4-2H7V6h5.36M14 4H5v17h2v-7h5.6l.4 2h7V6h-5.6L14 4z\"/></svg>',\n 'Flag',\n ['bookmark', 'country', 'place'],\n);\nbuiltInIcons.putEntry(flag);\nconst place = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zM7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 2.88-2.88 7.19-5 9.88C9.92 16.21 7 11.85 7 9z\"/><circle cx=\"12\" cy=\"9\" r=\"2.5\"/></svg>',\n 'Place',\n ['flag', 'location', 'border'],\n);\nbuiltInIcons.putEntry(place);\nconst car = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.85 7h10.29l1.08 3.11H5.77L6.85 7zM19 17H5v-5h14v5z\"/><circle cx=\"7.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"16.5\" cy=\"14.5\" r=\"1.5\"/></svg>',\n 'Car',\n [...vehicle],\n);\nbuiltInIcons.putEntry(car);\nconst bus = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2c-4.42 0-8 .5-8 4v10c0 .88.39 1.67 1 2.22V20c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h8v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.78c.61-.55 1-1.34 1-2.22V6c0-3.5-3.58-4-8-4zm5.66 2.99H6.34C6.89 4.46 8.31 4 12 4s5.11.46 5.66.99zm.34 2V10H6V6.99h12zm-.34 9.74l-.29.27H6.63l-.29-.27C6.21 16.62 6 16.37 6 16v-4h12v4c0 .37-.21.62-.34.73z\"/><circle cx=\"8.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"15.5\" cy=\"14.5\" r=\"1.5\"/></svg>',\n 'Bus',\n [...vehicle],\n);\nbuiltInIcons.putEntry(bus);\nconst train = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><circle cx=\"8.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"15.5\" cy=\"14.5\" r=\"1.5\"/><path d=\"M12 2c-4 0-8 .5-8 4v9.5C4 17.43 5.57 19 7.5 19L6 20.5v.5h2l2-2h4l2 2h2v-.5L16.5 19c1.93 0 3.5-1.57 3.5-3.5V6c0-3.5-4-4-8-4zm0 2c3.51 0 4.96.48 5.57 1H6.43c.61-.52 2.06-1 5.57-1zM6 7h5v3H6V7zm12 8.5c0 .83-.67 1.5-1.5 1.5h-9c-.83 0-1.5-.67-1.5-1.5V12h12v3.5zm0-5.5h-5V7h5v3z\"/></svg>',\n 'Train',\n [...vehicle],\n);\nbuiltInIcons.putEntry(train);\nconst truck = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zm-.5 1.5l1.96 2.5H17V9.5h2.5zM6 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm2.22-3c-.55-.61-1.33-1-2.22-1s-1.67.39-2.22 1H3V6h12v9H8.22zM18 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Truck',\n [...vehicle],\n);\nbuiltInIcons.putEntry(truck);\nconst taxi = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18.92 6.01C18.72 5.42 18.16 5 17.5 5H15V3H9v2H6.5c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.85 7h10.29l1.04 3H5.81l1.04-3zM19 17H5v-4.66l.12-.34h13.77l.11.34V17z\"/><circle cx=\"7.5\" cy=\"14.5\" r=\"1.5\"/><circle cx=\"16.5\" cy=\"14.5\" r=\"1.5\"/></svg>',\n 'Taxi',\n [...vehicle],\n);\nbuiltInIcons.putEntry(taxi);\nconst bike = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM5 12c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5-2.2-5-5-5zm0 8.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5zm5.8-10l2.4-2.4.8.8c1.3 1.3 3 2.1 5.1 2.1V9c-1.5 0-2.7-.6-3.6-1.5l-1.9-1.9c-.5-.4-1-.6-1.6-.6s-1.1.2-1.4.6L7.8 8.4c-.4.4-.6.9-.6 1.4 0 .6.2 1.1.6 1.4L11 14v5h2v-6.2l-2.2-2.3zM19 12c-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5-2.2-5-5-5zm0 8.5c-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5-1.6 3.5-3.5 3.5z\"/></svg>',\n 'Bike',\n [...vehicle],\n);\nbuiltInIcons.putEntry(bike);\nconst boat = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M13 3v1h-2V3h2m-1 7.11l5.38 1.77 2.39.78-1.12 3.97c-.54-.3-.94-.71-1.14-.94L16 13.96l-1.51 1.72c-.34.4-1.28 1.32-2.49 1.32s-2.15-.92-2.49-1.32L8 13.96l-1.51 1.72c-.2.23-.6.63-1.14.93l-1.13-3.96 2.4-.79L12 10.11M15 1H9v3H6c-1.1 0-2 .9-2 2v4.62l-1.29.42c-.26.08-.48.26-.6.5s-.15.52-.06.78L3.95 19H4c1.6 0 3.02-.88 4-2 .98 1.12 2.4 2 4 2s3.02-.88 4-2c.98 1.12 2.4 2 4 2h.05l1.89-6.68c.08-.26.06-.54-.06-.78s-.34-.42-.6-.5L20 10.62V6c0-1.1-.9-2-2-2h-3V1zM6 9.97V6h12v3.97L12 8 6 9.97zm10 9.71c-1.22.85-2.61 1.28-4 1.28s-2.78-.43-4-1.28C6.78 20.53 5.39 21 4 21H2v2h2c1.38 0 2.74-.35 4-.99 1.26.64 2.63.97 4 .97s2.74-.32 4-.97c1.26.65 2.62.99 4 .99h2v-2h-2c-1.39 0-2.78-.47-4-1.32z\"/></svg>',\n 'Boat',\n [...vehicle],\n);\nbuiltInIcons.putEntry(boat);\nconst motorcycle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M12.72 11l-2 2h-.77l-.25-.69c-.18-.48-.42-.92-.72-1.31h3.74m2.69-6H11v2h3.59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.54-.32 1.14-.32 1.77 0 2.8 2.2 5 5 5s5-2.2 5-5c0-2.65-1.97-4.77-4.56-4.97L15.41 5zM19 17c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zM5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h2.82C7.4 16.15 6.28 17 5 17z\"/></svg>',\n 'Motorcycle',\n [...vehicle],\n);\nbuiltInIcons.putEntry(motorcycle);\nconst plane = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 16v-2l-8-5V3.5c0-.83-.67-1.5-1.5-1.5S10 2.67 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5l8 2.5z\"/></svg>',\n 'Plane',\n [...vehicle, ...airport],\n);\nbuiltInIcons.putEntry(plane);\nconst flightTakeoff = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M2.5 19h19v2h-19v-2zm19.57-9.36c-.21-.8-1.04-1.28-1.84-1.06L14.92 10l-6.9-6.43-1.93.51 4.14 7.17-4.97 1.33-1.97-1.54-1.45.39 2.59 4.49L21 11.49c.81-.23 1.28-1.05 1.07-1.85z\"/></svg>',\n 'Flight-takeoff',\n [...airport],\n);\nbuiltInIcons.putEntry(flightTakeoff);\nconst flightLanding = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M2.5 19h19v2h-19v-2zm16.84-3.15c.8.21 1.62-.26 1.84-1.06.21-.8-.26-1.62-1.06-1.84l-5.31-1.42-2.76-9.02L10.12 2v8.28L5.15 8.95l-.93-2.32-1.45-.39v5.17l16.57 4.44z\"/></svg>',\n 'Flight-landing',\n [...airport],\n);\nbuiltInIcons.putEntry(flightLanding);\nconst shuttle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M17 5H3c-1.1 0-2 .89-2 2v9h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-6-6zm-2 2h1l3 3h-4V7zM9 7h4v3H9V7zM3 7h4v3H3V7zm3 10.25c-.69 0-1.25-.56-1.25-1.25s.56-1.25 1.25-1.25 1.25.56 1.25 1.25-.56 1.25-1.25 1.25zm12 0c-.69 0-1.25-.56-1.25-1.25s.56-1.25 1.25-1.25 1.25.56 1.25 1.25-.56 1.25-1.25 1.25zM21 14h-.78c-.55-.61-1.34-1-2.22-1s-1.67.39-2.22 1H8.22c-.55-.61-1.33-1-2.22-1s-1.67.39-2.22 1H3v-2h18v2z\"/></svg>',\n 'Shuttle',\n [...vehicle, ...airport],\n);\nbuiltInIcons.putEntry(shuttle);\nconst walking = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M13.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM9.8 8.9L7 23h2.1l1.8-8 2.1 2v6h2v-7.5l-2.1-2 .6-3C14.8 12 16.8 13 19 13v-2c-1.9 0-3.5-1-4.3-2.4l-1-1.6c-.56-.89-1.68-1.25-2.65-.84L6 8.3V13h2V9.6l1.8-.7\"/></svg>',\n 'Walking',\n [...driving],\n);\nbuiltInIcons.putEntry(walking);\nconst traffic = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 10h-3V8.86c1.72-.45 3-2 3-3.86h-3V4c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v1H4c0 1.86 1.28 3.41 3 3.86V10H4c0 1.86 1.28 3.41 3 3.86V15H4c0 1.86 1.28 3.41 3 3.86V20c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-1.14c1.72-.45 3-2 3-3.86h-3v-1.14c1.72-.45 3-2 3-3.86zm-5 9H9V5h6v14zm-3-1c.83 0 1.5-.67 1.5-1.5S12.83 15 12 15s-1.5.67-1.5 1.5.67 1.5 1.5 1.5zm0-4.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM12 9c.83 0 1.5-.67 1.5-1.5S12.83 6 12 6s-1.5.67-1.5 1.5S11.17 9 12 9z\"/></svg>',\n 'Traffic',\n [...driving],\n);\nbuiltInIcons.putEntry(traffic);\nconst commute = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 4H5C3.34 4 2 5.34 2 7v8c0 1.66 1.34 3 3 3l-1 1v1h1l2-2h2v-5H4V6h9v2h2V7c0-1.66-1.34-3-3-3zM5 14c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm15.57-4.34c-.14-.4-.52-.66-.97-.66h-7.19c-.46 0-.83.26-.98.66l-1.42 4.11v5.51c0 .38.31.72.69.72h.62c.38 0 .68-.38.68-.76V18h8v1.24c0 .38.31.76.69.76h.61c.38 0 .69-.34.69-.72l.01-1.37v-4.14l-1.43-4.11zm-8.16.34h7.19l1.03 3h-9.25l1.03-3zM12 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm8 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Commute',\n [...driving],\n);\nbuiltInIcons.putEntry(commute);\nconst system = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M20,18c1.1,0,2-0.9,2-2V6c0-1.1-0.9-2-2-2H4C2.9,4,2,4.9,2,6v10c0,1.1,0.9,2,2,2H0v2h24v-2H20z M4,6h16v10H4V6z\"/></svg>',\n 'System',\n ['update', 'media', 'microservice', 'pc', 'computer'],\n);\nbuiltInIcons.putEntry(system);\nconst printer = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\"/><circle cx=\"18\" cy=\"11.5\" r=\"1\"/></svg>',\n 'Printer',\n [...print],\n);\nbuiltInIcons.putEntry(printer);\nconst document = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\"/></svg>',\n 'Document',\n ['folder', 'article', 'file', 'draft', 'paper', ...print],\n);\nbuiltInIcons.putEntry(document);\nconst folder = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0,0h24v24H0V0z\"/><path d=\"M9.17,6l2,2H20v10L4,18V6H9.17 M10,4H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8c0-1.1-0.9-2-2-2 h-8L10,4L10,4z\"/></svg>',\n 'Folder',\n [...print],\n);\nbuiltInIcons.putEntry(folder);\nconst call = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0,0h24v24H0V0z\"/><path d=\"M6.54,5C6.6,5.89,6.75,6.76,6.99,7.59l-1.2,1.2C5.38,7.59,5.12,6.32,5.03,5H6.54 M16.4,17.02c0.85,0.24,1.72,0.39,2.6,0.45 v1.49c-1.32-0.09-2.59-0.35-3.8-0.75L16.4,17.02 M7.5,3H4C3.45,3,3,3.45,3,4c0,9.39,7.61,17,17,17c0.55,0,1-0.45,1-1v-3.49\\tc0-0.55-0.45-1-1-1c-1.24,0-2.45-0.2-3.57-0.57c-0.1-0.04-0.21-0.05-0.31-0.05c-0.26,0-0.51,0.1-0.71,0.29l-2.2,2.2 c-2.83-1.45-5.15-3.76-6.59-6.59l2.2-2.2C9.1,8.31,9.18,7.92,9.07,7.57C8.7,6.45,8.5,5.25,8.5,4C8.5,3.45,8.05,3,7.5,3L7.5,3z\"/></svg>',\n 'Call',\n [...calling],\n);\nbuiltInIcons.putEntry(call);\nconst email = new Entry(\n '<svg viewBox=\"0 0 24 26\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0,0h24v24H0V0z\"/><path fill-opacity=\"0.9\" d=\"M12,1.95c-5.52,0-10,4.48-10,10s4.48,10,10,10h5v-2h-5c-4.34,0-8-3.66-8-8s3.66-8,8-8s8,3.66,8,8v1.43 c0,0.79-0.71,1.57-1.5,1.57S17,14.17,17,13.38v-1.43c0-2.76-2.24-5-5-5s-5,2.24-5,5s2.24,5,5,5c1.38,0,2.64-0.56,3.54-1.47 c0.65,0.89,1.77,1.47,2.96,1.47c1.97,0,3.5-1.6,3.5-3.57v-1.43C22,6.43,17.52,1.95,12,1.95z M12,14.95c-1.66,0-3-1.34-3-3 s1.34-3,3-3s3,1.34,3,3S13.66,14.95,12,14.95z\"/></svg>',\n 'Email',\n [...calling],\n);\nbuiltInIcons.putEntry(email);\nconst copyright = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M10.08 10.86c.05-.33.16-.62.3-.87s.34-.46.59-.62c.24-.15.54-.22.91-.23.23.01.44.05.63.13.2.09.38.21.52.36s.25.33.34.53.13.42.14.64h1.79c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22.11-1.7.34s-.88.53-1.2.92-.56.84-.71 1.36S8 11.29 8 11.87v.27c0 .58.08 1.12.23 1.64s.39.97.71 1.35.72.69 1.2.91c.48.22 1.05.34 1.7.34.47 0 .91-.08 1.32-.23s.77-.36 1.08-.63.56-.58.74-.94.29-.74.3-1.15h-1.79c-.01.21-.06.4-.15.58s-.21.33-.36.46-.32.23-.52.3c-.19.07-.39.09-.6.1-.36-.01-.66-.08-.89-.23-.25-.16-.45-.37-.59-.62s-.25-.55-.3-.88-.08-.67-.08-1v-.27c0-.35.03-.68.08-1.01zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/></svg>',\n 'Copyright',\n ['contract', 'legal', 'commercial', 'copyleft'],\n);\nbuiltInIcons.putEntry(copyright);\nconst dns = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 15v4H5v-4h14m1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zM7 18.5c-.82 0-1.5-.67-1.5-1.5s.68-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM19 5v4H5V5h14m1-2H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM7 8.5c-.82 0-1.5-.67-1.5-1.5S6.18 5.5 7 5.5s1.5.68 1.5 1.5S7.83 8.5 7 8.5z\"/></svg>',\n 'DNS',\n ['server', 'domain', 'system', 'name', 'cloud'],\n);\nbuiltInIcons.putEntry(dns);\nconst settings = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.43 12.98c.04-.32.07-.64.07-.98 0-.34-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.09-.16-.26-.25-.44-.25-.06 0-.12.01-.17.03l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.06-.02-.12-.03-.18-.03-.17 0-.34.09-.43.25l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98 0 .33.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.09.16.26.25.44.25.06 0 .12-.01.17-.03l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.06.02.12.03.18.03.17 0 .34-.09.43-.25l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zm-1.98-1.71c.04.31.05.52.05.73 0 .21-.02.43-.05.73l-.14 1.13.89.7 1.08.84-.7 1.21-1.27-.51-1.04-.42-.9.68c-.43.32-.84.56-1.25.73l-1.06.43-.16 1.13-.2 1.35h-1.4l-.19-1.35-.16-1.13-1.06-.43c-.43-.18-.83-.41-1.23-.71l-.91-.7-1.06.43-1.27.51-.7-1.21 1.08-.84.89-.7-.14-1.13c-.03-.31-.05-.54-.05-.74s.02-.43.05-.73l.14-1.13-.89-.7-1.08-.84.7-1.21 1.27.51 1.04.42.9-.68c.43-.32.84-.56 1.25-.73l1.06-.43.16-1.13.2-1.35h1.39l.19 1.35.16 1.13 1.06.43c.43.18.83.41 1.23.71l.91.7 1.06-.43 1.27-.51.7 1.21-1.07.85-.89.7.14 1.13zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"/></svg>',\n 'Settings',\n [...computer],\n);\nbuiltInIcons.putEntry(settings);\nconst cellphone = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M7 22h2v2H7zm4 0h2v2h-2zm4 0h2v2h-2zM16 .01L8 0C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V2c0-1.1-.9-1.99-2-1.99zM16 18H8v-1h8v1zm0-3H8V5h8v10zm0-12H8V2h8v1z\"/></svg>',\n 'Cellphone',\n [...calling],\n);\nbuiltInIcons.putEntry(cellphone);\nconst update = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M11 8v5l4.25 2.52.77-1.28-3.52-2.09V8zm10 2V3l-2.64 2.64C16.74 4.01 14.49 3 12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9h-2c0 3.86-3.14 7-7 7s-7-3.14-7-7 3.14-7 7-7c1.93 0 3.68.79 4.95 2.05L14 10h7z\"/></svg>',\n 'Update',\n [...computer],\n);\nbuiltInIcons.putEntry(update);\nconst briefcase = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M14 6V4h-4v2h4zM4 8v11h16V8H4zm16-2c1.11 0 2 .89 2 2v11c0 1.11-.89 2-2 2H4c-1.11 0-2-.89-2-2l.01-11c0-1.11.88-2 1.99-2h4V4c0-1.11.89-2 2-2h4c1.11 0 2 .89 2 2v2h4z\"/></svg>',\n 'Briefcase',\n [...print],\n);\nbuiltInIcons.putEntry(briefcase);\nconst microphone = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm-1-9c0-.55.45-1 1-1s1 .45 1 1v6c0 .55-.45 1-1 1s-1-.45-1-1V5zm6 6c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z\"/></svg>',\n 'Microphone',\n [...print],\n);\nbuiltInIcons.putEntry(microphone);\nconst signal = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><circle cx=\"6.18\" cy=\"17.82\" r=\"2.18\"/><path d=\"M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z\"/></svg>',\n 'Signal',\n [...computer],\n);\nbuiltInIcons.putEntry(signal);\nconst key = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M22 19h-6v-4h-2.68c-1.14 2.42-3.6 4-6.32 4-3.86 0-7-3.14-7-7s3.14-7 7-7c2.72 0 5.17 1.58 6.32 4H24v6h-2v4zm-4-2h2v-4h2v-2H11.94l-.23-.67C11.01 8.34 9.11 7 7 7c-2.76 0-5 2.24-5 5s2.24 5 5 5c2.11 0 4.01-1.34 4.71-3.33l.23-.67H18v4zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z\"/></svg>',\n 'Key',\n ['keyboard', 'lock', 'security'],\n);\nbuiltInIcons.putEntry(key);\nconst pencil = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM5.92 19H5v-.92l9.06-9.06.92.92L5.92 19zM20.71 5.63l-2.34-2.34c-.2-.2-.45-.29-.71-.29s-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41z\"/></svg>',\n 'Pencil',\n [...print],\n);\nbuiltInIcons.putEntry(pencil);\nconst sum = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7V4z\"/></svg>',\n 'Sum',\n ['subtract', 'result', 'math', 'mathematics'],\n);\nbuiltInIcons.putEntry(sum);\nconst headset = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 14v4h-2v-4h2M7 14v4H6c-.55 0-1-.45-1-1v-3h2m5-13c-4.97 0-9 4.03-9 9v7c0 1.66 1.34 3 3 3h3v-8H5v-2c0-3.87 3.13-7 7-7s7 3.13 7 7v2h-4v8h4v1h-7v2h6c1.66 0 3-1.34 3-3V10c0-4.97-4.03-9-9-9z\"/></svg>',\n 'Headset',\n ['head', 'sound', 'microphone', 'acoustic', 'speaker', 'speak', 'noise'],\n);\nbuiltInIcons.putEntry(headset);\nconst keyboard = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M20 7v10H4V7h16m0-2H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-9 3h2v2h-2zm0 3h2v2h-2zM8 8h2v2H8zm0 3h2v2H8zm-3 0h2v2H5zm0-3h2v2H5zm3 6h8v2H8zm6-3h2v2h-2zm0-3h2v2h-2zm3 3h2v2h-2zm0-3h2v2h-2z\"/></svg>',\n 'Keyboard',\n [\n 'key',\n 'up',\n 'down',\n 'top',\n 'bottom',\n 'arrow',\n 'space',\n 'tab',\n 'enter',\n 'control',\n 'command',\n ...computer,\n 'mouse',\n ],\n);\nbuiltInIcons.putEntry(keyboard);\nconst mouse = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 9c-.04-4.39-3.6-7.93-8-7.93S4.04 4.61 4 9v6c0 4.42 3.58 8 8 8s8-3.58 8-8V9zm-2 0h-5V3.16c2.81.47 4.96 2.9 5 5.84zm-7-5.84V9H6c.04-2.94 2.19-5.37 5-5.84zM18 15c0 3.31-2.69 6-6 6s-6-2.69-6-6v-4h12v4z\"/></svg>',\n 'Mouse',\n ['scrolling', 'click', 'mouse up', 'mouse down', 'move'],\n);\nbuiltInIcons.putEntry(mouse);\nconst router = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M16 4.2c1.5 0 3 .6 4.2 1.7l.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2zm-3.3 2.5l.8.8c.7-.7 1.6-1 2.5-1s1.8.3 2.5 1l.8-.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm0 6H5v-4h14v4zM6 16h2v2H6zm3.5 0h2v2h-2zm3.5 0h2v2h-2z\"/></svg>',\n 'Router',\n ['net', 'network', 'dns', 'domain', 'wifi', 'wi-fi'],\n);\nbuiltInIcons.putEntry(router);\nconst scanner = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.8 10.7L4.2 5l-.7 1.9L17.6 12H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-5.5c0-.8-.5-1.6-1.2-1.8zM19 18H5v-4h14v4zM6 15h2v2H6zm4 0h8v2h-8z\"/></svg>',\n 'Scanner',\n ['qr code', 'bar code', 'document', ...print],\n);\nbuiltInIcons.putEntry(scanner);\nconst security = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"/></svg>',\n 'Security',\n [...computer],\n);\nbuiltInIcons.putEntry(security);\nconst desktop = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H3V4h18v12z\"/></svg>',\n 'Desktop',\n [...computer],\n);\nbuiltInIcons.putEntry(desktop);\nconst speakerPhone = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M7 7.07L8.43 8.5c.91-.91 2.18-1.48 3.57-1.48s2.66.57 3.57 1.48L17 7.07C15.72 5.79 13.95 5 12 5s-3.72.79-5 2.07zM12 1C8.98 1 6.24 2.23 4.25 4.21l1.41 1.41C7.28 4 9.53 3 12 3s4.72 1 6.34 2.62l1.41-1.41C17.76 2.23 15.02 1 12 1zm2.86 9.01L9.14 10C8.51 10 8 10.51 8 11.14v9.71c0 .63.51 1.14 1.14 1.14h5.71c.63 0 1.14-.51 1.14-1.14v-9.71c.01-.63-.5-1.13-1.13-1.13zM15 20H9v-8h6v8z\"/></svg>',\n 'Speaker-phone',\n [...speaker],\n);\nbuiltInIcons.putEntry(speakerPhone);\nconst tablet = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M18 0H6C4.34 0 3 1.34 3 3v18c0 1.66 1.34 3 3 3h12c1.66 0 3-1.34 3-3V3c0-1.66-1.34-3-3-3zm-4 22h-4v-1h4v1zm5.25-3H4.75V3h14.5v16z\"/></svg>',\n 'Tablet',\n [...computer],\n);\nbuiltInIcons.putEntry(tablet);\nconst label = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM16 17H5V7h11l3.55 5L16 17z\"/></svg>',\n 'Label',\n ['book', 'bookmark', 'flag'],\n);\nbuiltInIcons.putEntry(label);\nconst receipt = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6zm0-4h12v2H6zm0-4h12v2H6z\"/></svg>',\n 'Receipt',\n ['order', 'email receipt'],\n);\nbuiltInIcons.putEntry(receipt);\nconst calendar = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\" /><path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V9h14v10zm0-12H5V5h14v2zM7 11h5v5H7z\" /></svg>',\n 'Calendar',\n ['year', 'month', 'day', 'holiday', 'photo', 'meeting'],\n);\nbuiltInIcons.putEntry(calendar);\nconst cloud = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6m0-2C9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96C18.67 6.59 15.64 4 12 4z\"/></svg>',\n 'Cloud',\n [...computer],\n);\nbuiltInIcons.putEntry(cloud);\nconst assessment = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7zm4-3h2v10h-2zm4 6h2v4h-2z\"/></svg>',\n 'Assessment',\n ['evaluation', 'rating', 'judgment', 'estimate'],\n);\nbuiltInIcons.putEntry(assessment);\nconst dashboard = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 5v2h-4V5h4M9 5v6H5V5h4m10 8v6h-4v-6h4M9 17v2H5v-2h4M21 3h-8v6h8V3zM11 3H3v10h8V3zm10 8h-8v10h8V11zm-10 4H3v6h8v-6z\"/></svg>',\n 'Dashboard',\n [...computer],\n);\nbuiltInIcons.putEntry(dashboard);\nconst pieChart = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm7.93 9H13V4.07c3.61.45 6.48 3.32 6.93 6.93zM4 12c0-4.07 3.06-7.44 7-7.93v15.86c-3.94-.49-7-3.86-7-7.93zm9 7.93V13h6.93c-.45 3.61-3.32 6.48-6.93 6.93z\"/></svg>',\n 'Pie-chart',\n ['business', 'sales', 'financial', 'commercial', 'demographic', 'market'],\n);\nbuiltInIcons.putEntry(pieChart);\nconst problem = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"/></svg>',\n 'Problem',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(problem);\nconst pictureAsPdf = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\"/></svg>',\n 'Picture-as-PDF',\n [...print],\n);\nbuiltInIcons.putEntry(pictureAsPdf);\nconst grid = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z\"/></svg>',\n 'Grid',\n [\n 'table',\n 'matrix',\n 'layout',\n 'grid view',\n 'mesh',\n 'pattern',\n 'dashboard',\n 'window',\n ],\n);\nbuiltInIcons.putEntry(grid);\nconst watch = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M14.31 2l.41 2.48C13.87 4.17 12.96 4 12 4c-.95 0-1.87.17-2.71.47L9.7 2h4.61m.41 17.52L14.31 22H9.7l-.41-2.47c.84.3 1.76.47 2.71.47.96 0 1.87-.17 2.72-.48M16 0H8l-.95 5.73C5.19 7.19 4 9.45 4 12s1.19 4.81 3.05 6.27L8 24h8l.96-5.73C18.81 16.81 20 14.54 20 12s-1.19-4.81-3.04-6.27L16 0zm-4 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z\"/></svg>',\n 'Watch',\n [...times],\n);\nbuiltInIcons.putEntry(watch);\nconst euro = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15 18.5c-2.51 0-4.68-1.42-5.76-3.5H15v-2H8.58c-.05-.33-.08-.66-.08-1s.03-.67.08-1H15V9H9.24C10.32 6.92 12.5 5.5 15 5.5c1.61 0 3.09.59 4.23 1.57L21 5.3C19.41 3.87 17.3 3 15 3c-3.92 0-7.24 2.51-8.48 6H3v2h3.06c-.04.33-.06.66-.06 1s.02.67.06 1H3v2h3.52c1.24 3.49 4.56 6 8.48 6 2.31 0 4.41-.87 6-2.3l-1.78-1.77c-1.13.98-2.6 1.57-4.22 1.57z\"/></svg>',\n 'Euro',\n [...finance],\n);\nbuiltInIcons.putEntry(euro);\nconst dollar = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z\"/></svg>',\n 'Dollar',\n [...finance],\n);\nbuiltInIcons.putEntry(dollar);\nconst info = new Entry(\n '<svg height=\"48\" viewBox=\"0 0 24 26\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z\"/></svg>',\n 'Info',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(info);\nconst alarm = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12.5 8H11v6l4.75 2.85.75-1.23-4-2.37zm4.837-6.19l4.607 3.845-1.28 1.535-4.61-3.843zm-10.674 0l1.282 1.536L3.337 7.19l-1.28-1.536zM12 4c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9-4.03-9-9-9zm0 16c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7z\"/></svg>',\n 'Alarm',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(alarm);\nconst wrench = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M22.61 18.99l-9.08-9.08c.93-2.34.45-5.1-1.44-7C9.79.61 6.21.4 3.66 2.26L7.5 6.11 6.08 7.52 2.25 3.69C.39 6.23.6 9.82 2.9 12.11c1.86 1.86 4.57 2.35 6.89 1.48l9.11 9.11c.39.39 1.02.39 1.41 0l2.3-2.3c.4-.38.4-1.01 0-1.41zm-3 1.6l-9.46-9.46c-.61.45-1.29.72-2 .82-1.36.2-2.79-.21-3.83-1.25C3.37 9.76 2.93 8.5 3 7.26l3.09 3.09 4.24-4.24-3.09-3.09c1.24-.07 2.49.37 3.44 1.31 1.08 1.08 1.49 2.57 1.24 3.96-.12.71-.42 1.37-.88 1.96l9.45 9.45-.88.89z\"/></svg>',\n 'Wrench',\n [\n 'reset',\n 'build',\n 'plumbing',\n 'construction',\n 'tool',\n 'fix',\n 'repair',\n 'settings',\n 'mechanic',\n 'hardware',\n 'maintenance',\n 'spanner',\n 'tighten',\n ],\n);\nbuiltInIcons.putEntry(wrench);\nconst circleArrows = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13.57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z\"/></svg>',\n 'Circle-Arrows',\n [\n 'refresh',\n 'reload',\n 'rewind',\n 'cycle',\n 'rotate',\n 'loop',\n 'reset',\n 'continuous',\n 'recycle',\n 'sync',\n 'return',\n ],\n);\nbuiltInIcons.putEntry(circleArrows);\nconst creditCard = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z\"/></svg>',\n 'Credit-Card',\n [...finance],\n);\nbuiltInIcons.putEntry(creditCard);\nconst favorite = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16.5 3c-1.74 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z\"/></svg>',\n 'Favorite',\n [...rating],\n);\nbuiltInIcons.putEntry(favorite);\nconst gavel = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M1 21h12v2H1v-2zM5.24 8.07l2.83-2.83 14.14 14.14-2.83 2.83L5.24 8.07zM12.32 1l5.66 5.66-2.83 2.83-5.66-5.66L12.32 1zM3.83 9.48l5.66 5.66-2.83 2.83L1 12.31l2.83-2.83z\"/></svg>',\n 'Gavel',\n [...legalSystem],\n);\nbuiltInIcons.putEntry(gavel);\nconst blind = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/><circle cx=\"8\" cy=\"14\" r=\"2\"/><circle cx=\"12\" cy=\"8\" r=\"2\"/><circle cx=\"16\" cy=\"14\" r=\"2\"/></svg>',\n 'Blind',\n ['curtains', 'blinds', 'roller shades', 'closed', 'no sight', 'low vision'],\n);\nbuiltInIcons.putEntry(blind);\nconst hourglass = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z\"/></svg>',\n 'Hourglass',\n ['empty', 'top', 'bottom', 'disabled', ...times],\n);\nbuiltInIcons.putEntry(hourglass);\nconst time = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"/></svg>',\n 'Time',\n [...times],\n);\nbuiltInIcons.putEntry(time);\nconst search = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"/></svg>',\n 'Search',\n [\n ...computer,\n 'query',\n 'zoom in',\n 'zoom out',\n 'since',\n 'policy',\n 'find',\n 'experiment',\n 'labs',\n 'check',\n 'biotech',\n 'signal',\n ],\n);\nbuiltInIcons.putEntry(search);\nconst shopping = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M15.55 13c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.37-.66-.11-1.48-.87-1.48H5.21l-.94-2H1v2h2l3.6 7.59-1.35 2.44C4.52 15.37 5.48 17 7 17h12v-2H7l1.1-2h7.45zM6.16 6h12.15l-2.76 5H8.53L6.16 6zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z\"/></svg>',\n 'Shopping',\n [\n ...finance,\n 'sopping card',\n 'selling',\n 'buying',\n 'barcode',\n 'price',\n 'business',\n 'mall',\n 'paid',\n 'scanner',\n 'change',\n 'store',\n ],\n);\nbuiltInIcons.putEntry(shopping);\nconst thumbUp = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M9 21h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.58 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2zM9 9l4.34-4.34L12 10h9v2l-3 7H9V9zM1 9h4v12H1z\"/></svg>',\n 'Thumb-up',\n [...rating, 'thumb down', 'thumb up down'],\n);\nbuiltInIcons.putEntry(thumbUp);\nconst thumbDown = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm0 12l-4.34 4.34L12 14H3v-2l3-7h9v10zm4-12h4v12h-4z\"/></svg>',\n 'Thumb-down',\n [...rating, 'thumb up', 'thumb up down'],\n);\nbuiltInIcons.putEntry(thumbDown);\nconst thumbUpDown = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\"/><path d=\"M12 6c0-.55-.45-1-1-1H5.82l.66-3.18.02-.23c0-.31-.13-.59-.33-.8L5.38 0 .44 4.94C.17 5.21 0 5.59 0 6v6.5c0 .83.67 1.5 1.5 1.5h6.75c.62 0 1.15-.38 1.38-.91l2.26-5.29c.07-.17.11-.36.11-.55V6zm-2 1.13L7.92 12H2V6.21l1.93-1.93L3.36 7H10v.13zM22.5 10h-6.75c-.62 0-1.15.38-1.38.91l-2.26 5.29c-.07.17-.11.36-.11.55V18c0 .55.45 1 1 1h5.18l-.66 3.18-.02.24c0 .31.13.59.33.8l.79.78 4.94-4.94c.27-.27.44-.65.44-1.06v-6.5c0-.83-.67-1.5-1.5-1.5zm-.5 7.79l-1.93 1.93.57-2.72H14v-.13L16.08 12H22v5.79z\"/></svg>',\n 'Thumb-up-down',\n [...rating, 'thumb down', 'thumb down'],\n);\nbuiltInIcons.putEntry(thumbUpDown);\nconst couch = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 9V7c0-1.65-1.35-3-3-3H6C4.35 4 3 5.35 3 7v2c-1.65 0-3 1.35-3 3v5c0 1.65 1.35 3 3 3h18c1.65 0 3-1.35 3-3v-5c0-1.65-1.35-3-3-3zM5 7c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v2.78c-.61.55-1 1.34-1 2.22v2H6v-2c0-.88-.39-1.67-1-2.22V7zm17 10c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1v-5c0-.55.45-1 1-1s1 .45 1 1v4h16v-4c0-.55.45-1 1-1s1 .45 1 1v5z\"/></svg>',\n 'Couch',\n [\n 'chair',\n 'weekend',\n 'scene',\n 'living',\n 'sofa',\n 'furniture',\n 'seat',\n 'rest',\n 'relax',\n 'living room',\n 'comfort',\n 'interior design',\n ],\n);\nbuiltInIcons.putEntry(couch);\nconst attach = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 28\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"/></svg>',\n 'Attach',\n [\n 'file',\n 'ling',\n 'email',\n 'media',\n 'money',\n 'include',\n 'pin',\n 'append',\n 'drag and drop',\n 'combine',\n 'join',\n 'insert',\n 'upload',\n ],\n);\nbuiltInIcons.putEntry(attach);\nconst ruler = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H3V8h2v4h2V8h2v4h2V8h2v4h2V8h2v4h2V8h2v8z\"/></svg>',\n 'Ruler',\n [\n 'design service',\n 'straighten',\n 'square foot',\n 'measuring tool',\n 'scale',\n 'geometry',\n 'math',\n 'length',\n 'inch',\n 'meter',\n 'line',\n 'precision',\n ],\n);\nbuiltInIcons.putEntry(ruler);\nconst education = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M12 3L1 9l4 2.18v6L12 21l7-3.82v-6l2-1.09V17h2V9L12 3zm6.82 6L12 12.72 5.18 9 12 5.28 18.82 9zM17 15.99l-5 2.73-5-2.73v-3.72L12 15l5-2.73v3.72z\"/></svg>',\n 'Education',\n [\n 'school',\n 'learning',\n 'books',\n 'teacher',\n 'student',\n 'classroom',\n 'knowledge',\n 'graduation',\n 'academics',\n 'academy',\n 'university',\n 'pencil',\n 'e-learning',\n 'literacy',\n 'research',\n 'tutoring',\n ],\n);\nbuiltInIcons.putEntry(education);\nconst howToReg = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"none\" d=\"M0 0h24v24H0z\"/><g fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path d=\"M9 17l3-2.94c-.39-.04-.68-.06-1-.06-2.67 0-8 1.34-8 4v2h9l-3-3zm2-5c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4\"/><path d=\"M15.47 20.5L12 17l1.4-1.41 2.07 2.08 5.13-5.17 1.4 1.41z\"/></g></svg>',\n 'How-To-Reg',\n ['registration', 'sign up', 'guid', 'tutorial', 'help', 'support'],\n);\nbuiltInIcons.putEntry(howToReg);\nconst viewList = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 26\"><path opacity=\".87\" fill=\"none\" d=\"M0 0h24v24H0V0z\"/><path d=\"M3 5v14h17V5H3zm4 2v2H5V7h2zm-2 6v-2h2v2H5zm0 2h2v2H5v-2zm13 2H9v-2h9v2zm0-4H9v-2h9v2zm0-4H9V7h9v2z\"/></svg>',\n 'View-List',\n [\n 'filtered list',\n 'sorted',\n 'check list',\n 'summarized',\n 'items',\n 'data list',\n 'menu',\n 'catalog',\n 'overview',\n 'table',\n 'content List',\n 'grid view',\n ],\n);\nbuiltInIcons.putEntry(viewList);\nconst accessible = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><circle cx=\"12\" cy=\"4\" r=\"2\"/><path d=\"M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.45-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-9 7c-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28.46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07c-.41 1.16-1.52 2-2.83 2z\"/></svg>',\n 'Accessible',\n [\n 'subtitles',\n 'caption',\n 'forward',\n 'blind',\n 'disability',\n 'wheelchair',\n 'hearing',\n 'support',\n 'handicap',\n 'barrier free',\n ],\n);\nbuiltInIcons.putEntry(accessible);\nconst accountCircle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><g><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.35 18.5C8.66 17.56 10.26 17 12 17s3.34.56 4.65 1.5c-1.31.94-2.91 1.5-4.65 1.5s-3.34-.56-4.65-1.5zm10.79-1.38C16.45 15.8 14.32 15 12 15s-4.45.8-6.14 2.12C4.7 15.73 4 13.95 4 12c0-4.42 3.58-8 8-8s8 3.58 8 8c0 1.95-.7 3.73-1.86 5.12z\"/><path d=\"M12 6c-1.93 0-3.5 1.57-3.5 3.5S10.07 13 12 13s3.5-1.57 3.5-3.5S13.93 6 12 6zm0 5c-.83 0-1.5-.67-1.5-1.5S11.17 8 12 8s1.5.67 1.5 1.5S12.83 11 12 11z\"/></g></g></svg>',\n 'Account-Circle',\n [...people],\n);\nbuiltInIcons.putEntry(accountCircle);\nconst assignment = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M7 15h7v2H7zm0-4h10v2H7zm0-4h10v2H7zm12-4h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-.14 0-.27.01-.4.04-.39.08-.74.28-1.01.55-.18.18-.33.4-.43.64-.1.23-.16.49-.16.77v14c0 .27.06.54.16.78s.25.45.43.64c.27.27.62.47 1.01.55.13.02.26.03.4.03h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7-.25c.41 0 .75.34.75.75s-.34.75-.75.75-.75-.34-.75-.75.34-.75.75-.75zM19 19H5V5h14v14z\"/></svg>',\n 'Assignment',\n [\n 'task',\n 'projekt',\n 'work',\n 'due date',\n 'homework',\n 'list',\n 'checklist',\n 'introduction',\n 'schedule',\n ],\n);\nbuiltInIcons.putEntry(assignment);\nconst battery = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><path d=\"M17,5v16c0,0.55-0.45,1-1,1H8c-0.55,0-1-0.45-1-1V5c0-0.55,0.45-1,1-1h2V2h4v2h2C16.55,4,17,4.45,17,5z M15,6H9v14h6V6z\"/></g></svg>',\n 'Battery',\n [\n 'full',\n 'empty',\n 'charge',\n 'low',\n 'charging 90',\n 'charging 80',\n 'status',\n 'power',\n 'capacity',\n 'recharge',\n 'ac/dc',\n 'power source',\n 'lithium ion',\n 'power bank',\n 'electronics',\n 'energy',\n 'voltage',\n ],\n);\nbuiltInIcons.putEntry(battery);\nconst book = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM9 4h2v5l-1-.75L9 9V4zm9 16H6V4h1v9l3-2.25L13 13V4h5v16z\"/></svg>',\n 'Book',\n [...rating],\n);\nbuiltInIcons.putEntry(book);\nconst bug = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5s-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-4 4v3c0 .22-.03.47-.07.7l-.1.65-.37.65c-.72 1.24-2.04 2-3.46 2s-2.74-.77-3.46-2l-.37-.64-.1-.65C8.03 15.48 8 15.23 8 15v-4c0-.23.03-.48.07-.7l.1-.65.37-.65c.3-.52.72-.97 1.21-1.31l.57-.39.74-.18c.31-.08.63-.12.94-.12.32 0 .63.04.95.12l.68.16.61.42c.5.34.91.78 1.21 1.31l.38.65.1.65c.04.22.07.47.07.69v1zm-6 2h4v2h-4zm0-4h4v2h-4z\"/></svg>',\n 'Bug',\n [\n ...infoDialogs,\n 'report',\n 'nature',\n 'software',\n 'code',\n 'defect',\n 'fault',\n 'malfunction',\n 'debugging',\n 'insect',\n ],\n);\nbuiltInIcons.putEntry(bug);\nconst changeHistory = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 7.77L18.39 18H5.61L12 7.77M12 4L2 20h20L12 4z\"/></svg>',\n 'Change-History',\n [\n 'schedule',\n 'update',\n 'timeline',\n 'logging',\n 'backup',\n 'restore',\n 'documentation',\n 'tracking',\n 'vision control',\n ],\n);\nbuiltInIcons.putEntry(changeHistory);\nconst checkCircle = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z\"/></svg>',\n 'Check-Circle',\n [\n 'confirmation',\n 'done',\n 'verified',\n 'approval',\n 'checked',\n 'complete',\n 'green check',\n 'mark',\n 'success',\n 'finish',\n 'good',\n ],\n);\nbuiltInIcons.putEntry(checkCircle);\nconst code = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"/></svg>',\n 'Code',\n [\n 'terminal',\n 'console',\n ...computer,\n 'password',\n 'barcode',\n 'programming',\n 'developer',\n 'script',\n 'software',\n 'syntax',\n 'security',\n ],\n);\nbuiltInIcons.putEntry(code);\nconst contactMail = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M22 3H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zm0 16H2V5h20v14zM21 6h-7v5h7V6zm-1 2l-2.5 1.75L15 8V7l2.5 1.75L20 7v1zM9 12c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm6 8.59c0-2.5-3.97-3.58-6-3.58s-6 1.08-6 3.58V18h12v-1.41zM5.48 16c.74-.5 2.22-1 3.52-1s2.77.49 3.52 1H5.48z\"/></svg>',\n 'Contact-Mail',\n [...calling],\n);\nbuiltInIcons.putEntry(contactMail);\nconst crop = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8v8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2H7z\"/></svg>',\n 'Crop',\n [\n 'screenshot',\n 'landscape',\n 'transform',\n 'cut',\n 'framing',\n 'select area',\n 'trimming',\n 'crop tool',\n 'rectangle',\n 'square',\n ],\n);\nbuiltInIcons.putEntry(crop);\nconst dvr = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M21 3H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h5v2h8v-2h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 14H3V5h18v12zm-2-9H8v2h11V8zm0 4H8v2h11v-2zM7 8H5v2h2V8zm0 4H5v2h2v-2z\"/></svg>',\n 'DVR',\n [...entertainment],\n);\nbuiltInIcons.putEntry(dvr);\nconst error = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"/></svg>',\n 'Error',\n [...infoDialogs],\n);\nbuiltInIcons.putEntry(error);\nconst extension = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10.5 4.5c.28 0 .5.22.5.5v2h6v6h2c.28 0 .5.22.5.5s-.22.5-.5.5h-2v6h-2.12c-.68-1.75-2.39-3-4.38-3s-3.7 1.25-4.38 3H4v-2.12c1.75-.68 3-2.39 3-4.38 0-1.99-1.24-3.7-2.99-4.38L4 7h6V5c0-.28.22-.5.5-.5m0-2C9.12 2.5 8 3.62 8 5H4c-1.1 0-1.99.9-1.99 2v3.8h.29c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-.3c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7v.3H17c1.1 0 2-.9 2-2v-4c1.38 0 2.5-1.12 2.5-2.5S20.38 11 19 11V7c0-1.1-.9-2-2-2h-4c0-1.38-1.12-2.5-2.5-2.5z\"/></svg>',\n 'Extension',\n [\n 'add on',\n 'plugin',\n 'feature',\n 'modification',\n 'utility',\n 'package',\n 'upgrade',\n 'update',\n 'software',\n 'tool',\n ],\n);\nbuiltInIcons.putEntry(extension);\nconst face = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10.25 13c0 .69-.56 1.25-1.25 1.25S7.75 13.69 7.75 13s.56-1.25 1.25-1.25 1.25.56 1.25 1.25zM15 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm7 .25c0 5.52-4.48 10-10 10S2 17.52 2 12 6.48 2 12 2s10 4.48 10 10zM10.66 4.12C12.06 6.44 14.6 8 17.5 8c.46 0 .91-.05 1.34-.12C17.44 5.56 14.9 4 12 4c-.46 0-.91.05-1.34.12zM4.42 9.47c1.71-.97 3.03-2.55 3.66-4.44C6.37 6 5.05 7.58 4.42 9.47zM20 12c0-.78-.12-1.53-.33-2.24-.7.15-1.42.24-2.17.24-3.13 0-5.92-1.44-7.76-3.69C8.69 8.87 6.6 10.88 4 11.86c.01.04 0 .09 0 .14 0 4.41 3.59 8 8 8s8-3.59 8-8z\"/></svg>',\n 'Face',\n [\n ...people,\n 'smile',\n 'emotion',\n 'expression',\n 'head',\n 'mask',\n 'appearance',\n 'character',\n ],\n);\nbuiltInIcons.putEntry(face);\nconst fastfood = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M1 21.98c0 .56.45 1.01 1.01 1.01H15c.56 0 1.01-.45 1.01-1.01V21H1v.98zM8.5 8.99C4.75 8.99 1 11 1 15h15c0-4-3.75-6.01-7.5-6.01zM3.62 13c1.11-1.55 3.47-2.01 4.88-2.01s3.77.46 4.88 2.01H3.62zM1 17h15v2H1zM18 5V1h-2v4h-5l.23 2h9.56l-1.4 14H18v2h1.72c.84 0 1.53-.65 1.63-1.47L23 5h-5z\"/></svg>',\n 'Fastfood',\n [...groceries],\n);\nbuiltInIcons.putEntry(fastfood);\nconst fingerprint = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.24.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28zM3.5 9.72c-.1 0-.2-.03-.29-.09-.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1.5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7-.23.16-.54.11-.7-.12-.9-1.26-2.04-2.25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.39.21zm6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.05-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39s-4.66 1.97-4.66 4.39c0 1.44.32 2.77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15zm7.17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s.5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27-.05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12zM14.91 22c-.04 0-.09-.01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38-2.94 3.08-2.94s3.08 1.32 3.08 2.94c0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08-1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73-2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08-1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07.42.35.35.61-.05.23-.26.38-.47.38z\"/></svg>',\n 'Fingerprint',\n ['security', 'crime', 'authentication', 'identity', 'access', 'login'],\n);\nbuiltInIcons.putEntry(fingerprint);\nconst hand = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M18 24h-6.55c-1.08 0-2.14-.45-2.89-1.23l-7.3-7.61 2.07-1.83c.62-.55 1.53-.66 2.26-.27L8 14.34V4.79c0-1.38 1.12-2.5 2.5-2.5.17 0 .34.02.51.05.09-1.3 1.17-2.33 2.49-2.33.86 0 1.61.43 2.06 1.09.29-.12.61-.18.94-.18 1.38 0 2.5 1.12 2.5 2.5v.28c.16-.03.33-.05.5-.05 1.38 0 2.5 1.12 2.5 2.5V20c0 2.21-1.79 4-4 4zM4.14 15.28l5.86 6.1c.38.39.9.62 1.44.62H18c1.1 0 2-.9 2-2V6.15c0-.28-.22-.5-.5-.5s-.5.22-.5.5V12h-2V3.42c0-.28-.22-.5-.5-.5s-.5.22-.5.5V12h-2V2.51c0-.28-.22-.5-.5-.5s-.5.22-.5.5V12h-2V4.79c0-.28-.22-.5-.5-.5s-.5.23-.5.5v12.87l-5.35-2.83-.51.45z\"/></svg>',\n 'Hand',\n [...fingers],\n);\nbuiltInIcons.putEntry(hand);\nconst help = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\"/></svg>',\n 'Help',\n [...fingers],\n);\nbuiltInIcons.putEntry(help);\nconst image = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86l-3 3.87L9 13.14 6 17h12l-3.86-5.14z\"/></svg>',\n 'Image',\n [...print],\n);\nbuiltInIcons.putEntry(image);\nconst lightbulb = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\"/></svg>',\n 'Lightbulb',\n [\n 'fluorescent',\n 'circle',\n 'idea',\n 'inspiration',\n 'creativity',\n 'illumination',\n 'energy',\n 'solution',\n 'lightning',\n 'lamp',\n 'vision',\n 'glow',\n 'light source',\n ],\n);\nbuiltInIcons.putEntry(lightbulb);\nconst lock = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g fill=\"none\"><path d=\"M0 0h24v24H0V0z\"/><path d=\"M0 0h24v24H0V0z\" opacity=\".87\"/></g><path d=\"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6zm9 14H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"/></svg>',\n 'Lock',\n [\n 'key',\n 'timer',\n 'schedule',\n 'grid view',\n 'face',\n 'password',\n 'security',\n 'safety',\n 'secure',\n 'unlock',\n 'access',\n 'protection',\n ],\n);\nbuiltInIcons.putEntry(lock);\nconst loyalty = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41s-.23-1.06-.59-1.42zM13 20.01L4 11V4h7v-.01l9 9-7 7.02z\"/><circle cx=\"6.5\" cy=\"6.5\" r=\"1.5\"/><path d=\"M8.9 12.55c0 .57.23 1.07.6 1.45l3.5 3.5 3.5-3.5c.37-.37.6-.89.6-1.45 0-1.13-.92-2.05-2.05-2.05-.57 0-1.08.23-1.45.6l-.6.6-.6-.59c-.37-.38-.89-.61-1.45-.61-1.13 0-2.05.92-2.05 2.05z\"/></svg>',\n 'Loyalty',\n ['dog', 'trust', 'partnership', 'honor', 'faithfulness', 'long therm'],\n);\nbuiltInIcons.putEntry(loyalty);\nconst pictureInPicture = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M19 7h-8v6h8V7zm-2 4h-4V9h4v2zm4-8H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z\"/></svg>',\n 'Picture-in-Picture',\n [...print],\n);\nbuiltInIcons.putEntry(pictureInPicture);\nconst portrait = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 12c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm6 8.58c0-2.5-3.97-3.58-6-3.58s-6 1.08-6 3.58V18h12v-1.42zM8.48 16c.74-.51 2.23-1 3.52-1s2.78.49 3.52 1H8.48zM19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"/></svg>',\n 'Portrait',\n [...people, ...print],\n);\nbuiltInIcons.putEntry(portrait);\nconst rocket = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><g><g><path d=\"M14,11c0-1.1-0.9-2-2-2s-2,0.9-2,2s0.9,2,2,2S14,12.1,14,11z M7.98,18.25c-0.29-0.9-0.57-1.94-0.76-3L6,16.07v2.98 L7.98,18.25z M12,2c0,0,5,2,5,11l2.11,1.41c0.56,0.37,0.89,1,0.89,1.66V22l-5-2H9l-5,2v-5.93c0-0.67,0.33-1.29,0.89-1.66L7,13 C7,4,12,2,12,2z M12,4.36c0,0-3,2.02-3,8.64c0,2.25,1,5,1,5h4c0,0,1-2.75,1-5C15,6.38,12,4.36,12,4.36z M18,19.05v-2.98 l-1.22-0.81c-0.19,1.05-0.47,2.1-0.76,3L18,19.05z\"/></g></g></g></svg>',\n 'Rocket',\n [...vehicle, ...airport],\n);\nbuiltInIcons.putEntry(rocket);\nconst satellite = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><path d=\"M21,14l2,0c0,4.97-4.03,9-9,9l0-2C17.87,21,21,17.87,21,14z M14,17l0,2c2.76,0,5-2.24,5-5l-2,0C17,15.66,15.66,17,14,17z M18.26,0.59l3.54,3.54c0.78,0.78,0.78,2.05,0,2.83l-3.18,3.18c-0.78,0.78-2.05,0.78-2.83,0l-1.24-1.24L13.84,9.6l1.24,1.24 c0.78,0.78,0.78,2.05,0,2.83l-1.41,1.41c-0.78,0.78-2.05,0.78-2.83,0L9.6,13.84l-0.71,0.71l1.24,1.24c0.78,0.78,0.78,2.05,0,2.83 L6.95,21.8c-0.78,0.78-2.05,0.78-2.83,0l-3.54-3.54c-0.78-0.78-0.78-2.05,0-2.83l3.18-3.18c0.78-0.78,2.05-0.78,2.83,0l1.24,1.24 l0.71-0.71L7.3,11.55c-0.78-0.78-0.78-2.05,0-2.83L8.72,7.3c0.78-0.78,2.05-0.78,2.83,0l1.24,1.24l0.71-0.71L12.25,6.6 c-0.78-0.78-0.78-2.05,0-2.83l3.18-3.18C16.22-0.2,17.48-0.2,18.26,0.59z M3.06,15.79L2,16.85l3.54,3.54l1.06-1.06L3.06,15.79z M5.18,13.67l-1.06,1.06l3.54,3.54l1.06-1.06L5.18,13.67z M10.13,8.72l-1.41,1.41l3.54,3.54l1.41-1.41L10.13,8.72z M14.73,4.12 l-1.06,1.06l3.54,3.54l1.06-1.06L14.73,4.12z M16.85,2l-1.06,1.06l3.54,3.54l1.06-1.06L16.85,2z\"/></g></svg>',\n 'Satellite',\n [...airport],\n);\nbuiltInIcons.putEntry(satellite);\nconst share = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92c0-1.61-1.31-2.92-2.92-2.92zM18 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM6 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm12 7.02c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"/></svg>',\n 'Share',\n ['send', 'link', 'mobile', 'location', 'upload', 'download', ...calling],\n);\nbuiltInIcons.putEntry(share);\nconst slideshow = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10 8v8l5-4-5-4zm9-5H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\"/></svg>',\n 'Slideshow',\n ['send', 'link', 'mobile', 'location', 'upload', 'download', ...calling],\n);\nbuiltInIcons.putEntry(slideshow);\nconst star = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"/></svg>',\n 'Star',\n [...rating],\n);\nbuiltInIcons.putEntry(star);\nconst sun = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M6.76 4.84l-1.8-1.79-1.41 1.41 1.79 1.79zM1 10.5h3v2H1zM11 .55h2V3.5h-2zm8.04 2.495l1.408 1.407-1.79 1.79-1.407-1.408zm-1.8 15.115l1.79 1.8 1.41-1.41-1.8-1.79zM20 10.5h3v2h-3zm-8-5c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm-1 4h2v2.95h-2zm-7.45-.96l1.41 1.41 1.79-1.8-1.41-1.41z\"/></svg>',\n 'Sun',\n [\n 'light mode',\n 'solar power',\n 'clear day',\n 'curtains',\n 'star',\n 'summer',\n 'warm',\n 'energy',\n ],\n);\nbuiltInIcons.putEntry(sun);\nconst table = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><g><path d=\"M21.96,9.73l-1.43-5C20.41,4.3,20.02,4,19.57,4H4.43C3.98,4,3.59,4.3,3.47,4.73l-1.43,5C1.86,10.36,2.34,11,3,11h2.2L4,20 h2l0.67-5h10.67L18,20h2l-1.2-9H21C21.66,11,22.14,10.36,21.96,9.73z M6.93,13l0.27-2h9.6l0.27,2H6.93z M4.33,9l0.86-3h13.63 l0.86,3H4.33z\"/></g></g></svg>',\n 'Table',\n ['device', 'furniture', 'desk', 'dining', 'meeting'],\n);\nbuiltInIcons.putEntry(table);\nconst videocam = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M15 8v8H5V8h10m1-2H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4V7c0-.55-.45-1-1-1z\"/></svg>',\n 'Videocam',\n [...entertainment],\n);\nbuiltInIcons.putEntry(videocam);\nconst wysiwyg = new Entry(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><g><rect fill=\"none\" height=\"24\" width=\"24\"/><path d=\"M19,3H5C3.89,3,3,3.9,3,5v14c0,1.1,0.89,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.11,3,19,3z M19,19H5V7h14V19z M17,12H7v-2 h10V12z M13,16H7v-2h6V16z\"/></g></svg>',\n 'Wysiwyg',\n [\n 'editor',\n 'design',\n 'content',\n 'user interface',\n 'page builder',\n 'layout',\n 'preview',\n 'templates',\n ],\n);\nbuiltInIcons.putEntry(wysiwyg);\n\nexport function addCustomIcons(newIcons: Dictionary): void {\n for (const key in newIcons.keysArray().entries()) {\n customIcons.add(newIcons.get(key), key);\n }\n}\n","import { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { addCustomIcons } from 'src/app/tools/icon-set-config/domain/allIcons';\nimport { Configuration } from 'src/app/domain/entities/configuration';\nimport { INITIAL_ICON_SET_NAME } from '../../../domain/entities/constants';\nimport { IconSet } from '../../../domain/entities/iconSet';\n\nexport class IconConfiguration {\n iconSetName = INITIAL_ICON_SET_NAME;\n\n private allIconDictionary: Dictionary;\n\n constructor(allIconDictionary: Dictionary) {\n this.allIconDictionary = allIconDictionary;\n }\n\n getDefaultConf(): Configuration {\n return defaultIconSet;\n }\n\n addCustomIcons(\n actors: string[],\n actorsDict: Dictionary,\n workObjects: string[],\n workObjectsDict: Dictionary,\n ): void {\n const newCustomIcons: { [key: string]: any } = {};\n\n actors.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newCustomIcons[name] = actorsDict.get(name);\n }\n });\n\n workObjects.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newCustomIcons[name] = workObjectsDict.get(name);\n }\n });\n\n const customIcons = new Dictionary();\n Object.keys(newCustomIcons).forEach((key) => {\n customIcons.set(key, newCustomIcons[key]);\n });\n\n addCustomIcons(customIcons);\n }\n\n createCustomConf(iconSetConfiguration: IconSet): Configuration {\n this.iconSetName = iconSetConfiguration.name;\n\n let actors = iconSetConfiguration.actors;\n let workObjects = iconSetConfiguration.workObjects;\n\n this.addCustomIcons(\n actors.keysArray(),\n actors,\n workObjects.keysArray(),\n workObjects,\n );\n\n return new Configuration(actors.keysArray(), workObjects.keysArray());\n }\n}\n\nexport const defaultIconSet = {\n actors: ['Person', 'Group', 'System'],\n workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'],\n};\n","export enum IconFilterOptions {\n ONLY_ACTORS = 'ICON_FILTER_ACTOR',\n ONLY_WORKOBJECTS = 'ICON_FILTER_WORKOBJECT',\n ONLY_UNASSIGNED = 'ICON_FILTER_UNASSIGNED',\n NO_FILTER = '',\n}\n","import { AfterViewChecked, Component, Input } from '@angular/core';\nimport { IconListItem } from '../../domain/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","<div class=\"detailsListItem\">\n <img id=\"{{ id }}\" class=\"icon\" alt=\"{{ name }}\" [src]=\"icon.svg\" />\n <mat-label class=\"iconName\">{{ icon.name }}</mat-label>\n</div>\n","import { AfterViewChecked, Component, Input, OnInit } from '@angular/core';\nimport { IconListItem } from '../../domain/iconListItem';\nimport { BehaviorSubject } from 'rxjs';\nimport { IconSetCustomizationService } from '../../services/icon-set-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<IconListItem>({});\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(\n private iconSetCustomizationService: IconSetCustomizationService,\n ) {}\n\n ngOnInit(): void {\n this.icon = this.iconSetCustomizationService.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.iconSetCustomizationService.setAsUnassigned(\n this.iconName,\n this.icon.value.isActor,\n );\n }\n\n toggleActor(): void {\n this.iconSetCustomizationService.setAsActor(true, this.iconName);\n }\n\n toggleWorkobject(): void {\n this.iconSetCustomizationService.setAsWorkobject(true, this.iconName);\n }\n}\n","<div>\n <div class=\"content\">\n <img id=\"{{ id }}\" class=\"icon\" src=\"\" alt=\"{{ name }}\" />\n <div class=\"name\">{{ name }}</div>\n </div>\n <div class=\"footer\">\n <mat-button-toggle-group [hideSingleSelectionIndicator]=\"true\">\n <mat-button-toggle\n (change)=\"toggleNone()\"\n [value]=\"isNone\"\n [checked]=\"isNone\"\n >\n <span class=\"toggleButtonTitle\">None</span>\n </mat-button-toggle>\n <mat-button-toggle\n [class.activeMatButtonActor]=\"isActor\"\n (change)=\"toggleActor()\"\n [value]=\"isActor\"\n [checked]=\"isActor\"\n >\n <span class=\"toggleButtonTitle\">Actor</span>\n </mat-button-toggle>\n <mat-button-toggle\n [class.activeMatButtonWorkObject]=\"isWorkobject\"\n (change)=\"toggleWorkobject()\"\n [value]=\"isWorkobject\"\n [checked]=\"isWorkobject\"\n >\n <span class=\"toggleButtonTitle\">Work Object</span>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { DetailsListItemComponent } from './details-list-item/details-list-item.component';\nimport { IconListItemComponent } from './icon-list-item/icon-list-item.component';\nimport { IconSetConfigurationComponent } from './icon-set-configuration/icon-set-configuration.component';\nimport { IconSetDetailsComponent } from './icon-set-details/icon-set-details.component';\n\n@NgModule({\n declarations: [\n DetailsListItemComponent,\n IconListItemComponent,\n IconSetConfigurationComponent,\n IconSetDetailsComponent,\n ],\n exports: [\n DetailsListItemComponent,\n IconListItemComponent,\n IconSetConfigurationComponent,\n IconSetDetailsComponent,\n ],\n imports: [CommonModule, MaterialModule],\n})\nexport class IconSetConfigModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { IconSetImportExportService } from 'src/app/tools/icon-set-config/services/icon-set-import-export.service';\nimport {\n ICON_PREFIX,\n IconDictionaryService,\n} from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { sanitizeIconName } from 'src/app/utils/sanitizer';\nimport { ElementTypes } from '../../../../domain/entities/elementTypes';\nimport { IconFilterOptions } from '../../domain/iconFilterOptions';\nimport { IconSetCustomizationService } from '../../services/icon-set-customization.service';\nimport { CustomIconSetConfiguration } from '../../../../domain/entities/custom-icon-set-configuration';\n\n@Component({\n selector: 'app-icon-set-configuration',\n templateUrl: './icon-set-configuration.component.html',\n styleUrls: ['./icon-set-configuration.component.scss'],\n})\nexport class IconSetConfigurationComponent implements OnInit {\n private iconSetConfigurationTypes: CustomIconSetConfiguration;\n\n filter = new BehaviorSubject<IconFilterOptions>(IconFilterOptions.NO_FILTER);\n\n selectedActors = new BehaviorSubject<string[]>([]);\n selectedWorkobjects = new BehaviorSubject<string[]>([]);\n\n allIcons: BehaviorSubject<Dictionary>;\n allIconNames = new BehaviorSubject<string[]>([]);\n allFilteredIconNames = new BehaviorSubject<string[]>([]);\n\n constructor(\n private iconSetConfigurationService: IconSetImportExportService,\n private iconDictionaryService: IconDictionaryService,\n private iconSetCustomizationService: IconSetCustomizationService,\n private elementRegistryService: ElementRegistryService,\n ) {\n this.iconSetConfigurationTypes =\n this.iconSetCustomizationService.getIconSetConfiguration().value;\n\n this.allIcons = new BehaviorSubject<Dictionary>(\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.iconSetCustomizationService.selectedActors$;\n this.selectedWorkobjects =\n this.iconSetCustomizationService.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 return a.toLowerCase().localeCompare(b.toLowerCase());\n }\n\n /** Default Icon Set **/\n loadMinimalIconConfigurationWithDefaultIcons(): void {\n this.iconSetCustomizationService.resetIconSet();\n }\n\n loadInitialConfiguration(): void {\n this.iconSetCustomizationService.cancel();\n }\n\n /** Persist Icon Set **/\n saveIconSet(): void {\n this.iconSetCustomizationService.saveIconSet(\n this.elementRegistryService.getUsedIcons(),\n );\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'; // this suffix helps users to see which icons they uploaded; it should not be used to check if an icon is actually custom or not since this convention was introduce after v1.3.0 and is therefore not reliable information\n\n reader.onloadend = (e: ProgressEvent<FileReader>) => {\n if (e.target) {\n const src: string = e.target.result as unknown as string;\n this.iconDictionaryService.addIMGToIconDictionary(src, iconName);\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n this.iconSetCustomizationService.addNewIcon(iconName);\n }\n };\n reader.readAsDataURL(iconInputFile);\n }\n }\n\n /** Import Icon Set **/\n startIconSetImport(): void {\n document.getElementById('importDomain')?.click();\n }\n\n importIconSet(): void {\n // @ts-ignore\n const iconSetInputFile = document.getElementById('importDomain').files[0];\n const reader = new FileReader();\n\n reader.onloadend = (e: ProgressEvent<FileReader>) => {\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 =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\n this.iconSetConfigurationService.loadConfiguration(config, false);\n\n this.iconSetCustomizationService.importConfiguration(config);\n\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n };\n\n reader.readAsText(iconSetInputFile);\n }\n\n /** Filter **/\n filterForActors(): void {\n if (this.filter.value !== IconFilterOptions.ONLY_ACTORS) {\n this.filter.next(IconFilterOptions.ONLY_ACTORS);\n } else {\n this.filter.next(IconFilterOptions.NO_FILTER);\n }\n }\n\n filterForWorkobjects(): void {\n if (this.filter.value !== IconFilterOptions.ONLY_WORKOBJECTS) {\n this.filter.next(IconFilterOptions.ONLY_WORKOBJECTS);\n } else {\n this.filter.next(IconFilterOptions.NO_FILTER);\n }\n }\n\n filterForUnassigned(): void {\n if (this.filter.value !== IconFilterOptions.ONLY_UNASSIGNED) {\n this.filter.next(IconFilterOptions.ONLY_UNASSIGNED);\n } else {\n this.filter.next(IconFilterOptions.NO_FILTER);\n }\n }\n\n filterByNameAndType($event: any) {\n const filteredByKeyWord = this.allIcons.value\n .all()\n .filter((entry) =>\n entry.keyWords.some((key) => {\n return key.toLowerCase().includes($event.target.value.toLowerCase());\n }),\n )\n .map((entry) => entry.key);\n\n const filteredByNameAndType = this.getFilteredNamesForType(\n this.filter.value,\n ).filter(\n (name) =>\n name.toLowerCase().includes($event.target.value.toLowerCase()) ||\n filteredByKeyWord.includes(name),\n );\n this.allFilteredIconNames.next(filteredByNameAndType.sort(this.sortByName));\n }\n\n private getFilteredNamesForType(type: IconFilterOptions): string[] {\n let allFiltered: string[] = [];\n switch (type) {\n case IconFilterOptions.NO_FILTER:\n allFiltered = this.allIconNames.value;\n break;\n case IconFilterOptions.ONLY_ACTORS:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconActor(name),\n );\n break;\n case IconFilterOptions.ONLY_WORKOBJECTS:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconWorkObject(name),\n );\n break;\n case IconFilterOptions.ONLY_UNASSIGNED:\n allFiltered = this.allIconNames.value.filter(\n (name) =>\n !this.iconSetCustomizationService.isIconActor(name) &&\n !this.iconSetCustomizationService.isIconWorkObject(name),\n );\n break;\n }\n return allFiltered;\n }\n}\n","<div class=\"content\">\n <div>\n <div class=\"header\">\n <div class=\"searchbar\">\n <div class=\"heading\">Filter:</div>\n <button\n mat-button\n [class.activeNone]=\"(filter | async) === 'ICON_FILTER_UNASSIGNED'\"\n title=\"Unassigned Icons\"\n (click)=\"filterForUnassigned()\"\n >\n <span>Unassigned</span>\n </button>\n <button\n mat-button\n [class.activeActor]=\"(filter | async) === 'ICON_FILTER_ACTOR'\"\n title=\"Icons used as actors\"\n (click)=\"filterForActors()\"\n >\n <span>Actors</span>\n </button>\n <button\n mat-button\n [class.activeWorkObject]=\"\n (filter | async) === 'ICON_FILTER_WORKOBJECT'\n \"\n title=\"Icons used as work objects\"\n (click)=\"filterForWorkobjects()\"\n >\n <span>Work Objects</span>\n </button>\n <mat-form-field\n class=\"searchForm dense-8\"\n color=\"accent\"\n subscriptSizing=\"dynamic\"\n appearance=\"outline\"\n >\n <mat-label>Search icons</mat-label>\n <input matInput type=\"text\" (input)=\"filterByNameAndType($event)\" />\n </mat-form-field>\n </div>\n <div class=\"buttons\">\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Import icon set\"\n (click)=\"startIconSetImport()\"\n >\n <span>Import icon set</span>\n <input\n type=\"file\"\n accept=\".domain, .iconset\"\n style=\"display: none\"\n id=\"importDomain\"\n name=\"file\"\n onclick=\"this.value=null\"\n (change)=\"importIconSet()\"\n />\n </button>\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Upload icon\"\n (click)=\"startIconUpload()\"\n >\n <span>Upload icon</span>\n <input\n type=\"file\"\n multiple\n accept=\".svg, image/png, image/jpeg, image/gif\"\n style=\"display: none\"\n id=\"importIcon\"\n name=\"file\"\n onclick=\"this.value=null\"\n (change)=\"importIcon()\"\n />\n </button>\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Reset to default icon set\"\n (click)=\"loadMinimalIconConfigurationWithDefaultIcons()\"\n >\n <span>Reset to default</span>\n </button>\n <button\n mat-stroked-button\n class=\"mr-1\"\n title=\"Cancel changes\"\n (click)=\"loadInitialConfiguration()\"\n >\n <span>Cancel changes</span>\n </button>\n <button\n mat-flat-button\n class=\"mr-1\"\n title=\"Save changes\"\n color=\"primary\"\n (click)=\"saveIconSet()\"\n >\n <span>Save changes</span>\n </button>\n </div>\n </div>\n <div class=\"iconList smallScrollbar\">\n @for (iconName of allFilteredIconNames | async; track iconName) {\n <app-icon-list-item [iconName]=\"iconName\"></app-icon-list-item>\n }\n </div>\n </div>\n <app-icon-set-details></app-icon-set-details>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { IconSetCustomizationService } from 'src/app/tools/icon-set-config/services/icon-set-customization.service';\nimport { IconSetImportExportService } from 'src/app/tools/icon-set-config/services/icon-set-import-export.service';\nimport { IconListItem } from 'src/app/tools/icon-set-config/domain/iconListItem';\n\n@Component({\n selector: 'app-icon-set-details',\n templateUrl: './icon-set-details.component.html',\n styleUrls: ['./icon-set-details.component.scss'],\n})\nexport class IconSetDetailsComponent implements OnInit {\n iconSetName: Observable<string>;\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: IconSetCustomizationService,\n private importExportService: IconSetImportExportService,\n ) {\n this.iconSetName = importExportService.iconSetName$;\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 exportIconSet(): void {\n this.importExportService.exportConfiguration();\n }\n}\n","<div class=\"details smallScrollbar\">\n <div>\n <h3>Export as File:</h3>\n <div class=\"iconSetDetails\">\n <mat-form-field class=\"exportForm\" color=\"accent\">\n <mat-label>Icon set name</mat-label>\n <input\n matInput\n type=\"text\"\n subscriptSizing=\"dynamic\"\n class=\"dense-8\"\n (input)=\"changeName($event)\"\n [value]=\"iconSetName | async\"\n />\n </mat-form-field>\n <button\n mat-stroked-button\n class=\"exportForm\"\n title=\"Export icon set\"\n (click)=\"exportIconSet()\"\n >\n <span>Export icon set</span>\n </button>\n </div>\n </div>\n <div class=\"actorList\">\n <h3>Order of Actors:</h3>\n <mat-list>\n @for (\n iconName of selectedActors$ | async;\n track iconName;\n let i = $index\n ) {\n <mat-list-item\n class=\"compactItem\"\n draggable=\"true\"\n (dragover)=\"allowDrop($event, 'actorList')\"\n (dragstart)=\"onDragStart(i, 'actorList')\"\n (drop)=\"onDrop($event, iconName, true, i)\"\n >\n <app-details-list-item [icon]=\"getIconForName(iconName)\" />\n </mat-list-item>\n }\n </mat-list>\n </div>\n <div class=\"workobjectList\">\n <h3>Order of Work Objects:</h3>\n <mat-list>\n @for (\n iconName of selectedWorkobjects$ | async;\n track iconName;\n let i = $index\n ) {\n <mat-list-item\n class=\"compactItem\"\n draggable=\"true\"\n (dragover)=\"allowDrop($event, 'workobjectList')\"\n (dragstart)=\"onDragStart(i, 'workobjectList')\"\n (drop)=\"onDrop($event, iconName, false, i)\"\n >\n <app-details-list-item [icon]=\"getIconForName(iconName)\" />\n </mat-list-item>\n }\n </mat-list>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { Configuration } from 'src/app/domain/entities/configuration';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport {\n defaultIconSet,\n IconConfiguration,\n} from 'src/app/tools/icon-set-config/domain/iconConfiguration';\nimport {\n builtInIcons,\n customIcons,\n} from 'src/app/tools/icon-set-config/domain/allIcons';\nimport { sanitizeIconName } from '../../../utils/sanitizer';\nimport getIconId = ElementTypes.getIconId;\nimport { IconSet } from '../../../domain/entities/iconSet';\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 builtInIconsDictionary = new Dictionary();\n private iconDictionaryForMenu = new Dictionary();\n\n private customConfiguration?: IconSet;\n\n private readonly iconConfig: IconConfiguration;\n\n constructor() {\n this.builtInIconsDictionary.addBuiltInIcons(builtInIcons);\n this.iconConfig = new IconConfiguration(this.builtInIconsDictionary);\n }\n\n initTypeDictionaries(actors: string[], workObjects: string[]): void {\n if (!actors || actors.length == 0) {\n actors = defaultIconSet.actors;\n }\n if (!workObjects || workObjects.length == 0) {\n workObjects = defaultIconSet.workObjects;\n }\n\n const allTypes = new Dictionary();\n allTypes.addBuiltInIcons(builtInIcons);\n allTypes.appendDict(this.getCustomIcons());\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 selectedIconNames: string[],\n allIcons: Dictionary,\n dictionary: Dictionary,\n elementType: ElementTypes,\n ) {\n dictionary.clear();\n for (const key of selectedIconNames) {\n dictionary.add(allIcons.get(key), key);\n }\n\n dictionary.keysArray().forEach((name) => {\n this.registerIconForMenu(\n name,\n ICON_PREFIX + sanitizeIconName(name.toLowerCase()),\n elementType,\n );\n });\n }\n\n getCurrentIconConfigurationForMenu(): 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(getIconId(element.type))) {\n allIn = false;\n }\n });\n } else {\n return false;\n }\n return allIn;\n }\n\n /** Load Icons from Configuration **/\n addIconsFromIconSetConfiguration(\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.addBuiltInIcons(builtInIcons);\n allTypes.appendDict(customIcons);\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.registerIconForMenu(\n name,\n sanitizeIconName(ICON_PREFIX + name.toLowerCase()),\n dictionaryType,\n );\n }\n }\n });\n }\n\n /** Add Icon(s) to Dictionary **/\n private registerIconForMenu(\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.iconDictionaryForMenu.set(`${elementType}${name}`, src);\n }\n\n addIconsToTypeDictionary(\n actorIcons: BusinessObject[],\n workObjectIcons: BusinessObject[],\n ) {\n if (!this.allInTypeDictionary(ElementTypes.ACTOR, actorIcons)) {\n this.addIconsFromIconSetConfiguration(\n ElementTypes.ACTOR,\n actorIcons.map((element) => getIconId(element.type)),\n );\n }\n if (!this.allInTypeDictionary(ElementTypes.WORKOBJECT, workObjectIcons)) {\n this.addIconsFromIconSetConfiguration(\n ElementTypes.WORKOBJECT,\n workObjectIcons.map((element) => getIconId(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: IconSet,\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.registerIconForMenu(\n ICON_PREFIX + name.toLowerCase(),\n getIconId(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 private addNewIconsToDictionary(customIcons: Dictionary) {\n customIcons.keysArray().forEach((key) => {\n const custom = customIcons.get(key);\n this.addIMGToIconDictionary(custom, key);\n });\n this.addIconsToCss(customIcons);\n }\n\n addIMGToIconDictionary(input: string, name: string): void {\n customIcons.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 \"<svg viewBox='0 0 22 22' width='22' height='22' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><image width='22' height='22' xlink:href='\" +\n src +\n \"'/></svg>\"\n );\n }\n\n /** Getter & Setter **/\n\n getFullDictionary(): Dictionary {\n const fullDictionary = new Dictionary();\n fullDictionary.appendDict(this.builtInIconsDictionary);\n fullDictionary.appendDict(this.getCustomIcons());\n return fullDictionary;\n }\n\n getCustomIcons(): Dictionary {\n const appendedDict = new Dictionary();\n customIcons.keysArray().forEach((key) => {\n if (!this.builtInIconsDictionary.has(key)) {\n appendedDict.set(key, customIcons.get(key));\n }\n });\n return appendedDict;\n }\n\n getIconsAssignedAs(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 getNamesOfIconsAssignedAs(type: ElementTypes): string[] {\n return this.getIconsAssignedAs(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 getIconForMenu(elementType: ElementTypes, name: string): string | null {\n return this.iconDictionaryForMenu.get(`${elementType}${name}`);\n }\n\n getIconSource(name: string): string | null {\n if (this.builtInIconsDictionary.has(name)) {\n return this.builtInIconsDictionary.get(name);\n } else if (customIcons.has(name)) {\n return customIcons.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.builtInIconsDictionary;\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: IconSet): void {\n this.customConfiguration = customConfiguration;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { UsedIconList } from 'src/app/domain/entities/UsedIconList';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport {\n SNACKBAR_DURATION,\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n SNACKBAR_SUCCESS,\n} from '../../../domain/entities/constants';\nimport { Dictionary } from '../../../domain/entities/dictionary';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { IconListItem } from '../domain/iconListItem';\nimport { IconSetImportExportService } from './icon-set-import-export.service';\nimport { IconDictionaryService } from './icon-dictionary.service';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { CustomIconSetConfiguration } from '../../../domain/entities/custom-icon-set-configuration';\n\n/**\n * We are not allowed to call ImportDomainStoryService directly,\n * so we use this \"interface\" instead.\n */\nexport abstract class IconSetChangedService {\n public abstract iconConfigrationChanged(): Observable<IconSet>;\n public abstract getConfiguration(): IconSet;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconSetCustomizationService {\n private readonly iconSetConfigurationTypes: BehaviorSubject<CustomIconSetConfiguration>;\n\n private allIconListItems = new Dictionary();\n\n private configurationHasChanged = false;\n\n selectedActors$ = new BehaviorSubject<string[]>([]);\n selectedWorkobjects$ = new BehaviorSubject<string[]>([]);\n private changedIconSetConfiguration: IconSet | undefined;\n\n constructor(\n private iconSetConfigurationService: IconSetImportExportService,\n private iconDictionaryService: IconDictionaryService,\n iconSetChangedService: IconSetChangedService,\n private elementRegistryService: ElementRegistryService,\n private snackbar: MatSnackBar,\n ) {\n this.iconSetConfigurationTypes = new BehaviorSubject(\n this.iconSetConfigurationService.getCurrentConfigurationNamesWithoutPrefix(),\n );\n\n this.selectedWorkobjects$.next(\n this.iconSetConfigurationTypes.value.workObjects,\n );\n this.selectedActors$.next(this.iconSetConfigurationTypes.value.actors);\n\n iconDictionaryService\n .getAllIconDictionary()\n .keysArray()\n .forEach((iconName) => {\n this.addIconToAllIconList(iconName);\n });\n\n iconSetChangedService.iconConfigrationChanged().subscribe((config) => {\n this.importConfiguration(config);\n });\n\n const storedIconSetConfiguration =\n this.iconSetConfigurationService.getStoredIconSetConfiguration();\n if (storedIconSetConfiguration) {\n this.importConfiguration(storedIconSetConfiguration, false);\n }\n }\n\n importConfiguration(customConfig: IconSet, saveIconSet = true): void {\n const actorKeys = customConfig.actors.keysArray();\n const workObjectKeys = customConfig.workObjects.keysArray();\n const usedIcons = this.elementRegistryService.getUsedIcons();\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 this.selectedActors$.value.forEach((iconName) => {\n if (\n !actorKeys.includes(iconName) &&\n !usedIcons.actors.includes(iconName)\n ) {\n this.deselectActor(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 this.selectedWorkobjects$.value.forEach((iconName) => {\n if (\n !workObjectKeys.includes(iconName) &&\n !usedIcons.workobjects.includes(iconName)\n ) {\n this.deselectWorkobject(iconName);\n }\n });\n if (saveIconSet) {\n this.saveIconSet(usedIcons, true);\n }\n }\n\n /** Getter & Setter **/\n getIconSetConfiguration(): BehaviorSubject<CustomIconSetConfiguration> {\n return this.iconSetConfigurationTypes;\n }\n\n getIconForName(iconName: string): BehaviorSubject<IconListItem> {\n return this.allIconListItems.get(iconName);\n }\n\n isIconActor(iconName: string): boolean {\n return (\n this.iconSetConfigurationTypes.value.actors.filter(\n (actor: string) => actor === iconName,\n ).length > 0\n );\n }\n\n isIconWorkObject(iconName: string): boolean {\n return (\n this.iconSetConfigurationTypes.value.workObjects.filter(\n (workObject: string) => workObject === iconName,\n ).length > 0\n );\n }\n\n changeName(iconSetName: string): void {\n this.iconSetConfigurationService.setIconSetName(iconSetName);\n const changedIconSet = this.iconSetConfigurationTypes.value;\n changedIconSet.name = iconSetName;\n this.iconSetConfigurationTypes.next(changedIconSet);\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.iconSetConfigurationTypes.value;\n if (!value.actors.includes(actor)) {\n value.actors.push(actor);\n this.iconSetConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n }\n\n selectWorkObject(workObject: string): void {\n const value = this.iconSetConfigurationTypes.value;\n if (!value.workObjects.includes(workObject)) {\n value.workObjects.push(workObject);\n this.iconSetConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n }\n\n deselectActor(actor: string): void {\n if (this.iconSetConfigurationTypes) {\n this.iconSetConfigurationTypes.next({\n name: this.iconSetConfigurationTypes.value.name,\n actors: this.iconSetConfigurationTypes.value.actors.filter(\n (a: string) => !a.includes(actor),\n ),\n workObjects: this.iconSetConfigurationTypes.value.workObjects,\n });\n }\n this.updateActorSubject();\n }\n\n deselectWorkobject(workobject: string): void {\n if (this.iconSetConfigurationTypes) {\n this.iconSetConfigurationTypes.next({\n name: this.iconSetConfigurationTypes.value.name,\n actors: this.iconSetConfigurationTypes.value.actors,\n workObjects: this.iconSetConfigurationTypes.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.iconSetConfigurationTypes.value;\n value.workObjects = sortedList;\n this.iconSetConfigurationTypes.next(value);\n this.updateWorkObjectSubject();\n }\n\n setSelectedActors(sortedList: string[]): void {\n const value = this.iconSetConfigurationTypes.value;\n value.actors = sortedList;\n this.iconSetConfigurationTypes.next(value);\n this.updateActorSubject();\n }\n\n private updateActorSubject(): void {\n this.selectedActors$.next(this.iconSetConfigurationTypes.value.actors);\n this.configurationHasChanged = true;\n }\n\n private updateWorkObjectSubject(): void {\n this.selectedWorkobjects$.next(\n this.iconSetConfigurationTypes.value.workObjects,\n );\n this.configurationHasChanged = true;\n }\n\n /** Revert Icon Set **/\n resetIconSet(): void {\n const defaultConfig =\n this.iconSetConfigurationService.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.iconSetConfigurationTypes.next({\n name: defaultConfig.name,\n actors: defaultConfig.actors.keysArray(),\n workObjects: defaultConfig.workObjects.keysArray(),\n } as CustomIconSetConfiguration);\n\n this.updateAllIconBehaviourSubjects();\n }\n\n cancel(): void {\n this.iconSetConfigurationTypes.next(\n this.iconSetConfigurationService.getCurrentConfigurationNamesWithoutPrefix(),\n );\n this.updateAllIconBehaviourSubjects();\n this.resetToInitialConfiguration();\n }\n\n private resetToInitialConfiguration(): void {\n this.updateActorSubject();\n this.updateWorkObjectSubject();\n }\n\n /** Persist Icon Set **/\n saveIconSet(usedIcons: UsedIconList, imported = false): void {\n const changedActors: string[] = [];\n const changedWorkobjects: string[] = [];\n if (this.configurationHasChanged) {\n const changedIconSet = this.createIconSetConfiguration();\n\n const configurationActors = changedIconSet.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 = changedIconSet.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.changedIconSetConfiguration = changedIconSet;\n\n this.updateIcons(changedIconSet);\n\n this.iconSetConfigurationService.setStoredIconSetConfiguration(\n this.changedIconSetConfiguration,\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_LONGER,\n panelClass: SNACKBAR_ERROR,\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 work objects and cannot be changed: ${workobjects}`,\n undefined,\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_ERROR,\n },\n );\n }\n }\n }\n\n getAndClearSavedConfiguration(): IconSet | undefined {\n const temp = this.changedIconSetConfiguration;\n this.changedIconSetConfiguration = undefined;\n\n return temp;\n }\n\n private createIconSetConfiguration(): IconSet {\n const actors = new Dictionary();\n const workObjects = new Dictionary();\n\n this.iconSetConfigurationTypes.value.actors.forEach((name: string) => {\n actors.add(this.iconDictionaryService.getIconSource(name), name);\n });\n this.iconSetConfigurationTypes.value.workObjects.forEach((name: string) => {\n workObjects.add(this.iconDictionaryService.getIconSource(name), name);\n });\n\n return {\n name: this.iconSetConfigurationTypes.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.getDataUrlForIcon(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.getDataUrlForIcon(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 customIconSetConfiguration = this.iconSetConfigurationTypes.value;\n this.allIconListItems.keysArray().forEach((iconName) => {\n if (customIconSetConfiguration.actors.includes(iconName)) {\n this.updateIcon(true, false, iconName);\n } else if (customIconSetConfiguration.workObjects.includes(iconName)) {\n this.updateIcon(false, true, iconName);\n } else {\n this.updateIcon(false, false, iconName);\n }\n });\n }\n\n private getDataUrlForIcon(iconName: string): string {\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(changedIconSet: IconSet) {\n this.allIconListItems\n .keysArray()\n .forEach((item) => this.setAsUnassigned(item, this.isIconActor(item)));\n changedIconSet.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 changedIconSet.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 { BehaviorSubject } from 'rxjs';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { IconDictionaryService } from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { defaultIconSet } from '../domain/iconConfiguration';\nimport {\n ICON_SET_CONFIGURATION_KEY,\n INITIAL_ICON_SET_NAME,\n} from '../../../domain/entities/constants';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { IconSetConfigurationForExport } from '../../../domain/entities/icon-set-configuration-for-export';\nimport { CustomIconSetConfiguration } from '../../../domain/entities/custom-icon-set-configuration';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport { sanitizeIconName } from '../../../utils/sanitizer';\n\nexport interface FileConfiguration {\n name: string;\n actors: { [p: string]: any };\n workObjects: { [p: string]: any };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconSetImportExportService {\n private iconSetNameSubject = new BehaviorSubject<string>(\n INITIAL_ICON_SET_NAME,\n );\n\n iconSetName$ = this.iconSetNameSubject.asObservable();\n\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private storageService: StorageService,\n ) {}\n\n setIconSetName(name: string): void {\n this.iconSetNameSubject.next(name); // ? name : INITIAL_ICON_SET_NAME);\n }\n\n exportConfiguration(): void {\n const iconSetConfiguration = this.getCurrentConfigurationForExport();\n if (!iconSetConfiguration) {\n return;\n }\n\n const configJSONString = JSON.stringify(iconSetConfiguration, null, 2);\n const filename = this.iconSetNameSubject.value;\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 + '.iconset');\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n }\n\n loadConfiguration(customConfig: IconSet, updateIconSetName = true): 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 .addCustomIcons(actorKeys, actorDict, workObjectKeys, workObjectDict);\n\n this.iconDictionaryService.addIconsFromIconSetConfiguration(\n ElementTypes.ACTOR,\n actorKeys.map((a) => ElementTypes.ACTOR + a),\n );\n this.iconDictionaryService.addIconsFromIconSetConfiguration(\n ElementTypes.WORKOBJECT,\n workObjectKeys.map((w) => ElementTypes.WORKOBJECT + w),\n );\n\n if (updateIconSetName) {\n const configurationName = customConfig.name;\n this.setIconSetName(configurationName);\n }\n }\n\n getCurrentConfiguration(): IconSet | undefined {\n const actors = this.iconDictionaryService.getActorsDictionary();\n const workObjects = this.iconDictionaryService.getWorkObjectsDictionary();\n\n let iconSetConfiguration;\n\n if (actors.size() > 0 && workObjects.size() > 0) {\n iconSetConfiguration = this.createConfigFromDictionaries(\n actors,\n workObjects,\n );\n }\n return iconSetConfiguration;\n }\n\n getCurrentConfigurationForExport():\n | IconSetConfigurationForExport\n | 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(): CustomIconSetConfiguration {\n return {\n name: this.iconSetNameSubject.value || INITIAL_ICON_SET_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(): IconSet {\n const minimalConfig = this.createConfigFromCanvas();\n\n defaultIconSet.actors.forEach((iconName) => {\n minimalConfig.actors.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName,\n );\n });\n defaultIconSet.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 ): IconSet {\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.iconSetNameSubject.value,\n actors: newActors,\n workObjects: newWorkobjects,\n };\n }\n\n public createIconSetConfiguration(\n fileConfiguration: FileConfiguration,\n ): IconSet {\n if (fileConfiguration === undefined) {\n return {\n name: '',\n actors: new Dictionary(),\n workObjects: new Dictionary(),\n };\n }\n\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n Object.keys(fileConfiguration.actors).forEach((key) => {\n let icon = fileConfiguration.actors[key];\n if (icon) {\n // make sure the actor has an icon\n actorsDict.add(icon, sanitizeIconName(key));\n }\n });\n\n Object.keys(fileConfiguration.workObjects).forEach((key) => {\n let icon = fileConfiguration.workObjects[key];\n if (icon) {\n // make sure the work object has an icon\n workObjectsDict.add(icon, sanitizeIconName(key));\n }\n });\n\n return {\n name: fileConfiguration.name,\n actors: actorsDict,\n workObjects: workObjectsDict,\n };\n }\n\n public getStoredIconSetConfiguration(): IconSet | undefined {\n const iconSetString = this.storageService.get(ICON_SET_CONFIGURATION_KEY);\n\n if (!iconSetString) {\n return;\n } else {\n const configurationFromFile = this.createIconSetConfiguration(\n JSON.parse(iconSetString),\n );\n if (this.checkValidityOfConfiguration(configurationFromFile)) {\n return configurationFromFile;\n }\n }\n return;\n }\n\n public setStoredIconSetConfiguration(config: IconSet): 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 this.storageService.set(\n ICON_SET_CONFIGURATION_KEY,\n JSON.stringify(configForStorage, null, 2),\n );\n }\n\n private createConfigFromCanvas(): IconSet {\n const config = {\n name: INITIAL_ICON_SET_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 private checkValidityOfConfiguration(iconSetConfiguration: IconSet) {\n return (\n iconSetConfiguration.actors.keysArray().length > 1 &&\n iconSetConfiguration.workObjects.keysArray().length > 1 &&\n !iconSetConfiguration.actors\n .all()\n .some((e) => typeof e.value !== 'string') &&\n !iconSetConfiguration.workObjects\n .all()\n .some((e) => typeof e.value !== 'string')\n );\n }\n}\n","import { Directive, HostBinding, HostListener } from '@angular/core';\nimport { ImportDomainStoryService } from '../services/import-domain-story.service';\nimport {\n SNACKBAR_DURATION_LONG,\n SNACKBAR_ERROR,\n} from '../../../domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { DirtyFlagService } from '../../../domain/services/dirty-flag.service';\n\n@Directive({\n standalone: true,\n selector: '[appDrag]',\n})\nexport class DragDirective {\n @HostBinding('style.background') private background = '';\n\n constructor(\n private importDomainStoryService: ImportDomainStoryService,\n private snackbar: MatSnackBar,\n private dirtyFlagService: DirtyFlagService,\n ) {}\n\n @HostListener('dragover', ['$event']) public onDragOver(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#999';\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '';\n }\n\n @HostListener('drop', ['$event']) public onDrop(evt: DragEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '';\n\n if (evt.dataTransfer?.files[0]) {\n if (this.dirtyFlagService.dirty) {\n this.importDomainStoryService.openUnsavedChangesReminderDialog(() =>\n this.importDomainStoryService.performDropImport(\n evt.dataTransfer!.files[0],\n ),\n );\n } else {\n this.importDomainStoryService.performDropImport(\n evt.dataTransfer.files[0],\n );\n }\n } else {\n this.snackbar.open('Nothing to import', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n }\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n selector: 'app-import-dialog',\n templateUrl: './import-dialog.component.html',\n styleUrls: ['./import-dialog.component.scss'],\n})\nexport class ImportDialogComponent implements OnInit {\n fn: any;\n fileUrl: BehaviorSubject<string>;\n\n constructor(\n private dialogRef: MatDialogRef<ImportDialogComponent>,\n @Inject(MAT_DIALOG_DATA) data: () => {},\n ) {\n this.fileUrl = new BehaviorSubject<string>('');\n this.fn = data;\n }\n\n ngOnInit(): void {}\n\n doImport(): void {\n this.fn(this.fileUrl.value);\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n updateUrl($event: Event) {\n // @ts-ignore\n this.fileUrl.next($event.target.value);\n }\n}\n","<mat-dialog-content>\n <label for=\"urlInput\">\n <h2>Import Domain Story</h2>\n </label>\n <mat-form-field class=\"form-width\" color=\"accent\">\n <mat-label>URL</mat-label>\n <input\n matInput\n class=\"dense-8\"\n type=\"url\"\n id=\"urlInput\"\n subscriptSizing=\"dynamic\"\n [value]=\"fileUrl | async\"\n (input)=\"updateUrl($event)\"\n />\n </mat-form-field>\n</mat-dialog-content>\n<mat-dialog-actions>\n <br />\n <div>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button\n mat-flat-button\n color=\"primary\"\n (click)=\"doImport()\"\n [disabled]=\"!fileUrl.value\"\n >\n Import\n </button>\n </div>\n</mat-dialog-actions>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ImportDialogComponent } from './import-dialog/import-dialog.component';\n\n@NgModule({\n declarations: [ImportDialogComponent],\n exports: [ImportDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class ImportModule {}\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\nimport { IconDictionaryService } from 'src/app/tools/icon-set-config/services/icon-dictionary.service';\nimport { Dictionary } from 'src/app/domain/entities/dictionary';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\nimport { ImportRepairService } from 'src/app/tools/import/services/import-repair.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { RendererService } from 'src/app/tools/modeler/services/renderer.service';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n SNACKBAR_DURATION,\n SNACKBAR_DURATION_LONG,\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n SNACKBAR_SUCCESS,\n} from '../../../domain/entities/constants';\nimport { IconSetImportExportService } from '../../icon-set-config/services/icon-set-import-export.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { IconSetChangedService } from '../../icon-set-config/services/icon-set-customization.service';\nimport { ModelerService } from '../../modeler/services/modeler.service';\nimport { ImportDialogComponent } from '../presentation/import-dialog/import-dialog.component';\nimport { UnsavedChangesReminderComponent } from '../../unsavedChangesReminder/presentation/unsavedChangesReminder-dialog/unsaved-changes-reminder/unsaved-changes-reminder.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImportDomainStoryService\n implements OnDestroy, IconSetChangedService\n{\n titleSubscription: Subscription;\n descriptionSubscription: Subscription;\n\n title = INITIAL_TITLE;\n description = INITIAL_DESCRIPTION;\n private importedConfiguration: IconSet | null = null;\n\n private importedConfigurationEmitter = new EventEmitter<IconSet>();\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 iconSetConfigurationService: IconSetImportExportService,\n private modelerService: ModelerService,\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 iconConfigrationChanged(): Observable<IconSet> {\n return this.importedConfigurationEmitter.asObservable();\n }\n\n getConfiguration(): IconSet {\n const config: IconSet = {\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 performImport(): void {\n // @ts-ignore\n const file = document.getElementById('import').files[0];\n this.import(file, file.name);\n this.modelerService.commandStackChanged();\n }\n\n performDropImport(file: File): void {\n if (this.isSupportedFileEnding(file.name)) {\n this.import(file, file.name);\n } else {\n this.snackbar.open('File type not supported', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n }\n this.modelerService.commandStackChanged();\n }\n\n importNotDirtyFromUrl(fileUrl: string, isDirty: boolean) {\n if (isDirty) {\n this.openUnsavedChangesReminderDialog(() => this.importFromUrl(fileUrl));\n } else {\n this.importFromUrl(fileUrl);\n }\n }\n\n importFromUrl(fileUrl: string): void {\n if (!fileUrl.startsWith('http')) {\n this.snackbar.open('Url not valid', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n return;\n }\n\n fileUrl = this.convertToDownloadableUrl(fileUrl);\n\n fetch(fileUrl)\n .then((response) => {\n return response.blob();\n })\n .then((blob) => {\n const string = fileUrl.split('/');\n const filename = string[string.length - 1]\n .replace(/%20/g, ' ')\n .replace(/(\\.egn\\.svg).*/, '$1');\n\n if (!filename) {\n throw new Error('Unable to extract filename from URL');\n }\n\n if (this.isSupportedFileEnding(filename)) {\n this.import(blob, filename);\n } else {\n this.snackbar.open('File type not supported', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n });\n }\n this.modelerService.commandStackChanged();\n })\n .catch(() =>\n this.snackbar.open(\n 'Request blocked by server (CORS error)',\n undefined,\n {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n },\n ),\n );\n }\n\n private convertToDownloadableUrl(fileUrl: string): string {\n // Convert GitHub URLs to raw content\n const githubPattern = /https:\\/\\/github\\.com\\/(.+)\\/(blob|blame)\\/(.+)/;\n if (githubPattern.test(fileUrl)) {\n fileUrl = fileUrl.replace(\n githubPattern,\n 'https://raw.githubusercontent.com/$1/$3',\n );\n }\n\n //Convert Dropbox URLs to dl content\n const dropboxPattern = /https:\\/\\/www\\.dropbox\\.com\\/(.+)/;\n if (dropboxPattern.test(fileUrl)) {\n fileUrl = fileUrl.replace(dropboxPattern, 'https://dl.dropbox.com/$1');\n }\n\n return fileUrl;\n }\n\n private isSupportedFileEnding(filename: string) {\n let isSupported = false;\n\n const dstSvgPattern = /.*(.dst)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n\n if (filename != null) {\n isSupported =\n filename.endsWith('.dst') ||\n filename.endsWith('.egn') ||\n filename.match(dstSvgPattern) != null ||\n filename.match(egnSvgPattern) != null;\n }\n\n return isSupported;\n }\n\n openImportFromUrlDialog(isDirty: boolean): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = (fileUrl: string) =>\n this.importNotDirtyFromUrl(fileUrl, isDirty);\n this.dialogService.openDialog(ImportDialogComponent, config);\n }\n\n openUnsavedChangesReminderDialog(fn: Function): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = fn;\n this.dialogService.openDialog(UnsavedChangesReminderComponent, config);\n }\n\n import(input: Blob, filename: string): void {\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const isSVG = filename.endsWith('.svg');\n let isEGN = filename.endsWith('.egn');\n\n if (isSVG) {\n isEGN = filename.match(egnSvgPattern) != null;\n }\n\n try {\n const fileReader = new FileReader();\n\n const titleText = this.restoreTitleFromFileName(filename, isSVG);\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, isEGN);\n }\n };\n fileReader.readAsText(input);\n this.importSuccessful();\n } catch (error) {\n this.importFailed();\n }\n }\n\n private fileReaderFunction(\n text: string | ArrayBuffer | null,\n isSvgFile: boolean,\n isEgnFormat: boolean,\n ): void {\n let contentAsJson;\n if (typeof text === 'string') {\n if (isSvgFile) {\n contentAsJson = this.extractJsonFromSvgComment(text);\n } else {\n contentAsJson = text;\n }\n\n let elements: any[];\n let iconSetConfig: IconSet;\n let iconSetFromFile: {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n\n let storyAndIconSet = this.extractStoryAndIconSet(contentAsJson);\n if (storyAndIconSet == null) {\n return;\n }\n\n // current implementation\n if (storyAndIconSet.domain) {\n iconSetFromFile = isEgnFormat\n ? storyAndIconSet.domain\n : JSON.parse(storyAndIconSet.domain);\n iconSetConfig =\n this.iconSetConfigurationService.createIconSetConfiguration(\n iconSetFromFile,\n );\n elements = isEgnFormat\n ? storyAndIconSet.dst\n : JSON.parse(storyAndIconSet.dst);\n } else {\n // legacy implementation\n if (storyAndIconSet.config) {\n iconSetFromFile = JSON.parse(storyAndIconSet.config);\n iconSetConfig =\n this.iconSetConfigurationService.createIconSetConfiguration(\n iconSetFromFile,\n );\n elements = JSON.parse(storyAndIconSet.dst);\n } else {\n // even older legacy implementation (prior to configurable icon set):\n elements = JSON.parse(contentAsJson);\n iconSetConfig =\n this.iconSetConfigurationService.createMinimalConfigurationWithDefaultIcons();\n }\n }\n\n this.importRepairService.removeWhitespacesFromIcons(elements);\n this.importRepairService.removeUnnecessaryBpmnProperties(elements);\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 tag 'version',\n // then there exists another tag 'info' for the description\n if (importVersionNumber.version) {\n lastElement = elements.pop();\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();\n }\n\n this.titleService.updateTitleAndDescription(\n this.title,\n lastElement.info,\n false,\n );\n\n this.updateIconRegistries(elements, iconSetConfig);\n this.rendererService.importStory(elements, iconSetConfig);\n }\n }\n\n private importSuccessful() {\n this.snackbar.open('Import successful', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_SUCCESS,\n });\n }\n\n private importFailed() {\n this.snackbar.open('Import failed', undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\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 extractStoryAndIconSet(dstText: string) {\n let dstAndConfig = null;\n try {\n dstAndConfig = JSON.parse(dstText);\n } catch (e) {\n this.showBrokenImportDialog();\n }\n return dstAndConfig;\n }\n\n private extractJsonFromSvgComment(xmlText: string): string {\n xmlText = xmlText.substring(xmlText.indexOf('<DST>'));\n while (xmlText.includes('<!--') || xmlText.includes('-->')) {\n xmlText = xmlText.replace('<!--', '').replace('-->', '');\n }\n xmlText = xmlText.replace('<DST>', '');\n xmlText = xmlText.replace('</DST>', '');\n return xmlText;\n }\n\n private updateIconRegistries(\n elements: BusinessObject[],\n config: IconSet,\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 message = `Your domain story was created with Egon version ${version}. The file format has since changed.\n Your Domain Story was converted to the new format. Please check if it is complete.`;\n\n this.snackbar.open(message, undefined, {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n });\n }\n\n private setImportedConfigurationAndEmit(config: IconSet) {\n this.importedConfiguration = config;\n this.importedConfigurationEmitter.emit(config);\n }\n\n private showBrokenImportDialog() {\n const message = `Error during import: The imported domain story is not complete. Please check if there are elements missing from the canvas.`;\n\n this.snackbar.open(message, undefined, {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_ERROR,\n });\n }\n\n private restoreTitleFromFileName(filename: string, isSVG: boolean): 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 filenameWithoutDateSuffix = filenameWithoutDateSuffix\n .replace(svgSuffix, '')\n .replace(dstSuffix, '')\n .replace(egnSuffix, '');\n title = filenameWithoutDateSuffix;\n return title;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { ActivityBusinessObject } from '../../../domain/entities/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 // Early versions of Egon allowed Whitespaces in Icon names which are now not supported anymore.\n // To find the right icon in the dictionary, they need to be replaced.\n removeWhitespacesFromIcons(elements: BusinessObject[]) {\n elements.forEach((bo) => {\n if (bo.type) {\n bo.type = bo.type.replace(/ /g, '-');\n }\n });\n }\n\n removeUnnecessaryBpmnProperties(elements: BusinessObject[]) {\n elements.forEach((bo) => {\n // @ts-ignore\n if (bo.$type) {\n // @ts-ignore\n bo.$type = undefined;\n }\n // @ts-ignore\n if (bo.$descriptor) {\n // @ts-ignore\n bo.$descriptor = undefined;\n }\n // @ts-ignore\n if (bo.di) {\n // @ts-ignore\n bo.di = undefined;\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<LabelDictionaryDialogComponent>,\n ) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","<mat-dialog-content>\n <h2 class=\"sticky-top\">Label Dictionary</h2>\n <app-label-dictionary (closeEmitter)=\"close()\"></app-label-dictionary>\n</mat-dialog-content>\n","import { NgModule } from '@angular/core';\nimport { LabelDictionaryComponent } from './label-dictionary/label-dictionary.component';\nimport { LabelDictionaryDialogComponent } from './label-dictionary-dialog/label-dictionary-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\n\n@NgModule({\n declarations: [LabelDictionaryComponent, LabelDictionaryDialogComponent],\n exports: [LabelDictionaryComponent, LabelDictionaryDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class LabelDictionaryModule {}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { WorkObjectLabelEntry } from '../../domain/workObjectLabelEntry';\nimport { LabelEntry } from '../../domain/labelEntry';\nimport { LabelDictionaryService } from '../../services/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<WorkObjectLabelEntry[]>;\n activityEntriesSubject: BehaviorSubject<LabelEntry[]>;\n\n workObjectEntries: WorkObjectLabelEntry[];\n activityEntries: LabelEntry[];\n\n @Output()\n closeEmitter: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private labelDictionaryService: LabelDictionaryService,\n private cd: ChangeDetectorRef,\n ) {\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 this.cd.detectChanges();\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","<div class=\"list-content\">\n <div>\n <h3 class=\"listTitle\">Work Objects</h3>\n <mat-list>\n @for (\n workobjectEntry of workobjectEntriesSubject | async;\n track workobjectEntry\n ) {\n <mat-list-item>\n <mat-form-field class=\"inputText dense-8\" color=\"accent\">\n <input\n matInput\n class=\"inputText\"\n [value]=\"workobjectEntry.name\"\n (change)=\"updateWorkobjectEntry($event, workobjectEntry)\"\n />\n </mat-form-field>\n </mat-list-item>\n }\n </mat-list>\n </div>\n <div>\n <h3 class=\"listTitle\">Activities</h3>\n <mat-list>\n @for (\n activityEntry of activityEntriesSubject | async;\n track activityEntry\n ) {\n <mat-list-item>\n <mat-form-field class=\"inputText dense-8\" color=\"accent\">\n <textarea\n matInput\n class=\"inputText activity\"\n [value]=\"activityEntry.name\"\n (change)=\"updateActivityEntry($event, activityEntry)\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"3\"\n (keydown.enter)=\"preventDefault($event)\"\n (keyup.enter)=\"save()\"\n (keyup.escape)=\"close()\"\n ></textarea>\n </mat-form-field>\n </mat-list-item>\n }\n </mat-list>\n </div>\n</div>\n<mat-dialog-actions class=\"sticky-bottom\">\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\">Save</button>\n</mat-dialog-actions>\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { MassNamingService } from 'src/app/tools/label-dictionary/services/mass-naming.service';\nimport { IconDictionaryService } from '../../icon-set-config/services/icon-dictionary.service';\nimport { WorkObjectLabelEntry } from '../domain/workObjectLabelEntry';\nimport { LabelEntry } from '../domain/labelEntry';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { LabelDictionaryDialogComponent } from '../presentation/label-dictionary-dialog/label-dictionary-dialog.component';\nimport {\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CanvasObject } from '../../../domain/entities/canvasObject';\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 private dialogService: DialogService,\n private snackbar: MatSnackBar,\n ) {}\n\n openLabelDictionary() {\n const isActivityWithLabel = (element: CanvasObject) =>\n element.type.includes(ElementTypes.ACTIVITY) &&\n element.businessObject.name;\n const isWorkObjectWithLabel = (element: CanvasObject) =>\n element.type.includes(ElementTypes.WORKOBJECT) &&\n element.businessObject.name;\n\n const hasAtLeastOneLabel = this.elementRegistryService\n .getAllCanvasObjects()\n .some(\n (element) =>\n isActivityWithLabel(element) || isWorkObjectWithLabel(element),\n );\n if (hasAtLeastOneLabel) {\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 activities or work objects with labels on the canvas',\n undefined,\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n },\n );\n }\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/domain/services/element-registry.service';\nimport { CanvasObject } from 'src/app/domain/entities/canvasObject';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { CommandStackService } from '../../../domain/services/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 { FormControl, FormGroup, Validators } from '@angular/forms';\n\nexport interface ActivityDialogForm {\n activityLabel: FormControl<string>;\n activityNumber: FormControl<number | null>;\n multipleNumbers: FormControl<boolean>;\n}\n\nexport namespace ActivityDialogForm {\n export function create(\n activityLabel: string,\n activityNumber: number | null,\n numberIsAllowedMultipleTimes: boolean,\n ): FormGroup<ActivityDialogForm> {\n return new FormGroup<ActivityDialogForm>({\n activityLabel: new FormControl<string>(activityLabel, {\n nonNullable: true,\n }),\n activityNumber: new FormControl<number | null>(activityNumber, [\n Validators.required,\n ]),\n multipleNumbers: new FormControl<boolean>(numberIsAllowedMultipleTimes, {\n nonNullable: true,\n }),\n });\n }\n}\n","import { ActivityCanvasObject } from '../../../domain/entities/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","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormGroup } from '@angular/forms';\nimport { ActivityDialogData } from 'src/app/tools/modeler/domain/activityDialogData';\nimport { ActivityCanvasObject } from '../../../../domain/entities/activityCanvasObject';\nimport { ActivityDialogForm } from '../../domain/activity-dialog-form';\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: FormGroup<ActivityDialogForm>;\n activityLabel: string;\n activityNumber: number | null;\n numberIsAllowedMultipleTimes: boolean;\n showNumberFields: boolean;\n activity: ActivityCanvasObject;\n\n saveFN: any;\n\n constructor(\n private dialogRef: MatDialogRef<ActivityDialogComponent>,\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 ?? null;\n this.showNumberFields = data.showNumberFields;\n\n this.saveFN = data.saveFN;\n\n this.form = ActivityDialogForm.create(\n this.activityLabel,\n this.activityNumber,\n this.numberIsAllowedMultipleTimes,\n );\n\n this.form.controls.activityNumber.valueChanges.subscribe(\n (activityNumber) => {\n if (activityNumber !== null) {\n if (activityNumber < 1) {\n this.form.controls.activityNumber.setValue(1);\n }\n }\n },\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","<mat-dialog-content>\n <h2>Edit Activity</h2>\n <form [formGroup]=\"form\">\n <div [hidden]=\"!showNumberFields\">\n <mat-form-field color=\"accent\">\n <mat-label>Number</mat-label>\n <input matInput type=\"number\" formControlName=\"activityNumber\" />\n </mat-form-field>\n <input\n type=\"checkbox\"\n formControlName=\"multipleNumbers\"\n (change)=\"onSubmit()\"\n />\n multiple\n </div>\n <mat-form-field class=\"fullWidth\" color=\"accent\">\n <mat-label>Label</mat-label>\n <textarea\n matInput\n type=\"text\"\n formControlName=\"activityLabel\"\n autofocus\n cdkFocusInitial\n (keydown.enter)=\"preventDefault($event)\"\n (keyup.enter)=\"save()\"\n (keyup.escape)=\"close()\"\n ></textarea>\n </mat-form-field>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\">Save</button>\n</mat-dialog-actions>\n","import { NgModule } from '@angular/core';\nimport { ActivityDialogComponent } from './activity-dialog/activity-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [ActivityDialogComponent],\n exports: [ActivityDialogComponent],\n imports: [CommonModule, MaterialModule, ReactiveFormsModule],\n})\nexport class ModelerModule {}\n","import { Injectable } from '@angular/core';\nimport { ElementRegistryService } from '../../../domain/services/element-registry.service';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { ActivityDialogData } from '../domain/activityDialogData';\nimport { ActivityDialogComponent } from '../presentation/activity-dialog/activity-dialog.component';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { TitleService } from '../../title/services/title.service';\nimport { ActivityCanvasObject } from '../../../domain/entities/activityCanvasObject';\nimport { positionsMatch } from '../../../utils/mathExtensions';\nimport { CommandStackService } from '../../../domain/services/command-stack.service';\n\nimport { toggleStashUse } from 'src/app/tools/modeler/diagram-js/features/labeling/dsLabelEditingProvider';\nimport {\n getMultipleNumberRegistry,\n getNumberRegistry,\n setNumberIsMultiple,\n updateExistingNumbersAtEditing,\n} from 'src/app/tools/modeler/diagram-js/features/numbering/numbering';\nimport activityUpdateHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/activityUpdateHandlers';\n\nimport massRenameHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/massRenameHandler';\nimport elementUpdateHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/elementUpdateHandler';\nimport headlineAndDescriptionUpdateHandler from 'src/app/tools/modeler/diagram-js/features/updateHandler/headlineAndDescriptionUpdateHandler';\nimport { ReplayService } from '../../replay/services/replay.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializerService {\n constructor(\n private elementRegistryService: ElementRegistryService,\n private replayService: ReplayService,\n private dialogService: DialogService,\n private commandStackService: CommandStackService,\n private titleService: TitleService,\n ) {}\n\n propagateDomainStoryModelerClassesToServices(\n commandStack: any,\n elementRegistry: any,\n ): void {\n this.commandStackService.setCommandStack(commandStack);\n this.elementRegistryService.setElementRegistry(elementRegistry);\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.replayService.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.replayService.getReplayOn()) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n );\n\n let pasteColor: string[] = [];\n let pasteText: string[] = [];\n let pasteHeight: number[] = [];\n eventBus.on('copyPaste.pasteElement', 10000, (e: any) => {\n pasteColor.push(e.descriptor.oldBusinessObject.pickedColor);\n if (\n e.descriptor.oldBusinessObject.type.includes(\n ElementTypes.TEXTANNOTATION,\n )\n ) {\n pasteText.push(e.descriptor.oldBusinessObject.text ?? '');\n pasteHeight.push(e.descriptor.oldBusinessObject.height);\n }\n });\n\n eventBus.on('create.end', (e: any) => {\n if (!pasteColor) {\n return;\n }\n for (let elementsKey in e.elements) {\n const element = e.elements[elementsKey];\n if (element.businessObject.type.includes(ElementTypes.TEXTANNOTATION)) {\n element.businessObject.text = pasteText[0];\n element.businessObject.number = pasteHeight[0];\n element.businessObject.height = pasteHeight[0];\n pasteText.shift();\n pasteHeight.shift();\n }\n element.businessObject.pickedColor = pasteColor[parseInt(elementsKey)];\n eventBus.fire('element.changed', { element });\n }\n pasteColor = [];\n pasteText = [];\n pasteHeight = [];\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) =>\n 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/tools/modeler/diagram-js';\nimport { InitializerService } from './initializer.service';\nimport { ElementRegistryService } from '../../../domain/services/element-registry.service';\nimport { IconDictionaryService } from '../../icon-set-config/services/icon-dictionary.service';\nimport { IconSetImportExportService } from '../../icon-set-config/services/icon-set-import-export.service';\nimport { BusinessObject } from '../../../domain/entities/businessObject';\nimport { ActivityBusinessObject } from '../../../domain/entities/activityBusinessObject';\nimport { updateMultipleNumberRegistry } from 'src/app/tools/modeler/diagram-js/features/numbering/numbering';\nimport { IconSet } from '../../../domain/entities/iconSet';\nimport { StorageService } from '../../../domain/services/storage.service';\nimport {\n SNACKBAR_DURATION_LONGER,\n SNACKBAR_INFO,\n VERSION_KEY,\n} from '../../../domain/entities/constants';\nimport { environment } from '../../../../environments/environment';\nimport { MatSnackBar } from '@angular/material/snack-bar';\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 iconSetConfigurationService: IconSetImportExportService,\n private storageService: StorageService,\n private snackbar: MatSnackBar,\n ) {}\n\n private modeler: any;\n private elementRegistry: any;\n private commandStack: any;\n private eventBus: any;\n\n private encoded: string | undefined;\n postInit(): void {\n this.checkCurrentVersion();\n\n const storedIconSetConfiguration =\n this.iconSetConfigurationService.getStoredIconSetConfiguration();\n if (storedIconSetConfiguration) {\n this.iconDictionaryService.setCustomConfiguration(\n storedIconSetConfiguration,\n );\n this.iconSetConfigurationService.loadConfiguration(\n storedIconSetConfiguration,\n );\n }\n this.modeler = new DomainStoryModeler({\n container: '#canvas',\n keyboard: {\n bind: true,\n },\n });\n\n if (this.modeler.get) {\n this.elementRegistry = this.modeler.get('elementRegistry');\n this.eventBus = this.modeler.get('eventBus');\n this.commandStack = this.modeler.get('commandStack');\n }\n\n this.initializerService.initializeDomainStoryModelerEventHandlers(\n this.commandStack,\n this.eventBus,\n );\n this.initializerService.propagateDomainStoryModelerClassesToServices(\n this.commandStack,\n this.elementRegistry,\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 // expose modeler to window for debugging purposes\n assign(window, { egon: this.modeler });\n\n this.startDebounce();\n }\n\n private checkCurrentVersion() {\n const version = this.storageService.get(VERSION_KEY);\n if (version === null) {\n this.storageService.set(VERSION_KEY, environment.version);\n }\n\n if (version !== null && version !== environment.version) {\n this.snackbar\n .open(\n \"Egon was updated. Clear your browser's local storage.\",\n 'More information',\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n },\n )\n .onAction()\n .subscribe(() => {\n window.open('https://egon.io/howto#launching-egon');\n });\n }\n }\n\n restart(\n iconSetConfiguration?: IconSet,\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 (!iconSetConfiguration) {\n iconSetConfiguration =\n this.iconSetConfigurationService.getStoredIconSetConfiguration();\n }\n if (iconSetConfiguration) {\n this.iconSetConfigurationService.setStoredIconSetConfiguration(\n iconSetConfiguration,\n );\n this.iconDictionaryService.setCustomConfiguration(iconSetConfiguration);\n this.iconSetConfigurationService.loadConfiguration(iconSetConfiguration);\n }\n\n this.elementRegistryService.clear();\n this.modeler?.destroy();\n this.postInit();\n updateMultipleNumberRegistry(\n currentStory\n .filter((bo) => bo.type === 'domainStory:activity')\n .map((bo) => <ActivityBusinessObject>bo)\n .filter((bo) => bo.number !== null),\n );\n if (currentStory && this.modeler.get) {\n this.modeler.importBusinessObjects(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<any>;\n }, timeout);\n };\n }\n\n getEncoded(): string {\n return this.encoded ? this.encoded : '';\n }\n\n async saveSVG(modeler: any): Promise<any> {\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/tools/modeler/services/modeler.service';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { DirtyFlagService } from 'src/app/domain/services/dirty-flag.service';\nimport { IconSet } from '../../../domain/entities/iconSet';\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().importBusinessObjects(domainStory);\n }\n\n reset(): void {\n this.renderStory([]);\n this.dirtyFlagService.makeClean();\n }\n\n importStory(\n domainStory: BusinessObject[],\n config?: IconSet,\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","export const NUMBER_BACKGROUND_COLOR = 'white';\nexport const NUMBER_COLOR = 'black';\nexport const STROKE_WIDTH = '1.5';\n\nexport const HIGHLIGHT_NUMBER_BACKGROUND_COLOR = '#a4d7e1';\nexport const HIGHLIGHT_NUMBER_COLOR = 'black';\nexport const HIGHLIGHT_STROKE_WIDTH = '4';\n\nexport const CONNECTION_PATH_DOM_SELECTOR = 'path';\n","import { Injectable } from '@angular/core';\nimport { BusinessObject } from 'src/app/domain/entities/businessObject';\nimport { ElementRegistryService } from 'src/app/domain/services/element-registry.service';\nimport { ElementTypes } from 'src/app/domain/entities/elementTypes';\nimport { StorySentence } from 'src/app/tools/replay/domain/storySentence';\nimport {\n HIGHLIGHT_NUMBER_BACKGROUND_COLOR,\n HIGHLIGHT_NUMBER_COLOR,\n HIGHLIGHT_STROKE_WIDTH,\n NUMBER_BACKGROUND_COLOR,\n NUMBER_COLOR,\n STROKE_WIDTH,\n CONNECTION_PATH_DOM_SELECTOR,\n} from '../domain/replayConstants';\n\n@Injectable({\n providedIn: 'root',\n})\n/**\n * Manipulates the DOM during replay to only show the elements of the current Sentence\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 showSentence(\n replaySentence: StorySentence,\n previousSentence?: StorySentence,\n ): void {\n this.removeHighlights();\n const notShown = this.getAllNotShown(replaySentence.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.highlightSentence(\n previousSentence\n ? replaySentence.objects.filter(\n (o) => !previousSentence.objects.includes(o),\n )\n : replaySentence.objects,\n );\n\n replaySentence.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: SVGPathElement): any {\n const numberText =\n activity.parentElement?.getElementsByClassName('djs-labelNumber')[0] ??\n '';\n const circle = (numberText as HTMLElement)?.previousSibling ?? '';\n return {\n numberBackgroundDom: circle,\n numberTextDom: numberText,\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 = querySelector.getElementsByTagName(\n CONNECTION_PATH_DOM_SELECTOR,\n )[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(CONNECTION_PATH_DOM_SELECTOR)[0];\n\n connectionDomObject.style.stroke =\n connection.businessObject.pickedColor || 'black';\n connectionDomObject.style.strokeWidth = '1.5';\n });\n }\n\n private highlightSentence(sentenceObjects: BusinessObject[]): void {\n sentenceObjects\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 = querySelector.getElementsByTagName(\n CONNECTION_PATH_DOM_SELECTOR,\n )[0];\n\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_BACKGROUND_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 notShownElements.push(element.businessObject);\n }\n });\n return notShownElements;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DomManipulationService } from 'src/app/tools/replay/services/dom-manipulation.service';\nimport { StorySentence } from 'src/app/tools/replay/domain/storySentence';\nimport { StoryCreatorService } from './story-creator.service';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n SNACKBAR_DURATION_LONG,\n SNACKBAR_ERROR,\n SNACKBAR_INFO,\n} from '../../../domain/entities/constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReplayService {\n private story: StorySentence[] = [];\n private currentSentence = new BehaviorSubject<number>(-1);\n private maxSentenceNumber = new BehaviorSubject<number>(0);\n private replayOnSubject = new BehaviorSubject<boolean>(false);\n\n currentSentence$: Observable<number> = this.currentSentence.asObservable();\n maxSentenceNumber$: Observable<number> =\n this.maxSentenceNumber.asObservable();\n replayOn$ = this.replayOnSubject.asObservable();\n\n constructor(\n private domManipulationService: DomManipulationService,\n private storyCreatorService: StoryCreatorService,\n private snackbar: MatSnackBar,\n ) {}\n\n setReplayState(state: boolean): void {\n this.replayOnSubject.next(state);\n }\n\n getReplayOn(): boolean {\n return this.replayOnSubject.value;\n }\n\n isReplayable(): boolean {\n return this.storyCreatorService.traceActivitiesAndCreateStory().length > 0;\n }\n\n initializeReplay(story: StorySentence[]): void {\n this.currentSentence.next(1);\n this.story = story;\n this.maxSentenceNumber.next(this.story.length);\n }\n\n getCurrentSentenceNumber(): number {\n return this.currentSentence.value;\n }\n\n getMaxSentenceNumber(): number {\n return this.maxSentenceNumber.value;\n }\n\n nextSentence(): void {\n if (this.currentSentence.value < this.story.length) {\n this.currentSentence.next(this.currentSentence.value + 1);\n this.showCurrentSentence();\n }\n }\n\n previousSentence(): void {\n if (this.currentSentence.value > 1) {\n this.currentSentence.next(this.currentSentence.value - 1);\n this.showCurrentSentence();\n }\n }\n\n private showCurrentSentence() {\n this.domManipulationService.showSentence(\n this.story[this.currentSentence.value - 1],\n this.currentSentence.value > 1\n ? this.story[this.currentSentence.value - 2]\n : undefined,\n );\n }\n\n startReplay(checkSequenceNumbers = false): void {\n const story = this.storyCreatorService.traceActivitiesAndCreateStory();\n\n if (checkSequenceNumbers) {\n const missingSentences =\n this.storyCreatorService.getMissingSentences(story);\n if (missingSentences.length > 0) {\n const sentence = missingSentences.join(', ');\n this.snackbar.open(\n missingSentences.length === 1\n ? `The Domain Story is not complete. Sentence ${sentence} is missing.`\n : `The Domain Story is not complete. Sentences ${sentence} are missing.`,\n undefined,\n {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n },\n );\n return;\n }\n }\n\n this.initializeReplay(story);\n if (this.story.length > 0) {\n this.setReplayState(true);\n this.domManipulationService.showSentence(\n this.story[this.currentSentence.getValue() - 1],\n );\n } else {\n this.snackbar.open('You need a Domain Story for replay.', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_INFO,\n });\n }\n }\n\n stopReplay(): void {\n this.currentSentence.next(-1);\n this.maxSentenceNumber.next(0);\n this.setReplayState(false);\n this.domManipulationService.showAll();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ElementTypes } from '../../../domain/entities/elementTypes';\nimport { ActivityCanvasObject } from '../../../domain/entities/activityCanvasObject';\nimport { BusinessObject } from '../../../domain/entities/businessObject';\nimport { CanvasObject } from '../../../domain/entities/canvasObject';\nimport { ElementRegistryService } from '../../../domain/services/element-registry.service';\nimport { StorySentence } from '../domain/storySentence';\nimport { Dictionary } from '../../../domain/entities/dictionary';\nimport { ActivityBusinessObject } from '../../../domain/entities/activityBusinessObject';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StoryCreatorService {\n constructor(private elementRegistryService: ElementRegistryService) {}\n\n traceActivitiesAndCreateStory(): StorySentence[] {\n const tracedActivityMap = new Dictionary();\n const story: StorySentence[] = [];\n const activities = this.elementRegistryService.getActivitiesFromActors();\n const tracedActivityMapKeys: number[] = [];\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}`) ?? [];\n if (!tracedActivityMapKeys.includes(activityNumber)) {\n tracedActivityMapKeys.push(activityNumber);\n }\n tracedItem.push(activity);\n tracedActivityMap.set(`${activityNumber}`, tracedItem);\n });\n\n let storyIndex = 0;\n tracedActivityMapKeys.forEach((key) => {\n this.createSentence(tracedActivityMap, key, story, storyIndex);\n storyIndex++;\n });\n\n this.addGroupsToLastSentence(story);\n return story;\n }\n\n private createSentence(\n tracedActivityMap: Dictionary,\n tracedActivityMapKey: number,\n story: StorySentence[],\n storyIndex: number,\n ): void {\n let tracedActivity = tracedActivityMap.get(`${tracedActivityMapKey}`) ?? [];\n const sentenceObjects = this.getSentenceObjects(tracedActivity);\n const highlightedElements = sentenceObjects.map((t) => t.id);\n if (storyIndex > 0) {\n story[storyIndex - 1].objects.forEach((object) => {\n if (!sentenceObjects.includes(object)) {\n sentenceObjects.push(object);\n }\n });\n }\n story[storyIndex] = {\n highlightedObjects: highlightedElements,\n objects: sentenceObjects,\n };\n }\n\n getMissingSentences(story: StorySentence[]): number[] {\n // if the story is empty, no sequence number is missing\n if (!story || story.length === 0) {\n return [];\n }\n\n // collect all sequence numbers of the story\n const allActivityNumbersFromActors: number[] = story.map((sentence) => {\n // find all activity numbers of the ActivityBusinessObject\n // and returned the highest one\n const allActivityNumbers = sentence.objects.map((businessObject) => {\n if (businessObject.type.includes('activity')) {\n const activity = businessObject as ActivityBusinessObject;\n return activity.number ?? 0;\n } else {\n return 0;\n }\n });\n return Math.max(...allActivityNumbers);\n });\n\n const highestSequenceNumber: number = Math.max(\n ...allActivityNumbersFromActors,\n );\n\n const missingSentences: number[] = [];\n // with a high sequence number like 1_000_000, this could be led\n // to long calculation or completely stop from Egon.io\n for (let i = 1; i <= highestSequenceNumber; i++) {\n if (!allActivityNumbersFromActors.includes(i)) {\n missingSentences.push(i);\n }\n }\n return missingSentences;\n }\n\n private getSentenceObjects(\n tracedActivity: ActivityCanvasObject[],\n ): BusinessObject[] {\n const actorsAndWorkObjects: CanvasObject[] = [];\n const activities = tracedActivity;\n const actorTextAnnotations: CanvasObject[] = [];\n\n tracedActivity.forEach((parallelSentence: ActivityCanvasObject) => {\n const parallelSentenceTargetObjects: CanvasObject[] = [];\n\n if (!actorsAndWorkObjects.includes(parallelSentence.source)) {\n actorsAndWorkObjects.push(parallelSentence.source);\n }\n\n const firstTarget = parallelSentence.target;\n actorsAndWorkObjects.push(firstTarget);\n parallelSentenceTargetObjects.push(firstTarget);\n\n // check the outgoing activities for each target\n for (const checkTarget of parallelSentenceTargetObjects) {\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 (\n activityTarget &&\n !actorsAndWorkObjects.includes(activityTarget)\n ) {\n actorsAndWorkObjects.push(activityTarget);\n parallelSentenceTargetObjects.push(activityTarget);\n }\n });\n }\n }\n });\n actorsAndWorkObjects.forEach((object) => {\n if (object.businessObject.type.includes(ElementTypes.ACTOR)) {\n this.addTextAnnotationsForActorOrGroup(object, actorTextAnnotations);\n }\n });\n\n return actorsAndWorkObjects\n .map((e) => e.businessObject)\n .concat(activities.map((a) => a.businessObject))\n .concat(actorTextAnnotations.map((ta) => ta.businessObject));\n }\n\n private addTextAnnotationsForActorOrGroup(\n object: CanvasObject,\n objectTextAnnotations: CanvasObject[],\n ) {\n object.outgoing?.forEach((connection) => {\n // connections outgoing from actors or groups without number must be connections to text annotations\n if (!connection.businessObject.number) {\n objectTextAnnotations.push(connection);\n objectTextAnnotations.push(connection.target);\n }\n });\n }\n\n private addGroupsToLastSentence(story: StorySentence[]): void {\n const groups = this.elementRegistryService.getAllGroups() as CanvasObject[];\n const annotationsForGroups: CanvasObject[] = [];\n groups.forEach((group) =>\n this.addTextAnnotationsForActorOrGroup(group, annotationsForGroups),\n );\n if (groups.length > 0 && story.length > 0) {\n story[story.length - 1].objects = story[story.length - 1].objects\n .concat(groups.map((g) => g.businessObject))\n .concat(annotationsForGroups.map((a) => a.businessObject));\n }\n }\n}\n","import { FormControl, FormGroup } from '@angular/forms';\n\nexport interface TitleDialogForm {\n title: FormControl<string | null>;\n description: FormControl<string | null>;\n}\n\nexport namespace TitleDialogForm {\n export function create(\n titel: string,\n description: string,\n ): FormGroup<TitleDialogForm> {\n return new FormGroup<TitleDialogForm>({\n title: new FormControl<string | null>(titel),\n description: new FormControl<string | null>(description),\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { FormGroup } from '@angular/forms';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\nimport { TitleDialogForm } from '../../domain/title-dialog-form';\nimport { DirtyFlagService } from '../../../../domain/services/dirty-flag.service';\n\n@Component({\n selector: 'app-header-dialog',\n templateUrl: './title-dialog.component.html',\n styleUrls: ['./title-dialog.component.scss'],\n})\nexport class TitleDialogComponent implements OnInit {\n form!: FormGroup<TitleDialogForm>;\n\n constructor(\n private dialogRef: MatDialogRef<TitleDialogComponent>,\n private titleService: TitleService,\n private dirtyFlagService: DirtyFlagService,\n ) {}\n\n ngOnInit(): void {\n const title = this.titleService.getTitle();\n const description = this.titleService.getDescription();\n\n this.form = TitleDialogForm.create(title, description);\n }\n\n save(): void {\n if (this.form.dirty) {\n this.dirtyFlagService.makeDirty();\n\n this.titleService.updateTitleAndDescription(\n this.form.getRawValue().title,\n this.form.getRawValue().description,\n true,\n );\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","<mat-dialog-content>\n <form [formGroup]=\"form\">\n <mat-form-field class=\"dialogWidth\" color=\"accent\">\n <mat-label>Title</mat-label>\n <input matInput type=\"text\" formControlName=\"title\" />\n </mat-form-field>\n <br />\n <mat-form-field class=\"dialogWidth\" color=\"accent\">\n <mat-label>Description</mat-label>\n <textarea\n maxlength=\"2000\"\n matInput\n class=\"descriptionInput\"\n formControlName=\"description\"\n (keydown.enter)=\"preventDefault($event)\"\n (keyup.enter)=\"save()\"\n (keyup.escape)=\"close()\"\n ></textarea>\n </mat-form-field>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"save()\">Save</button>\n</mat-dialog-actions>\n","import { NgModule } from '@angular/core';\nimport { TitleDialogComponent } from './title-dialog/title-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [TitleDialogComponent],\n exports: [TitleDialogComponent],\n imports: [CommonModule, MaterialModule, ReactiveFormsModule],\n})\nexport class TitleModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { environment } from '../../../../environments/environment';\nimport {\n INITIAL_DESCRIPTION,\n INITIAL_TITLE,\n} from '../../../domain/entities/constants';\nimport { CommandStackService } from '../../../domain/services/command-stack.service';\nimport { DialogService } from '../../../domain/services/dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { TitleDialogComponent } from '../presentation/title-dialog/title-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TitleService {\n private titleSubject = new BehaviorSubject<string>(INITIAL_TITLE);\n private descriptionSubject = new BehaviorSubject<string>(INITIAL_DESCRIPTION);\n private showDescriptionSubject = new BehaviorSubject<boolean>(true);\n\n title$ = this.titleSubject.asObservable();\n description$ = this.descriptionSubject.asObservable();\n showDescription$ = this.showDescriptionSubject.asObservable();\n\n constructor(\n private commandStackService: CommandStackService,\n private dialogService: DialogService,\n ) {}\n\n openHeaderDialog(): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n this.dialogService.openDialog(TitleDialogComponent, config);\n }\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 getTitle(): string {\n return this.titleSubject.value;\n }\n\n getDescription(): string {\n return this.descriptionSubject.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","import { Component, Inject, OnInit } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogContent,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\n\n@Component({\n selector: 'app-unsaved-changes-reminder',\n standalone: true,\n imports: [\n AsyncPipe,\n MatButton,\n MatDialogActions,\n MatDialogContent,\n MatFormField,\n MatInput,\n MatLabel,\n ],\n templateUrl: './unsaved-changes-reminder.component.html',\n styleUrl: './unsaved-changes-reminder.component.scss',\n})\nexport class UnsavedChangesReminderComponent implements OnInit {\n fn: any;\n\n constructor(\n private dialogRef: MatDialogRef<UnsavedChangesReminderComponent>,\n @Inject(MAT_DIALOG_DATA) data: () => {},\n ) {\n this.fn = data;\n }\n\n ngOnInit(): void {}\n\n continueAction(): void {\n this.fn();\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","<mat-dialog-content>\n <label>\n <h2>Attention</h2>\n </label>\n\n <p>There are some unsaved changes. Do you want to discard them?</p>\n</mat-dialog-content>\n<mat-dialog-actions>\n <br />\n <div>\n <button mat-flat-button (click)=\"close()\">Cancel</button>\n <button mat-flat-button color=\"primary\" (click)=\"continueAction()\">\n Discard changes\n </button>\n </div>\n</mat-dialog-actions>\n","export function rgbaToHex(rgba: string) {\n if (isValidHex(rgba)) {\n return rgba;\n }\n const [r, g, b, a] = rgba.match(/\\d+(\\.\\d+)?/g)!.map((it) => +it);\n const red = r.toString(16).padStart(2, '0');\n const green = g.toString(16).padStart(2, '0');\n const blue = b.toString(16).padStart(2, '0');\n const alpha = Math.round(a * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${red}${green}${blue}${alpha}`;\n}\n\nconst isValidHex = (hex: string) => /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\nconst getChunksFromString = (st: string, chunkSize: number) =>\n st.match(new RegExp(`.{${chunkSize}}`, 'g')) ?? [];\nconst convertHexUnitTo256 = (hexStr: string) =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\nconst getAlphafloat = (a: number | undefined) => {\n if (typeof a !== 'undefined') {\n return Math.round((a / 255 + Number.EPSILON) * 100) / 100; // Runden auf 2 oder weniger Nachkommastellen\n }\n return 1;\n};\n\nexport const isHexWithAlpha = (hex: string | null | undefined) =>\n hex?.startsWith('#') && (hex?.length === 5 || hex?.length === 9);\n\nexport const hexToRGBA = (hex: string) => {\n if (!isValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n const chunkSize = Math.floor((hex.length - 1) / 3); // 1 falls hex 3-4 Stellen, 2 falls hex 6 oder 8 Stellen\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r, g, b, a] = hexArr.map(convertHexUnitTo256);\n return `rgba(${r},${g},${b},${getAlphafloat(a)})`;\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","'use strict';\n\nexport function sanitizeTextForSVGExport(str: string): string {\n // @ts-ignore Typescript does not realize that replaceAll exists, no idea why not.\n return str.replaceAll('--', '––');\n}\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\n ? sanitizeTextForSVGExport(str.replace(reg, (match) => map[match]))\n : '';\n}\n\nexport function sanitizeIconName(name: string): string {\n if (!name) {\n return '';\n }\n let nameWithoutFileEnding =\n name.lastIndexOf('.') > 0 ? name.substring(0, name.lastIndexOf('.')) : name;\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n '(': '',\n ')': '',\n ' ': '-',\n };\n const reg = /[/\\\\:*?\"<>|() ]/gi;\n return nameWithoutFileEnding.trim().replace(reg, (match) => map[match]);\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { ReplayService } from '../../../../tools/replay/services/replay.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 sentenceDescription$: Observable<string>;\n\n constructor(private replayService: ReplayService) {\n this.sentenceDescription$ = combineLatest([\n this.replayService.currentSentence$,\n this.replayService.maxSentenceNumber$,\n ]).pipe(map(([sentence, count]) => `${sentence}/${count}`));\n }\n\n @Input()\n hasDomainStory = false;\n @Input()\n hasTitle = false;\n @Input()\n isReplaying: boolean | null = false;\n @Input()\n isDirty: boolean | null = false;\n @Input()\n isReplayable = false;\n\n @Output()\n import = new EventEmitter<void>();\n @Output()\n openSettings = new EventEmitter<void>();\n @Output()\n startReplay = new EventEmitter<void>();\n @Output()\n stopReplay = new EventEmitter<void>();\n @Output()\n previousSentence = new EventEmitter<void>();\n @Output()\n nextSentence = new EventEmitter<void>();\n @Output()\n newStory = new EventEmitter<void>();\n @Output()\n showKeyboardShortCuts = new EventEmitter<void>();\n @Output()\n openLabelDictionary = new EventEmitter<void>();\n @Output()\n openDownloadDialog = new EventEmitter<void>();\n @Output()\n openImportFromUrlDialog = new EventEmitter<void>();\n}\n","@if (!isReplaying) {\n <div>\n <button\n [disabled]=\"!isReplayable\"\n [class.disabled]=\"!isReplayable\"\n id=\"buttonStartReplay\"\n class=\"headerButton\"\n title=\"Start replay\"\n (click)=\"startReplay.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n play_arrow\n </span>\n <div class=\"button-label\">Replay</div>\n </button>\n\n <button\n id=\"buttonImport\"\n class=\"headerButton\"\n title=\"Import story from file\"\n onclick=\"document.getElementById('import').click();\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n file_upload\n </span>\n <div class=\"button-label\">Import from file</div>\n </button>\n\n <button\n id=\"buttonUrlImport\"\n class=\"headerButton\"\n title=\"Import story from URL\"\n (click)=\"openImportFromUrlDialog.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n cloud_upload\n </span>\n <div class=\"button-label\">Import from URL</div>\n </button>\n\n <input\n type=\"file\"\n accept=\".dst, .svg, .egn, .svg\"\n style=\"display: none\"\n id=\"import\"\n onclick=\"this.value=null;\"\n (change)=\"import.emit()\"\n />\n <button\n [disabled]=\"!hasDomainStory && !hasTitle\"\n [class.disabled]=\"!hasDomainStory && !hasTitle\"\n class=\"headerButton\"\n [class.dirty]=\"isDirty\"\n id=\"export\"\n title=\"Export story as .egn, .svg or .png file\"\n (click)=\"openDownloadDialog.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n file_download\n </span>\n <div class=\"button-label\">Export</div>\n </button>\n <button\n [disabled]=\"!hasDomainStory\"\n [class.disabled]=\"!hasDomainStory\"\n class=\"headerButton\"\n title=\"Label Dictionary\"\n (click)=\"openLabelDictionary.emit()\"\n >\n <span class=\"material-icons materialIconButton\" title=\"Label Dictionary\">\n spellcheck\n </span>\n <div class=\"button-label\">Dictionary</div>\n </button>\n\n <button\n class=\"headerButton\"\n title=\"Create a new domain story\"\n (click)=\"newStory.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> note_add </span>\n <div class=\"button-label\">New story</div>\n </button>\n\n <button class=\"headerButton\" title=\"Settings\" (click)=\"openSettings.emit()\">\n <span\n class=\"material-icons-outlined materialIconButton\"\n title=\"Change Icons and Settings\"\n >\n settings\n </span>\n <div class=\"button-label\">Settings</div>\n </button>\n\n <button\n class=\"headerButton\"\n title=\"Show keyboard shortcuts\"\n (click)=\"showKeyboardShortCuts.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> keyboard </span>\n <div class=\"button-label\">Shortcuts</div>\n </button>\n </div>\n}\n@if (isReplaying) {\n <div class=\"replaying\">\n <button\n class=\"headerButton\"\n title=\"Previous sentence\"\n (click)=\"previousSentence.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n skip_previous\n </span>\n <div class=\"button-label\">Prev.</div>\n </button>\n <button\n class=\"headerButton\"\n title=\"Next sentence\"\n (click)=\"nextSentence.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n skip_next\n </span>\n <div class=\"button-label\">Next</div>\n </button>\n <button\n class=\"headerButton\"\n title=\"Stop replay\"\n (click)=\"stopReplay.emit()\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> stop </span>\n <div class=\"button-label\">Stop</div>\n </button>\n <div class=\"sentences\">Sentence: {{ sentenceDescription$ | async }}</div>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TitleService } from '../../../../tools/title/services/title.service';\nimport { ReplayService } from '../../../../tools/replay/services/replay.service';\nimport { ImportDomainStoryService } from '../../../../tools/import/services/import-domain-story.service';\nimport { SettingsService } from '../../../services/settings/settings.service';\nimport { RendererService } from '../../../../tools/modeler/services/renderer.service';\nimport { DirtyFlagService } from '../../../../domain/services/dirty-flag.service';\nimport { DialogService } from '../../../../domain/services/dialog.service';\nimport { ExportService } from '../../../../tools/export/services/export.service';\nimport { LabelDictionaryService } from '../../../../tools/label-dictionary/services/label-dictionary.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<boolean>;\n isDirty$: Observable<boolean>;\n\n showDescription: Observable<boolean>;\n\n constructor(\n private titleService: TitleService,\n private replayService: ReplayService,\n private importService: ImportDomainStoryService,\n private settingsService: SettingsService,\n private renderService: RendererService,\n private dirtyFlagService: DirtyFlagService,\n private dialogService: DialogService,\n private exportService: ExportService,\n private labelDictionaryService: LabelDictionaryService,\n ) {\n this.isReplay$ = this.replayService.replayOn$;\n this.isDirty$ = this.dirtyFlagService.dirty$;\n\n this.showDescription = this.titleService.showDescription$;\n }\n\n openHeaderDialog(): void {\n this.titleService.openHeaderDialog();\n }\n\n openSettings(): void {\n this.settingsService.open();\n }\n\n setShowDescription(show: boolean): void {\n this.titleService.setShowDescription(show);\n }\n\n createNewDomainStory(): void {\n if (this.dirtyFlagService.dirty) {\n this.importService.openUnsavedChangesReminderDialog(() => {\n this.titleService.reset();\n this.renderService.reset();\n });\n } else {\n this.titleService.reset();\n this.renderService.reset();\n }\n }\n\n onImport(): void {\n if (this.dirtyFlagService.dirty) {\n this.importService.openUnsavedChangesReminderDialog(() =>\n this.importService.performImport(),\n );\n } else {\n this.importService.performImport();\n }\n }\n\n startReplay(): void {\n this.replayService.startReplay(true);\n }\n\n stopReplay(): void {\n this.replayService.stopReplay();\n }\n\n previousSentence(): void {\n this.replayService.previousSentence();\n }\n\n nextSentence(): void {\n this.replayService.nextSentence();\n }\n\n openKeyboardShortcutsDialog(): void {\n this.dialogService.openKeyboardShortcutsDialog();\n }\n\n openLabelDictionary(): void {\n this.labelDictionaryService.openLabelDictionary();\n }\n\n openDownloadDialog(): void {\n this.exportService.openDownloadDialog();\n }\n\n openImportFromUrlDialog(): void {\n this.importService.openImportFromUrlDialog(this.dirtyFlagService.dirty);\n }\n\n get hasDomainStory() {\n return this.exportService.isDomainStoryExportable();\n }\n\n get hasTitle(): boolean {\n return this.titleService.hasTitleOrDescription();\n }\n\n get isReplayable() {\n return this.replayService.isReplayable();\n }\n}\n","<mat-toolbar color=\"primary\">\n <mat-toolbar-row class=\"firstRow\">\n <div class=\"mr-10 titel-scrollbar\">\n <span\n class=\"headline\"\n (click)=\"openHeaderDialog()\"\n title=\"Edit title and description\"\n >\n {{ title$ | async }}\n </span>\n </div>\n\n <button\n class=\"headerButton\"\n (click)=\"openHeaderDialog()\"\n title=\"Edit title and description\"\n >\n <span class=\"material-icons-outlined materialIconButton\"> edit </span>\n <div class=\"button-label\">Title</div>\n </button>\n @if (showDescription | async) {\n <button\n class=\"headerButton\"\n title=\"Hide description\"\n (click)=\"setShowDescription(false)\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n visibility_off\n </span>\n <div class=\"button-label\">Description</div>\n </button>\n }\n @if (!(showDescription | async)) {\n <button\n class=\"headerButton\"\n title=\"Show description\"\n (click)=\"setShowDescription(true)\"\n >\n <span class=\"material-icons-outlined materialIconButton\">\n visibility\n </span>\n <div class=\"button-label\">Description</div>\n </button>\n }\n <span class=\"titleSpacer\"></span>\n\n <app-header-buttons\n class=\"nowrap\"\n [hasDomainStory]=\"hasDomainStory\"\n [hasTitle]=\"hasTitle\"\n [isDirty]=\"isDirty$ | async\"\n [isReplayable]=\"isReplayable\"\n [isReplaying]=\"isReplay$ | async\"\n (import)=\"onImport()\"\n (openSettings)=\"openSettings()\"\n (startReplay)=\"startReplay()\"\n (stopReplay)=\"stopReplay()\"\n (nextSentence)=\"nextSentence()\"\n (previousSentence)=\"previousSentence()\"\n (newStory)=\"createNewDomainStory()\"\n (showKeyboardShortCuts)=\"openKeyboardShortcutsDialog()\"\n (openLabelDictionary)=\"openLabelDictionary()\"\n (openDownloadDialog)=\"openDownloadDialog()\"\n (openImportFromUrlDialog)=\"openImportFromUrlDialog()\"\n />\n </mat-toolbar-row>\n</mat-toolbar>\n@if (showDescription$ | async) {\n <mat-card class=\"smallScrollbar description\">\n <span class=\"descriptionText\">{{ description$ | async }}</span>\n </mat-card>\n}\n","import { Component } from '@angular/core';\nimport { SettingsService } from 'src/app/workbench/services/settings/settings.service';\nimport { ModelerService } from 'src/app/tools/modeler/services/modeler.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { IconSetCustomizationService } from '../../../tools/icon-set-config/services/icon-set-customization.service';\nimport { IconSet } from '../../../domain/entities/iconSet';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent {\n iconSetConfiguration: IconSet | undefined;\n showAutosaveSettings = new BehaviorSubject<boolean>(false);\n showIconSetCustomization = new BehaviorSubject<boolean>(true);\n\n constructor(\n private settingsService: SettingsService,\n private modelerService: ModelerService,\n private iconSetCustomizationService: IconSetCustomizationService,\n ) {}\n\n close(): void {\n const savedConfiguration =\n this.iconSetCustomizationService.getAndClearSavedConfiguration();\n if (savedConfiguration) {\n this.modelerService.restart(savedConfiguration);\n }\n this.settingsService.close();\n }\n\n openGeneralSettings() {\n this.showAutosaveSettings.next(true);\n this.showIconSetCustomization.next(false);\n }\n\n openIconSetCustomization() {\n this.showAutosaveSettings.next(false);\n this.showIconSetCustomization.next(true);\n }\n}\n","<div class=\"settings\">\n <mat-toolbar color=\"primary\">\n <mat-toolbar-row class=\"firstRow\">\n <button class=\"headerButton tab-small\" mat-button (click)=\"close()\">\n <span class=\"material-icons\">navigate_before</span>\n Back\n </button>\n <button\n class=\"headerButton tab-like\"\n [class.highlight]=\"showIconSetCustomization | async\"\n mat-button\n (click)=\"openIconSetCustomization()\"\n >\n <span class=\"headline\">Customize Icon Set</span>\n </button>\n <button\n class=\"headerButton tab-like\"\n [class.highlight]=\"showAutosaveSettings | async\"\n mat-button\n (click)=\"openGeneralSettings()\"\n >\n <span class=\"headline\">Autosave Settings</span>\n </button>\n </mat-toolbar-row>\n </mat-toolbar>\n\n @if (showAutosaveSettings | async) {\n <app-autosave-settings />\n }\n @if (showIconSetCustomization | async) {\n <app-icon-set-configuration />\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../material.module';\nimport { HeaderComponent } from './header/header/header.component';\nimport { HeaderButtonsComponent } from './header/header-buttons/header-buttons.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { IconSetConfigModule } from '../../tools/icon-set-config/presentation/icon-set-config.module';\nimport { AutosaveModule } from '../../tools/autosave/presentation/autosave.module';\n\n@NgModule({\n declarations: [HeaderComponent, HeaderButtonsComponent, SettingsComponent],\n exports: [HeaderComponent, HeaderButtonsComponent, SettingsComponent],\n imports: [\n CommonModule,\n FormsModule,\n MaterialModule,\n IconSetConfigModule,\n AutosaveModule,\n ],\n})\nexport class WorkbenchModule {}\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","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --configuration production` 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: '3.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":["SVG_LINK","TEXTSPAN_DESCRIPTION_HEIGHT","TEXTSPAN_TITLE_HEIGHT","X_OFFSET_UTIL","dynamicHeightOffset","createTitleAndDescriptionSVGElement","initDynamicHeightOffset","title","description","min_x","min_y","width","replace","titleElement","createTitle","descriptionElement","createDescription","insertText","text","tempCanvas","document","createElement","ctx","getContext","font","createTextSpans","descriptionParts","split","i","length","yOffset","heightOffset","fontSize","textSpans","words","removeLeadingEmptyStrings","textTag","textSpan","createElementNS","textNode","createTextNode","setAttribute","appendChild","j","firstChild","data","len","measureText","slice","outerHTML","stringArray","firstNonEmptyIndex","findIndex","string","assign","isNumber","omit","domify","assignStyle","query","domQuery","remove","domRemove","innerSVG","Diagram","inherits","BaseViewer","options","DEFAULT_OPTIONS","_container","_createContainer","_init","prototype","saveSVG","_saveSVG","_asyncToGenerator","_emit","svg","err","canvas","get","contentNode","getActiveLayer","defsNode","_svg","contents","defs","bbox","getBBox","height","x","y","e","error","apply","arguments","getModules","_modules","clear","getDefinitions","call","destroy","on","events","priority","callback","that","off","attachTo","parentNode","Error","detach","constructor","jquery","resized","container","removeChild","baseModules","modules","additionalModules","staticModules","egon","diagramModules","concat","diagramOptions","type","event","fire","ensureUnit","position","val","Replace","modeling","_modeling","replaceElement","oldElement","newElementData","newElement","setCenterOfElement","outgoingActivities","outgoing","incomingActivities","incoming","forEach","element","businessObject","source","id","target","Math","ceil","name","replaceShape","ElementTypes","replaceOptions","ReplaceMenuProvider","_dsReplace","$inject","getEntries","entries","includes","ACTOR","actorReplaceOptions","WORKOBJECT","workObjectReplaceOptions","_createEntries","menuEntries","self","definition","entry","_createMenuEntry","push","action","replaceAction","label","className","actionName","iconDictionaryService","initializeReplaceOptions","iconDictionary","actors","getIconsAssignedAs","replaceOption","keysArray","actorType","typeName","toLowerCase","getIconForMenu","workObjects","workObjectType","isArray","generateAutomaticNumber","hexToRGBA","isHexWithAlpha","rgbaToHex","hasPrimaryModifier","dirtyFlagService","initializeContextPadProvider","dirtyFlag","DomainStoryContextPadProvider","connect","translate","elementFactory","create","contextPad","popupMenu","replaceMenuProvider","commandStack","eventBus","rules","registerProvider","_selectedElement","startConnect","context","shape","isOpen","click","addEventListener","executeCommandStack","getContextPadEntries","pickedColor","dispatchEvent","CustomEvent","detail","color","actions","autoActivate","start","addDelete","addColorChange","addConnectWithActivity","addTextAnnotation","addActors","appendAction","addWorkObjects","addChangeWorkObjectTypeMenu","addChangeActorTypeMenu","GROUP","addDeleteGroupWithoutChildren","ACTIVITY","addChangeDirection","TEXTANNOTATION","CONNECTION","getMultiElementContextPadEntries","elements","deleteAllowed","allowed","delete","group","groups","filter","el","otherElements","removeGroup","removeElements","makeDirty","deleteGroup","changeDirection","getReplaceMenuPosition","cursor","open","colorChange","dragstart","icon","newNumber","execute","Y_OFFSET","diagramContainer","getContainer","pad","getPad","html","diagramRect","getBoundingClientRect","padRect","top","left","appendStart","createShape","hints","getSelectedBusinessObject","oldColor","newColor","selectedBusinessObject","getBusinessObject","isUndefined","reduce","copyProperties","properties","property","removeProperties","LOW_PRIORITY","EgonCopyPaste","propertyCopy","descriptor","oldBusinessObject","isLabel","references","resolveReferences","cache","host","attachedToRef","array","reference","key","newBusinessObject","labelTarget","copyElement","isDefined","isObject","has","sortBy","DISALLOWED_PROPERTIES","PropertyCopy","_eventBus","propertyNames","propertyName","indexOf","sourceElement","targetElement","canCopyProperties","sourceProperty","copiedProperty","copyProperty","canSetProperty","parent","set","$parent","childProperties","childProperty","CopyPasteModule","__depends__","__init__","egonCopyPaste","BaseElementFactory","DomainStoryIdFactory","DomainStoryElementFactory","domainStoryIdFactory","djsElementType","attrs","dstElementType","registerId","getId","value","alreadyHasSize","_getShapeSize","Object","defineProperty","baseCreate","shapes","__default","Dimensions","idList","generateId","idNumber","fourDigitsId","idSuffix","containsId","floor","random","same","BaseRenderer","Ids","componentsToPath","createLine","append","svgAppend","attr","svgAttr","classes","svgClasses","svgCreate","getNumberStash","addNumberToRegistry","numberBoxDefinitions","calculateTextWidth","countLines","labelPosition","angleBetween","isCustomIcon","isCustomSvgIcon","getScaledPath","RENDERER_IDS","numbers","DEFAULT_COLOR","_iconDictionaryService","_elementRegistryService","_dirtyFlagService","initializeRenderer","elementRegistryService","DomainStoryRenderer","styles","textRenderer","rendererId","next","markers","computeStyle","generateActivityNumber","parentGfx","box","numberStash","semantic","use","number","newRenderedNumber","renderNumber","numberStyle","fitBox","style","getExternalStyle","fill","renderActorAndWorkObjectLabel","align","padding","renderLabel","renderActivityLabel","waypoints","lines","startPoint","selected","endPoint","angle","alignment","boxWidth","xStart","abs","textAlign","wordWrap","overflowWrap","hyphens","renderExternalNumber","String","createText","add","setCoordinates","circle","radius","d","stroke","test","innerHTML","manipulateInnerHTMLXLabel","children","manipulateInnerHTMLYLabel","attributes","nodeValue","offset","result","Number","drawGroup","rect","drawRect","applyColorToCustomSvgIcon","iconSvg","rest","base64Svg","atob","coloredSvg","applyColorToIcon","encodedColoredSvg","btoa","match","some","it","replaceAll","index","substring","getIconSvg","dataURL","drawActor","svgDynamicSizeAttributes","iconSRC","getTypeIconSRC","getIconId","actor","drawWorkObject","workObject","useColorForActivity","strokeWidth","strokeLinejoin","markerEnd","marker","drawActivity","p","adjustForTextOverlap","fixConnectionInHTML","parentElement","baseVal","checkIfPointOverlapsText","point","lineOffset","getLineOffset","objects","getElementsByClassName","data_id","item","getAttribute","object","getElementsByTagName","tspans","tspan","wantedConnection","polylines","drawDSConnection","strokeDasharray","drawAnnotation","textElement","textPathData","xScaleFactor","yScaleFactor","containerWidth","containerHeight","mx","my","drawPath","path","r","rx","ry","createMarker","activityArrow","addMarker","ref","scale","strokeLinecap","viewBox","refX","refY","markerWidth","markerHeight","orient","getWorkObjectPath","rectangle","getRectPath","getGroupPath","getActivityPath","connection","map","original","activityPath","waypoint","getActorPath","draggerGfx","removeMarker","canRender","drawShape","startsWith","search","pos","correctInitialize","getShapePath","drawConnection","every","RuleProvider","is","HIGH_PRIORITY","MIN_SIZE","isGroup","isActor","isWorkObject","isActivity","isConnection","isAnnotation","isBackground","nonExistingOrLabel","canStartConnection","canConnect","canResize","newBounds","lowerLeft","lowerRight","upperRight","canConnectToAnnotation","DomainStoryRules","init","canCreate","addRule","s","undefined","hover","pick","CommandInterceptor","collectionAdd","collectionRemove","reworkGroupElements","DomainStoryUpdater","connectionDocking","updateElement","_elements","updateConnection","newTarget","newSource","copyWaypoints","cropConnection","cropped","createElementsBehavior","getCroppedWaypoints","executed","reverted","LassoTool","SpaceTool","Palette","TextRenderer","DomainStoryPalette","CreateModule","ContextPadModule","CommandStack","UpdateLabelHandler","headlineAndDescriptionUpdateHandler","DSModeling","BaseLayouter","CroppingConnectionDocking","layouter","domainStoryRenderer","paletteProvider","domainStoryRules","domainStoryUpdater","contextPadProvider","updateLabelHandler","svgRemove","MARKER_HIDDEN","MARKER_LABEL_HIDDEN","DSLabelEditingPreview","defaultLayer","getDefaultLayer","absoluteElementBBox","gfx","activeProvider","active","getAbsoluteBBox","dy","newElementHeight","max","autocomplete","getLabel","sanitizeTextForSVGExport","dictionaryService","stashUse","initializeLabelEditingProvider","labelingDictionary","toggleStashUse","focusElement","setTimeout","focus","DSLabelEditingProvider","directEditing","resizeHandles","_canvas","_textRenderer","_updateLabelHandler","activateDirectEdit","complete","isActive","cancel","removeResizers","createAutocomplete","canExecute","editingBox","activate","getUniqueWorkObjectNames","bounds","getEditingBBox","resizable","autoResize","zoom","defaultStyle","getDefaultStyle","defaultFontSize","defaultLineHeight","lineHeight","fontFamily","fontWeight","minWidth","maxWidth","minHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","update","newLabel","activeContextText","updateLabel","getLabelAttr","getNumberAttr","getNumber","setLabel","setNumber","textNumber","selectPartOfActivity","angleActivity","selectedActivity","linelength","fontsize","input","workObjectNames","closeAllLists","currentFocus","filteredWorkObjectNames","autocompleteList","autocompleteItem","toUpperCase","visibility","onkeydown","getElementById","keyCode","addActive","preventDefault","removeActive","classList","survivor","ChangeSupportModule","ResizeModule","DirectEditingModule","dSlabelEditingProvider","dSlabelEditingPreview","str","amountWaypoints","determinedPosition","xPos","yPos","Array","labelPositionX","labelPositionY","offsetX","scaledAngle","offsetY","Modeling","_commandStack","updateNumber","oldShape","newShape","newData","Connect","Translate","PopupMenu","numberRegistry","multipleNumberRegistry","canvasElementRegistry","initializeNumbering","canvasElementRegistryService","updateMultipleNumberRegistry","activityBusinessObjects","activity","multipleNumberAllowed","boxHeight","fixedOffsetX","fixedOffsetY","angleDependantOffsetX","angleDependantOffsetY","elementActivity","usedNumbers","wantedNumber","activitiesFromActors","getActivitiesFromActors","updateExistingNumbersAtGeneration","updateExistingNumbersAtEditing","sortedActivities","oldMultipleNumberRegistry","currentNumber","setNumberOfActivity","getNumbersAndIDs","iDWithNumber","activities","renderedNumber","setNumberIsMultiple","multi","getNumberRegistry","getMultipleNumberRegistry","elementArray","initializePalette","PaletteProvider","palette","spaceTool","lassoTool","_create","_elementFactory","_spaceTool","_lassoTool","getPaletteEntries","createAction","createListener","shortType","initPalette","config","getCurrentIconConfigurationForMenu","initTypeDictionaries","actorTypes","addCanvasObjectTypes","separator","workObjectTypes","activateSelection","elementType","EditorActions","AdditionalEditorActions","injector","invoke","_registerDefaultActions","elementRegistry","selection","handTool","_registerAction","rootElement","getRootElement","select","toggle","currentSelection","KeyboardBindings","AdditionalKeyboardBindings","registerBindings","keyboard","editorActions","addListener","fn","isRegistered","keyEvent","isKey","isCmd","trigger","hasModifier","EditorActionsModule","KeyboardModule","additionalEditorActions","additionalKeyBindings","initializeActivityUpdateHandler","activityUpdateHandler","registerHandler","activity_directionChange","activity_changed","preExecute","oldLabel","oldNumbersWithIDs","oldNumber","revert","revertAutomaticNumberGenerationChange","oldWaypoints","swapSource","newWaypoints","getActivitesFromActors","splice","undoGroupRework","elementUpdateHandler","element_colorChange","removeGroupWithoutChildren","child","titleService","handlerFunction","oldTitle","getTitle","oldDescription","getDescription","updateTitleAndDescription","newTitle","newDescription","DSMassRenameHandler","massRename","relevantElements","confirm","newValue","NULL_DIMENSIONS","setText","postExecute","bo","getLayoutedBounds","resizeShape","numberTarget","TextUtil","DEFAULT_FONT_SIZE","LINE_HEIGHT_RATIO","MIN_TEXT_ANNOTATION_HEIGHT","parseInt","externalStyle","textUtil","getExternalLabelBounds","layoutedDimensions","getDimensions","round","getTextAnnotationBounds","innerShape","superParent","svgShape","querySelector","svgGroup","svgGroupParent","param","rawPath","heightElements","widthElements","abspos","coordinates","heightRatio","widthRatio","heightIndex","widthIndex","format","obj","tokenRegex","all","replacer","objNotationRegex","res","quote","quotedName","isFunc","DomainStoryModule","LabelEditingModule","ModelingModule","MoveCanvasModule","KeyboardMoveModule","ZoomScrollModule","MoveModule","Bendpoints","ConnectionPreview","SpaceToolModule","LassoToolModule","HandToolModule","ConnectModule","SnappingModule","AdditionalShortcuts","minimapModule","DomainStoryModeler","_groupElements","_createElementFromBusinessObject","parentId","isOfTypeGroup","parentShape","addShape","_addConnection","addConnection","importBusinessObjects","businessObjects","connections","otherElementTypes","isOfTypeConnection","BehaviorSubject","environment","ColorPickerDirective","BLACK","BLUE","CYAN","DARK_PINK","GREEN","GREY","LIGHT_PINK","LIME","ORANGE","PURPLE","RED","SNACKBAR_DURATION_LONG","SNACKBAR_INFO","YELLOW","i0","ɵɵelement","AppComponent","settingsService","exportService","autosaveService","cd","snackbar","replayService","modelerService","version","skipNextColorUpdate","colorBox","showSettings$","showDescription$","modifierPressed","ctrlKey","metaKey","altKey","stopPropagation","isDomainStoryExportable","downloadDST","downloadSVG","getReplayOn","nextSentence","previousSentence","colorPicker","closeDialog","customEvent","openDialog","duration","panelClass","ngOnInit","postInit","onColorChanged","ngAfterViewInit","loadLatestDraft","detectChanges","onWindowClose","dirty","returnValue","ɵɵdirectiveInject","i1","SettingsService","i2","TitleService","i3","ExportService","i4","AutosaveService","ChangeDetectorRef","i5","MatSnackBar","i6","ReplayService","i7","ModelerService","i8","DirtyFlagService","selectors","viewQuery","AppComponent_Query","rf","ɵɵlistener","AppComponent_beforeunload_HostBindingHandler","$event","ɵɵresolveWindow","ɵɵelementStart","ɵɵtwoWayListener","AppComponent_Template_input_colorPickerChange_1_listener","ɵɵtwoWayBindingSet","AppComponent_Template_input_colorPickerClose_1_listener","ɵɵelementEnd","ɵɵtemplate","AppComponent_Conditional_2_Template","ɵɵtext","ɵɵadvance","ɵɵstyleProp","ɵɵproperty","ɵɵtwoWayProperty","ɵɵconditional","ɵɵpipeBind1","ɵɵclassProp","ɵɵtextInterpolate","APP_INITIALIZER","BrowserModule","MAT_CHECKBOX_DEFAULT_OPTIONS","NoopAnimationsModule","ImportDomainStoryService","LabelDictionaryService","ElementRegistryService","IconSetImportExportService","UntypedFormBuilder","IconDictionaryService","MaterialModule","ColorPickerModule","IconSetChangedService","WorkbenchModule","DomainModule","AutosaveModule","ExportModule","IconSetConfigModule","ImportModule","LabelDictionaryModule","ModelerModule","TitleModule","DragDirective","AppModule","ngDoBootstrap","app","componentElement","body","bootstrap","ɵɵinject","provide","useValue","clickAction","useFactory","initialize","deps","useExisting","imports","declarations","importExportService","labelDictionaryService","Configuration","INITIAL_TITLE","INITIAL_DESCRIPTION","INITIAL_ICON_SET_NAME","ICON_SET_CONFIGURATION_KEY","DRAFTS_KEY","VERSION_KEY","DEFAULT_AUTOSAVES_ENABLED","DEFAULT_AUTOSAVES_MAX_DRAFTS","DEFAULT_AUTOSAVES_INTERVAL","SNACKBAR_DURATION","SNACKBAR_DURATION_LONGER","SNACKBAR_SUCCESS","SNACKBAR_ERROR","Dictionary","size","isEmpty","Entry","putEntry","addEach","keys","addBuiltInIcons","builtInIcons","appendDict","dict","found","keyWords","CommonModule","KeyboardShortcutsDialogComponent","exports","MAT_DIALOG_DATA","ɵɵtextInterpolate1","shortCut_r1","shortCut","shortCuts","decls","vars","consts","template","KeyboardShortcutsDialogComponent_Template","ɵɵrepeaterCreate","KeyboardShortcutsDialogComponent_For_4_Template","_forTrack0","ɵɵrepeater","CommandStackService","setCommandStack","payload","factory","ɵfac","providedIn","MatDialogConfig","DialogService","matDialog","dialog","openKeyboardShortcutsDialog","MatDialog","isDirtySubject","dirty$","asObservable","makeClean","fullyInitialized","registry","__implicitroot","setElementRegistry","createObjectListForDSTDownload","allObjectsFromCanvas","getAllCanvasObjects","getAllGroups","objectList","fillListOfCanvasObjects","canvasElement","unshift","getAllActivities","getAllConnections","allObjects","groupObjects","checkChildForGroup","currentGroup","pop","seenIds","Set","groupObject","isNewId","registryElementNames","sort","activityCanvasA","activityCanvasB","activityNumberA","activityNumberB","getUsedIcons","getAllActors","workobjects","getAllWorkobjects","a","w","co","StorageService","localStorage","setItem","JSON","stringify","json","getItem","parse","MatDialogModule","MatFormFieldModule","MatInputModule","MatToolbarModule","MatExpansionModule","MatCardModule","MatSnackBarModule","MatButtonModule","MatGridListModule","MatButtonToggleModule","MatListModule","MatCheckboxModule","AutosaveOptionsComponent_Conditional_0_Template_button_click_22_listener","ɵɵrestoreView","_r1","activated_r2","ɵɵreference","interval_r3","drafts_r4","ctx_r4","ɵɵnextContext","ɵɵresetView","save","checked","configuration_r6","activated","interval","maxDrafts","AutosaveOptionsComponent","autosaveConfiguration","setConfiguration","AutosaveConfigurationService","AutosaveOptionsComponent_Template","AutosaveOptionsComponent_Conditional_0_Template","tmp_0_0","configuration$","AutosaveSettingsComponent","AutosaveSettingsComponent_Template","AutosavedDraftsComponent_Conditional_7_For_2_Template_button_click_6_listener","draft_r2","$implicit","ctx_r2","loadDraft","date","AutosavedDraftsComponent_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIdentity","drafts","AutosavedDraftsComponent","subscription","autosavedDraftsChanged$","subscribe","initDrafts","loadCurrentDrafts","draft","removeAllDrafts","AutosavedDraftsComponent_Template","AutosavedDraftsComponent_Template_button_click_5_listener","AutosavedDraftsComponent_Conditional_7_Template","ɵɵtextInterpolate2","FormsModule","ReplaySubject","AUTOSAVE_CONFIGURATION_TAG","defaultConfiguration","storageService","configuration","configurationSubject","initializeConfiguration","loadConfiguration","saveConfiguration","Subject","rendererService","iconSetConfigurationService","updateConfiguration","readDrafts","sortDrafts","configFromFile","configAndDST","domain","createIconSetConfiguration","story","dst","actorIcons","getElementsOfType","workObjectIcons","updateIconRegistries","importStory","stopTimer","startTimer","autosaveTimer","clearInterval","setInterval","savedDrafts","newDraft","createDraft","isChanged","isSame","isDraftEmpty","writeDrafts","b","getStory","createConfigAndDST","Date","toString","aDate","bDate","RendererService","ExportDialogData","ExportOption","tooltip","ConfigAndDST","testConfigAndDst","DEFAULT_PADDING","ExportDialogComponent_Conditional_18_Template_input_ngModelChange_2_listener","ctx_r1","animationSpeed","ExportDialogComponent_Conditional_18_Template_span_click_3_listener","onExportAnimatedSvg","ExportDialogComponent_For_26_Template_button_click_0_listener","ɵ$index_50_r4","_r3","$index","doOption","option_r5","ExportDialogComponent","dialogRef","isAnimatedSvgExport","withTitle","useWhiteBackground","close","updateWithTitle","updateUseWhiteBackground","MatDialogRef","ExportDialogComponent_Template","ExportDialogComponent_Template_input_change_7_listener","ExportDialogComponent_Template_input_change_11_listener","ExportDialogComponent_Template_input_ngModelChange_15_listener","ExportDialogComponent_Template_span_click_16_listener","ExportDialogComponent_Conditional_18_Template","ExportDialogComponent_Template_button_click_23_listener","ExportDialogComponent_For_26_Template","sanitizeForDesktop","formatDate","pngService","svgService","htmlPresentationService","dialogService","titleSubscription","title$","descriptionSubscription","description$","ngOnDestroy","unsubscribe","DomainStory","getCurrentConfigurationForExport","getStoryForDownload","filename","getCurrentDateString","downloadFile","datatype","fileEnding","encodeURIComponent","display","svgData","createSVGData","downloadPNG","svgElements","outerSVGElement","viewport","layerBase","image","extractSVG","prepareSVG","onload","getWidth","getHeight","fillStyle","drawImage","png64","toDataURL","ele","src","onchange","downloadHTMLPresentation","modeler","then","objA","objB","localeCompare","info","openDownloadDialog","SVGDownloadOption","EGNDownloadOption","PNGDownloadOption","HTMLDownloadOption","getModeler","disableClose","autoFocus","PngService","SvgService","HtmlPresentationService","i9","i10","doT","storyCreatorService","viewBoxCoordinates","ViewBoxCoordinate","_this","startReplay","fixActivityMarkersForEachSentence","getCurrentSentenceNumber","content","transition","alert","getMaxSentenceNumber","stopReplay","revealjsTemplate","dots","revealjsData","script","sentences","multiplexSecret","multiplexId","fixMalformedHtmlScript","structuredClone","viewBoxIndex","xLeft","yUp","splitViewBox","dataStart","dataEnd","createBounds","sectionIndex","newDefs","ids","idToReplace","newId","StoryCreatorService","browserSpecs","ua","navigator","userAgent","tem","M","exec","appName","appVersion","URIHashtagFix","fix","browser","findMostOuterElements","includeSpaceForDescription","xRight","yDown","sub","elXLeft","elXRight","elYUp","elYDown","transform","nums","rects","outerRect","calculateWidthAndHeight","insertIndex","join","extraHeight","layerResizers","layerOverlays","removeAttribute","XMLSerializer","serializeToString","cacheData","getEncoded","domainStorySvg","createAnimatedSvg","viewBoxWidth","viewBoxHeight","findIndexToInsertData","svgIndex","backgroundColorWhite","appendDST","traceActivitiesAndCreateStory","usedElementId","storyLength","visibleTimeInPercent","durationOfAnimation","sentenceCounter","currentVisibleTimeInPercent","previousVisibleTimeInPercent","sentence","objectId","idIndex","insertIdIndex","customIcons","people","animal","vehicle","airport","driving","print","calling","computer","speaker","legalSystem","infoDialogs","finance","times","rating","groceries","fingers","entertainment","person","pet","conversation","world","store","theater","business","water","hotel","dining","gasStation","meetingRoom","courthouse","flag","place","car","bus","train","truck","taxi","bike","boat","motorcycle","plane","flightTakeoff","flightLanding","shuttle","walking","traffic","commute","system","printer","folder","email","copyright","dns","settings","cellphone","briefcase","microphone","signal","pencil","sum","headset","mouse","router","scanner","security","desktop","speakerPhone","tablet","receipt","calendar","cloud","assessment","dashboard","pieChart","problem","pictureAsPdf","grid","watch","euro","dollar","alarm","wrench","circleArrows","creditCard","favorite","gavel","blind","hourglass","time","shopping","thumbUp","thumbDown","thumbUpDown","couch","attach","ruler","education","howToReg","viewList","accessible","accountCircle","assignment","battery","book","bug","changeHistory","checkCircle","code","contactMail","crop","dvr","extension","face","fastfood","fingerprint","hand","help","lightbulb","lock","loyalty","pictureInPicture","portrait","rocket","satellite","share","slideshow","star","sun","table","videocam","wysiwyg","addCustomIcons","newIcons","IconConfiguration","allIconDictionary","iconSetName","getDefaultConf","defaultIconSet","actorsDict","workObjectsDict","newCustomIcons","createCustomConf","iconSetConfiguration","IconFilterOptions","DetailsListItemComponent","iconInitiated","ngAfterViewChecked","createIcon","img","inputs","DetailsListItemComponent_Template","ɵɵpropertyInterpolate","ɵɵsanitizeUrl","IconListItemComponent","iconName","iconSetCustomizationService","isWorkobject","isNone","getIconForName","toggleNone","setAsUnassigned","toggleActor","setAsActor","toggleWorkobject","setAsWorkobject","IconSetCustomizationService","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","IconSetConfigurationComponent","IconSetDetailsComponent","sanitizeIconName","iconName_r1","NO_FILTER","selectedActors","selectedWorkobjects","allIconNames","allFilteredIconNames","iconSetConfigurationTypes","getIconSetConfiguration","allIcons","getFullDictionary","sortByName","selectedActors$","selectedWorkobjects$","allFiltered","getFilteredNamesForType","loadMinimalIconConfigurationWithDefaultIcons","resetIconSet","loadInitialConfiguration","saveIconSet","startIconUpload","importIcon","files","iconInputFile","reader","FileReader","onloadend","addIMGToIconDictionary","addNewIcon","readAsDataURL","startIconSetImport","importIconSet","iconSetInputFile","importConfiguration","readAsText","filterForActors","ONLY_ACTORS","filterForWorkobjects","ONLY_WORKOBJECTS","filterForUnassigned","ONLY_UNASSIGNED","filterByNameAndType","filteredByKeyWord","filteredByNameAndType","isIconActor","isIconWorkObject","IconSetConfigurationComponent_Template","IconSetConfigurationComponent_Template_button_click_6_listener","IconSetConfigurationComponent_Template_button_click_10_listener","IconSetConfigurationComponent_Template_button_click_14_listener","IconSetConfigurationComponent_Template_input_input_21_listener","IconSetConfigurationComponent_Template_button_click_23_listener","IconSetConfigurationComponent_Template_input_change_26_listener","IconSetConfigurationComponent_Template_button_click_27_listener","IconSetConfigurationComponent_Template_input_change_30_listener","IconSetConfigurationComponent_Template_button_click_31_listener","IconSetConfigurationComponent_Template_button_click_34_listener","IconSetConfigurationComponent_Template_button_click_37_listener","IconSetConfigurationComponent_For_42_Template","IconSetDetailsComponent_For_18_Template_mat_list_item_dragover_0_listener","allowDrop","IconSetDetailsComponent_For_18_Template_mat_list_item_dragstart_0_listener","ɵ$index_30_r3","onDragStart","IconSetDetailsComponent_For_18_Template_mat_list_item_drop_0_listener","ctx_r3","iconName_r5","onDrop","IconSetDetailsComponent_For_25_Template_mat_list_item_dragover_0_listener","_r6","IconSetDetailsComponent_For_25_Template_mat_list_item_dragstart_0_listener","ɵ$index_43_r7","IconSetDetailsComponent_For_25_Template_mat_list_item_drop_0_listener","ctx_r7","iconName_r9","customizationService","draggedList","draggedIndex","iconSetName$","changeName","listName","list","sortedList","setSelectedActors","setSelectedWorkObject","exportIconSet","exportConfiguration","IconSetDetailsComponent_Template","IconSetDetailsComponent_Template_input_input_8_listener","IconSetDetailsComponent_Template_button_click_10_listener","IconSetDetailsComponent_For_18_Template","IconSetDetailsComponent_For_25_Template","ICON_PREFIX","actorIconDictionary","workObjectDictionary","builtInIconsDictionary","iconDictionaryForMenu","iconConfig","allTypes","getCustomIcons","initDictionary","selectedIconNames","dictionary","registerIconForMenu","customConfiguration","allInTypeDictionary","collection","allIn","addIconsFromIconSetConfiguration","dictionaryType","iconTypes","registerIconForType","addIconsToTypeDictionary","unregisterIconForType","extractCustomIconsFromDictionary","addNewIconsToDictionary","elementDictionary","sanitizedName","custom","addIconsToCss","sheetEl","iconStyle","wrapSRCInSVG","sheet","insertRule","cssRules","fullDictionary","appendedDict","getNamesOfIconsAssignedAs","getIconSource","elementOfType","getAllIconDictionary","getActorsDictionary","getWorkObjectsDictionary","getIconConfiguration","setCustomConfiguration","iconSetChangedService","allIconListItems","configurationHasChanged","getCurrentConfigurationNamesWithoutPrefix","addIconToAllIconList","iconConfigrationChanged","storedIconSetConfiguration","getStoredIconSetConfiguration","customConfig","actorKeys","workObjectKeys","usedIcons","selectedActorNames","selectActor","deselectActor","selectedWorkobjectNames","selectWorkObject","deselectWorkobject","setIconSetName","changedIconSet","updateIcon","workobject","updateActorSubject","updateWorkObjectSubject","defaultConfig","createMinimalConfigurationWithDefaultIcons","workObjectName","actorName","updateAllIconBehaviourSubjects","resetToInitialConfiguration","imported","changedActors","changedWorkobjects","configurationActors","configurationWorkobjects","changedIconSetConfiguration","updateIcons","setStoredIconSetConfiguration","getAndClearSavedConfiguration","temp","iconDict","getDataUrlForIcon","iconBehaviourSubject","customIconSetConfiguration","rawSrc","iconSetNameSubject","configJSONString","updateIconSetName","actorDict","workObjectDict","configurationName","getCurrentConfiguration","createConfigFromDictionaries","currentConfiguration","minimalConfig","createConfigFromCanvas","actorNames","workobjectNames","newActors","newWorkobjects","fileConfiguration","iconSetString","configurationFromFile","checkValidityOfConfiguration","configForStorage","allCanvasObjects","importDomainStoryService","background","onDragOver","evt","onDragLeave","dataTransfer","openUnsavedChangesReminderDialog","performDropImport","hostVars","hostBindings","DragDirective_HostBindings","DragDirective_dragover_HostBindingHandler","DragDirective_dragleave_HostBindingHandler","DragDirective_drop_HostBindingHandler","ImportDialogComponent","fileUrl","doImport","updateUrl","ImportDialogComponent_Template","ImportDialogComponent_Template_input_input_7_listener","ImportDialogComponent_Template_button_click_12_listener","ImportDialogComponent_Template_button_click_14_listener","EventEmitter","UnsavedChangesReminderComponent","importRepairService","importedConfiguration","importedConfigurationEmitter","getConfiguration","performImport","file","import","commandStackChanged","isSupportedFileEnding","importNotDirtyFromUrl","isDirty","importFromUrl","convertToDownloadableUrl","fetch","response","blob","catch","githubPattern","dropboxPattern","isSupported","dstSvgPattern","egnSvgPattern","endsWith","openImportFromUrlDialog","isSVG","isEGN","fileReader","titleText","restoreTitleFromFileName","fileReaderFunction","importSuccessful","importFailed","isSvgFile","isEgnFormat","contentAsJson","extractJsonFromSvgComment","iconSetConfig","iconSetFromFile","storyAndIconSet","extractStoryAndIconSet","removeWhitespacesFromIcons","removeUnnecessaryBpmnProperties","lastElement","importVersionNumber","handleVersionNumber","checkForUnreferencedElementsInActivitiesAndRepair","showBrokenImportDialog","versionPrefix","lastIndexOf","updateCustomElementsPreviousV050","showPreviousV050Dialog","dstText","dstAndConfig","xmlText","setImportedConfigurationAndEmit","message","emit","domainStoryRegex","svgRegex","egnSuffix","dstSuffix","svgSuffix","filenameWithoutDateSuffix","ImportRepairService","objectIDs","activityIndex","$type","$descriptor","di","LabelDictionaryDialogComponent","LabelDictionaryDialogComponent_Template","LabelDictionaryDialogComponent_Template_app_label_dictionary_closeEmitter_3_listener","LabelDictionaryComponent","MatDialogContent","LabelDictionaryComponent_For_6_Template_input_change_2_listener","workobjectEntry_r2","updateWorkobjectEntry","LabelDictionaryComponent_For_13_Template_textarea_change_2_listener","activityEntry_r5","_r4","updateActivityEntry","LabelDictionaryComponent_For_13_Template_textarea_keydown_enter_2_listener","LabelDictionaryComponent_For_13_Template_textarea_keyup_enter_2_listener","LabelDictionaryComponent_For_13_Template_textarea_keyup_escape_2_listener","closeEmitter","createLabelDictionaries","workObjectEntries","getWorkObjectLabels","activityEntries","getActivityLabels","workobjectEntriesSubject","activityEntriesSubject","activityNames","originalActivityNames","originalWorkObjectNames","originalName","massRenameLabels","activityEntry","workobjectEntry","outputs","LabelDictionaryComponent_Template","LabelDictionaryComponent_For_6_Template","LabelDictionaryComponent_For_13_Template","LabelDictionaryComponent_Template_button_click_16_listener","LabelDictionaryComponent_Template_button_click_18_listener","massNamingService","activityLabels","workObjektLabels","openLabelDictionary","isActivityWithLabel","isWorkObjectWithLabel","hasAtLeastOneLabel","massChangeNames","MassNamingService","commandStackService","oldValue","allRelevantObjects","FormControl","FormGroup","Validators","ActivityDialogForm","activityLabel","activityNumber","numberIsAllowedMultipleTimes","nonNullable","required","multipleNumbers","ActivityDialogData","showNumberFields","saveFN","ActivityDialogComponent","form","controls","valueChanges","setValue","onSubmit","patchValue","ActivityDialogComponent_Template","ActivityDialogComponent_Template_input_change_9_listener","ActivityDialogComponent_Template_textarea_keydown_enter_14_listener","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","ReactiveFormsModule","positionsMatch","massRenameHandler","InitializerService","propagateDomainStoryModelerClassesToServices","initializeDomainStoryModelerEventHandlers","initiateEventBusListeners","activityDoubleClick","renderedNumberRegistry","allActivities","htmlCanvas","transformX","transformY","zoomX","zoomY","clickX","originalEvent","clickY","parseFloat","currentNum","tx","ty","tNumber","elementX","elementY","pasteColor","pasteText","pasteHeight","elementsKey","shift","saveActivityInputLabel","activityData","hasNumber","initializerService","checkCurrentVersion","bind","exportArtifacts","debounce","window","startDebounce","onAction","restart","domainStory","currentStory","timeout","timer","clearTimeout","encoded","renderStory","reset","c","NUMBER_BACKGROUND_COLOR","NUMBER_COLOR","STROKE_WIDTH","HIGHLIGHT_NUMBER_BACKGROUND_COLOR","HIGHLIGHT_NUMBER_COLOR","HIGHLIGHT_STROKE_WIDTH","CONNECTION_PATH_DOM_SELECTOR","DomManipulationService","showAll","removeHighlights","domObject","showSentence","replaySentence","notShown","getAllNotShown","highlightSentence","o","getNumberDomForActivity","numberText","previousSibling","numberBackgroundDom","numberTextDom","allConnections","activityDomObject","connectionDomObject","sentenceObjects","shownElements","notShownElements","domManipulationService","currentSentence","maxSentenceNumber","replayOnSubject","currentSentence$","maxSentenceNumber$","replayOn$","setReplayState","state","isReplayable","initializeReplay","showCurrentSentence","checkSequenceNumbers","missingSentences","getMissingSentences","getValue","tracedActivityMap","tracedActivityMapKeys","tracedItem","storyIndex","createSentence","addGroupsToLastSentence","tracedActivityMapKey","tracedActivity","getSentenceObjects","highlightedElements","t","highlightedObjects","allActivityNumbersFromActors","allActivityNumbers","highestSequenceNumber","actorsAndWorkObjects","actorTextAnnotations","parallelSentence","parallelSentenceTargetObjects","firstTarget","checkTarget","activityTarget","addTextAnnotationsForActorOrGroup","ta","objectTextAnnotations","annotationsForGroups","g","TitleDialogForm","titel","TitleDialogComponent","getRawValue","TitleDialogComponent_Template","TitleDialogComponent_Template_textarea_keydown_enter_10_listener","TitleDialogComponent_Template_textarea_keyup_enter_10_listener","TitleDialogComponent_Template_textarea_keyup_escape_10_listener","TitleDialogComponent_Template_button_click_12_listener","TitleDialogComponent_Template_button_click_14_listener","titleSubject","descriptionSubject","showDescriptionSubject","openHeaderDialog","allowUndo","fireTitleAndDescriptionUpdate","updateTitle","updateDescription","inputTitle","trim","setShowDescription","show","getVersion","hasTitleOrDescription","MatButton","MatDialogActions","continueAction","standalone","features","ɵɵStandaloneFeature","UnsavedChangesReminderComponent_Template","UnsavedChangesReminderComponent_Template_button_click_9_listener","UnsavedChangesReminderComponent_Template_button_click_11_listener","rgba","isValidHex","red","padStart","green","blue","alpha","hex","getChunksFromString","st","chunkSize","RegExp","convertHexUnitTo256","hexStr","repeat","getAlphafloat","EPSILON","hexArr","degrees","radians","PI","quadrant","adjacent","opposite","atan2","Point","reg","nameWithoutFileEnding","combineLatest","HeaderButtonsComponent_Conditional_0_Template_button_click_1_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_11_listener","HeaderButtonsComponent_Conditional_0_Template_input_change_16_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_17_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_22_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_27_listener","newStory","HeaderButtonsComponent_Conditional_0_Template_button_click_32_listener","openSettings","HeaderButtonsComponent_Conditional_0_Template_button_click_37_listener","showKeyboardShortCuts","hasDomainStory","hasTitle","HeaderButtonsComponent_Conditional_1_Template_button_click_1_listener","HeaderButtonsComponent_Conditional_1_Template_button_click_6_listener","HeaderButtonsComponent_Conditional_1_Template_button_click_11_listener","sentenceDescription$","HeaderButtonsComponent","isReplaying","pipe","count","HeaderButtonsComponent_Template","HeaderButtonsComponent_Conditional_0_Template","HeaderButtonsComponent_Conditional_1_Template","HeaderComponent_Conditional_11_Template_button_click_0_listener","HeaderComponent_Conditional_13_Template_button_click_0_listener","HeaderComponent","importService","renderService","isReplay$","isDirty$","showDescription","createNewDomainStory","onImport","HeaderComponent_Template","HeaderComponent_Template_span_click_3_listener","HeaderComponent_Template_button_click_6_listener","HeaderComponent_Conditional_11_Template","HeaderComponent_Conditional_13_Template","HeaderComponent_Template_app_header_buttons_import_16_listener","HeaderComponent_Template_app_header_buttons_openSettings_16_listener","HeaderComponent_Template_app_header_buttons_startReplay_16_listener","HeaderComponent_Template_app_header_buttons_stopReplay_16_listener","HeaderComponent_Template_app_header_buttons_nextSentence_16_listener","HeaderComponent_Template_app_header_buttons_previousSentence_16_listener","HeaderComponent_Template_app_header_buttons_newStory_16_listener","HeaderComponent_Template_app_header_buttons_showKeyboardShortCuts_16_listener","HeaderComponent_Template_app_header_buttons_openLabelDictionary_16_listener","HeaderComponent_Template_app_header_buttons_openDownloadDialog_16_listener","HeaderComponent_Template_app_header_buttons_openImportFromUrlDialog_16_listener","HeaderComponent_Conditional_19_Template","SettingsComponent","showAutosaveSettings","showIconSetCustomization","savedConfiguration","openGeneralSettings","openIconSetCustomization","SettingsComponent_Template","SettingsComponent_Template_button_click_3_listener","SettingsComponent_Template_button_click_7_listener","SettingsComponent_Template_button_click_11_listener","SettingsComponent_Conditional_15_Template","SettingsComponent_Conditional_17_Template","showSettings","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","console"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file