From cd21ec7a418ab694400465dd327ee449bbef4181 Mon Sep 17 00:00:00 2001 From: "Egon.io Bot" Date: Thu, 15 Aug 2024 15:05:23 +0000 Subject: [PATCH] Deploy latest build --- app-latest-build/main.js | 53 +++++++++++++++++++++++++-------- app-latest-build/main.js.map | 2 +- app-latest-build/styles.css | 1 + app-latest-build/styles.css.map | 2 +- 4 files changed, 43 insertions(+), 15 deletions(-) diff --git a/app-latest-build/main.js b/app-latest-build/main.js index bf275dd..9cc544f 100644 --- a/app-latest-build/main.js +++ b/app-latest-build/main.js @@ -3911,7 +3911,7 @@ class AppComponent { }); document.addEventListener('errorColoringOnlySvg', () => { this.snackbar.open('Only SVG icons can be colored', undefined, { - duration: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_1__.SNACKBAR_DURATION * 2, + duration: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_1__.SNACKBAR_DURATION_LONG, panelClass: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_1__.SNACKBAR_INFO }); }); @@ -4214,6 +4214,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ SNACKBAR_ERROR: () => (/* binding */ SNACKBAR_ERROR), /* harmony export */ SNACKBAR_INFO: () => (/* binding */ SNACKBAR_INFO), /* harmony export */ SNACKBAR_SUCCESS: () => (/* binding */ SNACKBAR_SUCCESS), +/* harmony export */ VERSION_KEY: () => (/* binding */ VERSION_KEY), /* harmony export */ YELLOW: () => (/* binding */ YELLOW) /* harmony export */ }); /** DEFAULT VALUES **/ @@ -4223,7 +4224,9 @@ const INITIAL_ICON_SET_NAME = 'default'; /** LocalStorageTags **/ const APPENDED_ICONS_TAG = 'appendedIcons'; // String value of tag should not be renamed, because existing configurations would not load -const ICON_SET_CONFIGURATION_TAG = 'domainConfigurationTag'; +const ICON_SET_CONFIGURATION_TAG = 'iconSetConfigurationTag'; +/** Version Key **/ +const VERSION_KEY = 'versionKey'; /** AUTOSAVE DEFAULTS **/ const DEFAULT_AUTOSAVES_ENABLED = true; const DEFAULT_AUTOSAVES_MAX_DRAFTS = 5; @@ -9837,14 +9840,22 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ ModelerService: () => (/* binding */ ModelerService) /* harmony export */ }); /* harmony import */ var _home_runner_work_egon_io_egon_io_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 56207); -/* harmony import */ var min_dash__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! min-dash */ 81410); +/* harmony import */ var min_dash__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! min-dash */ 81410); /* harmony import */ var src_app_tools_modeler_bpmn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/app/tools/modeler/bpmn */ 96064); /* harmony import */ var _bpmn_modeler_numbering_numbering__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../bpmn/modeler/numbering/numbering */ 33862); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/core */ 96623); -/* harmony import */ var _initializer_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initializer.service */ 52317); -/* harmony import */ var _domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domain/services/element-registry.service */ 85511); -/* harmony import */ var _icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../icon-set-config/services/icon-dictionary.service */ 6932); -/* harmony import */ var _icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../icon-set-config/services/icon-set-configuration.service */ 46527); +/* harmony import */ var _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domain/entities/constants */ 40550); +/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../environments/environment */ 45312); +/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/core */ 96623); +/* harmony import */ var _initializer_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initializer.service */ 52317); +/* harmony import */ var _domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domain/services/element-registry.service */ 85511); +/* 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 */ 46527); +/* harmony import */ var _domain_services_storage_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../domain/services/storage.service */ 50624); +/* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/material/snack-bar */ 40382); + + + + @@ -9855,19 +9866,21 @@ __webpack_require__.r(__webpack_exports__); class ModelerService { - constructor(initializerService, elementRegistryService, iconDictionaryService, iconSetConfigurationService) { + constructor(initializerService, elementRegistryService, iconDictionaryService, iconSetConfigurationService, storageService, snackbar) { this.initializerService = initializerService; this.elementRegistryService = elementRegistryService; this.iconDictionaryService = iconDictionaryService; this.iconSetConfigurationService = iconSetConfigurationService; + this.storageService = storageService; + this.snackbar = snackbar; } postInit() { + this.checkCurrentVersion(); const storedIconSetConfiguration = this.iconSetConfigurationService.getStoredIconSetConfiguration(); if (storedIconSetConfiguration) { this.iconDictionaryService.setCustomConfiguration(storedIconSetConfiguration); this.iconSetConfigurationService.loadConfiguration(storedIconSetConfiguration); } - // this.initializerService.initializeDomainStoryModelerClasses(); this.modeler = new src_app_tools_modeler_bpmn__WEBPACK_IMPORTED_MODULE_1__["default"]({ container: '#canvas', keyboard: { @@ -9894,11 +9907,25 @@ class ModelerService { this.initializerService.initiateEventBusListeners(this.eventBus, this.commandStack); this.modeler.createDiagram(); // expose bpmnjs to window for debugging purposes - (0,min_dash__WEBPACK_IMPORTED_MODULE_7__.assign)(window, { + (0,min_dash__WEBPACK_IMPORTED_MODULE_10__.assign)(window, { bpmnjs: this.modeler }); this.startDebounce(); } + checkCurrentVersion() { + const version = this.storageService.get(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.VERSION_KEY); + if (version === null) { + this.storageService.set(_domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.VERSION_KEY, _environments_environment__WEBPACK_IMPORTED_MODULE_4__.environment.version); + } + if (version !== null && version !== _environments_environment__WEBPACK_IMPORTED_MODULE_4__.environment.version) { + this.snackbar.open('The current version has changed. We recommend to clear the local storage.', 'More information', { + duration: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.SNACKBAR_DURATION_LONGER, + panelClass: _domain_entities_constants__WEBPACK_IMPORTED_MODULE_3__.SNACKBAR_INFO + }).onAction().subscribe(() => { + window.open('https://egon.io/howto#launching-egon'); + }); + } + } restart(iconSetConfiguration, domainStory) { const currentStory = domainStory != undefined ? domainStory : this.elementRegistryService.createObjectListForDSTDownload().map(e => e.businessObject); if (!iconSetConfiguration) { @@ -9956,9 +9983,9 @@ class ModelerService { })(); } static #_ = this.ɵfac = function ModelerService_Factory(t) { - return new (t || ModelerService)(_angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵinject"](_initializer_service__WEBPACK_IMPORTED_MODULE_3__.InitializerService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵinject"](_domain_services_element_registry_service__WEBPACK_IMPORTED_MODULE_4__.ElementRegistryService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵinject"](_icon_set_config_services_icon_dictionary_service__WEBPACK_IMPORTED_MODULE_5__.IconDictionaryService), _angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵinject"](_icon_set_config_services_icon_set_configuration_service__WEBPACK_IMPORTED_MODULE_6__.IconSetConfigurationService)); + return new (t || 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)); }; - static #_2 = this.ɵprov = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_8__["ɵɵdefineInjectable"]({ + static #_2 = this.ɵprov = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_11__["ɵɵdefineInjectable"]({ token: ModelerService, factory: ModelerService.ɵfac, providedIn: 'root' diff --git a/app-latest-build/main.js.map b/app-latest-build/main.js.map index 6240af2..1370155 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/bpmn/index.js","./src/app/tools/modeler/bpmn/modeler/change-icon/replace.js","./src/app/tools/modeler/bpmn/modeler/change-icon/replaceMenuProvider.js","./src/app/tools/modeler/bpmn/modeler/change-icon/replaceOptions.js","./src/app/tools/modeler/bpmn/modeler/context-pad/domainStoryContextPadProvider.js","./src/app/tools/modeler/bpmn/modeler/domainStoryElementFactory.js","./src/app/tools/modeler/bpmn/modeler/domainStoryIdFactory.js","./src/app/tools/modeler/bpmn/modeler/domainStoryRenderer.js","./src/app/tools/modeler/bpmn/modeler/domainStoryRules.js","./src/app/tools/modeler/bpmn/modeler/domainStoryUpdater.js","./src/app/tools/modeler/bpmn/modeler/index.js","./src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingPreview.js","./src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingProvider.js","./src/app/tools/modeler/bpmn/modeler/labeling/dsLabelUtil.js","./src/app/tools/modeler/bpmn/modeler/labeling/index.js","./src/app/tools/modeler/bpmn/modeler/labeling/position.js","./src/app/tools/modeler/bpmn/modeler/modeling/dSModeling.js","./src/app/tools/modeler/bpmn/modeler/modeling/index.js","./src/app/tools/modeler/bpmn/modeler/numbering/numbering.js","./src/app/tools/modeler/bpmn/modeler/palette/domainStoryPalette.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/activityUpdateHandlers.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/elementUpdateHandler.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/massRenameHandler.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/updateLabelHandler.js","./src/app/tools/modeler/bpmn/modeler/util.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/entities/infoDialogData.ts","./src/app/domain/presentation/domain.module.ts","./src/app/domain/presentation/info-dialog/info-dialog.component.ts","./src/app/domain/presentation/info-dialog/info-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/iconFilterEnum.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/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/presentation/modeler/modeler.component.ts","./src/app/tools/modeler/presentation/modeler/modeler.component.html","./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/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/general/general-settings.component.ts","./src/app/workbench/presentation/settings/general/general-settings.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 = createDescription(description, width);\n\n // to display the title and description in the SVG-file, we need to add a container for our text-elements\n\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 Modeler from \"bpmn-js/lib/Modeler\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport { assign, isArray } from \"min-dash\";\nimport inherits from \"inherits\";\n\nimport DomainStoryModule from \"./modeler\";\nimport LabelEditingModule from \"./modeler/labeling\";\nimport ModelingModule from \"./modeler/modeling\";\nimport { ElementTypes } from \"../../../domain/entities/elementTypes\";\n\nexport default function DomainStoryModeler(options) {\n Modeler.call(this, options);\n\n this._customElements = [];\n this._groupElements = [];\n}\n\ninherits(DomainStoryModeler, Modeler);\n\nDomainStoryModeler.prototype._modules = [].concat(\n DomainStoryModeler.prototype._modules,\n [DomainStoryModule, LabelEditingModule, ModelingModule],\n [ResizeModule],\n);\n\n/**\n * add a single custom element to the underlying diagram\n *\n * @param {Object} customElement\n */\nDomainStoryModeler.prototype._addCustomShape = function (customElement) {\n let parentId = customElement.parent;\n delete customElement.children;\n delete customElement.parent;\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n let customShape = elementFactory.create(\"shape\", customAttrs);\n\n if (isGroup(customElement)) {\n this._groupElements[customElement.id] = customShape;\n }\n\n if (parentId) {\n let parentShape = this._groupElements[parentId];\n\n if (isGroup(parentShape)) {\n return canvas.addShape(customShape, parentShape, parentShape.id);\n }\n }\n return canvas.addShape(customShape);\n};\n\nDomainStoryModeler.prototype._addCustomConnection = function (customElement) {\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\"),\n elementRegistry = this.get(\"elementRegistry\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n\n let connection = elementFactory.create(\n \"connection\",\n assign(customAttrs, {\n source: elementRegistry.get(customElement.source),\n target: elementRegistry.get(customElement.target),\n }),\n elementRegistry.get(customElement.source).parent,\n );\n\n return canvas.addConnection(connection);\n};\n\n//** We import BusinessObjects, not the whole Canvas Object!!!!!!!!\nDomainStoryModeler.prototype.importCustomElements = function (elements) {\n this.get(\"eventBus\").fire(\"diagram.clear\", {});\n this._customElements = [];\n this._groupElements = [];\n\n this.addCustomElements(elements);\n};\n\n/**\n * add a number of custom elements and connections to the underlying diagram.\n *\n * @param {Array} customElements\n */\nDomainStoryModeler.prototype.addCustomElements = function (customElements) {\n if (!isArray(customElements)) {\n throw new Error(\"argument must be an array\");\n }\n\n let shapes = [],\n connections = [],\n groups = [];\n\n customElements.forEach(function (customElement) {\n if (isConnection(customElement)) {\n connections.push(customElement);\n } else if (isGroup(customElement)) {\n groups.push(customElement);\n } else {\n shapes.push(customElement);\n }\n });\n\n // add groups before shapes and shapes before connections so that connections\n // can already rely on the shapes being part of the diagram\n groups.forEach(this._addCustomShape, this);\n shapes.forEach(this._addCustomShape, this);\n connections.forEach(this._addCustomConnection, this);\n};\n\n/**\n * get custom elements with their current status.\n *\n * @return {Array} custom elements on the diagram\n */\nDomainStoryModeler.prototype.getCustomElements = function () {\n return this._customElements;\n};\n\n// override standard function to prevent default elements on canvas\nDomainStoryModeler.prototype.createDiagram = function (done) {};\n\nfunction isConnection(element) {\n return (\n element.type === ElementTypes.ACTIVITY ||\n element.type === ElementTypes.CONNECTION\n );\n}\n\nfunction isGroup(element) {\n return element && element.type === ElementTypes.GROUP;\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\n/**\n * service that allow replacing of elements.\n */\nexport default function Replace(modeling) {\n this._modeling = modeling;\n}\n\n/**\n * @param {Element} oldElement - element to be replaced\n * @param {Object} newElementData - containing information about the new Element, for example height, width, type.\n * @param modeling\n */\nfunction replaceElement(oldElement, newElementData, modeling) {\n // let modeling = this._modeling;\n\n let newElement = setCenterOfElement(newElementData, oldElement, modeling);\n let outgoingActivities = newElement.outgoing;\n let incomingActivities = newElement.incoming;\n\n outgoingActivities.forEach((element) => {\n element.businessObject.source = newElement.id;\n });\n\n incomingActivities.forEach((element) => {\n element.businessObject.target = newElement.id;\n });\n\n return newElement;\n}\n\nfunction setCenterOfElement(newElementData, oldElement, modeling) {\n newElementData.x = Math.ceil(\n oldElement.x + (newElementData.width || oldElement.width) / 2,\n );\n newElementData.y = Math.ceil(\n oldElement.y + (newElementData.height || oldElement.height) / 2,\n );\n\n assign(newElementData, { name: oldElement.businessObject.name });\n\n return modeling.replaceShape(oldElement, newElementData, {});\n}\n\nReplace.prototype.replaceElement = replaceElement;\n","\"use strict\";\n\nimport Replace from \"./replace\";\nimport * as replaceOptions from \"./replaceOptions\";\n\nimport { forEach } from \"min-dash\";\n\n/**\n * This module is an element agnostic replace menu provider for the popup menu.\n */\nexport default function ReplaceMenuProvider(modeling) {\n this._dsReplace = new Replace(modeling);\n this._modeling = modeling;\n}\n\nReplaceMenuProvider.$inject = [\"modeling\"];\n\n/**\n * Get all entries from replaceOptions for the given element and apply filters\n * on them. Get for example only elements, which are different from the current one.\n *\n * @param {djs.model.Base} element\n *\n * @return {Array} a list of menu entry items\n */\nReplaceMenuProvider.prototype.getEntries = function (element) {\n let entries;\n if (element.type.includes(\"actor\")) {\n entries = replaceOptions.actorReplaceOptions(element.type);\n } else if (element.type.includes(\"workObject\")) {\n entries = replaceOptions.workObjectReplaceOptions(element.type);\n }\n\n return this._createEntries(element, entries);\n};\n\n/**\n * Creates an array of menu entry objects for a given element and filters the replaceOptions\n * according to a filter function.\n *\n * @param {djs.model.Base} element\n * @param {Object} replaceOptions\n *\n * @return {Array} a list of menu items\n */\nReplaceMenuProvider.prototype._createEntries = function (\n element,\n replaceOptions,\n) {\n let menuEntries = [];\n\n let self = this;\n\n forEach(replaceOptions, function (definition) {\n let entry = self._createMenuEntry(definition, element);\n\n menuEntries.push(entry);\n });\n\n return menuEntries;\n};\n\n/**\n * Creates and returns a single menu entry item.\n *\n * @param {Object} definition a single replace options definition object\n * @param {djs.model.Base} element\n * @param {Function} [action] an action callback function which gets called when\n * the menu entry is being triggered.\n *\n * @return {Object} menu entry item\n */\nReplaceMenuProvider.prototype._createMenuEntry = function (\n definition,\n element,\n action,\n) {\n let replaceElement = this._dsReplace.replaceElement;\n let modeling = this._modeling;\n let replaceAction = function () {\n return replaceElement(element, definition.target, modeling);\n };\n\n action = action || replaceAction;\n\n return {\n label: definition.label,\n className: definition.className,\n id: definition.actionName,\n action: action,\n };\n};\n","import { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\nlet iconDictionaryService;\n\nexport function initializeReplaceOptions(iconDictionary) {\n iconDictionaryService = iconDictionary;\n}\n\nexport function actorReplaceOptions(name) {\n const actorTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.ACTOR,\n );\n\n let replaceOption = {};\n let i = 0;\n\n actorTypes.keysArray().forEach((actorType) => {\n if (!name.includes(actorType)) {\n const typeName = actorType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName.toLowerCase(),\n className: iconDictionaryService.getIconForBPMN(\n ElementTypes.ACTOR,\n actorType,\n ),\n target: {\n type: `${ElementTypes.ACTOR}${actorType}`,\n },\n };\n i++;\n }\n });\n return replaceOption;\n}\n\nexport function workObjectReplaceOptions(name) {\n const workObjectTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.WORKOBJECT,\n );\n\n let replaceOption = {};\n let i = 0;\n\n workObjectTypes.keysArray().forEach((workObjectType) => {\n if (!name.includes(workObjectType)) {\n const typeName = workObjectType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName,\n className: iconDictionaryService.getIconForBPMN(\n ElementTypes.WORKOBJECT,\n workObjectType,\n ),\n target: {\n type: `${ElementTypes.WORKOBJECT}${workObjectType}`,\n },\n };\n }\n i++;\n });\n return replaceOption;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport ContextPadProvider from \"bpmn-js/lib/features/context-pad/ContextPadProvider\";\n\nimport { assign, bind } from \"min-dash\";\nimport { generateAutomaticNumber } from \"../numbering/numbering\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { getAllStandardIconKeys } from \"src/app/tools/icon-set-config/domain/allIcons\";\nimport {\n hexToRGBA,\n isHexWithAlpha,\n rgbaToHex,\n} from \"../../../../../utils/colorConverter\";\n\nlet dirtyFlagService;\nlet iconDictionaryService;\n\nexport function initializeContextPadProvider(dirtyFlag, iconDictionary) {\n dirtyFlagService = dirtyFlag;\n iconDictionaryService = iconDictionary;\n}\n\nexport default function DomainStoryContextPadProvider(\n injector,\n connect,\n translate,\n elementFactory,\n create,\n canvas,\n contextPad,\n popupMenu,\n replaceMenuProvider,\n commandStack,\n eventBus,\n modeling,\n) {\n let startConnect;\n let selectedElement;\n\n injector.invoke(ContextPadProvider, this);\n let autoPlace = injector.get(\"autoPlace\", false);\n\n let cached = bind(this.getContextPadEntries, this);\n\n document.addEventListener(\"pickedColor\", (event) => {\n if (selectedElement) {\n executeCommandStack(event);\n }\n });\n\n popupMenu.registerProvider(\"ds-replace\", replaceMenuProvider);\n popupMenu.registerProvider(\"bpmn-replace\", replaceMenuProvider);\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 const allStandardIconKeys = getAllStandardIconKeys();\n let actions = cached(element);\n\n startConnect = function (event, element, autoActivate) {\n connect.start(event, element, autoActivate);\n };\n\n if (element.type.includes(ElementTypes.WORKOBJECT)) {\n 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 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 delete actions.delete;\n addTextAnnotation(actions);\n assign(actions, {\n deleteGroup: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove Group without Child-Elements\",\n action: {\n click: function (event, element) {\n modeling.removeGroup(element);\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n addColorChange(actions);\n } else if (element.type.includes(ElementTypes.ACTIVITY)) {\n moveDeleteActionToEndOfArray(actions);\n\n addColorChange(actions);\n\n assign(actions, {\n delete: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove\",\n action: {\n click: function (event, element) {\n modeling.removeElements({ element });\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n } else if (element.type.includes(ElementTypes.TEXTANNOTATION)) {\n addColorChange(actions);\n }\n\n return actions;\n };\n\n function moveDeleteActionToEndOfArray(actions) {\n delete actions.delete;\n\n assign(actions, {\n changeDirection: {\n group: \"edit\",\n className: \"icon-domain-story-changeDirection\",\n title: translate(\"Change direction\"),\n action: {\n // event needs to be addressed\n click: function (event, element) {\n changeDirection(element);\n },\n },\n },\n });\n }\n\n function addChangeActorTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function addColorChange(actions) {\n assign(actions, {\n colorChange: {\n group: \"edit\",\n className: \"icon-domain-story-color-picker\",\n title: translate(\"Change color\"),\n action: {\n click: function (event, element) {\n 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 workObjectTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.WORKOBJECT,\n );\n workObjectTypes.keysArray().forEach((workObjectType) => {\n let name = workObjectType;\n let icon = iconDictionaryService.getIconForBPMN(\n ElementTypes.WORKOBJECT,\n workObjectType,\n );\n let action = [];\n action[\"append.workObject\" + name] = appendAction(\n `${ElementTypes.WORKOBJECT}${workObjectType}`,\n icon,\n name,\n \"workObjects\",\n );\n assign(actions, action);\n });\n }\n\n function addActors(appendAction, actions) {\n let actorTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.ACTOR,\n );\n actorTypes.keysArray().forEach((actorType) => {\n let name = actorType;\n let icon = iconDictionaryService.getIconForBPMN(\n ElementTypes.ACTOR,\n actorType,\n );\n let action = [];\n action[\"append.actor\" + name] = appendAction(\n `${ElementTypes.ACTOR}${actorType}`,\n icon,\n name,\n \"actors\",\n );\n assign(actions, action);\n });\n }\n\n function addChangeWorkObjectTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function changeDirection(element) {\n let context;\n let businessObject = element.businessObject;\n let newNumber;\n\n if (element.source.type.includes(ElementTypes.ACTOR)) {\n newNumber = 0;\n } else {\n newNumber = generateAutomaticNumber(element, commandStack);\n }\n context = {\n businessObject: businessObject,\n newNumber: newNumber,\n element: element,\n };\n commandStack.execute(\"activity.directionChange\", context);\n }\n\n function getReplaceMenuPosition(element) {\n let Y_OFFSET = 5;\n\n let diagramContainer = canvas.getContainer(),\n pad = contextPad.getPad(element).html;\n\n let diagramRect = diagramContainer.getBoundingClientRect(),\n padRect = pad.getBoundingClientRect();\n\n let top = padRect.top - diagramRect.top;\n let left = padRect.left - diagramRect.left;\n\n return {\n x: left,\n y: top + padRect.height + Y_OFFSET,\n };\n }\n\n /**\n * create an append action\n *\n * @param {String} type\n * @param {String} className\n * @param {String} [title]\n * @param {String} group\n * @param {Object} [options]\n *\n * @return {Object} descriptor\n */\n function appendAction(type, className, title, group, options) {\n if (typeof title !== \"string\") {\n options = title;\n title = translate(\"{type}\", { type: type.replace(/^domainStory:/, \"\") });\n }\n\n function appendStart(event, element) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n let context = {\n elements: [shape],\n hints: {},\n source: element,\n };\n create.start(event, shape, context);\n }\n\n return {\n group: group,\n className: className,\n title: \"Append \" + title,\n action: {\n dragstart: startConnect,\n click: appendStart,\n },\n };\n }\n\n 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\ninherits(DomainStoryContextPadProvider, ContextPadProvider);\n\nDomainStoryContextPadProvider.$inject = [\n \"injector\",\n \"connect\",\n \"translate\",\n \"elementFactory\",\n \"create\",\n \"canvas\",\n \"contextPad\",\n \"popupMenu\",\n \"replaceMenuProvider\",\n \"commandStack\",\n \"eventBus\",\n \"modeling\",\n];\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport BpmnElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\n\nimport { DEFAULT_LABEL_SIZE } from \"bpmn-js/lib/util/LabelUtil\";\n\nimport DomainStoryIdFactory from \"./domainStoryIdFactory\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\n/**\n * A custom factory that knows how to create BPMN _and_ custom elements.\n */\nexport default function DomainStoryElementFactory(bpmnFactory, moddle) {\n BpmnElementFactory.call(this, bpmnFactory, moddle);\n\n let self = this;\n let domainStoryIdFactory = new DomainStoryIdFactory();\n\n /**\n * create a diagram-js element with the given type (any of shape, connection, label).\n *\n * @param {String} elementType\n * @param {Object} attrs\n *\n * @return {djs.model.Base}\n */\n this.create = function (elementType, attrs) {\n let type = attrs.type;\n\n if (elementType === \"label\") {\n return self.baseCreate(\n elementType,\n assign({ type: \"label\" }, DEFAULT_LABEL_SIZE, attrs),\n );\n }\n\n // add type to businessObject if custom\n if (/^domainStory:/.test(type)) {\n if (!attrs.businessObject) {\n attrs.businessObject = {\n type: type,\n name: attrs.name ? attrs.name : \"\",\n };\n }\n\n if (attrs.id) {\n domainStoryIdFactory.registerId(attrs.id);\n } else {\n attrs.id = domainStoryIdFactory.getId(elementType);\n }\n assign(attrs.businessObject, {\n id: attrs.id,\n });\n\n let id = attrs.id;\n attrs.businessObject.get = function (key) {\n if (key === \"id\") {\n return id;\n }\n };\n attrs.businessObject.set = function (key, value) {\n if (key === \"id\") {\n assign(attrs.businessObject, { id: value });\n }\n };\n\n if (!attrs.businessObject.$type) {\n assign(attrs.businessObject, { $type: \"Element\" });\n }\n assign(attrs.businessObject, { di: {} });\n if (!attrs.businessObject.$descriptor) {\n assign(attrs.businessObject, { $descriptor: {} });\n }\n\n // add width and height if shape\n if (\n (!/:activity$/.test(type) || !/:connection$/.test(type)) &&\n !((/:group$/.test(type) && attrs.height) || attrs.width)\n ) {\n assign(attrs, self._getCustomElementSize(type));\n }\n\n if (!(\"$instanceOf\" in attrs.businessObject)) {\n // ensure we can use ModelUtil#is for type checks\n Object.defineProperty(attrs.businessObject, \"$instanceOf\", {\n value: function (type) {\n return this.type === type;\n },\n });\n }\n\n return self.baseCreate(elementType, attrs);\n }\n\n return self.createBpmnElement(elementType, attrs);\n };\n}\n\ninherits(DomainStoryElementFactory, BpmnElementFactory);\n\nDomainStoryElementFactory.$inject = [\"bpmnFactory\", \"moddle\"];\n\n/**\n * returns the default size of custom shapes.\n *\n * the following example shows an interface on how\n * to setup the custom shape's dimensions.\n * *\n * @param {String} type\n *\n * @return {Dimensions} a {width, height} object representing the size of the element\n */\nDomainStoryElementFactory.prototype._getCustomElementSize = function (type) {\n let shapes = {\n __default: { width: 75, height: 75 },\n [ElementTypes.TEXTANNOTATION]: { width: 100, height: 30 },\n [ElementTypes.GROUP]: { width: 525, height: 275 },\n };\n\n return shapes[type] || shapes.__default;\n};\n\nclass Dimensions {\n width;\n height;\n}\n","\"use strict\";\n\nlet idList = [];\n\nexport default function DomainStoryIdFactory() {}\n\nDomainStoryIdFactory.prototype.getId = function (type) {\n return generateId(type);\n};\n\nDomainStoryIdFactory.prototype.registerId = function (id) {\n idList.push(id);\n};\n\nfunction generateId(type) {\n let idNumber = fourDigitsId();\n\n let id = type + \"_\" + idSuffix(idNumber);\n\n while (containsId(id)) {\n idNumber++;\n\n id = type + \"_\" + idSuffix(idNumber);\n }\n\n idList.push(id);\n return id;\n}\n\nfunction idSuffix(idNumber) {\n let id;\n if (idNumber > 9999) {\n id = 0;\n } else if (idNumber < 10) {\n id = \"000\" + idNumber;\n } else if (idNumber < 100) {\n id = \"00\" + idNumber;\n } else if (idNumber < 1000) {\n id = \"0\" + idNumber;\n } else {\n id = \"\" + idNumber;\n }\n return id;\n}\n\nfunction fourDigitsId() {\n return Math.floor(Math.random() * 10000);\n}\n\nexport function containsId(id) {\n let same = false;\n idList.forEach((element) => {\n if (id === element) {\n same = true;\n }\n });\n return same;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\nimport Ids from \"ids\";\nimport { getAnnotationBoxHeight } from \"src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingPreview\";\nimport { componentsToPath, createLine } from \"diagram-js/lib/util/RenderUtil\";\nimport {\n append as svgAppend,\n attr as svgAttr,\n classes as svgClasses,\n create as svgCreate,\n} from \"tiny-svg\";\nimport { query as domQuery } from \"min-dom\";\nimport { assign, isObject } from \"min-dash\";\nimport { getNumberStash } from \"src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingProvider\";\nimport {\n addNumberToRegistry,\n generateAutomaticNumber,\n numberBoxDefinitions,\n} from \"src/app/tools/modeler/bpmn/modeler/numbering/numbering\";\n\nimport { calculateTextWidth } from \"src/app/tools/modeler/bpmn/modeler/labeling/dsLabelUtil\";\nimport {\n countLines,\n labelPosition,\n} from \"src/app/tools/modeler/bpmn/modeler/labeling/position\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { angleBetween } from \"../../../../utils/mathExtensions\";\nimport { isCustomIcon, isCustomSvgIcon } from \"./util\";\n\nlet RENDERER_IDS = new Ids();\nlet numbers = [];\nconst DEFAULT_COLOR = \"#000000\";\n\n/**\n * a renderer that knows how to render custom elements.\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 pathMap,\n commandStack,\n) {\n BaseRenderer.call(this, eventBus, 2000);\n\n let rendererId = RENDERER_IDS.next();\n let markers = {};\n let computeStyle = styles.computeStyle;\n\n // generate the automatic Number for an activity originating from an actor\n function generateActivityNumber(parentGfx, element, box) {\n // whenever we want to edit an activity, it gets redrawn as a new object\n // and the custom information is lost,\n // so we stash it before the editing occurs and set the value here\n\n let numberStash = getNumberStash();\n let semantic = element.businessObject;\n\n if (numberStash.use) {\n semantic.number = numberStash.number;\n }\n\n numbers[semantic.number] = true;\n 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 backgroundBoxStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n fontSize: 50,\n position: \"absolute\",\n fontFamily: \"Courier New\",\n }),\n };\n }\n\n function backgroundDotStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"white\",\n fontSize: 150,\n position: \"absolute\",\n fontFamily: \"Courier\",\n }),\n };\n }\n\n // render functions\n // render label associated with actors and workobjects\n function renderEmbeddedLabel(parentGfx, element, align, padding) {\n let businessObject = element.businessObject;\n return renderLabel(\n parentGfx,\n businessObject.name,\n {\n box: element,\n align: align,\n padding: padding ? padding : 0,\n style: {\n fill: \"#000000\",\n },\n },\n element.type,\n );\n }\n\n // render label associated with activities\n function renderExternalLabel(parentGfx, element) {\n let semantic = element.businessObject;\n let waypoints = element.waypoints;\n let lines = countLines(semantic.name);\n\n if (element.waypoints != null) {\n let position = labelPosition(waypoints, lines);\n let startPoint = element.waypoints[position.selected];\n let endPoint = element.waypoints[position.selected + 1];\n let angle = angleBetween(startPoint, endPoint);\n let alignment = \"left\";\n let boxWidth = 500;\n let xStart = position.x;\n\n // if the activity is horizontal, we want to center the label\n if (angle === 0 || angle === 180) {\n boxWidth = Math.abs(startPoint.x - endPoint.x);\n alignment = \"center\";\n xStart =\n (startPoint.x + endPoint.x) / 2 - calculateTextWidth(semantic.name);\n }\n\n let box = {\n textAlign: alignment,\n width: boxWidth,\n height: 30,\n x: xStart,\n y: position.y,\n };\n\n if (semantic.name && semantic.name.length) {\n return renderLabel(\n parentGfx,\n semantic.name,\n {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n hyphens: \"auto\",\n }),\n },\n element.type,\n );\n }\n }\n }\n\n // render the number associated with an activity\n function renderExternalNumber(parentGfx, element) {\n if (element && element.source) {\n let semantic = element.businessObject;\n\n let box = numberBoxDefinitions(element);\n\n if (\n semantic.number == null &&\n element.source.type &&\n element.source.type.includes(ElementTypes.ACTOR)\n ) {\n generateAutomaticNumber(element, commandStack);\n }\n\n // render the background for the number\n if (semantic.number && element.source.type.includes(ElementTypes.ACTOR)) {\n generateActivityNumber(parentGfx, element, box);\n } else {\n semantic.number = null;\n }\n }\n }\n\n // render a number on the canvas\n function renderNumber(parentGfx, number, options, type) {\n if (number < 10) {\n number = String(number);\n }\n number = String(number);\n let text = textRenderer.createText(number || \"\", options);\n let height = 0;\n\n svgClasses(text).add(\"djs-labelNumber\");\n\n setCoordinates(type, text, options, height, parentGfx);\n\n // !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 renderEmbeddedLabel(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 renderEmbeddedLabel(parent, element, \"center\", -5);\n return actor;\n };\n\n this.drawWorkObject = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width * 0.65,\n height: element.height * 0.65,\n x: element.width / 2 - 25,\n y: element.height / 2 - 25,\n },\n workObject;\n let iconSRC = _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 renderEmbeddedLabel(parent, element, \"center\", -5);\n\n return workObject;\n };\n\n function useColorForActivity(element) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = \"black\";\n }\n let attrs = \"\";\n return computeStyle(attrs, {\n stroke: element.businessObject.pickedColor,\n fill: \"none\",\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n markerEnd: marker(\n \"activity\",\n \"black\",\n element.businessObject.pickedColor,\n ),\n });\n }\n\n this.drawActivity = function (p, element) {\n adjustForTextOverlap(element);\n\n if (element) {\n let attrs = useColorForActivity(element);\n\n let x = svgAppend(p, createLine(element.waypoints, attrs));\n renderExternalLabel(p, element);\n renderExternalNumber(p, element);\n\n // just adjusting the start- and endpoint of the connection-element moves only the drawn connection,\n // not the interactive line. This can be fixed by manually overriding the points of the interactive polyline\n // in the HTMl with the points of the drawn one.\n // this however does not adjust the surrounding box of the connection.\n fixConnectionInHTML(p.parentElement);\n\n return x;\n }\n };\n\n function checkIfPointOverlapsText(point, source) {\n if (point.y > source.y + 60) {\n if (point.x > source.x + 3 && point.x < source.x + 72) {\n let lineOffset = getLineOffset(source);\n if (source.y + 75 + lineOffset > point.y) {\n point.y += lineOffset;\n }\n }\n }\n }\n\n function adjustForTextOverlap(element) {\n let source = element.source;\n let target = element.target;\n\n let waypoints = element.waypoints;\n let startPoint = waypoints[0];\n let endPoint = waypoints[waypoints.length - 1];\n\n if (startPoint && endPoint && source && target) {\n checkIfPointOverlapsText(startPoint, source);\n checkIfPointOverlapsText(endPoint, source);\n }\n }\n\n function getLineOffset(element) {\n let id = element.id;\n let offset = 0;\n\n let objects = document.getElementsByClassName(\"djs-element djs-shape\");\n for (let i = 0; i < objects.length; i++) {\n let data_id = objects.item(i).getAttribute(\"data-element-id\");\n if (data_id === id) {\n let object = objects.item(i);\n let text = object.getElementsByTagName(\"text\")[0];\n let tspans = text.getElementsByTagName(\"tspan\");\n let tspan = tspans[tspans.length - 1];\n offset = tspan.getAttribute(\"y\");\n }\n }\n return offset - 70;\n }\n\n function fixConnectionInHTML(wantedConnection) {\n if (wantedConnection) {\n let polylines = wantedConnection.getElementsByTagName(\"polyline\");\n if (polylines.length > 1) {\n polylines[1].setAttribute(\n \"points\",\n polylines[0].getAttribute(\"points\"),\n );\n }\n }\n }\n\n this.drawDSConnection = function (p, element) {\n let attrs = \"\";\n attrs = computeStyle(attrs, {\n stroke: 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 = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n drawPath(parentGfx, textPathData, {\n stroke: 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\n function marker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (!markers[id]) {\n createMarker(type, fill, stroke);\n }\n return \"url(#\" + id + \")\";\n }\n\n function createMarker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (type === \"activity\") {\n let sequenceflowEnd = svgCreate(\"path\");\n svgAttr(sequenceflowEnd, { d: \"M 1 5 L 11 10 L 1 15 Z\" });\n\n addMarker(id, {\n element: sequenceflowEnd,\n ref: { x: 11, y: 10 },\n scale: 0.5,\n attrs: {\n fill: stroke,\n stroke: stroke,\n },\n });\n }\n }\n\n function addMarker(id, options) {\n let attrs = assign(\n {\n fill: \"black\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeDasharray: \"none\",\n },\n options.attrs,\n );\n\n let ref = options.ref || { x: 0, y: 0 };\n let scale = options.scale || 1;\n\n // resetting stroke dash array\n if (attrs.strokeDasharray === \"none\") {\n attrs.strokeDasharray = [10000, 1];\n }\n\n let marker = svgCreate(\"marker\");\n\n svgAttr(options.element, attrs);\n svgAppend(marker, options.element);\n svgAttr(marker, {\n id: id,\n viewBox: \"0 0 20 20\",\n refX: ref.x,\n refY: ref.y,\n markerWidth: 20 * scale,\n markerHeight: 20 * scale,\n orient: \"auto\",\n });\n\n let defs = domQuery(\"defs\", canvas._svg);\n if (!defs) {\n defs = svgCreate(\"defs\");\n svgAppend(canvas._svg, defs);\n }\n svgAppend(defs, marker);\n markers[id] = marker;\n }\n\n // path functions\n this.getWorkObjectPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getGroupPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getActivityPath = function (connection) {\n let waypoints = connection.waypoints.map(function (p) {\n return p.original || p;\n });\n\n let activityPath = [[\"M\", waypoints[0].x, waypoints[0].y]];\n\n waypoints.forEach(function (waypoint, index) {\n if (index !== 0) {\n activityPath.push([\"L\", waypoint.x, waypoint.y]);\n }\n });\n return componentsToPath(activityPath);\n };\n\n this.getActorPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n}\n\ninherits(DomainStoryRenderer, BaseRenderer);\n\nDomainStoryRenderer.$inject = [\n \"eventBus\",\n \"styles\",\n \"canvas\",\n \"textRenderer\",\n \"pathMap\",\n \"commandStack\",\n];\n\nDomainStoryRenderer.prototype.canRender = function (element) {\n return /^domainStory:/.test(element.type);\n};\n\nDomainStoryRenderer.prototype.drawShape = function (p, element) {\n // polyfill for tests\n if (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n }\n\n let type = element.type;\n element.businessObject.type = type;\n\n _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\";\n\nconst HIGH_PRIORITY = 1500;\nconst MIN_SIZE = 125;\n\nfunction isDomainStory(element) {\n return element && /^domainStory:/.test(element.type);\n}\n\nfunction isDomainStoryGroup(element) {\n return element && /^domainStory:group/.test(element.type);\n}\n\nfunction isActor(element) {\n return element && /^domainStory:actor\\w*/.test(element.type);\n}\n\nfunction isWorkObject(element) {\n return element && /^domainStory:workObject/.test(element.type);\n}\n\nfunction isActivity(element) {\n return element && /^domainStory:activity/.test(element.type);\n}\n\nfunction isConnection(element) {\n return element && /^domainStory:connection/.test(element.type);\n}\n\nfunction isAnnotation(element) {\n return element && /^domainStory:textAnnotation/.test(element.type);\n}\n\n/**\n * can source and target be connected?\n */\nfunction canConnect(source, target) {\n // only judge about two custom elements\n if (\n isDomainStoryGroup(target) ||\n !isDomainStory(source) ||\n !isDomainStory(target)\n ) {\n return;\n }\n\n // do not allow a connection from one element to itself\n if (source === target) {\n return;\n }\n\n // do not allow a connection between two actors\n if (isActor(source) && isActor(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an activity\n if (isActivity(source) || isActivity(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an annotation connection\n if (isConnection(source) || isConnection(target)) {\n return;\n }\n\n // do not allow a connection to a connection(the special type of connection between an element and a comment box)\n // when the target is an annotation, the connection type is an annotation connection instead of an activity\n if (isAnnotation(target)) {\n return { type: ElementTypes.CONNECTION };\n }\n\n return { type: ElementTypes.ACTIVITY };\n}\n\nfunction canResize(shape, newBounds) {\n if (is(shape, ElementTypes.GROUP)) {\n if (newBounds) {\n let lowerLeft = { x: shape.x, y: shape.y + shape.height };\n let lowerRight = { x: shape.x + shape.width, y: shape.y + shape.height };\n let upperRight = { x: shape.x + shape.width, y: shape.y };\n\n if (newBounds.x !== shape.x && newBounds.y !== shape.y) {\n // upper left\n if (newBounds.x > lowerRight.x - MIN_SIZE) {\n assign(newBounds, { x: lowerRight.x - MIN_SIZE });\n }\n if (newBounds.y > lowerRight.y - MIN_SIZE) {\n assign(newBounds, { y: lowerRight.y - MIN_SIZE });\n }\n }\n\n if (newBounds.x !== shape.x && newBounds.y === shape.y) {\n // lower left\n if (newBounds.x > upperRight.x - MIN_SIZE) {\n assign(newBounds, { x: upperRight.x - MIN_SIZE });\n }\n }\n\n if (newBounds.x === shape.x && newBounds.y !== shape.y) {\n // upper right\n if (newBounds.y > lowerLeft.y - MIN_SIZE) {\n assign(newBounds, { y: lowerLeft.y - MIN_SIZE });\n }\n }\n\n if (newBounds.height < MIN_SIZE) {\n assign(newBounds, {\n height: MIN_SIZE,\n });\n }\n if (newBounds.width < MIN_SIZE) {\n assign(newBounds, {\n width: MIN_SIZE,\n });\n }\n }\n return true;\n }\n\n return false;\n}\n\nfunction canAttach(elements, target, source) {\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n // disallow appending as boundary event\n if (source) {\n return false;\n }\n\n // only (re-)attach one element at a time\n if (elements.length !== 1) {\n return false;\n }\n\n // allow default move operation\n if (!target) {\n return true;\n }\n\n // only allow drop on DomainStory Elements\n if (!isDomainStory(target)) {\n return false;\n }\n\n return \"attach\";\n}\n\nfunction canConnectToAnnotation(source, target, connection) {\n // do not allow an activity connect to an annotation\n if (isActivity(connection) && isAnnotation(target)) {\n return false;\n }\n\n // do not allow an annotation connection between two annotations\n if (\n isConnection(connection) &&\n isAnnotation(source) &&\n isAnnotation(target)\n ) {\n return false;\n }\n\n // do not allow an annotation connection between an actor or workObject and anything except an annotation\n return !(\n isConnection(connection) &&\n !isAnnotation(target) &&\n (isActor(source) || isWorkObject(source))\n );\n}\n\n/**\n * specific rules for custom elements\n */\nexport default function DomainStoryRules(eventBus) {\n RuleProvider.call(this, eventBus);\n}\n\ninherits(DomainStoryRules, RuleProvider);\n\nDomainStoryRules.$inject = [\"eventBus\"];\n\nDomainStoryRules.prototype.init = function () {\n /**\n * can shape be created on target container?\n */\n function canCreate(shape, target) {\n // only judge about custom elements\n if (!isDomainStory(shape)) {\n return;\n }\n\n // allow creation just on groups\n return !isDomainStory(target) || isDomainStoryGroup(target);\n }\n\n this.addRule(\"elements.create\", function (context) {\n const elements = context.elements,\n position = context.position,\n target = context.target;\n\n return every(elements, function (element) {\n if (isConnection(element)) {\n return canConnect(element.source, element.target, element);\n }\n\n if (element.host) {\n return canAttach(element, element.host, null, position);\n }\n\n return canCreate(element, target, null, position);\n });\n });\n\n this.addRule(\"elements.move\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shapes = context.shapes;\n\n let type;\n\n // do not allow mixed movements of custom / BPMN shapes\n // if any shape cannot be moved, the group cannot be moved, too\n\n // reject, if we have at least one\n // custom element that cannot be moved\n return reduce(\n shapes,\n function (result, s) {\n if (type === undefined) {\n type = isDomainStory(s);\n }\n\n if (type !== isDomainStory(s) || result === false) {\n return false;\n }\n\n return canCreate(s, target);\n },\n undefined,\n );\n });\n\n this.addRule(\"shape.create\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shape = context.shape;\n\n return canCreate(shape, target);\n });\n\n this.addRule(\"connection.create\", HIGH_PRIORITY, function (context) {\n let source = context.source,\n target = context.target;\n\n return canConnect(source, target);\n });\n\n this.addRule(\"connection.reconnect\", HIGH_PRIORITY, function (context) {\n let connection = context.connection,\n source = context.hover || context.source,\n target = context.target;\n\n // --------------------------------------------------------------\n let result = canConnectToAnnotation(source, target, connection);\n\n if (!result) {\n return;\n }\n\n // --------------------------------------------------------------\n\n return canConnect(source, target, connection);\n });\n\n this.addRule(\"shape.resize\", function (context) {\n let shape = context.shape,\n newBounds = context.newBounds;\n\n return canResize(shape, newBounds);\n });\n};\n\nDomainStoryRules.prototype.canConnect = canConnect;\nDomainStoryRules.prototype.canAttach = canAttach;\nDomainStoryRules.prototype.isDomainStory = isDomainStory;\nDomainStoryRules.prototype.canResize = canResize;\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport { pick, assign } from \"min-dash\";\n\nimport CommandInterceptor from \"diagram-js/lib/command/CommandInterceptor\";\n\nimport {\n add as collectionAdd,\n remove as collectionRemove,\n} from \"diagram-js/lib/util/Collections\";\n\nimport { reworkGroupElements } from \"./util\";\nimport { ElementTypes } from \"../../../../domain/entities/elementTypes\";\n\n/**\n * a handler responsible for updating the custom element's businessObject\n * once changes on the diagram happen.\n */\nexport default function DomainStoryUpdater(eventBus, bpmnjs) {\n CommandInterceptor.call(this, eventBus);\n\n function updateCustomElement(e) {\n let context = e.context,\n shape = context.shape,\n businessObject = shape.businessObject;\n\n if (!shape || !shape.type.includes(ElementTypes.DOMAINSTORY)) {\n return;\n }\n\n let parent = shape.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // save custom element position\n assign(businessObject, pick(shape, [\"x\", \"y\"]));\n\n // save custom element size if resizable\n if (shape.type === ElementTypes.GROUP) {\n assign(businessObject, pick(shape, [\"height\", \"width\"]));\n\n // rework the child-parent relations if a group was moved, such that all Objects that are visually in the group are also associated with it\n // since we do not have access to the standard-canvas object here, we cannot use the function correctGroupChildren() from DSLabelUtil\n if (parent != null) {\n reworkGroupElements(parent, shape);\n }\n }\n if (\n shape &&\n shape.parent &&\n \"type\" in shape.parent &&\n shape.parent.type === ElementTypes.GROUP\n ) {\n assign(businessObject, {\n parent: shape.parent.id,\n });\n }\n }\n\n function updateCustomConnection(e) {\n let context = e.context,\n connection = context.connection,\n source = connection.source,\n target = connection.target,\n businessObject = connection.businessObject;\n\n if (e.newTarget) {\n target = e.newTarget;\n }\n if (e.newSource) {\n source = e.newSource;\n }\n\n let parent = connection.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // update waypoints\n assign(businessObject, {\n waypoints: copyWaypoints(connection),\n });\n\n if (source) {\n if (!businessObject.source) {\n assign(businessObject, { source: source.id });\n } else {\n businessObject.source = source.id;\n }\n }\n if (target) {\n if (!businessObject.target) {\n assign(businessObject, { target: target.id });\n } else {\n businessObject.target = target.id;\n }\n }\n }\n\n function copyWaypoints(connection) {\n return connection.waypoints.map(function (p) {\n if (p.original) {\n return {\n original: {\n x: p.original.x,\n y: p.original.y,\n },\n x: p.x,\n y: p.y,\n };\n } else {\n return {\n x: p.x,\n y: p.y,\n };\n }\n });\n }\n\n this.executed(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement),\n );\n\n this.reverted(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement),\n );\n\n this.executed(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection),\n );\n\n this.reverted(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection),\n );\n}\n\n// check if element in the context of an event is a domainStory element\nfunction ifDomainStoryElement(fn) {\n return (event) => {\n const context = event.context;\n const element = context.shape || context.connection;\n\n if (isDomainStory(element)) {\n fn(event);\n }\n };\n}\n\nfunction isDomainStory(element) {\n return element && /domainStory:/.test(element.type);\n}\n\ninherits(DomainStoryUpdater, CommandInterceptor);\n\nDomainStoryUpdater.$inject = [\"eventBus\", \"bpmnjs\"];\n","\"use strict\";\n\nimport DomainStoryElementFactory from \"./domainStoryElementFactory\";\nimport DomainStoryRenderer from \"./domainStoryRenderer\";\nimport DomainStoryPalette from \"./palette/domainStoryPalette\";\nimport DomainStoryRules from \"./domainStoryRules\";\nimport DomainStoryUpdater from \"./domainStoryUpdater\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"./updateHandler/updateLabelHandler\";\nimport headlineAndDescriptionUpdateHandler from \"./updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryContextPadProvider from \"./context-pad/domainStoryContextPadProvider\";\nimport ReplaceMenuProvider from \"./change-icon/replaceMenuProvider\";\nimport DSModeling from \"./modeling/dSModeling\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n remove as svgRemove,\n} from \"tiny-svg\";\n\nimport { translate } from \"diagram-js/lib/util/SvgTransformUtil\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util\";\n\nconst MARKER_HIDDEN = \"djs-element-hidden\",\n MARKER_LABEL_HIDDEN = \"djs-label-hidden\";\n\nexport default function DSLabelEditingPreview(eventBus, canvas, pathMap) {\n let self = this;\n\n let defaultLayer = canvas.getDefaultLayer();\n let element, absoluteElementBBox, gfx;\n\n eventBus.on(\"directEditing.activate\", function (context) {\n let activeProvider = context.active;\n\n element = activeProvider.element.label || activeProvider.element;\n\n // text annotation\n if (is(element, ElementTypes.TEXTANNOTATION)) {\n absoluteElementBBox = canvas.getAbsoluteBBox(element);\n gfx = svgCreate(\"g\");\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n let path = (self.path = svgCreate(\"path\"));\n\n svgAttr(path, {\n d: textPathData,\n strokeWidth: 2,\n stroke: getStrokeColor(element),\n });\n\n svgAppend(gfx, path);\n\n svgAppend(defaultLayer, gfx);\n\n translate(gfx, element.x, element.y);\n }\n\n if (is(element, ElementTypes.TEXTANNOTATION) || element.labelTarget) {\n canvas.addMarker(element, MARKER_HIDDEN);\n } else if (\n element.type.includes(ElementTypes.ACTOR) ||\n element.type.includes(ElementTypes.WORKOBJECT) ||\n element.type.includes(ElementTypes.ACTIVITY) ||\n element.type.includes(ElementTypes.GROUP)\n ) {\n canvas.addMarker(element, MARKER_LABEL_HIDDEN);\n }\n });\n\n eventBus.on(\"directEditing.resize\", function (context) {\n // text annotation\n if (is(element, ElementTypes.TEXTANNOTATION)) {\n let height = context.height,\n dy = context.dy;\n\n let newElementHeight = Math.max(\n (element.height / absoluteElementBBox.height) * (height + dy),\n 0,\n );\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: newElementHeight,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n svgAttr(self.path, {\n d: textPathData,\n });\n }\n });\n\n eventBus.on(\n [\"directEditing.complete\", \"directEditing.cancel\"],\n function (context) {\n let activeProvider = context.active;\n\n if (activeProvider) {\n canvas.removeMarker(\n activeProvider.element.label || activeProvider.element,\n MARKER_HIDDEN,\n );\n canvas.removeMarker(element, MARKER_LABEL_HIDDEN);\n }\n\n element = undefined;\n absoluteElementBBox = undefined;\n\n if (gfx) {\n svgRemove(gfx);\n\n gfx = undefined;\n }\n },\n );\n}\n\nDSLabelEditingPreview.$inject = [\"eventBus\", \"canvas\", \"pathMap\"];\n\n// helpers ///////////////////\n\nfunction getStrokeColor() {\n return \"black\";\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport { autocomplete, getLabel } from \"./dsLabelUtil\";\n\nimport { isAny } from \"bpmn-js/lib/features/modeling/util/ModelingUtil\";\n\nimport {\n getExternalLabelMid,\n hasExternalLabel,\n isLabel,\n isLabelExternal,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util\";\n\nlet dictionaryService;\n\nlet numberStash = 0;\nlet stashUse = false;\n\nexport function initializeLabelEditingProvider(labelingDictionary) {\n dictionaryService = labelingDictionary;\n}\n\nexport function getNumberStash() {\n let number = { use: stashUse, number: numberStash };\n stashUse = false;\n return number;\n}\n\nexport function toggleStashUse(use) {\n stashUse = use;\n}\n\nexport function focusElement(element) {\n // Opening a Angular Dialog seems to mess with the focus logic somehow.\n // My guess is that is makes the mousedown event passive, which prevents \"preventDefault\" from intercepting.\n // I am not sure how to fix it, but this seems to be a workaround.\n setTimeout(() => element.focus(), 0);\n}\n\nexport default function DSLabelEditingProvider(\n eventBus,\n canvas,\n directEditing,\n modeling,\n resizeHandles,\n textRenderer,\n updateLabelHandler,\n) {\n this._canvas = canvas;\n this._modeling = modeling;\n this._textRenderer = textRenderer;\n this._updateLabelHandler = updateLabelHandler;\n\n directEditing.registerProvider(this);\n\n // listen to dblclick on non-root elements\n eventBus.on(\"element.dblclick\", function (event) {\n activateDirectEdit(event.element, true);\n if (is(event.element, ElementTypes.ACTIVITY)) {\n // if we edit an activity, we do not want the standard editing box\n numberStash = event.element.businessObject.number;\n stashUse = true;\n directEditing.complete();\n }\n });\n\n // complete on followup canvas operation\n eventBus.on(\n [\n \"element.mousedown\",\n \"drag.init\",\n \"canvas.viewbox.changing\",\n \"autoPlace\",\n \"popupMenu.open\",\n ],\n function () {\n if (directEditing.isActive()) {\n directEditing.complete();\n }\n },\n );\n\n // cancel on command stack changes\n eventBus.on([\"commandStack.changed\"], function () {\n if (directEditing.isActive()) {\n directEditing.cancel();\n }\n });\n\n eventBus.on(\"directEditing.activate\", function (event) {\n resizeHandles.removeResizers();\n let element = event.active.element;\n createAutocomplete(element);\n });\n\n eventBus.on(\"create.end\", 500, function (event) {\n let element = event.shape,\n canExecute = event.context.canExecute,\n isTouch = event.isTouch;\n\n if (isTouch) {\n return;\n }\n\n if (!canExecute) {\n return;\n }\n if (!is(element, ElementTypes.ACTIVITY)) {\n activateDirectEdit(element);\n }\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\",\n );\n focusElement(editingBox.item(0));\n });\n\n eventBus.on(\"autoPlace.end\", 500, function (event) {\n activateDirectEdit(event.shape);\n });\n\n function activateDirectEdit(element, force) {\n if (\n force ||\n isAny(element, [ElementTypes.TEXTANNOTATION]) ||\n element.businessObject.type.includes(ElementTypes.DOMAINSTORY)\n ) {\n directEditing.activate(element);\n }\n }\n\n function createAutocomplete(element) {\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\",\n );\n focusElement(editingBox.item(0));\n autocomplete(\n editingBox[0],\n dictionaryService.getUniqueWorkObjectNames(),\n element,\n eventBus,\n );\n }\n}\n\nDSLabelEditingProvider.$inject = [\n \"eventBus\",\n \"canvas\",\n \"directEditing\",\n \"modeling\",\n \"resizeHandles\",\n \"textRenderer\",\n \"updateLabelHandler\",\n];\n\n/**\n * activate direct editing for activities and text annotations.\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object with properties bounds (position and size), text and options\n */\nDSLabelEditingProvider.prototype.activate = function (element) {\n // text\n if (element.id === \"__implicitrootbase\") {\n return;\n }\n let text = getLabel(element);\n\n if (text === undefined) {\n return;\n }\n\n let context = {\n text: text,\n };\n\n // bounds\n let bounds = this.getEditingBBox(element);\n\n assign(context, bounds);\n\n let options = {};\n\n // external labels\n if (isLabelExternal(element)) {\n assign(options, {\n autoResize: true,\n });\n }\n\n // text annotations\n if (element.businessObject.type.includes(ElementTypes.TEXTANNOTATION)) {\n assign(options, {\n resizable: true,\n autoResize: true,\n });\n }\n\n assign(context, {\n options: options,\n });\n\n return context;\n};\n\n/**\n * get the editing bounding box based on the element's size and position\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object containing information about position\n * and size (fixed or minimum and/or maximum)\n */\nDSLabelEditingProvider.prototype.getEditingBBox = function (element) {\n let canvas = this._canvas;\n\n let target = element.label || element;\n\n let bbox = canvas.getAbsoluteBBox(target);\n\n let mid = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2,\n };\n\n // default position\n let bounds = { x: bbox.x, y: bbox.y };\n\n /** The cavnas is an Object from BPMN, the IDE might say, that zoom is deprecated,\n * because it thinks canvas is the standard HTMLElement. -> Needs to stay toom **/\n let zoom = canvas.zoom();\n let defaultStyle = this._textRenderer.getDefaultStyle(),\n externalStyle = this._textRenderer.getExternalStyle();\n\n // take zoom into account\n let externalFontSize = externalStyle.fontSize * zoom,\n externalLineHeight = externalStyle.lineHeight,\n defaultFontSize = defaultStyle.fontSize * zoom,\n defaultLineHeight = defaultStyle.lineHeight;\n\n let style = {\n fontFamily: this._textRenderer.getDefaultStyle().fontFamily,\n fontWeight: this._textRenderer.getDefaultStyle().fontWeight,\n };\n\n // adjust for groups\n if (is(element, ElementTypes.GROUP)) {\n assign(bounds, {\n minWidth: bbox.width / 2.5 > 125 ? bbox.width / 2.5 : 125,\n maxWidth: bbox.width,\n minHeight: 30 * zoom,\n x: bbox.x,\n y: bbox.y,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n textAlign: \"left\",\n });\n }\n\n // internal labels for tasks and collapsed call activities,\n // sub processes and participants\n if (\n /^domainStory:actor\\w*/.test(element.type) ||\n /^domainStory:workObject\\w*/.test(element.type)\n ) {\n assign(bounds, {\n width: bbox.width,\n minHeight: 30,\n y: bbox.y + bbox.height - 20,\n x: bbox.x,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n });\n }\n\n let width = 90 * zoom,\n paddingTop = 7 * zoom,\n paddingBottom = 4 * zoom;\n\n // external labels for events, data elements, gateways and connections\n if (target.labelTarget) {\n assign(bounds, {\n width: width,\n height: bbox.height + paddingTop + paddingBottom,\n x: mid.x - width / 2,\n y: bbox.y - paddingTop,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // external label not yet created\n if (\n isLabelExternal(target) &&\n !hasExternalLabel(target) &&\n !isLabel(target)\n ) {\n let externalLabelMid = getExternalLabelMid(element);\n\n let absoluteBBox = canvas.getAbsoluteBBox({\n x: externalLabelMid.x,\n y: externalLabelMid.y,\n width: 0,\n height: 0,\n });\n\n let height = externalFontSize + paddingTop + paddingBottom;\n\n assign(bounds, {\n width: width,\n height: height,\n x: absoluteBBox.x - width / 2,\n y: absoluteBBox.y - height / 2,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // text annotations\n if (element.businessObject.type.includes(ElementTypes.TEXTANNOTATION)) {\n assign(bounds, {\n width: bbox.width,\n height: bbox.height,\n minWidth: 30 * zoom,\n minHeight: 10 * zoom,\n });\n\n assign(style, {\n textAlign: \"left\",\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n });\n }\n\n return { bounds: bounds, style: style };\n};\n\nDSLabelEditingProvider.prototype.update = function (\n element,\n newLabel,\n activeContextText,\n bounds,\n) {\n let newBounds, bbox;\n\n if (is(element, ElementTypes.TEXTANNOTATION)) {\n bbox = this._canvas.getAbsoluteBBox(element);\n\n newBounds = {\n x: element.x,\n y: element.y,\n width: (element.width / bbox.width) * bounds.width,\n height: (element.height / bbox.height) * bounds.height,\n };\n }\n\n this._modeling.updateLabel(element, newLabel, newBounds);\n};\n","\"use strict\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util\";\n\nfunction getLabelAttr(semantic) {\n if (\n semantic.type.includes(ElementTypes.ACTOR) ||\n semantic.type.includes(ElementTypes.WORKOBJECT) ||\n semantic.type.includes(ElementTypes.ACTIVITY) ||\n semantic.type.includes(ElementTypes.GROUP)\n ) {\n return \"name\";\n }\n 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 \"bpmn-js/lib/features/modeling/Modeling\";\n\nimport { inherits } from \"util\";\n\nexport default function DSModeling(\n eventBus,\n elementFactory,\n commandStack,\n domainStoryRules,\n) {\n Modeling.call(this, eventBus, elementFactory, commandStack, domainStoryRules);\n}\n\nModeling.prototype.updateLabel = function (element, newLabel, newBounds) {\n if (\n element.businessObject\n ? newLabel !== element.businessObject.name\n : newLabel !== element.name\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.updateNumber = function (element, newNumber, newBounds) {\n if (\n element.businessObject\n ? newNumber !== element.businessObject.number\n : newNumber !== element.number\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.replaceShape = function (oldShape, newShape, hints) {\n let context = {\n oldShape: oldShape,\n newData: newShape,\n hints: hints || {},\n };\n\n this._commandStack.execute(\"shape.replace\", context);\n return context.newShape;\n};\n\nModeling.prototype.removeGroup = function (element) {\n this._commandStack.execute(\"shape.removeGroupWithoutChildren\", {\n element: element,\n });\n this.removeElements({ element });\n};\n\ninherits(DSModeling, Modeling);\n\nDSModeling.$inject = [\n \"eventBus\",\n \"elementFactory\",\n \"commandStack\",\n \"domainStoryRules\",\n];\n","\"use strict\";\n\nimport DomainStoryPalette from \"../palette/domainStoryPalette\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"../updateHandler/updateLabelHandler\";\nimport DomainStoryUpdater from \"../domainStoryUpdater\";\nimport DomainStoryElementFactory from \"../domainStoryElementFactory\";\nimport headlineAndDescriptionUpdateHandler from \"../updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryRenderer from \"../domainStoryRenderer\";\nimport DSModeling from \"./dSModeling\";\nimport DomainStoryRules from \"../domainStoryRules\";\nimport ReplaceMenuProvider from \"../change-icon/replaceMenuProvider\";\nimport DomainStoryContextPadProvider from \"../context-pad/domainStoryContextPadProvider\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport { 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 { overrideAppendedIcons } from \"src/app/tools/icon-set-config/domain/allIcons\";\nimport { Dictionary } from \"src/app/domain/entities/dictionary\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { APPENDED_ICONS_TAG } from \"src/app/domain/entities/constants\";\n\n/**\n * A palette that allows you to create BPMN _and_ custom elements.\n */\n\nlet iconDictionary;\nlet configuration;\n\nexport function initializePalette(iconDictionaryService, configurationService) {\n iconDictionary = iconDictionaryService;\n configuration = configurationService;\n}\n\nexport default function PaletteProvider(\n palette,\n create,\n elementFactory,\n spaceTool,\n lassoTool,\n) {\n this._create = create;\n this._elementFactory = elementFactory;\n this._spaceTool = spaceTool;\n this._lassoTool = lassoTool;\n\n palette.registerProvider(this);\n}\n\nPaletteProvider.$inject = [\n \"palette\",\n \"create\",\n \"elementFactory\",\n \"spaceTool\",\n \"lassoTool\",\n \"modeling\",\n];\n\nPaletteProvider.prototype.getPaletteEntries = function () {\n let actions = {},\n create = this._create,\n elementFactory = this._elementFactory,\n spaceTool = this._spaceTool,\n lassoTool = this._lassoTool;\n\n function createAction(type, group, className, title, options) {\n function createListener(event) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n\n assign(shape.businessObject, {\n id: shape.id,\n });\n\n if (options) {\n shape.businessObject.di.isExpanded = options.isExpanded;\n }\n\n create.start(event, shape);\n }\n\n let shortType = type.replace(/^domainStory:/, \"\");\n\n return {\n group: group,\n className: className,\n title: \"Create \" + title || \"Create \" + shortType,\n action: {\n dragstart: createListener,\n click: createListener,\n },\n };\n }\n\n return initPalette(actions, spaceTool, lassoTool, createAction);\n};\n\nfunction appendCSSStyleCheat(customIcons) {\n const sheetEl = document.createElement(\"style\");\n document.head.appendChild(sheetEl);\n\n let customIconDict = new Dictionary();\n\n customIconDict.appendDict(customIcons);\n let customIconDictKeys = customIconDict.keysArray();\n\n customIconDictKeys.forEach((name) => {\n if (iconDictionary.getAppendedIconDictionary().has(name)) {\n let src = customIconDict.get(name);\n\n const iconStyle =\n \".icon-domain-story-\" +\n name.toLowerCase() +\n \"::before{\" +\n \" display: block;\" +\n ' content: url(\"data:image/svg+xml;utf8,' +\n wrapSRCInSVG(src) +\n '\");' +\n \" margin: 3px;}\";\n sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n }\n });\n}\n\nfunction initPalette(actions, spaceTool, lassoTool, createAction) {\n let config = iconDictionary?.getCurrentIconConfigurationForBPMN();\n\n let customIcons = localStorage.getItem(APPENDED_ICONS_TAG);\n\n if (customIcons) {\n customIcons = JSON.parse(customIcons);\n if (customIconsLegacy(customIcons)) {\n customIcons = convertLegacyAppendedIconsToDict(customIcons);\n }\n if (customIcons.entries && customIcons.entries.forEach) {\n const customIconsDict = new Dictionary();\n customIcons.entries.forEach((entry) => {\n customIconsDict.putEntry(entry);\n });\n overrideAppendedIcons(customIconsDict);\n appendCSSStyleCheat(customIcons);\n }\n }\n\n iconDictionary?.initTypeDictionaries(config.actors, config.workObjects);\n\n let actorTypes = iconDictionary?.getTypeDictionary(ElementTypes.ACTOR);\n\n actorTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n ElementTypes.ACTOR,\n );\n });\n\n assign(actions, {\n \"actor-separator\": {\n group: \"actor\",\n separator: true,\n },\n });\n\n let workObjectTypes = iconDictionary?.getTypeDictionary(\n ElementTypes.WORKOBJECT,\n );\n\n workObjectTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n ElementTypes.WORKOBJECT,\n );\n });\n\n assign(actions, {\n \"workObject-separator\": {\n group: \"workObject\",\n separator: true,\n },\n \"domainStory-group\": createAction(\n ElementTypes.GROUP,\n \"group\",\n \"icon-domain-story-tool-group\",\n \"group\",\n ),\n \"group-separator\": {\n group: \"group\",\n separator: true,\n },\n \"lasso-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-lasso-tool\",\n title: \"Activate the lasso tool\",\n action: {\n click: function (event) {\n lassoTool.activateSelection(event);\n },\n },\n },\n \"space-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-space-tool\",\n title: \"Activate the create/remove space tool\",\n action: {\n click: function (event) {\n spaceTool.activateSelection(event);\n },\n },\n },\n });\n\n return actions;\n}\n\nfunction addCanvasObjectTypes(\n name,\n createAction,\n actions,\n className,\n elementType,\n) {\n let icon = iconDictionary.getIconForBPMN(elementType, name);\n\n let action = [];\n action[\"domainStory-\" + className + name] = createAction(\n `${elementType}${name}`,\n className,\n icon,\n name,\n );\n assign(actions, action);\n}\n\nfunction customIconsLegacy(customIcons) {\n return !(\n Object.keys(customIcons).length === 1 &&\n Object.keys(customIcons)[0] === \"entries\"\n );\n}\n\nfunction convertLegacyAppendedIconsToDict(customIcons) {\n let dict = new Dictionary();\n Object.keys(customIcons).forEach((key) => {\n dict.set(key, customIcons[key]);\n });\n return dict;\n}\n\n// For some reason its important to use ' in the content for the Palette and ContextPad\n// Do not change!\nfunction wrapSRCInSVG(src) {\n return (\n \"\" +\n \"\"\n );\n}\n","\"use strict\";\n\nimport { getNumbersAndIDs } from \"../numbering/numbering\";\n\n/**\n * commandStack Handler for changes at activities\n */\n\nlet canvasElementRegistry;\nexport function initializeActivityUpdateHandler(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\nexport default function activityUpdateHandler(commandStack, eventBus) {\n commandStack.registerHandler(\n \"activity.directionChange\",\n activity_directionChange,\n );\n commandStack.registerHandler(\"activity.changed\", activity_changed);\n\n // update the activity from the activity-dialog, either with or without number\n // and change other activities too, to keep the numbers consistent\n function activity_changed(modeling) {\n this.preExecute = function (context) {\n context.oldLabel = context.businessObject.name || \" \";\n\n let oldNumbersWithIDs = getNumbersAndIDs();\n modeling.updateLabel(context.businessObject, context.newLabel);\n modeling.updateNumber(context.businessObject, context.newNumber);\n\n context.oldNumber = context.businessObject.number;\n context.oldNumbersWithIDs = oldNumbersWithIDs;\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n\n if (context.newLabel && context.newLabel.length < 1) {\n context.newLabel = \" \";\n }\n\n businessObject.name = context.newLabel;\n businessObject.number = context.newNumber;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n semantic.name = context.oldLabel;\n semantic.number = context.oldNumber;\n\n revertAutomaticNumberGenerationChange(\n context.oldNumbersWithIDs,\n eventBus,\n );\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n\n // change the direction of a single activity without affecting other activities\n function activity_directionChange(modeling) {\n this.preExecute = function (context) {\n context.oldNumber = context.businessObject.number;\n context.oldWaypoints = context.element.waypoints;\n context.name = context.businessObject.name;\n\n if (!context.oldNumber) {\n context.oldNumber = 0;\n }\n modeling.updateNumber(context.businessObject, context.newNumber);\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n let newWaypoints = [];\n let waypoints = element.waypoints;\n\n for (let i = waypoints.length - 1; i >= 0; i--) {\n newWaypoints.push(waypoints[i]);\n }\n\n element.source = element.target;\n businessObject.source = businessObject.target;\n element.target = swapSource;\n businessObject.target = swapSource.id;\n\n businessObject.name = context.name;\n businessObject.number = context.newNumber;\n element.waypoints = newWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n\n element.source = element.target;\n semantic.source = semantic.target;\n element.target = swapSource;\n semantic.target = swapSource.id;\n\n semantic.name = context.name;\n\n semantic.number = context.oldNumber;\n element.waypoints = context.oldWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n}\n\n// reverts the automatic changed done by the automatic number-generation at editing\nfunction revertAutomaticNumberGenerationChange(iDWithNumber, eventBus) {\n let activities = canvasElementRegistry?.getActivitesFromActors();\n for (let i = activities.length - 1; i >= 0; i--) {\n for (let j = iDWithNumber.length - 1; j >= 0; j--) {\n if (iDWithNumber[j].id.includes(activities[i].businessObject.id)) {\n let element = activities[i];\n element.businessObject.number = iDWithNumber[j].number;\n j = -5;\n eventBus.fire(\"element.changed\", { element });\n iDWithNumber.splice(j, 1);\n }\n }\n }\n}\n","\"use strict\";\n\nimport { undoGroupRework } from \"../util\";\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","/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function headlineAndDescriptionUpdateHandler(\n commandStack,\n titleService,\n) {\n commandStack.registerHandler(\n \"story.updateHeadlineAndDescription\",\n handlerFunction,\n );\n\n function handlerFunction() {\n this.execute = function (ctx) {\n ctx.oldTitle = titleService.getTitle();\n ctx.oldDescription = titleService.getDescription();\n\n titleService.updateTitleAndDescription(\n ctx.newTitle,\n ctx.newDescription,\n false,\n );\n };\n\n this.revert = function (ctx) {\n titleService.updateTitleAndDescription(\n ctx.oldTitle,\n ctx.oldDescription,\n false,\n );\n };\n }\n}\n","\"use strict\";\n\nexport default function DSMassRenameHandler(commandStack, eventBus) {\n commandStack.registerHandler(\"domainStoryObjects.massRename\", massRename);\n\n function massRename(modeling) {\n this.preExecute = function (context) {\n let relevantElements = context.elements;\n\n context.oldLabel = relevantElements[0].businessObject.name;\n\n relevantElements.forEach((element) => {\n modeling.updateLabel(element.businessObject, confirm.newValue);\n });\n };\n\n this.execute = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.newValue;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n\n this.revert = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.oldLabel;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n }\n}\n","\"use strict\";\n\nimport {\n setLabel,\n getLabel,\n setNumber,\n getNumber,\n} from \"../labeling/dsLabelUtil\";\n\nimport {\n getExternalLabelMid,\n isLabelExternal,\n hasExternalLabel,\n isLabel,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { getBusinessObject, is } from \"../util\";\n\nconst NULL_DIMENSIONS = {\n width: 0,\n height: 0,\n};\n\n/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function UpdateLabelHandler(\n modeling,\n textRenderer,\n commandStack,\n) {\n commandStack.registerHandler(\"element.updateCustomLabel\", handlerFunction);\n\n function handlerFunction() {\n /**\n * Set the label and return the changed elements.\n *\n * Element parameter can be label itself or connection (i.e. sequence flow).\n *\n * @param {djs.model.Base} element\n * @param {String} text\n */\n\n this.preExecute = function (ctx) {\n let element = ctx.element,\n businessObject = element.businessObject,\n newLabel = ctx.newLabel,\n newNumber = ctx.newNumber;\n\n if (\n !isLabel(element) &&\n isLabelExternal(element) &&\n !hasExternalLabel(element) &&\n (newLabel !== \"\" || newNumber !== \"\")\n ) {\n // create label\n let paddingTop = 7;\n\n let labelCenter = getExternalLabelMid(element);\n\n labelCenter = {\n x: labelCenter.x,\n y: labelCenter.y + paddingTop,\n };\n\n modeling.createLabel(element, labelCenter, {\n id: businessObject.id + \"_label\",\n businessObject: businessObject,\n });\n }\n };\n\n this.execute = function (ctx) {\n ctx.oldLabel = getLabel(ctx.element);\n ctx.oldNumber = getNumber(ctx.element);\n return setText(ctx.element, ctx.newLabel, ctx.newNumber);\n };\n\n this.revert = function (ctx) {\n return setText(ctx.element, ctx.oldLabel, ctx.oldNumber);\n };\n\n this.postExecute = function (ctx) {\n let element = ctx.element,\n label = element.label || element,\n newLabel = ctx.newLabel,\n newBounds = ctx.newBounds;\n\n if (isLabel(label) && newLabel.trim() === \"\") {\n modeling.removeShape(label);\n\n return;\n }\n\n // ignore internal labels for elements except text annotations\n if (\n !isLabelExternal(element) &&\n !is(element, ElementTypes.TEXTANNOTATION)\n ) {\n return;\n }\n\n let bo = getBusinessObject(label);\n\n let text = bo.name || bo.text;\n\n // don't resize without text\n if (!text) {\n return;\n }\n\n // resize element based on label _or_ pre-defined bounds\n if (typeof newBounds === \"undefined\") {\n newBounds = textRenderer.getLayoutedBounds(label, text);\n }\n\n // setting newBounds to false or _null_ will\n // disable the postExecute resize operation\n if (newBounds) {\n modeling.resizeShape(label, newBounds, NULL_DIMENSIONS);\n }\n };\n }\n}\n\nfunction setText(element, text, textNumber) {\n // external label if present\n let label = element.label || element;\n\n let number = element.number || element;\n\n let labelTarget = element.labelTarget || element;\n\n let numberTarget = element.numberTarget || element;\n setLabel(label, text);\n setNumber(number, textNumber);\n\n return [label, labelTarget, number, numberTarget];\n}\n\nUpdateLabelHandler.$inject = [\"modeling\", \"textRenderer\", \"commandStack\"];\n","import { some } from \"min-dash\";\n\nexport function is(element, type) {\n const bo = getBusinessObject(element);\n\n return bo && 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","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\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,\n SNACKBAR_INFO,\n YELLOW,\n} from './domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\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 ) {\n this.showSettings$ = new BehaviorSubject(false);\n this.showDescription$ = new BehaviorSubject(true);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.ctrlKey && e.key === 's') {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadDST();\n }\n }\n if (e.ctrlKey && e.key === 'l') {\n e.preventDefault();\n e.stopPropagation();\n document.getElementById('import')?.click();\n }\n if (\n (e.key === 'ArrowRight' || e.key === 'ArrowUp') &&\n 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 * 2,\n panelClass: SNACKBAR_INFO,\n });\n });\n }\n\n ngOnInit(): void {\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","
\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/bpmn/modeler/context-pad/domainStoryContextPadProvider';\nimport { initializePalette } from './tools/modeler/bpmn/modeler/palette/domainStoryPalette';\nimport { initializeRenderer } from './tools/modeler/bpmn/modeler/domainStoryRenderer';\nimport { initializeLabelEditingProvider } from './tools/modeler/bpmn/modeler/labeling/dsLabelEditingProvider';\nimport { initializeReplaceOptions } from './tools/modeler/bpmn/modeler/change-icon/replaceOptions';\nimport { initializeNumbering } from './tools/modeler/bpmn/modeler/numbering/numbering';\nimport { initializeActivityUpdateHandler } from './tools/modeler/bpmn/modeler/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';\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 ],\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 /** The Palette and the Context Menu need the Icons present in the Domain,\n * so the IconDictionaryService and the IconSetConfigurationService needs to be given to the Palette **/\n initializePalette(iconDictionaryService, configurationService);\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/** LocalStorageTags **/\nexport const APPENDED_ICONS_TAG = 'appendedIcons';\n// String value of tag should not be renamed, because existing configurations would not load\nexport const ICON_SET_CONFIGURATION_TAG = 'domainConfigurationTag';\n\n/** AUTOSAVE DEFAULTS **/\nexport const DEFAULT_AUTOSAVES_ENABLED = true;\nexport const DEFAULT_AUTOSAVES_MAX_DRAFTS = 5;\nexport const DEFAULT_AUTOSAVES_INTERVAL = 30;\n\n/** SNACKBAR **/\nexport const SNACKBAR_DURATION = 2000;\nexport const SNACKBAR_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/** BPMN_RELEVANT_CONSTANTS **/\nexport const IMPLICIT_ROOT_ID = '__implicitroot';\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(new Entry(entry.value, entry.key));\n }\n }\n\n keysArray(): string[] {\n return this.entries.map((entry) => entry.key);\n }\n\n addEach(object: any): void {\n Object.keys(object).forEach((key) => {\n this.set(key, object[key]);\n });\n }\n\n appendDict(dict: Dictionary): void {\n dict.entries.forEach((entry) => this.putEntry(entry));\n }\n\n clear(): void {\n this.entries = [];\n }\n\n delete(key: string): void {\n this.entries = this.entries.filter((entry) => entry.key !== key);\n }\n\n get(key: string): any {\n const found = this.entries.filter((entry) => entry.key === key);\n return found[0] ? found[0].value : null;\n }\n}\n\nexport class Entry {\n value: any;\n key: string;\n\n constructor(value: any, key: string) {\n this.value = value;\n this.key = key;\n }\n}\n","export enum ElementTypes {\n ACTIVITY = 'domainStory:activity',\n CONNECTION = 'domainStory:connection',\n ACTOR = 'domainStory:actor',\n WORKOBJECT = 'domainStory:workObject',\n GROUP = 'domainStory:group',\n TEXTANNOTATION = 'domainStory:textAnnotation',\n DOMAINSTORY = 'domainStory:',\n}\n\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","export class InfoDialogData {\n title: string;\n infoText: string;\n isInfo: boolean;\n isLink: boolean;\n linkText: string | undefined;\n\n constructor(\n title: string,\n infoText: string,\n isInfo: boolean,\n isLink: boolean = false,\n linkText?: string,\n ) {\n this.title = title;\n this.infoText = infoText;\n this.isInfo = isInfo;\n this.isLink = isLink;\n this.linkText = linkText;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { InfoDialogComponent } from './info-dialog/info-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../material.module';\n\n@NgModule({\n declarations: [InfoDialogComponent],\n exports: [InfoDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class DomainModule {}\n","import { AfterViewInit, Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { InfoDialogData } from 'src/app/domain/entities/infoDialogData';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './info-dialog.component.html',\n styleUrls: ['./info-dialog.component.scss'],\n})\nexport class InfoDialogComponent implements AfterViewInit {\n title: string;\n infoText: string;\n showConfirmButton: boolean;\n hasLink: boolean;\n linkText: string;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: InfoDialogData,\n ) {\n this.title = data.title;\n this.infoText = data.infoText;\n this.showConfirmButton = !data.isInfo;\n this.hasLink = data.isLink;\n this.linkText = data.linkText || '';\n }\n\n ngAfterViewInit() {\n const span = document.getElementsByClassName(\n 'readOnlyText',\n )[0] as HTMLTextAreaElement;\n span.style.height = span.scrollHeight + 'px';\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

{{ title }}

\n @if (infoText != \"\") {\n {{ infoText }} \n }\n @if (hasLink) {\n {{ linkText }}\n }\n
\n\n@if (showConfirmButton) {\n \n \n \n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CommandStackService {\n private commandStack: any;\n\n constructor() {}\n\n setCommandStack(commandStack: any): void {\n this.commandStack = commandStack;\n }\n\n execute(action: string, payload: any) {\n this.commandStack.execute(action, payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { InfoDialogData } from '../entities/infoDialogData';\nimport { InfoDialogComponent } from '../presentation/info-dialog/info-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private matDialog: MatDialog) {}\n\n openDialog(dialog: ComponentType, config: MatDialogConfig): void {\n this.matDialog.open(dialog, config);\n }\n\n openKeyboardShortcutsDialog(): void {\n const title = 'Keyboard Shortcuts';\n const shortCutText =\n 'Undo:\\t\\t\\t\\t\\tctrl + Z \\n' +\n 'Redo:\\t\\t\\t\\t\\tctrl + Y OR ctrl + shift + Z\\n' +\n 'Select All:\\t\\t\\t\\tctrl + A\\n' +\n 'Export as EGN:\\t\\t\\tctrl + S\\n' +\n 'Import Domain Story: \\tctrl + L\\n' +\n 'Search for text:\\t\\t\\tctrl + F\\n' +\n 'Direct editing:\\t\\t\\tE\\n' +\n 'Hand tool:\\t\\t\\t\\tH\\n' +\n 'Lasso tool:\\t\\t\\t\\tL\\n' +\n 'Space tool:\\t\\t\\t\\tS';\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, shortCutText, true);\n\n this.openDialog(InfoDialogComponent, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DirtyFlagService {\n private isDirtySubject = new BehaviorSubject(false);\n dirty$ = this.isDirtySubject.asObservable();\n\n makeDirty(): void {\n this.isDirtySubject.next(true);\n }\n\n makeClean(): void {\n this.isDirtySubject.next(false);\n }\n\n get dirty(): boolean {\n return this.isDirtySubject.value;\n }\n}\n","import { Injectable } from '@angular/core';\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\n const objectList: CanvasObject[] = [];\n\n this.fillListOfCanvasObjects(allObjectsFromCanvas, objectList, groups);\n\n return objectList;\n }\n return [];\n }\n\n private fillListOfCanvasObjects(\n allObjectsFromCanvas: CanvasObject[],\n objectList: CanvasObject[],\n groups: GroupCanvasObject[],\n ): void {\n allObjectsFromCanvas.forEach((canvasElement) => {\n if (canvasElement.type === ElementTypes.ACTIVITY) {\n objectList.push(canvasElement);\n }\n\n // ensure that Activities are always after Actors, Workobjects and Groups in .dst files\n else {\n if (canvasElement.type === ElementTypes.TEXTANNOTATION) {\n canvasElement.businessObject.width = canvasElement.width;\n canvasElement.businessObject.height = canvasElement.height;\n }\n if (!objectList.includes(canvasElement)) {\n objectList.unshift(canvasElement);\n }\n }\n });\n\n groups.forEach((group) => {\n objectList.push(group);\n });\n }\n\n getAllActivities(): ActivityCanvasObject[] {\n const activities: ActivityCanvasObject[] = [];\n\n this.getAllCanvasObjects().forEach((element) => {\n if (element.type.includes(ElementTypes.ACTIVITY)) {\n activities.push(element as ActivityCanvasObject);\n }\n });\n return activities;\n }\n\n getAllConnections(): ActivityCanvasObject[] {\n const connections: ActivityCanvasObject[] = [];\n this.getAllCanvasObjects().forEach((element) => {\n const type = element.type;\n if (type === ElementTypes.CONNECTION) {\n connections.push(element as ActivityCanvasObject);\n }\n });\n return connections;\n }\n\n getAllCanvasObjects(): CanvasObject[] {\n const allObjects: CanvasObject[] = [];\n const groupObjects: GroupCanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n // for each memorized group, remove it from the group-array and check its children, whether they are groups or not\n // if a child is a group, memorize it in the group-array\n // other children should already be in the allObjects list\n let i = groupObjects.length - 1;\n while (groupObjects.length >= 1) {\n const currentGroup = groupObjects.pop();\n // @ts-ignore\n currentGroup.children.forEach((child: CanvasObject) => {\n const type = child.type;\n if (type.includes(ElementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n i = groupObjects.length - 1;\n }\n return allObjects;\n }\n\n // returns all groups on the canvas and inside other groups\n getAllGroups(): GroupCanvasObject[] {\n const groupObjects: GroupCanvasObject[] = [];\n const allObjects: CanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n for (const group of groupObjects) {\n group.children?.forEach((child: CanvasObject) => {\n if (child.type.includes(ElementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n }\n return groupObjects;\n }\n\n private checkChildForGroup(\n groupObjects: GroupCanvasObject[],\n allObjects: CanvasObject[],\n ): void {\n const registryElementNames = Object.keys(this.registry);\n for (let name of registryElementNames) {\n const entry = this.registry[name].element;\n if (entry.businessObject) {\n const type = entry.type;\n if (type && type.includes(ElementTypes.GROUP)) {\n // if it is a group, memorize this for later\n groupObjects.push(entry);\n } else if (type) {\n allObjects.push(entry);\n }\n }\n }\n }\n\n // get a list of activities, that originate from an actor-type\n getActivitiesFromActors(): ActivityCanvasObject[] {\n const activitiesFromActors: ActivityCanvasObject[] = [];\n const activities = this.getAllActivities();\n\n activities.forEach((activity: ActivityCanvasObject) => {\n if (activity.source?.type.includes(ElementTypes.ACTOR)) {\n activitiesFromActors.push(activity);\n }\n });\n\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 \n \n Autosave Options\n \n \n
\n \n Enabled\n
\n
\n Interval [sec]\n \n
\n
\n Max. Drafts\n \n
\n \n Apply\n \n
\n
\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-autosave-settings',\n templateUrl: './autosave-settings.component.html',\n styleUrls: ['./autosave-settings.component.scss'],\n})\nexport class AutosaveSettingsComponent {}\n","\n\n","import { Component, OnInit } from '@angular/core';\nimport { AutosaveService } from '../../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","\n \n \n History\n \n {{ drafts.length ? drafts.length : \"no\" }}\n {{ drafts.length > 1 ? \"drafts\" : \"draft\" }} available\n \n \n @if (drafts.length) {\n
\n @for (draft of drafts; track draft) {\n
\n
\n
{{ draft.title }}
\n
{{ draft.date }}
\n
\n \n Load Draft\n \n
\n }\n
\n
\n \n Remove All Drafts\n \n
\n
\n } @else {\n No drafts found.\n }\n
\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(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 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\nexport const DRAFTS_TAG = 'autosaveDrafts';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveService {\n private autosaveTimer: any;\n autosavedDraftsChanged$ = new Subject();\n\n constructor(\n private autosaveConfiguration: AutosaveConfigurationService,\n private exportService: ExportService,\n private iconDictionaryService: IconDictionaryService,\n private rendererService: RendererService,\n private snackbar: MatSnackBar,\n private storageService: StorageService,\n private titleService: TitleService,\n 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_TAG, []);\n this.autosavedDraftsChanged$.next();\n }\n\n loadLatestDraft() {\n const drafts = this.readDrafts();\n if (drafts.length === 0) {\n return;\n }\n this.loadDraft(drafts[0]);\n }\n\n private updateConfiguration(configuration: AutosaveConfiguration) {\n this.stopTimer();\n\n if (configuration.activated) {\n this.startTimer(configuration.interval, configuration.maxDrafts);\n }\n }\n\n private stopTimer(): void {\n if (this.autosaveTimer) {\n clearInterval(this.autosaveTimer);\n this.autosaveTimer = undefined;\n }\n }\n\n private startTimer(interval: number, maxDrafts: number): void {\n this.autosaveTimer = setInterval(() => {\n const savedDrafts = this.loadCurrentDrafts();\n const newDraft = this.createDraft();\n let isChanged = maxDrafts > 0;\n if (savedDrafts.length > 0) {\n isChanged = isChanged && !this.isSame(newDraft, savedDrafts[0]);\n }\n if (isChanged && !this.isDraftEmpty(newDraft)) {\n savedDrafts.unshift(newDraft);\n while (savedDrafts.length > maxDrafts) {\n savedDrafts.pop();\n }\n this.writeDrafts(savedDrafts);\n this.snackbar.open('Draft Saved', undefined, {\n panelClass: SNACKBAR_INFO,\n duration: SNACKBAR_DURATION,\n });\n this.autosavedDraftsChanged$.next();\n }\n }, interval * 1000);\n }\n\n private isDraftEmpty(draft: Draft) {\n 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_TAG, drafts);\n }\n\n private readDrafts(): Draft[] {\n return this.storageService.get(DRAFTS_TAG) ?? [];\n }\n\n private createDraft(): Draft {\n const dst = JSON.stringify(this.rendererService.getStory(), null, 2);\n const configAndDST = this.exportService.createConfigAndDST(dst);\n\n const date = new Date().toString().slice(0, 25);\n\n return {\n title: this.titleService.getTitle(),\n description: this.titleService.getDescription(),\n configAndDST,\n date,\n };\n }\n\n private sortDrafts(drafts: Draft[]): void {\n drafts.sort((a: Draft, b: Draft) => {\n const aDate = Date.parse(a.date);\n const bDate = Date.parse(b.date);\n return aDate > bDate ? 0 : 1;\n });\n }\n}\n","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\":\"' +\n '' +\n '\",' +\n '\"Group\":\"' +\n '' +\n '\",' +\n '\"System\":\"' +\n '\"},' +\n '\"workObjects\":{\"Document\":\"' +\n '\",' +\n '\"Folder\":\"' +\n '' +\n '\",' +\n '\"Call\":\"' +\n '\",' +\n '\"Email\":\"' +\n '\",' +\n '\"Conversation\":\"' +\n '\",' +\n '\"Info\":\"' +\n '' +\n '\"}}',\n ),\n dst:\n '[' +\n '{\"type\":\"domainStory:workObjectDocument\",\"name\":\"\",\"id\":\"shape_3792\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":302,\"y\":102},' +\n '{\"type\":\"domainStory:actorPerson\",\"name\":\"\",\"id\":\"shape_4666\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":103,\"y\":93},' +\n '{\"type\":\"domainStory:activity\",\"name\":\"\",\"id\":\"connection_4884\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"number\":1,' +\n '\"waypoints\":[{\"original\":{\"x\":141,\"y\":131},\"x\":186,\"y\":133},{\"original\":{\"x\":340,\"y\":140},\"x\":302,\"y\":138}],' +\n '\"source\":\"shape_4666\",\"target\":\"shape_3792\"}]',\n};\n","export const SVG_LINK = 'http://www.w3.org/2000/svg';\nexport const X_OFFSET_UTIL = '8';\nexport const TEXTSPAN_TITLE_HEIGHT = 30;\nexport const TEXTSPAN_DESCRIPTION_HEIGHT = 15;\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;\n useWhiteBackground: BehaviorSubject;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: ExportDialogData,\n ) {\n this.withTitle = new BehaviorSubject(true);\n this.useWhiteBackground = new BehaviorSubject(true);\n this.title = data.title;\n this.options = data.options;\n }\n\n ngOnInit(): void {}\n\n doOption(i: number): void {\n this.options[i].fn(this.withTitle.value, this.useWhiteBackground.value);\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n updateWithTitle($event: Event) {\n // @ts-ignore\n this.withTitle.next($event.target.checked);\n }\n\n updateUseWhiteBackground($event: Event) {\n // @ts-ignore\n this.useWhiteBackground.next($event.target.checked);\n }\n}\n","\n

{{ title }}

\n \n
\n \n
\n\n
\n\n
\n \n @for (option of options; track option; let i = $index) {\n \n {{ option.text }}\n \n }\n
\n
\n","import { ExportDialogComponent } from './export-dialog/export-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [ExportDialogComponent],\n exports: [ExportDialogComponent],\n imports: [CommonModule, MaterialModule],\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';\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(withTitle: boolean, useWhiteBackground: boolean): void {\n const story = this.getStoryForDownload();\n const dst = this.createConfigAndDST(story);\n\n const svgData = this.svgService.createSVGData(\n this.title,\n this.description,\n dst,\n withTitle,\n useWhiteBackground,\n );\n\n this.downloadFile(\n svgData,\n 'data:application/bpmn20-xml;charset=UTF-8,',\n sanitizeForDesktop(this.title + '_' + this.getCurrentDateString()),\n '.egn.svg',\n true,\n );\n }\n\n downloadPNG(withTitle: boolean): void {\n const canvas = document.getElementById('canvas');\n if (canvas) {\n const container = canvas.getElementsByClassName('djs-container');\n const svgElements = container[0].getElementsByTagName('svg');\n const outerSVGElement = svgElements[0];\n const viewport = outerSVGElement.getElementsByClassName('viewport')[0];\n const layerBase = viewport.getElementsByClassName('layer-base')[0];\n\n const image = document.createElement('img');\n\n // removes unwanted black dots in image\n let svg = this.pngService.extractSVG(viewport, outerSVGElement);\n\n svg = this.pngService.prepareSVG(\n svg,\n layerBase,\n this.description,\n this.title,\n withTitle,\n );\n\n image.onload = () => {\n const tempCanvas = document.createElement('canvas');\n\n // add a 10px buffer to the right and lower boundary\n tempCanvas.width = this.pngService.getWidth() + 10;\n tempCanvas.height = this.pngService.getHeight() + 10;\n\n const ctx = tempCanvas.getContext('2d');\n if (ctx) {\n // fill with white background\n ctx.rect(0, 0, tempCanvas.width, tempCanvas.height);\n ctx.fillStyle = 'white';\n ctx.fill();\n\n ctx.drawImage(image, 0, 0);\n }\n\n const png64 = tempCanvas.toDataURL('image/png');\n const ele = document.createElement('a');\n ele.setAttribute(\n 'download',\n sanitizeForDesktop(this.title) +\n '_' +\n this.getCurrentDateString() +\n '.png',\n );\n ele.setAttribute('href', png64);\n document.body.appendChild(ele);\n ele.click();\n document.body.removeChild(ele);\n\n // image source has to be removed to circumvent browser caching\n image.src = '';\n };\n image.onchange = image.onload;\n\n image.width = this.pngService.getWidth();\n image.height = this.pngService.getHeight();\n\n image.src = 'data:image/svg+xml,' + svg;\n }\n }\n\n downloadHTMLPresentation(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 const story = this.rendererService.getStory() as unknown[];\n story.push({ info: this.titleService.getDescription() });\n story.push({ version: environment.version });\n return story;\n }\n\n private getCurrentDateString(): string {\n return formatDate(new Date(), 'YYYY-MM-dd', 'en-GB');\n }\n\n 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 (withTitle: boolean, useWhiteBackground: boolean) =>\n this.downloadSVG(withTitle, useWhiteBackground),\n );\n const EGNDownloadOption = new ExportOption(\n 'EGN',\n 'Download an EGN-File with the Domain-Story. Can be used to save and share your Domain-Story.',\n () => this.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 {\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(''),\n result.svg.indexOf('') + 7,\n );\n const split = defs.split(' {\n const idToReplace = id.substring(4, id.length - 1);\n const newId =\n idToReplace.slice(0, id.length - 5) +\n 'customId' +\n sectionIndex +\n idToReplace.slice(idToReplace.length - 2);\n // @ts-ignore\n result.svg = result.svg.replaceAll(idToReplace, newId);\n });\n newDefs += '= 72) {\n fix = true;\n // https://www.chromestatus.com/features/5656049583390720\n }\n } else if (name.includes('Firefox')) {\n fix = true;\n\n // versionNumber of implementation unknown\n }\n if (fix) {\n while (svg.includes('#')) {\n svg = svg.replace('#', '%23');\n }\n }\n return svg;\n }\n\n findMostOuterElements(svg: HTMLElement): Box {\n let xLeft = 0;\n let xRight = 0;\n let yUp = 0;\n let yDown = 0;\n\n const elements = svg.getElementsByClassName('djs-group');\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const sub = element.children;\n\n let elXLeft: number;\n let elXRight: number;\n let elYUp: number;\n let elYDown: number;\n\n const transform = sub[0].getAttribute('transform');\n if (transform) {\n let nums;\n\n if (transform.includes('matrix')) {\n transform.replace('matrix(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[4]);\n elYUp = parseInt(nums[5]);\n } else {\n transform.replace('translate(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[0]);\n elYUp = parseInt(nums[1]);\n }\n\n const rects = sub[0].getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const width = outerRect.getAttribute('width');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + sub[0].getBoundingClientRect().height;\n } else {\n const rects = element.getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const x = outerRect.getAttribute('x');\n const y = outerRect.getAttribute('y');\n\n elXLeft = parseInt(x != null ? x : '0');\n elYUp = parseInt(y != null ? y : '0');\n\n const width = outerRect.getAttribute('width');\n const height = outerRect.getAttribute('height');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + parseInt(height != null ? height : '0') + 20; // Add 20 px as Padding for text at the bottom\n }\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elXRight > xRight) {\n xRight = elXRight;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n if (elYDown > yDown) {\n yDown = elYDown;\n }\n }\n\n yUp -= 75; // we need to adjust yUp to have space for the title and description\n\n return {\n xLeft,\n xRight,\n yUp,\n yDown,\n };\n }\n\n prepareSVG(\n svg: string,\n layerBase: any,\n description: string,\n title: string,\n withTitle: boolean,\n ): string {\n const box = this.findMostOuterElements(layerBase);\n let viewBoxIndex = svg.indexOf('width=\"');\n\n this.calculateWidthAndHeight(box);\n\n const { insertText, 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, dynamicHeightOffset);\n\n const dataStart = svg.substring(0, viewBoxIndex);\n viewBoxIndex = svg.indexOf('style=\"');\n\n const dataEnd = svg.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n svg = dataStart + bounds + dataEnd;\n\n const insertIndex = svg.indexOf('') + 20;\n\n if (withTitle) {\n svg = [\n svg.slice(0, insertIndex),\n insertText,\n svg.slice(insertIndex),\n ].join('');\n }\n svg = this.URIHashtagFix(svg);\n\n return svg;\n }\n\n private createBounds(box: Box, extraHeight: number) {\n return (\n 'width=\"' +\n this.width +\n '\" height=\"' +\n this.height +\n '\" viewBox=\" ' +\n box.xLeft +\n ' ' +\n (box.yUp - extraHeight) +\n ' ' +\n this.width +\n ' ' +\n this.height +\n '\" '\n );\n }\n\n /**\n * Calculate the Width and Height of the Bounding Box for the PNG so no Parts are cut off\n */\n private calculateWidthAndHeight(box: Box): [number, number] {\n if (box.xLeft < 0) {\n if (box.xRight < 0) {\n this.width = Math.abs(box.xLeft - box.xRight);\n } else {\n this.width = Math.abs(box.xLeft) + box.xRight;\n }\n } else {\n this.width = box.xRight - box.xLeft;\n }\n\n if (box.yUp < 0) {\n if (box.yDown < 0) {\n this.height = Math.abs(box.yUp - box.yDown);\n } else {\n this.height = Math.abs(box.yUp) + box.yDown;\n }\n } else {\n this.height = box.yDown - box.yUp;\n }\n\n // if the domain-Story is smaller than 300px in width or height, increase its dimensions\n if (this.height < 300) {\n this.height += 300;\n box.yUp -= 150;\n box.yDown += 150;\n }\n if (this.width < 300) {\n this.width += 300;\n box.xLeft -= 150;\n box.xRight += 150;\n }\n return [this.height, this.width];\n }\n\n extractSVG(viewport: any, outerSVGElement: any): string {\n const layerResizers = viewport.getElementsByClassName('layer-resizers');\n const layerOverlays = viewport.getElementsByClassName('layer-overlays');\n const transform = viewport.getAttribute('transform');\n const translate = viewport.getAttribute('translate');\n\n if (layerResizers[0]) {\n layerResizers[0].parentNode.removeChild(layerResizers[0]);\n }\n if (layerOverlays[0]) {\n layerOverlays[0].parentNode.removeChild(layerOverlays[0]);\n }\n\n // remove canvas scrolling and scaling before serializeToString of SVG\n if (transform) {\n viewport.removeAttribute('transform');\n }\n if (translate) {\n viewport.removeAttribute('translate');\n }\n\n const svg = new XMLSerializer().serializeToString(outerSVGElement);\n\n // re-add canvas scrolling and scaling\n if (transform) {\n viewport.setAttribute('transform', transform);\n }\n if (translate) {\n viewport.setAttribute('translate', translate);\n }\n return svg;\n }\n\n getWidth(): number {\n return this.width;\n }\n\n getHeight(): number {\n return this.height;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigAndDST } from 'src/app/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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SvgService {\n private cacheData = '';\n\n constructor(private modelerService: ModelerService) {}\n\n createSVGData(\n title: string,\n description: string,\n dst: ConfigAndDST,\n withTitle: boolean,\n useWhiteBackground: boolean,\n ): string {\n this.cacheData = this.modelerService.getEncoded();\n\n let domainStorySvg = structuredClone(this.cacheData);\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 findIndexToInsertData(data: string) {\n let insertIndex = data.indexOf('');\n if (insertIndex < 0) {\n insertIndex = data.indexOf('version=\"1.2\">') + 14;\n } else {\n insertIndex += 7;\n }\n return insertIndex;\n }\n\n private createBounds(\n width: number,\n height: number,\n 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 return data;\n }\n}\n","import { Dictionary } from 'src/app/domain/entities/dictionary';\n\nexport let appendedIcons = new Dictionary();\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 allIcons = {\n Person:\n '',\n Group:\n '',\n Pet: '',\n Conversation:\n '',\n World:\n '',\n Store:\n '',\n Theater:\n '',\n Business:\n '',\n Water:\n '',\n Hotel:\n '',\n Dining:\n '',\n 'Gas-station':\n '',\n 'Meeting-room':\n '',\n Courthouse:\n '',\n Flag: '',\n Place:\n '',\n Car: '',\n Bus: '',\n Train:\n '',\n Truck:\n '',\n Taxi: '',\n Bike: '',\n Boat: '',\n Motorcycle:\n '',\n Plane:\n '',\n 'Flight-takeoff':\n '',\n 'Flight-landing':\n '',\n Shuttle:\n '',\n Walking:\n '',\n Traffic:\n '',\n Commute:\n '',\n System:\n '',\n Printer:\n '',\n Document:\n '',\n Folder:\n '',\n Call: '',\n Email:\n '',\n Copyright:\n '',\n DNS: '',\n Settings:\n '',\n Cellphone:\n '',\n Update:\n '',\n Briefcase:\n '',\n Microphone:\n '',\n Signal:\n '',\n Key: '',\n Pencil:\n '',\n Sum: '',\n Headset:\n '',\n Keyboard:\n '',\n Mouse:\n '',\n Router:\n '',\n Scanner:\n '',\n Security:\n '',\n Desktop:\n '',\n 'Speaker-phone':\n '',\n Tablet:\n '',\n Label:\n '',\n Receipt:\n '',\n Calendar:\n '',\n Cloud:\n '',\n Assessment:\n '',\n Dashboard:\n '',\n 'Pie-chart':\n '',\n Problem:\n '',\n 'Picture-as-PDF':\n '',\n Grid: '',\n Watch:\n '',\n Euro: '',\n Dollar:\n '',\n Info: '',\n Alarm:\n '',\n Wrench:\n '',\n 'Circle-Arrows':\n '',\n 'Credit-Card':\n '',\n Favorite:\n '',\n Gavel:\n '',\n Blind:\n '',\n Hourglass:\n '',\n Time: '',\n Search:\n '',\n Shopping:\n '',\n 'Thumb-up':\n '',\n 'Thumb-down':\n '',\n 'Thumb-up-down':\n '',\n Couch:\n '',\n Attach:\n '',\n Ruler:\n '',\n Education:\n '',\n 'How-To-Reg':\n '',\n 'View-List':\n '',\n Accessible:\n '',\n 'Account-Circle':\n '',\n Assignment:\n '',\n Battery:\n '',\n Book: '',\n Bug: '',\n 'Change-History':\n '',\n 'Check-Circle':\n '',\n Code: '',\n 'Contact-Mail':\n '',\n Crop: '',\n DVR: '',\n Error:\n '',\n Extension:\n '',\n Face: '',\n Fastfood:\n '',\n Fingerprint:\n '',\n Hand: '',\n Help: '',\n Image:\n '',\n Lightbulb:\n '',\n Lock: '',\n Loyalty:\n '',\n 'Picture-in-Picture':\n '',\n Portrait:\n '',\n Rocket:\n '',\n Satellite:\n '',\n Share:\n '',\n Slideshow:\n '',\n Star: '',\n Sun: '',\n Table:\n '',\n Videocam:\n '',\n Wysiwyg:\n '',\n};\n\nexport function getAllStandardIconKeys(): string[] {\n const allIconsDict = new Dictionary();\n\n allIconsDict.addEach(allIcons);\n\n return allIconsDict.keysArray();\n}\n\nexport function overrideAppendedIcons(newIcons: Dictionary): void {\n appendedIcons = newIcons;\n}\n\nexport function updateAppendedIcons(newIcons: Dictionary): void {\n for (const key in newIcons.keysArray().entries()) {\n appendedIcons.add(newIcons.get(key), key);\n }\n}\n","import { Dictionary } from 'src/app/domain/entities/dictionary';\nimport {\n overrideAppendedIcons,\n updateAppendedIcons,\n} 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 { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\nexport class IconConfiguration {\n domainName = INITIAL_ICON_SET_NAME;\n\n private allIconDictionary: Dictionary;\n\n constructor(allIconDictionary: Dictionary) {\n this.allIconDictionary = allIconDictionary;\n }\n\n /**\n * Select the Iconset which you want to use\n */\n getDefaultConf(): Configuration {\n return defaultConf;\n }\n\n updateAllIconRegistry(allIconDictionary: Dictionary): void {\n this.allIconDictionary = allIconDictionary;\n }\n\n appendSRCFile(\n actors: string[],\n actorsDict: Dictionary,\n workObjects: string[],\n workObjectsDict: Dictionary,\n ): void {\n const newAppendedIcons: { [key: string]: any } = {};\n\n actors.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = actorsDict.get(name);\n }\n });\n\n workObjects.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = workObjectsDict.get(name);\n }\n });\n const appen = new Dictionary();\n Object.keys(newAppendedIcons).forEach((key) => {\n appen.set(key, newAppendedIcons[key]);\n });\n\n updateAppendedIcons(appen);\n }\n\n createCustomConf(iconSetConfiguration: IconSetConfiguration): Configuration {\n this.domainName = iconSetConfiguration.name;\n\n let actors = iconSetConfiguration.actors;\n let workObjects = iconSetConfiguration.workObjects;\n\n this.appendSRCFile(\n actors.keysArray(),\n actors,\n workObjects.keysArray(),\n workObjects,\n );\n\n return new Configuration(actors.keysArray(), workObjects.keysArray());\n }\n}\n\n/**\n * Default Iconset\n */\nexport const defaultConf = {\n actors: ['Person', 'Group', 'System'],\n workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'],\n};\n","export enum IconFilterEnum {\n ICON_FILTER_ACTOR = 'ICON_FILTER_ACTOR',\n ICON_FILTER_WORKOBJECT = 'ICON_FILTER_WORKOBJECT',\n ICON_FILTER_UNASSIGNED = 'ICON_FILTER_UNASSIGNED',\n ICON_FILTER_NONE = 'ICON_FILTER_NONE',\n}\n","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","
\n \"{{\n {{ icon.name }}\n
\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({});\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","
\n
\n \"{{\n
{{ name }}
\n
\n
\n \n \n None\n \n \n Actor\n \n \n Workobject\n \n \n
\n
\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 { IconFilterEnum } from '../../domain/iconFilterEnum';\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(IconFilterEnum.ICON_FILTER_NONE);\n\n selectedActors = new BehaviorSubject([]);\n selectedWorkobjects = new BehaviorSubject([]);\n\n allIcons: BehaviorSubject;\n allIconNames = new BehaviorSubject([]);\n allFilteredIconNames = new BehaviorSubject([]);\n\n constructor(\n private 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(\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 exportIconSet(): void {\n this.iconSetCustomizationService.exportIconSet();\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) => {\n if (e.target) {\n const src: string = e.target.result as unknown as string;\n this.iconDictionaryService.addIMGToIconDictionary(src, iconName);\n // TODO: td: What kind of type is it here?\n this.iconDictionaryService.registerIconForBPMN(\n iconName,\n ICON_PREFIX + iconName.toLowerCase(),\n ElementTypes.ACTOR,\n );\n\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n\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) => {\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 !== IconFilterEnum.ICON_FILTER_ACTOR) {\n this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForWorkobjects(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) {\n this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForUnassigned(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) {\n this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterByNameAndType($event: any) {\n const filteredByNameAndType = this.getFilteredNamesForType(\n this.filter.value,\n ).filter((name) =>\n name.toLowerCase().includes($event.target.value.toLowerCase()),\n );\n this.allFilteredIconNames.next(filteredByNameAndType.sort(this.sortByName));\n }\n\n private getFilteredNamesForType(type: IconFilterEnum): string[] {\n let allFiltered: string[] = [];\n switch (type) {\n case IconFilterEnum.ICON_FILTER_NONE:\n allFiltered = this.allIconNames.value;\n break;\n case IconFilterEnum.ICON_FILTER_ACTOR:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconActor(name),\n );\n break;\n case IconFilterEnum.ICON_FILTER_WORKOBJECT:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconWorkObject(name),\n );\n break;\n case IconFilterEnum.ICON_FILTER_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","
\n
\n
\n
\n
Filter by assignment:
\n \n None\n \n \n Actors\n \n \n Workobjects\n \n \n
\n
\n \n \n home \n \n \n close\n \n
\n \n
\n \n unarchive\n \n \n \n
\n
\n
\n @for (iconName of allFilteredIconNames | async; track iconName) {\n \n }\n
\n
\n \n
\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 { IconListItem } from 'src/app/tools/icon-set-config/domain/iconListItem';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\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;\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 titleService: TitleService,\n ) {\n this.iconSetName = titleService.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","
\n
\n
\n
\n \n \n \n
\n
\n
\n

Order of Actors

\n \n @for (\n iconName of selectedActors$ | async;\n track iconName;\n let i = $index\n ) {\n \n \n \n }\n \n
\n
\n

Order of Work Objects

\n \n @for (\n iconName of selectedWorkobjects$ | async;\n track iconName;\n let i = $index\n ) {\n \n \n \n }\n \n
\n
\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 defaultConf,\n IconConfiguration,\n} from 'src/app/tools/icon-set-config/domain/iconConfiguration';\nimport {\n allIcons,\n appendedIcons,\n} from 'src/app/tools/icon-set-config/domain/allIcons';\nimport { sanitizeIconName } from '../../../utils/sanitizer';\nimport getIconId = ElementTypes.getIconId;\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\nexport const ICON_PREFIX = 'icon-domain-story-';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconDictionaryService {\n private actorIconDictionary = new Dictionary();\n private workObjectDictionary = new Dictionary();\n\n private allIconDictionary = new Dictionary();\n private iconDictionaryForBPMN = new Dictionary();\n\n private customConfiguration?: IconSetConfiguration;\n\n private readonly iconConfig: IconConfiguration;\n\n constructor() {\n this.allIconDictionary.addEach(allIcons);\n this.iconConfig = new IconConfiguration(this.allIconDictionary);\n }\n\n initTypeDictionaries(actors: string[], workObjects: string[]): void {\n if (!actors || actors.length == 0) {\n actors = defaultConf.actors;\n }\n if (!workObjects || workObjects.length == 0) {\n workObjects = defaultConf.workObjects;\n }\n\n const allTypes = new Dictionary();\n allTypes.addEach(allIcons);\n allTypes.appendDict(this.getAppendedIconDictionary());\n\n this.initDictionary(\n actors,\n allTypes,\n this.actorIconDictionary,\n ElementTypes.ACTOR,\n );\n this.initDictionary(\n workObjects,\n allTypes,\n this.workObjectDictionary,\n ElementTypes.WORKOBJECT,\n );\n }\n\n private initDictionary(\n keys: string[],\n allTypes: Dictionary,\n dictionary: Dictionary,\n elementType: ElementTypes,\n ) {\n dictionary.clear();\n for (const key of keys) {\n dictionary.add(allTypes.get(key), key);\n }\n\n dictionary.keysArray().forEach((name) => {\n this.registerIconForBPMN(\n name,\n ICON_PREFIX + sanitizeIconName(name.toLowerCase()),\n elementType,\n );\n });\n }\n\n getCurrentIconConfigurationForBPMN(): Configuration {\n if (this.customConfiguration) {\n return this.iconConfig.createCustomConf(this.customConfiguration);\n }\n return this.iconConfig.getDefaultConf();\n }\n\n allInTypeDictionary(type: ElementTypes, elements: BusinessObject[]): boolean {\n let collection: Dictionary;\n if (type === ElementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === ElementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n\n let allIn = true;\n if (elements) {\n elements.forEach((element) => {\n if (!collection.has(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.addEach(allIcons);\n allTypes.appendDict(appendedIcons);\n\n iconTypes.forEach((name) => {\n if (!collection.has(name)) {\n const src = allTypes.get(name);\n if (src) {\n this.registerIconForType(dictionaryType, name, src);\n this.registerIconForBPMN(\n name,\n sanitizeIconName(ICON_PREFIX + name.toLowerCase()),\n dictionaryType,\n );\n }\n }\n });\n }\n\n /** Add Icon(s) to Dictionary **/\n registerIconForBPMN(\n name: string,\n src: string,\n elementType: ElementTypes,\n ): void {\n if (name.includes(elementType)) {\n throw new Error('Should not include elementType');\n }\n\n this.iconDictionaryForBPMN.set(`${elementType}${name}`, src);\n }\n\n addIconsToTypeDictionary(\n actorIcons: BusinessObject[],\n workObjectIcons: BusinessObject[],\n ) {\n if (!this.allInTypeDictionary(ElementTypes.ACTOR, actorIcons)) {\n this.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: IconSetConfiguration,\n ): void {\n const elements: BusinessObject[] = [];\n\n actors.forEach((a) => elements.push(a));\n workObjects.forEach((w) => elements.push(w));\n\n const customIcons = new Dictionary();\n\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n config.actors.keysArray().forEach((key) => {\n actorsDict.set(key, config.actors.get(key));\n });\n config.workObjects.keysArray().forEach((key) => {\n workObjectsDict.set(key, config.workObjects.get(key));\n });\n\n this.extractCustomIconsFromDictionary(actorsDict, customIcons);\n this.extractCustomIconsFromDictionary(workObjectsDict, customIcons);\n\n elements.forEach((element) => {\n const name = sanitizeIconName(\n element.type\n .replace(ElementTypes.ACTOR, '')\n .replace(ElementTypes.WORKOBJECT, ''),\n );\n if (\n (element.type.includes(ElementTypes.ACTOR) ||\n element.type.includes(ElementTypes.WORKOBJECT)) &&\n !this.getFullDictionary().has(name)\n ) {\n let elementType;\n if (element.type.includes(ElementTypes.ACTOR)) {\n elementType = ElementTypes.ACTOR;\n } else {\n elementType = ElementTypes.WORKOBJECT;\n }\n this.registerIconForBPMN(\n ICON_PREFIX + name.toLowerCase(),\n 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 appendedIcons.set(name, input);\n }\n\n addIconsToCss(customIcons: Dictionary) {\n const sheetEl = document.getElementById('iconsCss');\n customIcons.keysArray().forEach((key) => {\n const src = customIcons.get(key);\n const iconStyle =\n '.' +\n ICON_PREFIX +\n sanitizeIconName(key.toLowerCase()) +\n '::before{ content: url(\"data:image/svg+xml;utf8,' +\n this.wrapSRCInSVG(src) +\n '\"); margin: 3px;}';\n // @ts-ignore\n sheetEl?.sheet?.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n });\n }\n\n private wrapSRCInSVG(src: string): string {\n return (\n \"\"\n );\n }\n\n /** Getter & Setter **/\n\n getFullDictionary(): Dictionary {\n const fullDictionary = new Dictionary();\n fullDictionary.appendDict(this.allIconDictionary);\n fullDictionary.appendDict(this.getAppendedIconDictionary());\n return fullDictionary;\n }\n\n getAppendedIconDictionary(): Dictionary {\n const appendedDict = new Dictionary();\n appendedIcons.keysArray().forEach((key) => {\n if (!this.allIconDictionary.has(key)) {\n appendedDict.set(key, appendedIcons.get(key));\n }\n });\n return appendedDict;\n }\n\n getTypeDictionary(type: ElementTypes): Dictionary {\n if (type === ElementTypes.ACTOR) {\n return this.actorIconDictionary;\n } else if (type === ElementTypes.WORKOBJECT) {\n return this.workObjectDictionary;\n }\n return new Dictionary();\n }\n\n getTypeDictionaryKeys(type: ElementTypes): string[] {\n return this.getTypeDictionary(type).keysArray();\n }\n\n getTypeIconSRC(type: ElementTypes, name: string): string | null {\n if (type === ElementTypes.ACTOR) {\n return this.actorIconDictionary.get(name);\n } else if (type === ElementTypes.WORKOBJECT) {\n return this.workObjectDictionary.get(name);\n }\n return null;\n }\n\n getIconForBPMN(elementType: ElementTypes, name: string): string | null {\n return this.iconDictionaryForBPMN.get(`${elementType}${name}`);\n }\n\n getIconSource(name: string): string | null {\n if (this.allIconDictionary.has(name)) {\n return this.allIconDictionary.get(name);\n } else if (appendedIcons.has(name)) {\n return appendedIcons.get(name);\n }\n return null;\n }\n\n getElementsOfType(\n elements: BusinessObject[],\n type: ElementTypes,\n ): BusinessObject[] {\n const elementOfType: any = [];\n elements.forEach((element) => {\n if (element.type.includes(type)) {\n elementOfType.push(element);\n }\n });\n return elementOfType;\n }\n\n getAllIconDictionary(): Dictionary {\n return this.allIconDictionary;\n }\n\n getActorsDictionary(): Dictionary {\n return this.actorIconDictionary;\n }\n\n getWorkObjectsDictionary(): Dictionary {\n return this.workObjectDictionary;\n }\n\n getIconConfiguration(): IconConfiguration {\n return this.iconConfig;\n }\n\n setCustomConfiguration(customConfiguration: IconSetConfiguration): void {\n this.customConfiguration = customConfiguration;\n }\n}\n","import { Injectable } from '@angular/core';\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 { defaultConf } from '../domain/iconConfiguration';\nimport { TitleService } from '../../title/services/title.service';\nimport {\n ICON_SET_CONFIGURATION_TAG,\n INITIAL_ICON_SET_NAME,\n} from '../../../domain/entities/constants';\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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 constructor(\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private titleService: TitleService,\n private storageService: StorageService,\n ) {}\n\n setIconSetName(iconSetName: string): void {\n this.titleService.setIconSetName(\n iconSetName ? iconSetName : INITIAL_ICON_SET_NAME,\n );\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.titleService.getIconSetName();\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(\n customConfig: IconSetConfiguration,\n updateIconSetName = true,\n ): void {\n let actorDict = new Dictionary();\n let workObjectDict = new Dictionary();\n\n if (customConfig.actors.keysArray()) {\n actorDict = customConfig.actors;\n workObjectDict = customConfig.workObjects;\n } else {\n actorDict.addEach(customConfig.actors);\n workObjectDict.addEach(customConfig.workObjects);\n }\n\n const actorKeys = actorDict.keysArray();\n const workObjectKeys = workObjectDict.keysArray();\n\n this.iconDictionaryService.updateIconRegistries([], [], customConfig);\n\n this.iconDictionaryService\n .getIconConfiguration()\n .appendSRCFile(actorKeys, actorDict, workObjectKeys, workObjectDict);\n\n this.iconDictionaryService.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(): IconSetConfiguration | 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.titleService.getIconSetName() || 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(): IconSetConfiguration {\n const minimalConfig = this.createConfigFromCanvas();\n\n defaultConf.actors.forEach((iconName) => {\n minimalConfig.actors.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName,\n );\n });\n defaultConf.workObjects.forEach((iconName) => {\n minimalConfig.workObjects.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName,\n );\n });\n\n return minimalConfig;\n }\n\n private createConfigFromDictionaries(\n actorsDict: Dictionary,\n workObjectsDict: Dictionary,\n ): IconSetConfiguration {\n const actorNames = actorsDict.keysArray();\n const workobjectNames = workObjectsDict.keysArray();\n const newActors = new Dictionary();\n const newWorkobjects = new Dictionary();\n\n // Fill Configuration from Canvas-Objects\n actorNames.forEach((actor) => {\n newActors.add(\n actorsDict.get(actor),\n actor.replace(ElementTypes.ACTOR, ''),\n );\n });\n workobjectNames.forEach((workObject) => {\n newWorkobjects.add(\n workObjectsDict.get(workObject),\n workObject.replace(ElementTypes.WORKOBJECT, ''),\n );\n });\n\n return {\n name: this.titleService.getIconSetName(),\n actors: newActors,\n workObjects: newWorkobjects,\n };\n }\n\n public createIconSetConfiguration(\n fileConfiguration: FileConfiguration,\n ): IconSetConfiguration {\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(): IconSetConfiguration | undefined {\n const iconSetString = this.storageService.get(ICON_SET_CONFIGURATION_TAG);\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: IconSetConfiguration): 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_TAG,\n JSON.stringify(configForStorage, null, 2),\n );\n }\n\n private createConfigFromCanvas(): IconSetConfiguration {\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(\n iconSetConfiguration: IconSetConfiguration,\n ) {\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_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 { TitleService } from '../../title/services/title.service';\nimport { IconSetConfigurationService } from './icon-set-configuration.service';\nimport { IconDictionaryService } from './icon-dictionary.service';\nimport getIconId = ElementTypes.getIconId;\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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;\n public abstract getConfiguration(): IconSetConfiguration;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconSetCustomizationService {\n private readonly iconSetConfigurationTypes: BehaviorSubject;\n\n private allIconListItems = new Dictionary();\n\n private configurationHasChanged = false;\n\n selectedActors$ = new BehaviorSubject([]);\n selectedWorkobjects$ = new BehaviorSubject([]);\n private changedIconSetConfiguration: IconSetConfiguration | undefined;\n\n constructor(\n private iconSetConfigurationService: IconSetConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n iconSetChangedService: IconSetChangedService,\n private titleService: TitleService,\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 const importedConfiguration = iconSetChangedService.getConfiguration();\n if (importedConfiguration) {\n this.importConfiguration(importedConfiguration, false);\n }\n }\n\n importConfiguration(\n customConfig: IconSetConfiguration,\n saveIconSet = true,\n ): void {\n const actorKeys = customConfig.actors.keysArray();\n const workObjectKeys = customConfig.workObjects.keysArray();\n\n this.changeName(customConfig.name);\n actorKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedActorNames = this.selectedActors$.value;\n if (!selectedActorNames.includes(iconName)) {\n this.selectActor(iconName);\n }\n });\n workObjectKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedWorkobjectNames = this.selectedWorkobjects$.value;\n if (!selectedWorkobjectNames.includes(iconName)) {\n this.selectWorkObject(iconName);\n }\n });\n if (saveIconSet) {\n this.saveIconSet(this.elementRegistryService.getUsedIcons(), true);\n }\n }\n\n /** Getter & Setter **/\n getIconSetConfiguration(): BehaviorSubject {\n return this.iconSetConfigurationTypes;\n }\n\n getIconForName(iconName: string): BehaviorSubject {\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.titleService.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_INFO,\n },\n );\n }\n if (changedWorkobjects.length) {\n const workobjects = changedWorkobjects.join(', ');\n this.snackbar.open(\n `The following icons are already in use as work objects and cannot be changed: ${workobjects}`,\n undefined,\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n },\n );\n }\n }\n }\n\n exportIconSet(): void {\n this.iconSetConfigurationService.exportConfiguration();\n }\n\n getAndClearSavedConfiguration(): IconSetConfiguration | undefined {\n const temp = this.changedIconSetConfiguration;\n this.changedIconSetConfiguration = undefined;\n\n return temp;\n }\n\n private createIconSetConfiguration(): IconSetConfiguration {\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.getSrcForIcon(iconName), iconName);\n this.iconDictionaryService.addIconsToCss(iconDict);\n this.addIconToAllIconList(iconName);\n }\n\n private addIconToAllIconList(iconName: string): void {\n this.allIconListItems.add(\n new BehaviorSubject({\n name: iconName,\n svg: this.getSrcForIcon(iconName),\n isActor: this.isIconActor(iconName),\n isWorkObject: this.isIconWorkObject(iconName),\n }),\n iconName,\n );\n }\n\n private updateIcon(\n isActor: boolean,\n isWorkobject: boolean,\n iconName: string,\n ) {\n const iconBehaviourSubject = this.getIconForName(iconName);\n const icon = iconBehaviourSubject.value;\n icon.isActor = isActor;\n icon.isWorkObject = isWorkobject;\n\n iconBehaviourSubject.next(icon);\n }\n\n private updateAllIconBehaviourSubjects(): void {\n const 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 getSrcForIcon(name: string): string {\n let iconName: string;\n if (name.includes(ElementTypes.DOMAINSTORY)) {\n // TODO: td: This returns empty every time!\n iconName = getIconId(name);\n } else {\n iconName = name;\n }\n const rawSrc = this.iconDictionaryService.getIconSource(iconName);\n\n if (!rawSrc) {\n return '';\n }\n\n if (rawSrc.startsWith('data')) {\n return rawSrc;\n } else {\n return 'data:image/svg+xml,' + rawSrc;\n }\n }\n\n private updateIcons(changedIconSet: IconSetConfiguration) {\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 { 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;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: () => {},\n ) {\n this.fileUrl = new BehaviorSubject('');\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","\n \n \n\n\n
\n
\n \n \n Import\n \n
\n
\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} from '../../../domain/entities/constants';\nimport { IconSetConfigurationService } from '../../icon-set-config/services/icon-set-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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';\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: IconSetConfiguration | null = null;\n\n private importedConfigurationEmitter =\n new EventEmitter();\n\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private importRepairService: ImportRepairService,\n private titleService: TitleService,\n private rendererService: RendererService,\n private dialogService: DialogService,\n private 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 {\n return this.importedConfigurationEmitter.asObservable();\n }\n\n getConfiguration(): IconSetConfiguration {\n const config: IconSetConfiguration = {\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 const filename = file.name;\n\n const dstSvgPattern = /.*(.dst)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n\n if (filename.endsWith('.dst')) {\n this.importDST(file, filename, false);\n } else if (filename.match(dstSvgPattern)) {\n this.importDST(file, filename, true);\n } else if (filename.endsWith('.egn')) {\n this.importEGN(file, filename, false);\n } else if (filename.match(egnSvgPattern)) {\n this.importEGN(file, filename, true);\n }\n this.modelerService.commandStackChanged();\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 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].replace(/%20/g, ' ');\n\n if (!filename) {\n throw new Error('Unable to extract filename from URL');\n }\n\n const dstSvgPattern = /.*(.dst)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n\n if (filename.endsWith('.dst')) {\n this.importDST(blob, filename, false);\n } else if (filename.match(dstSvgPattern)) {\n this.importDST(blob, filename, true);\n } else if (filename.endsWith('.egn')) {\n this.importEGN(blob, filename, false);\n } else if (filename.match(egnSvgPattern)) {\n this.importEGN(blob, filename, true);\n }\n this.modelerService.commandStackChanged();\n })\n .catch(() =>\n this.snackbar.open('Cross-origin request blocked', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n }),\n );\n }\n\n openUploadUrlDialog(): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = (fileUrl: string) => this.importFromUrl(fileUrl);\n this.dialogService.openDialog(ImportDialogComponent, config);\n }\n\n importDST(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = this.restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, false);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n importEGN(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = this.restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, true);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n private fileReaderFunction(\n text: string | ArrayBuffer | null,\n isSVG: boolean,\n isEGN: boolean,\n ): void {\n let dstText;\n if (typeof text === 'string') {\n if (isSVG) {\n dstText = this.removeXMLComments(text);\n } else {\n dstText = text;\n }\n\n let elements: any[];\n let config: IconSetConfiguration;\n let configFromFile: {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n\n let dstAndConfig = this.extractDstAndConfig(dstText);\n if (dstAndConfig == null) {\n return;\n }\n\n // current implementation\n if (dstAndConfig.domain) {\n configFromFile = isEGN\n ? dstAndConfig.domain\n : JSON.parse(dstAndConfig.domain);\n config =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\n elements = isEGN ? dstAndConfig.dst : JSON.parse(dstAndConfig.dst);\n } else {\n // legacy implementation\n if (dstAndConfig.config) {\n configFromFile = JSON.parse(dstAndConfig.config);\n config =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\n elements = JSON.parse(dstAndConfig.dst);\n } else {\n // implementation prior to configuration\n elements = JSON.parse(dstText);\n config =\n this.iconSetConfigurationService.createMinimalConfigurationWithDefaultIcons();\n }\n }\n\n this.importRepairService.removeWhitespacesFromIcons(elements);\n\n const configChanged = this.checkConfigForChanges(config);\n\n let lastElement = elements[elements.length - 1];\n if (!lastElement.id) {\n lastElement = elements.pop();\n let importVersionNumber = lastElement;\n\n // if the last element has the importedVersionNumber has the tag version,\n // then there exists another meta tag 'info' for the description\n if (importVersionNumber.version) {\n lastElement = elements.pop();\n }\n\n if (importVersionNumber.version) {\n importVersionNumber = importVersionNumber.version as string;\n } else {\n importVersionNumber = '?';\n this.snackbar.open(`The version number is unreadable.`, undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\n });\n }\n elements = this.handleVersionNumber(importVersionNumber, elements);\n }\n\n if (\n !this.importRepairService.checkForUnreferencedElementsInActivitiesAndRepair(\n elements,\n )\n ) {\n this.showBrokenImportDialog();\n }\n\n this.titleService.updateTitleAndDescription(\n this.title,\n lastElement.info,\n false,\n );\n\n this.importRepairService.adjustPositions(elements);\n\n this.updateIconRegistries(elements, config);\n this.rendererService.importStory(elements, configChanged, config);\n }\n }\n\n private handleVersionNumber(\n importVersionNumber: string,\n elements: BusinessObject[],\n ): BusinessObject[] {\n const versionPrefix = +importVersionNumber.substring(\n 0,\n importVersionNumber.lastIndexOf('.'),\n );\n if (versionPrefix <= 0.5) {\n elements =\n this.importRepairService.updateCustomElementsPreviousV050(elements);\n this.showPreviousV050Dialog(versionPrefix);\n }\n return elements;\n }\n\n private extractDstAndConfig(dstText: string) {\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 removeXMLComments(xmlText: string): string {\n xmlText = xmlText.substring(xmlText.indexOf(''));\n while (xmlText.includes('')) {\n xmlText = xmlText.replace('', '');\n }\n xmlText = xmlText.replace('', '');\n xmlText = xmlText.replace('', '');\n return xmlText;\n }\n\n checkConfigForChanges(iconSetConfiguration: IconSetConfiguration): boolean {\n const newActorKeys = iconSetConfiguration.actors.keysArray();\n const newWorkObjectKeys = iconSetConfiguration.workObjects.keysArray();\n\n const currentActorKeys = this.iconDictionaryService.getTypeDictionaryKeys(\n ElementTypes.ACTOR,\n );\n const currentWorkobjectKeys =\n this.iconDictionaryService.getTypeDictionaryKeys(ElementTypes.WORKOBJECT);\n\n let changed = false;\n\n if (\n newActorKeys.length !== currentActorKeys.length ||\n newWorkObjectKeys.length !== currentWorkobjectKeys.length\n ) {\n return true;\n }\n\n for (let i = 0; i < newActorKeys.length; i++) {\n changed =\n this.clearName(currentActorKeys[i]) !== this.clearName(newActorKeys[i]);\n if (changed) {\n i = newActorKeys.length;\n }\n }\n if (changed) {\n return changed;\n }\n for (let i = 0; i < newWorkObjectKeys.length; i++) {\n changed =\n this.clearName(currentWorkobjectKeys[i]) !==\n this.clearName(newWorkObjectKeys[i]);\n if (changed) {\n i = newWorkObjectKeys.length;\n }\n }\n return changed;\n }\n\n private clearName(name: string): string {\n return name\n .replace(ElementTypes.ACTOR, '')\n .replace(ElementTypes.WORKOBJECT, '');\n }\n\n private updateIconRegistries(\n elements: BusinessObject[],\n config: IconSetConfiguration,\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: IconSetConfiguration) {\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 { Waypoint } from 'src/app/domain/entities/waypoint';\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 /**\n * Adjusts Positions of Elements to ensure the Domain Story starts in the visible parts of the canvas\n */\n adjustPositions(elements: BusinessObject[]): void {\n let xLeft = 0;\n let yUp = 0;\n let isFirst = true;\n\n this.findFirstElement(elements, isFirst, xLeft, yUp);\n\n if (xLeft < 75 || xLeft > 150 || yUp < 0 || yUp > 50) {\n // add Padding for the Palette and the top\n xLeft -= 75;\n yUp -= 50;\n\n elements.forEach((element) =>\n this.adjustElementPosition(element, xLeft, yUp),\n );\n }\n }\n\n private adjustElementPosition(\n element: BusinessObject,\n xLeft: number,\n yUp: number,\n ): void {\n if (\n element.type === ElementTypes.ACTIVITY ||\n element.type === ElementTypes.CONNECTION\n ) {\n const waypoints = (element as ActivityBusinessObject).waypoints;\n waypoints.forEach((point: Waypoint) => {\n point.x -= xLeft;\n point.y -= yUp;\n\n if (point.original) {\n point.original.x = point.x;\n point.original.y = point.y;\n }\n });\n } else {\n element.x -= xLeft;\n element.y -= yUp;\n }\n }\n\n private findFirstElement(\n elements: BusinessObject[],\n isFirst: boolean,\n xLeft: number,\n yUp: number,\n ) {\n elements.forEach((element) => {\n let elXLeft;\n let elYUp;\n if (\n element.type !== ElementTypes.ACTIVITY &&\n element.type !== ElementTypes.CONNECTION\n ) {\n if (isFirst) {\n xLeft = element.x;\n yUp = element.y;\n isFirst = false;\n }\n elXLeft = element.x;\n elYUp = element.y;\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n }\n });\n }\n\n // 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","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-label-dictionary-dialog',\n templateUrl: './label-dictionary-dialog.component.html',\n styleUrls: ['./label-dictionary-dialog.component.scss'],\n})\nexport class LabelDictionaryDialogComponent {\n constructor(\n private dialogRef: MatDialogRef,\n ) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

Label Dictionary

\n \n
\n","import { 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';\nimport { initializeLabelEditingProvider } from '../../../modeler/bpmn/modeler/labeling/dsLabelEditingProvider';\n\n@Component({\n selector: 'app-label-dictionary',\n templateUrl: './label-dictionary.component.html',\n styleUrls: ['./label-dictionary.component.scss'],\n})\nexport class LabelDictionaryComponent implements AfterViewInit {\n workobjectEntriesSubject: BehaviorSubject;\n activityEntriesSubject: BehaviorSubject;\n\n workObjectEntries: WorkObjectLabelEntry[];\n activityEntries: LabelEntry[];\n\n @Output()\n closeEmitter: EventEmitter = new EventEmitter();\n\n constructor(\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","
\n
\n

Work Objects

\n \n @for (\n workobjectEntry of workobjectEntriesSubject | async;\n track workobjectEntry\n ) {\n \n \n \n \n \n }\n \n
\n
\n

Activities

\n \n @for (\n activityEntry of activityEntriesSubject | async;\n track activityEntry\n ) {\n \n \n \n \n \n }\n \n
\n
\n\n \n \n\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;\n activityNumber: FormControl;\n multipleNumbers: FormControl;\n}\n\nexport namespace ActivityDialogForm {\n export function create(\n activityLabel: string,\n activityNumber: number | null,\n numberIsAllowedMultipleTimes: boolean,\n ): FormGroup {\n return new FormGroup({\n activityLabel: new FormControl(activityLabel, {\n nonNullable: true,\n }),\n activityNumber: new FormControl(activityNumber, [\n Validators.required,\n ]),\n multipleNumbers: new FormControl(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;\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,\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","\n

Edit Activity

\n
\n
\n \n Number\n \n \n \n multiple\n
\n \n Label\n \n \n
\n
\n\n\n \n \n\n","import { NgModule } from '@angular/core';\nimport { ActivityDialogComponent } from './activity-dialog/activity-dialog.component';\nimport { ModelerComponent } from './modeler/modeler.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [ActivityDialogComponent, ModelerComponent],\n exports: [ActivityDialogComponent, ModelerComponent],\n imports: [CommonModule, MaterialModule, ReactiveFormsModule],\n})\nexport class ModelerModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { ModelerService } from '../../services/modeler.service';\n\n@Component({\n selector: 'app-modeler',\n templateUrl: './modeler.component.html',\n styleUrls: ['./modeler.component.scss'],\n})\nexport class ModelerComponent implements OnInit {\n constructor(private modelerService: ModelerService) {}\n\n ngOnInit(): void {\n this.modelerService.postInit();\n }\n}\n","
\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 '../bpmn/modeler/labeling/dsLabelEditingProvider';\nimport {\n getMultipleNumberRegistry,\n getNumberRegistry,\n setNumberIsMultiple,\n updateExistingNumbersAtEditing,\n} from '../bpmn/modeler/numbering/numbering';\nimport activityUpdateHandler from '../bpmn/modeler/updateHandler/activityUpdateHandlers';\n\nimport massRenameHandler from '../bpmn/modeler/updateHandler/massRenameHandler';\nimport elementUpdateHandler from '../bpmn/modeler/updateHandler/elementUpdateHandler';\nimport headlineAndDescriptionUpdateHandler from '../bpmn/modeler/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 canvas: any,\n selection: any,\n modeler: 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/bpmn';\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 '../bpmn/modeler/numbering/numbering';\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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 ) {}\n\n private modeler: any;\n private canvas: any;\n private elementRegistry: any;\n private commandStack: any;\n private selection: any;\n private eventBus: any;\n\n private encoded: string | undefined;\n\n postInit(): void {\n const 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.initializerService.initializeDomainStoryModelerClasses();\n this.modeler = new DomainStoryModeler({\n container: '#canvas',\n keyboard: {\n bindTo: document,\n },\n\n // Disable BPMN-SearchModule and re-enable browser Search\n additionalModules: [\n {\n bpmnSearch: ['value', 'foo'],\n },\n ],\n });\n\n if (this.modeler.get) {\n this.canvas = this.modeler.get('canvas');\n this.elementRegistry = this.modeler.get('elementRegistry');\n this.eventBus = this.modeler.get('eventBus');\n this.commandStack = this.modeler.get('commandStack');\n this.selection = this.modeler.get('selection');\n }\n\n this.initializerService.initializeDomainStoryModelerEventHandlers(\n this.commandStack,\n this.eventBus,\n );\n this.initializerService.propagateDomainStoryModelerClassesToServices(\n this.commandStack,\n this.elementRegistry,\n this.canvas,\n this.selection,\n this.modeler,\n );\n\n const exportArtifacts = this.debounce(this.saveSVG, 500);\n if (this.modeler.get) {\n this.modeler.on('commandStack.changed', exportArtifacts);\n }\n\n this.initializerService.initiateEventBusListeners(\n this.eventBus,\n this.commandStack,\n );\n\n this.modeler.createDiagram();\n // expose bpmnjs to window for debugging purposes\n assign(window, { bpmnjs: this.modeler });\n\n this.startDebounce();\n }\n\n restart(\n iconSetConfiguration?: IconSetConfiguration,\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) => bo)\n .filter((bo) => bo.number !== null),\n );\n if (currentStory && this.modeler.get) {\n this.modeler.importCustomElements(currentStory);\n }\n }\n\n /** Interactions with the Modeler **/\n getModeler(): any {\n return this.modeler;\n }\n\n commandStackChanged(): void {\n // to update the title of the svg, we need to tell the command stack, that a value has changed\n this.eventBus.fire(\n 'commandStack.changed',\n this.debounce(this.saveSVG, 500),\n );\n }\n\n startDebounce(): void {\n this.debounce(this.saveSVG, 500);\n }\n\n debounce(fn: any, timeout: number): any {\n return () => {\n let timer;\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n // tslint:disable-next-line:no-unused-expression\n fn(this.modeler).then((svg: string) => {\n this.encoded = svg;\n }) as Promise;\n }, timeout);\n };\n }\n\n getEncoded(): string {\n return this.encoded ? this.encoded : '';\n }\n\n async saveSVG(modeler: any): Promise {\n try {\n const result = await modeler.saveSVG();\n return result.svg;\n } catch (err) {\n alert('There was an error saving the SVG.\\n' + err);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModelerService } from 'src/app/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 { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RendererService {\n constructor(\n private modelerService: ModelerService,\n private elementRegistryService: ElementRegistryService,\n private dirtyFlagService: DirtyFlagService,\n ) {}\n\n renderStory(domainStory: BusinessObject[]): void {\n this.modelerService.getModeler().importCustomElements(domainStory);\n }\n\n reset(): void {\n this.renderStory([]);\n this.dirtyFlagService.makeClean();\n }\n\n importStory(\n domainStory: BusinessObject[],\n configurationChange: boolean,\n config?: IconSetConfiguration,\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_BACKGROUNG_COLOR = '#43acbf';\nexport const HIGHLIGHT_NUMBER_COLOR = 'black';\nexport const HIGHLIGHT_STROKE_WIDTH = '4';\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_BACKGROUNG_COLOR,\n HIGHLIGHT_NUMBER_COLOR,\n HIGHLIGHT_STROKE_WIDTH,\n NUMBER_BACKGROUND_COLOR,\n NUMBER_COLOR,\n STROKE_WIDTH,\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: SVGPolylineElement): 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 =\n querySelector.getElementsByTagName('polyline')[0];\n\n activityDomObject.style.stroke =\n activity.businessObject.pickedColor || 'black';\n activityDomObject.style.strokeWidth = STROKE_WIDTH;\n\n const { numberBackgroundDom, numberTextDom } =\n this.getNumberDomForActivity(activityDomObject);\n if (numberBackgroundDom && numberTextDom) {\n numberBackgroundDom.style.fill = NUMBER_BACKGROUND_COLOR;\n numberTextDom.style.fill = NUMBER_COLOR;\n }\n }\n });\n\n allConnections.forEach((connection) => {\n // @ts-ignore\n const connectionDomObject = document\n .querySelector('[data-element-id=' + connection.id + ']')\n .getElementsByTagName('polyline')[0];\n\n connectionDomObject.style.stroke =\n connection.businessObject.pickedColor || 'black';\n connectionDomObject.style.strokeWidth = '1.5';\n });\n }\n\n private 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 =\n querySelector.getElementsByTagName('polyline')[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_BACKGROUNG_COLOR;\n numberTextDom.style.fill = HIGHLIGHT_NUMBER_COLOR;\n }\n }\n });\n }\n\n private getAllNotShown(shownElements: BusinessObject[]): BusinessObject[] {\n const notShownElements: BusinessObject[] = [];\n const allObjects = this.elementRegistryService\n .getAllCanvasObjects()\n .concat(this.elementRegistryService.getAllGroups());\n\n allObjects.forEach((element) => {\n if (!shownElements.includes(element.businessObject)) {\n if (element.type.includes(ElementTypes.CONNECTION)) {\n // @ts-ignore\n if (!element.source.type.includes(ElementTypes.GROUP)) {\n notShownElements.push(element.businessObject);\n } else {\n // @ts-ignore\n shownElements.push(element.target);\n }\n } else {\n notShownElements.push(element.businessObject);\n }\n }\n });\n return notShownElements;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { 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_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(-1);\n private maxSentenceNumber = new BehaviorSubject(0);\n private replayOnSubject = new BehaviorSubject(false);\n\n currentSentence$: Observable = this.currentSentence.asObservable();\n maxSentenceNumber$: Observable =\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_INFO,\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 initialSource: CanvasObject[] = [];\n const activities = tracedActivity;\n const targetObjects: CanvasObject[] = [];\n\n tracedActivity.forEach((parallelSentence: ActivityCanvasObject) => {\n initialSource.push(parallelSentence.source);\n\n const firstTarget = parallelSentence.target;\n targetObjects.push(firstTarget);\n\n // check the outgoing activities for each target\n for (const checkTarget of targetObjects) {\n if (\n checkTarget.businessObject &&\n !checkTarget.businessObject.type.includes('actor') &&\n checkTarget.outgoing\n ) {\n // check the target for each outgoing activity\n checkTarget.outgoing.forEach((activity: ActivityCanvasObject) => {\n activities.push(activity);\n const activityTarget = activity.target;\n if (activityTarget && !targetObjects.includes(activityTarget)) {\n targetObjects.push(activityTarget);\n }\n });\n }\n }\n });\n return initialSource\n .map((e) => e.businessObject)\n .concat(activities.map((a) => a.businessObject))\n .concat(targetObjects.map((t) => t.businessObject));\n }\n\n private addGroupsToLastSentence(story: StorySentence[]): void {\n const groups = this.elementRegistryService.getAllGroups() as CanvasObject[];\n if (groups.length > 0 && story.length > 0) {\n story[story.length - 1].objects = story[story.length - 1].objects.concat(\n groups.map((g) => g.businessObject),\n );\n }\n }\n}\n","import { FormControl, FormGroup } from '@angular/forms';\n\nexport interface TitleDialogForm {\n title: FormControl;\n description: FormControl;\n}\n\nexport namespace TitleDialogForm {\n export function create(\n titel: string,\n description: string,\n ): FormGroup {\n return new FormGroup({\n title: new FormControl(titel),\n description: new FormControl(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;\n\n constructor(\n private dialogRef: MatDialogRef,\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","\n
\n \n Title\n \n \n
\n \n Description\n \n \n
\n
\n\n\n \n \n\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_ICON_SET_NAME,\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(INITIAL_TITLE);\n private descriptionSubject = new BehaviorSubject(INITIAL_DESCRIPTION);\n private iconSetNameSubject = new BehaviorSubject(\n INITIAL_ICON_SET_NAME,\n );\n private showDescriptionSubject = new BehaviorSubject(true);\n\n title$ = this.titleSubject.asObservable();\n description$ = this.descriptionSubject.asObservable();\n showDescription$ = this.showDescriptionSubject.asObservable();\n iconSetName$ = this.iconSetNameSubject.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 setIconSetName(name: string): void {\n this.iconSetNameSubject.next(name);\n }\n\n getTitle(): string {\n return this.titleSubject.value;\n }\n\n getDescription(): string {\n return this.descriptionSubject.value;\n }\n\n getIconSetName(): string {\n return this.iconSetNameSubject.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","export function rgbaToHex(rgba: string) {\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\n// sanitize user-Input to be Desktop-Filename safe\nexport function sanitizeForDesktop(str: string): string {\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n };\n const reg = /[/\\\\:*?\"<>|]/gi;\n return str ? str.replace(reg, (match) => map[match]) : '';\n}\n\nexport function sanitizeIconName(name: string): string {\n 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';\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 @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();\n @Output()\n openSettings = new EventEmitter();\n @Output()\n startReplay = new EventEmitter();\n @Output()\n stopReplay = new EventEmitter();\n @Output()\n previousSentence = new EventEmitter();\n @Output()\n nextSentence = new EventEmitter();\n @Output()\n newStory = new EventEmitter();\n @Output()\n showKeyboardShortCuts = new EventEmitter();\n @Output()\n openLabelDictionary = new EventEmitter();\n @Output()\n openDownloadDialog = new EventEmitter();\n @Output()\n openUploadUrlDialog = new EventEmitter();\n}\n","@if (!isReplaying) {\n
\n \n play_arrow \n \n\n \n unarchive \n \n\n \n cloud_upload \n \n\n \n \n @if (!isDirty) {\n \n archive\n \n }\n @if (isDirty) {\n archive \n }\n \n \n \n spellcheck\n \n \n \n \n keyboard \n \n \n note_add \n \n
\n}\n@if (isReplaying) {\n
\n \n skip_previous \n \n \n skip_next \n \n \n stop \n \n
\n}\n","import { Component } from '@angular/core';\nimport { combineLatest, map, 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;\n isDirty$: Observable;\n sentenceDescription$: Observable;\n showDescription: Observable;\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.sentenceDescription$ = combineLatest([\n this.replayService.currentSentence$,\n this.replayService.maxSentenceNumber$,\n ]).pipe(map(([sentence, count]) => `${sentence}/${count}`));\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 this.titleService.reset();\n this.renderService.reset();\n }\n\n onImport(): void {\n this.importService.performImport();\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 openUploadUrlDialog(): void {\n this.importService.openUploadUrlDialog();\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","\n \n @if (showDescription | async) {\n \n \n expand_less\n \n \n }\n @if (!(showDescription | async)) {\n \n \n expand_more\n \n }\n
\n \n {{ title$ | async }}\n edit \n \n
\n\n \n\n @if (isReplay$ | async) {\n \n Sentence: {{ sentenceDescription$ | async }}\n }\n\n \n \n
\n
\n@if (showDescription$ | async) {\n \n {{ description$ | async }}\n \n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-general-settings',\n templateUrl: './general-settings.component.html',\n styleUrls: ['./general-settings.component.scss'],\n})\nexport class GeneralSettingsComponent {}\n","
\n \n
\n","import { Component } from '@angular/core';\nimport { SettingsService } from 'src/app/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 { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent {\n iconSetConfiguration: IconSetConfiguration | undefined;\n showGeneralSettings = new BehaviorSubject(false);\n showIconSetCustomization = new BehaviorSubject(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.showGeneralSettings.next(true);\n this.showIconSetCustomization.next(false);\n }\n\n openIconSetCustomization() {\n this.showGeneralSettings.next(false);\n this.showIconSetCustomization.next(true);\n }\n}\n","
\n \n \n \n
\n \n Customize Icons for Your Domain\n \n \n General Settings\n \n
\n
\n
\n\n @if (showGeneralSettings | async) {\n \n }\n @if (showIconSetCustomization | async) {\n \n }\n
\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 { GeneralSettingsComponent } from './settings/general/general-settings.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: [\n HeaderComponent,\n HeaderButtonsComponent,\n GeneralSettingsComponent,\n SettingsComponent,\n ],\n exports: [\n HeaderComponent,\n HeaderButtonsComponent,\n GeneralSettingsComponent,\n SettingsComponent,\n ],\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: '2.1.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","Modeler","ResizeModule","assign","isArray","inherits","DomainStoryModule","LabelEditingModule","ModelingModule","ElementTypes","DomainStoryModeler","options","call","_customElements","_groupElements","prototype","_modules","concat","_addCustomShape","customElement","parentId","parent","children","push","canvas","get","elementFactory","customAttrs","businessObject","customShape","create","isGroup","id","parentShape","addShape","_addCustomConnection","elementRegistry","connection","source","target","addConnection","importCustomElements","elements","fire","addCustomElements","customElements","Error","shapes","connections","groups","forEach","isConnection","getCustomElements","createDiagram","done","element","type","ACTIVITY","CONNECTION","GROUP","Replace","modeling","_modeling","replaceElement","oldElement","newElementData","newElement","setCenterOfElement","outgoingActivities","outgoing","incomingActivities","incoming","x","Math","ceil","y","height","name","replaceShape","replaceOptions","ReplaceMenuProvider","_dsReplace","$inject","getEntries","entries","includes","actorReplaceOptions","workObjectReplaceOptions","_createEntries","menuEntries","self","definition","entry","_createMenuEntry","action","replaceAction","label","className","actionName","iconDictionaryService","initializeReplaceOptions","iconDictionary","actorTypes","getTypeDictionary","ACTOR","replaceOption","keysArray","actorType","typeName","toLowerCase","getIconForBPMN","workObjectTypes","WORKOBJECT","workObjectType","ContextPadProvider","bind","generateAutomaticNumber","getAllStandardIconKeys","hexToRGBA","isHexWithAlpha","rgbaToHex","dirtyFlagService","initializeContextPadProvider","dirtyFlag","DomainStoryContextPadProvider","injector","connect","translate","contextPad","popupMenu","replaceMenuProvider","commandStack","eventBus","startConnect","selectedElement","invoke","autoPlace","cached","getContextPadEntries","addEventListener","event","executeCommandStack","registerProvider","pickedColor","dispatchEvent","CustomEvent","detail","color","allStandardIconKeys","actions","autoActivate","start","addColorChange","addConnectWithActivity","addTextAnnotation","addActors","appendAction","addWorkObjects","addChangeWorkObjectTypeMenu","addChangeActorTypeMenu","delete","deleteGroup","group","click","removeGroup","makeDirty","moveDeleteActionToEndOfArray","removeElements","TEXTANNOTATION","changeDirection","position","getReplaceMenuPosition","cursor","open","colorChange","dragstart","icon","context","newNumber","execute","Y_OFFSET","diagramContainer","getContainer","pad","getPad","html","diagramRect","getBoundingClientRect","padRect","top","left","appendStart","shape","createShape","hints","getSelectedBusinessObject","oldColor","newColor","selectedBusinessObject","BpmnElementFactory","DEFAULT_LABEL_SIZE","DomainStoryIdFactory","DomainStoryElementFactory","bpmnFactory","moddle","domainStoryIdFactory","elementType","attrs","baseCreate","test","registerId","getId","key","set","value","$type","di","$descriptor","_getCustomElementSize","Object","defineProperty","createBpmnElement","__default","Dimensions","idList","generateId","idNumber","fourDigitsId","idSuffix","containsId","floor","random","same","BaseRenderer","Ids","getAnnotationBoxHeight","componentsToPath","createLine","append","svgAppend","attr","svgAttr","classes","svgClasses","svgCreate","query","domQuery","isObject","getNumberStash","addNumberToRegistry","numberBoxDefinitions","calculateTextWidth","countLines","labelPosition","angleBetween","isCustomIcon","isCustomSvgIcon","RENDERER_IDS","numbers","DEFAULT_COLOR","_iconDictionaryService","_elementRegistryService","_dirtyFlagService","initializeRenderer","elementRegistryService","DomainStoryRenderer","styles","textRenderer","pathMap","rendererId","next","markers","computeStyle","generateActivityNumber","parentGfx","box","numberStash","semantic","use","number","newRenderedNumber","renderNumber","numberStyle","fitBox","style","getExternalStyle","fill","backgroundBoxStyle","fontFamily","backgroundDotStyle","renderEmbeddedLabel","align","padding","renderLabel","renderExternalLabel","waypoints","lines","startPoint","selected","endPoint","angle","alignment","boxWidth","xStart","abs","textAlign","wordWrap","overflowWrap","hyphens","renderExternalNumber","String","createText","add","setCoordinates","circle","radius","d","stroke","innerHTML","manipulateInnerHTMLXLabel","manipulateInnerHTMLYLabel","attributes","nodeValue","offset","result","Number","drawGroup","rect","drawRect","applyColorToCustomSvgIcon","iconSvg","rest","base64Svg","svg","atob","coloredSvg","applyColorToIcon","encodedColoredSvg","btoa","match","some","it","replaceAll","index","indexOf","substring","getIconSvg","dataURL","drawActor","svgDynamicSizeAttributes","iconSRC","getTypeIconSRC","getIconId","actor","drawWorkObject","workObject","useColorForActivity","strokeWidth","strokeLinejoin","markerEnd","marker","drawActivity","p","adjustForTextOverlap","fixConnectionInHTML","parentElement","checkIfPointOverlapsText","point","lineOffset","getLineOffset","objects","getElementsByClassName","data_id","item","getAttribute","object","getElementsByTagName","tspans","tspan","wantedConnection","polylines","drawDSConnection","strokeDasharray","drawAnnotation","textElement","textPathData","getScaledPath","xScaleFactor","yScaleFactor","containerWidth","containerHeight","mx","my","drawPath","path","r","rx","ry","createMarker","sequenceflowEnd","addMarker","ref","scale","strokeLinecap","viewBox","refX","refY","markerWidth","markerHeight","orient","defs","_svg","getWorkObjectPath","rectangle","getRectPath","getGroupPath","getActivityPath","map","original","activityPath","waypoint","getActorPath","canRender","drawShape","startsWith","search","pos","correctInitialize","getShapePath","drawConnection","every","reduce","RuleProvider","is","HIGH_PRIORITY","MIN_SIZE","isDomainStory","isDomainStoryGroup","isActor","isWorkObject","isActivity","isAnnotation","canConnect","canResize","newBounds","lowerLeft","lowerRight","upperRight","canAttach","Array","canConnectToAnnotation","DomainStoryRules","init","canCreate","addRule","host","s","undefined","hover","pick","CommandInterceptor","collectionAdd","remove","collectionRemove","reworkGroupElements","DomainStoryUpdater","bpmnjs","updateCustomElement","e","DOMAINSTORY","updateCustomConnection","newTarget","newSource","copyWaypoints","executed","ifDomainStoryElement","reverted","fn","DomainStoryPalette","ElementFactory","CreateModule","PathMap","PopupMenuModule","ContextPadModule","CommandStack","UpdateLabelHandler","headlineAndDescriptionUpdateHandler","DSModeling","__depends__","__init__","domainStoryRenderer","paletteProvider","domainStoryRules","domainStoryUpdater","contextPadProvider","elementFactoryBpmn","updateLabelHandler","svgRemove","MARKER_HIDDEN","MARKER_LABEL_HIDDEN","DSLabelEditingPreview","defaultLayer","getDefaultLayer","absoluteElementBBox","gfx","on","activeProvider","active","getAbsoluteBBox","getStrokeColor","labelTarget","dy","newElementHeight","max","removeMarker","autocomplete","getLabel","isAny","getExternalLabelMid","hasExternalLabel","isLabel","isLabelExternal","dictionaryService","stashUse","initializeLabelEditingProvider","labelingDictionary","toggleStashUse","focusElement","setTimeout","focus","DSLabelEditingProvider","directEditing","resizeHandles","_canvas","_textRenderer","_updateLabelHandler","activateDirectEdit","complete","isActive","cancel","removeResizers","createAutocomplete","canExecute","isTouch","editingBox","force","activate","getUniqueWorkObjectNames","bounds","getEditingBBox","autoResize","resizable","bbox","mid","zoom","defaultStyle","getDefaultStyle","externalStyle","externalFontSize","externalLineHeight","lineHeight","defaultFontSize","defaultLineHeight","fontWeight","minWidth","maxWidth","minHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","externalLabelMid","absoluteBBox","update","newLabel","activeContextText","updateLabel","getLabelAttr","getNumberAttr","getNumber","setLabel","setNumber","textNumber","selectPartOfActivity","angleActivity","selectedActivity","linelength","fontsize","input","workObjectNames","closeAllLists","currentFocus","filteredWorkObjectNames","autocompleteList","autocompleteItem","val","parentNode","toUpperCase","visibility","onkeydown","getElementById","keyCode","addActive","preventDefault","removeActive","classList","survivor","removeChild","ChangeSupportModule","DirectEditingModule","dSlabelEditingProvider","dSlabelEditingPreview","str","amountWaypoints","determinedPosition","xPos","yPos","labelPositionX","labelPositionY","offsetX","scaledAngle","offsetY","Modeling","_commandStack","updateNumber","oldShape","newShape","newData","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","overrideAppendedIcons","Dictionary","APPENDED_ICONS_TAG","configuration","initializePalette","configurationService","PaletteProvider","palette","spaceTool","lassoTool","_create","_elementFactory","_spaceTool","_lassoTool","getPaletteEntries","createAction","createListener","isExpanded","shortType","initPalette","appendCSSStyleCheat","customIcons","sheetEl","head","customIconDict","appendDict","customIconDictKeys","getAppendedIconDictionary","has","src","iconStyle","wrapSRCInSVG","sheet","insertRule","cssRules","config","getCurrentIconConfigurationForBPMN","localStorage","getItem","JSON","parse","customIconsLegacy","convertLegacyAppendedIconsToDict","customIconsDict","putEntry","initTypeDictionaries","actors","workObjects","addCanvasObjectTypes","separator","activateSelection","keys","dict","initializeActivityUpdateHandler","activityUpdateHandler","registerHandler","activity_directionChange","activity_changed","preExecute","oldLabel","oldNumbersWithIDs","oldNumber","revert","revertAutomaticNumberGenerationChange","oldWaypoints","swapSource","newWaypoints","getActivitesFromActors","splice","undoGroupRework","elementUpdateHandler","element_colorChange","removeGroupWithoutChildren","child","titleService","handlerFunction","oldTitle","getTitle","oldDescription","getDescription","updateTitleAndDescription","newTitle","newDescription","DSMassRenameHandler","massRename","relevantElements","confirm","newValue","getBusinessObject","NULL_DIMENSIONS","labelCenter","createLabel","setText","postExecute","trim","removeShape","bo","getLayoutedBounds","resizeShape","numberTarget","innerShape","superParent","svgShape","querySelector","svgGroup","svgGroupParent","BehaviorSubject","environment","ColorPickerDirective","BLACK","BLUE","CYAN","DARK_PINK","GREEN","GREY","LIGHT_PINK","LIME","ORANGE","PURPLE","RED","SNACKBAR_DURATION","SNACKBAR_INFO","YELLOW","i0","ɵɵelement","AppComponent","constructor","settingsService","exportService","autosaveService","cd","snackbar","replayService","version","skipNextColorUpdate","colorBox","showSettings$","showDescription$","ctrlKey","stopPropagation","isDomainStoryExportable","downloadDST","getReplayOn","nextSentence","previousSentence","colorPicker","closeDialog","customEvent","openDialog","duration","panelClass","ngOnInit","onColorChanged","ngAfterViewInit","loadLatestDraft","detectChanges","_","ɵɵdirectiveInject","i1","SettingsService","i2","TitleService","i3","ExportService","i4","AutosaveService","ChangeDetectorRef","i5","MatSnackBar","i6","ReplayService","_2","selectors","viewQuery","AppComponent_Query","rf","ɵɵelementStart","ɵɵtwoWayListener","AppComponent_Template_input_colorPickerChange_1_listener","$event","ɵɵtwoWayBindingSet","ɵɵlistener","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","DirtyFlagService","IconSetChangedService","WorkbenchModule","DomainModule","AutosaveModule","ExportModule","IconSetConfigModule","ImportModule","LabelDictionaryModule","ModelerModule","TitleModule","AppModule","ngDoBootstrap","app","componentElement","body","bootstrap","ɵɵinject","_3","provide","useValue","clickAction","useFactory","initialize","deps","useExisting","imports","declarations","labelDictionaryService","Configuration","INITIAL_TITLE","INITIAL_DESCRIPTION","INITIAL_ICON_SET_NAME","ICON_SET_CONFIGURATION_TAG","DEFAULT_AUTOSAVES_ENABLED","DEFAULT_AUTOSAVES_MAX_DRAFTS","DEFAULT_AUTOSAVES_INTERVAL","SNACKBAR_DURATION_LONG","SNACKBAR_DURATION_LONGER","SNACKBAR_SUCCESS","SNACKBAR_ERROR","IMPLICIT_ROOT_ID","all","size","isEmpty","Entry","addEach","clear","filter","found","InfoDialogData","infoText","isInfo","isLink","linkText","InfoDialogComponent","CommonModule","exports","MAT_DIALOG_DATA","ɵɵtextInterpolate1","ctx_r0","ɵɵpropertyInterpolate","ɵɵsanitizeUrl","InfoDialogComponent_Conditional_5_Template_button_click_1_listener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","close","dialogRef","showConfirmButton","hasLink","span","scrollHeight","MatDialogRef","decls","vars","consts","template","InfoDialogComponent_Template","InfoDialogComponent_Conditional_3_Template","InfoDialogComponent_Conditional_4_Template","InfoDialogComponent_Conditional_5_Template","CommandStackService","setCommandStack","payload","factory","ɵfac","providedIn","MatDialogConfig","DialogService","matDialog","dialog","openKeyboardShortcutsDialog","shortCutText","disableClose","autoFocus","MatDialog","isDirtySubject","dirty$","asObservable","makeClean","dirty","fullyInitialized","registry","__implicitroot","setElementRegistry","_elements","createObjectListForDSTDownload","allObjectsFromCanvas","getAllCanvasObjects","getAllGroups","objectList","fillListOfCanvasObjects","canvasElement","unshift","getAllActivities","getAllConnections","allObjects","groupObjects","checkChildForGroup","currentGroup","pop","registryElementNames","sort","activityCanvasA","activityCanvasB","activityNumberA","activityNumberB","getUsedIcons","getAllActors","workobjects","getAllWorkobjects","a","w","co","StorageService","setItem","stringify","json","MatDialogModule","MatFormFieldModule","MatInputModule","MatToolbarModule","MatExpansionModule","MatCardModule","MatSnackBarModule","MatButtonModule","MatGridListModule","MatButtonToggleModule","MatListModule","MatCheckboxModule","AutosaveOptionsComponent_Conditional_0_Template_button_click_20_listener","_r1","activated_r2","ɵɵreference","interval_r3","drafts_r4","ctx_r4","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_r3","$implicit","ctx_r3","loadDraft","date","ɵɵrepeaterCreate","AutosavedDraftsComponent_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIdentity","AutosavedDraftsComponent_Conditional_7_Template_button_click_5_listener","removeAllDrafts","ɵɵrepeater","drafts","AutosavedDraftsComponent","subscription","autosavedDraftsChanged$","subscribe","initDrafts","loadCurrentDrafts","draft","AutosavedDraftsComponent_Template","AutosavedDraftsComponent_Conditional_7_Template","AutosavedDraftsComponent_Conditional_8_Template","ɵɵtextInterpolate2","FormsModule","ReplaySubject","AUTOSAVE_CONFIGURATION_TAG","defaultConfiguration","storageService","configurationSubject","initializeConfiguration","loadConfiguration","saveConfiguration","Subject","DRAFTS_TAG","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","i7","i8","ExportDialogData","ExportOption","tooltip","ConfigAndDST","testConfigAndDst","DEFAULT_PADDING","ExportDialogComponent_For_18_Template_button_click_0_listener","i_r2","$index","ctx_r2","doOption","option_r4","ExportDialogComponent","withTitle","useWhiteBackground","updateWithTitle","updateUseWhiteBackground","ExportDialogComponent_Template","ExportDialogComponent_Template_input_change_4_listener","ExportDialogComponent_Template_input_change_9_listener","ExportDialogComponent_Template_button_click_15_listener","ExportDialogComponent_For_18_Template","sanitizeForDesktop","formatDate","pngService","svgService","htmlPresentationService","modelerService","dialogService","titleSubscription","title$","descriptionSubscription","description$","ngOnDestroy","unsubscribe","DomainStory","getCurrentConfigurationForExport","getStoryForDownload","filename","getCurrentDateString","downloadFile","datatype","fileEnding","encodeURIComponent","display","downloadSVG","svgData","createSVGData","downloadPNG","container","svgElements","outerSVGElement","viewport","layerBase","image","extractSVG","prepareSVG","onload","getWidth","getHeight","fillStyle","drawImage","png64","toDataURL","ele","onchange","downloadHTMLPresentation","modeler","then","info","openDownloadDialog","SVGDownloadOption","EGNDownloadOption","PNGDownloadOption","HTMLDownloadOption","getModeler","PngService","SvgService","HtmlPresentationService","ModelerService","i9","i10","doT","storyCreatorService","viewBoxCoordinates","ViewBoxCoordinate","_this","_asyncToGenerator","startReplay","saveSVG","fixActivityMarkersForEachSentence","getCurrentSentenceNumber","content","transition","err","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","parseInt","findMostOuterElements","xRight","yDown","sub","elXLeft","elXRight","elYUp","elYDown","transform","nums","rects","outerRect","calculateWidthAndHeight","insertIndex","join","extraHeight","layerResizers","layerOverlays","removeAttribute","XMLSerializer","serializeToString","cacheData","getEncoded","domainStorySvg","viewBoxWidth","viewBoxHeight","findIndexToInsertData","svgIndex","backgroundColorWhite","appendDST","appendedIcons","allIcons","Person","Group","Pet","Conversation","World","Store","Theater","Business","Water","Hotel","Dining","Courthouse","Flag","Place","Car","Bus","Train","Truck","Taxi","Bike","Boat","Motorcycle","Plane","Shuttle","Walking","Traffic","Commute","System","Printer","Document","Folder","Call","Email","Copyright","DNS","Settings","Cellphone","Update","Briefcase","Microphone","Signal","Key","Pencil","Sum","Headset","Keyboard","Mouse","Router","Scanner","Security","Desktop","Tablet","Label","Receipt","Calendar","Cloud","Assessment","Dashboard","Problem","Grid","Watch","Euro","Dollar","Info","Alarm","Wrench","Favorite","Gavel","Blind","Hourglass","Time","Search","Shopping","Couch","Attach","Ruler","Education","Accessible","Assignment","Battery","Book","Bug","Code","Crop","DVR","Extension","Face","Fastfood","Fingerprint","Hand","Help","Image","Lightbulb","Lock","Loyalty","Portrait","Rocket","Satellite","Share","Slideshow","Star","Sun","Table","Videocam","Wysiwyg","allIconsDict","newIcons","updateAppendedIcons","IconConfiguration","allIconDictionary","domainName","getDefaultConf","defaultConf","updateAllIconRegistry","appendSRCFile","actorsDict","workObjectsDict","newAppendedIcons","appen","createCustomConf","iconSetConfiguration","IconFilterEnum","DetailsListItemComponent","iconInitiated","ngAfterViewChecked","createIcon","img","inputs","DetailsListItemComponent_Template","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","ICON_PREFIX","sanitizeIconName","iconName_r1","ICON_FILTER_NONE","selectedActors","selectedWorkobjects","allIconNames","allFilteredIconNames","iconSetConfigurationTypes","getIconSetConfiguration","getFullDictionary","sortByName","selectedActors$","selectedWorkobjects$","allFiltered","getFilteredNamesForType","localeCompare","loadMinimalIconConfigurationWithDefaultIcons","resetIconSet","loadInitialConfiguration","saveIconSet","exportIconSet","startIconUpload","importIcon","files","iconInputFile","reader","FileReader","onloadend","addIMGToIconDictionary","registerIconForBPMN","addNewIcon","readAsDataURL","startIconSetImport","importIconSet","iconSetInputFile","importConfiguration","readAsText","filterForActors","ICON_FILTER_ACTOR","filterForWorkobjects","ICON_FILTER_WORKOBJECT","filterForUnassigned","ICON_FILTER_UNASSIGNED","filterByNameAndType","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_18_listener","IconSetConfigurationComponent_Template_button_click_20_listener","IconSetConfigurationComponent_Template_input_change_23_listener","IconSetConfigurationComponent_Template_button_click_24_listener","IconSetConfigurationComponent_Template_button_click_27_listener","IconSetConfigurationComponent_Template_button_click_31_listener","IconSetConfigurationComponent_Template_button_click_35_listener","IconSetConfigurationComponent_Template_input_change_38_listener","IconSetConfigurationComponent_Template_button_click_39_listener","IconSetConfigurationComponent_For_44_Template","IconSetDetailsComponent_For_12_Template_mat_list_item_dragover_0_listener","ctx_r1","allowDrop","IconSetDetailsComponent_For_12_Template_mat_list_item_dragstart_0_listener","i_r3","onDragStart","IconSetDetailsComponent_For_12_Template_mat_list_item_drop_0_listener","iconName_r5","onDrop","IconSetDetailsComponent_For_19_Template_mat_list_item_dragover_0_listener","_r6","IconSetDetailsComponent_For_19_Template_mat_list_item_dragstart_0_listener","i_r7","IconSetDetailsComponent_For_19_Template_mat_list_item_drop_0_listener","ctx_r7","iconName_r9","customizationService","draggedList","draggedIndex","iconSetName","iconSetName$","changeName","listName","list","sortedList","setSelectedActors","setSelectedWorkObject","IconSetDetailsComponent_Template","IconSetDetailsComponent_Template_input_input_5_listener","IconSetDetailsComponent_For_12_Template","IconSetDetailsComponent_For_19_Template","actorIconDictionary","workObjectDictionary","iconDictionaryForBPMN","iconConfig","allTypes","initDictionary","dictionary","customConfiguration","allInTypeDictionary","collection","allIn","addIconsFromIconSetConfiguration","dictionaryType","iconTypes","registerIconForType","addIconsToTypeDictionary","unregisterIconForType","extractCustomIconsFromDictionary","addNewIconsToDictionary","elementDictionary","sanitizedName","custom","addIconsToCss","fullDictionary","appendedDict","getTypeDictionaryKeys","getIconSource","elementOfType","getAllIconDictionary","getActorsDictionary","getWorkObjectsDictionary","getIconConfiguration","setCustomConfiguration","setIconSetName","exportConfiguration","configJSONString","getIconSetName","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","importedConfiguration","getConfiguration","selectedActorNames","selectActor","selectedWorkobjectNames","selectWorkObject","changedIconSet","deselectActor","deselectWorkobject","updateIcon","workobject","updateActorSubject","updateWorkObjectSubject","defaultConfig","workObjectName","actorName","updateAllIconBehaviourSubjects","resetToInitialConfiguration","usedIcons","imported","changedActors","changedWorkobjects","configurationActors","configurationWorkobjects","changedIconSetConfiguration","updateIcons","getAndClearSavedConfiguration","temp","iconDict","getSrcForIcon","iconBehaviourSubject","customIconSetConfiguration","rawSrc","ImportDialogComponent","fileUrl","doImport","updateUrl","ImportDialogComponent_Template","ImportDialogComponent_Template_input_input_4_listener","ImportDialogComponent_Template_button_click_9_listener","ImportDialogComponent_Template_button_click_11_listener","EventEmitter","importRepairService","importedConfigurationEmitter","performImport","file","dstSvgPattern","egnSvgPattern","endsWith","importDST","importEGN","commandStackChanged","importFromUrl","fetch","response","blob","catch","openUploadUrlDialog","isSVG","fileReader","titleText","restoreTitleFromFileName","fileReaderFunction","isEGN","dstText","removeXMLComments","dstAndConfig","extractDstAndConfig","removeWhitespacesFromIcons","configChanged","checkConfigForChanges","lastElement","importVersionNumber","handleVersionNumber","checkForUnreferencedElementsInActivitiesAndRepair","showBrokenImportDialog","adjustPositions","versionPrefix","lastIndexOf","updateCustomElementsPreviousV050","showPreviousV050Dialog","xmlText","newActorKeys","newWorkObjectKeys","currentActorKeys","currentWorkobjectKeys","changed","clearName","setImportedConfigurationAndEmit","message","emit","domainStoryRegex","svgRegex","egnSuffix","dstSuffix","svgSuffix","filenameWithoutDateSuffix","ImportRepairService","objectIDs","activityIndex","isFirst","findFirstElement","adjustElementPosition","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","Set","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","ModelerComponent","ReactiveFormsModule","postInit","ModelerComponent_Template","positionsMatch","massRenameHandler","InitializerService","propagateDomainStoryModelerClassesToServices","selection","initializeDomainStoryModelerEventHandlers","initiateEventBusListeners","activityDoubleClick","renderedNumberRegistry","allActivities","htmlCanvas","transformX","transformY","zoomX","zoomY","clickX","originalEvent","clickY","parseFloat","currentNum","tx","ty","tNumber","elementX","elementY","pasteColor","pasteText","pasteHeight","descriptor","oldBusinessObject","elementsKey","shift","saveActivityInputLabel","activityData","hasNumber","initializerService","keyboard","bindTo","additionalModules","bpmnSearch","exportArtifacts","debounce","window","startDebounce","restart","domainStory","currentStory","destroy","timeout","timer","clearTimeout","encoded","renderStory","reset","configurationChange","c","NUMBER_BACKGROUND_COLOR","NUMBER_COLOR","STROKE_WIDTH","HIGHLIGHT_NUMBER_BACKGROUNG_COLOR","HIGHLIGHT_NUMBER_COLOR","HIGHLIGHT_STROKE_WIDTH","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","traceActivitiesAndCreateStory","initializeReplay","showCurrentSentence","checkSequenceNumbers","missingSentences","getMissingSentences","sentence","getValue","tracedActivityMap","tracedActivityMapKeys","tracedItem","storyIndex","createSentence","addGroupsToLastSentence","tracedActivityMapKey","tracedActivity","getSentenceObjects","highlightedElements","t","highlightedObjects","allActivityNumbersFromActors","allActivityNumbers","highestSequenceNumber","initialSource","targetObjects","parallelSentence","firstTarget","checkTarget","activityTarget","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","iconSetNameSubject","showDescriptionSubject","openHeaderDialog","allowUndo","fireTitleAndDescriptionUpdate","updateTitle","updateDescription","inputTitle","setShowDescription","show","getVersion","hasTitleOrDescription","rgba","red","padStart","green","blue","alpha","round","isValidHex","hex","getChunksFromString","st","chunkSize","RegExp","convertHexUnitTo256","hexStr","repeat","getAlphafloat","EPSILON","hexArr","degrees","radians","PI","quadrant","adjacent","opposite","atan2","Point","reg","nameWithoutFileEnding","HeaderButtonsComponent_Conditional_0_Template_button_click_1_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_7_listener","HeaderButtonsComponent_Conditional_0_Template_input_change_10_listener","import","HeaderButtonsComponent_Conditional_0_Template_button_click_11_listener","HeaderButtonsComponent_Conditional_0_Conditional_12_Template","HeaderButtonsComponent_Conditional_0_Conditional_13_Template","HeaderButtonsComponent_Conditional_0_Template_button_click_14_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_17_listener","openSettings","HeaderButtonsComponent_Conditional_0_Template_button_click_20_listener","showKeyboardShortCuts","HeaderButtonsComponent_Conditional_0_Template_button_click_23_listener","newStory","hasDomainStory","hasTitle","isDirty","HeaderButtonsComponent_Conditional_1_Template_button_click_1_listener","_r3","HeaderButtonsComponent_Conditional_1_Template_button_click_4_listener","HeaderButtonsComponent_Conditional_1_Template_button_click_7_listener","HeaderButtonsComponent","isReplaying","HeaderButtonsComponent_Template","HeaderButtonsComponent_Conditional_0_Template","HeaderButtonsComponent_Conditional_1_Template","combineLatest","HeaderComponent_Conditional_2_Template_button_click_0_listener","HeaderComponent_Conditional_4_Template_button_click_0_listener","sentenceDescription$","HeaderComponent","importService","renderService","isReplay$","isDirty$","pipe","count","showDescription","createNewDomainStory","onImport","HeaderComponent_Template","HeaderComponent_Conditional_2_Template","HeaderComponent_Conditional_4_Template","HeaderComponent_Template_span_click_7_listener","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_openUploadUrlDialog_16_listener","HeaderComponent_Conditional_19_Template","GeneralSettingsComponent","GeneralSettingsComponent_Template","SettingsComponent","showGeneralSettings","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","error"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file +{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/tools/export/services/exportUtil.js","./src/app/tools/modeler/bpmn/index.js","./src/app/tools/modeler/bpmn/modeler/change-icon/replace.js","./src/app/tools/modeler/bpmn/modeler/change-icon/replaceMenuProvider.js","./src/app/tools/modeler/bpmn/modeler/change-icon/replaceOptions.js","./src/app/tools/modeler/bpmn/modeler/context-pad/domainStoryContextPadProvider.js","./src/app/tools/modeler/bpmn/modeler/domainStoryElementFactory.js","./src/app/tools/modeler/bpmn/modeler/domainStoryIdFactory.js","./src/app/tools/modeler/bpmn/modeler/domainStoryRenderer.js","./src/app/tools/modeler/bpmn/modeler/domainStoryRules.js","./src/app/tools/modeler/bpmn/modeler/domainStoryUpdater.js","./src/app/tools/modeler/bpmn/modeler/index.js","./src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingPreview.js","./src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingProvider.js","./src/app/tools/modeler/bpmn/modeler/labeling/dsLabelUtil.js","./src/app/tools/modeler/bpmn/modeler/labeling/index.js","./src/app/tools/modeler/bpmn/modeler/labeling/position.js","./src/app/tools/modeler/bpmn/modeler/modeling/dSModeling.js","./src/app/tools/modeler/bpmn/modeler/modeling/index.js","./src/app/tools/modeler/bpmn/modeler/numbering/numbering.js","./src/app/tools/modeler/bpmn/modeler/palette/domainStoryPalette.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/activityUpdateHandlers.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/elementUpdateHandler.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/headlineAndDescriptionUpdateHandler.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/massRenameHandler.js","./src/app/tools/modeler/bpmn/modeler/updateHandler/updateLabelHandler.js","./src/app/tools/modeler/bpmn/modeler/util.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/entities/infoDialogData.ts","./src/app/domain/presentation/domain.module.ts","./src/app/domain/presentation/info-dialog/info-dialog.component.ts","./src/app/domain/presentation/info-dialog/info-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/iconFilterEnum.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/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/presentation/modeler/modeler.component.ts","./src/app/tools/modeler/presentation/modeler/modeler.component.html","./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/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/general/general-settings.component.ts","./src/app/workbench/presentation/settings/general/general-settings.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 = createDescription(description, width);\n\n // to display the title and description in the SVG-file, we need to add a container for our text-elements\n\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 Modeler from \"bpmn-js/lib/Modeler\";\nimport ResizeModule from \"diagram-js/lib/features/resize\";\nimport { assign, isArray } from \"min-dash\";\nimport inherits from \"inherits\";\n\nimport DomainStoryModule from \"./modeler\";\nimport LabelEditingModule from \"./modeler/labeling\";\nimport ModelingModule from \"./modeler/modeling\";\nimport { ElementTypes } from \"../../../domain/entities/elementTypes\";\n\nexport default function DomainStoryModeler(options) {\n Modeler.call(this, options);\n\n this._customElements = [];\n this._groupElements = [];\n}\n\ninherits(DomainStoryModeler, Modeler);\n\nDomainStoryModeler.prototype._modules = [].concat(\n DomainStoryModeler.prototype._modules,\n [DomainStoryModule, LabelEditingModule, ModelingModule],\n [ResizeModule],\n);\n\n/**\n * add a single custom element to the underlying diagram\n *\n * @param {Object} customElement\n */\nDomainStoryModeler.prototype._addCustomShape = function (customElement) {\n let parentId = customElement.parent;\n delete customElement.children;\n delete customElement.parent;\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n let customShape = elementFactory.create(\"shape\", customAttrs);\n\n if (isGroup(customElement)) {\n this._groupElements[customElement.id] = customShape;\n }\n\n if (parentId) {\n let parentShape = this._groupElements[parentId];\n\n if (isGroup(parentShape)) {\n return canvas.addShape(customShape, parentShape, parentShape.id);\n }\n }\n return canvas.addShape(customShape);\n};\n\nDomainStoryModeler.prototype._addCustomConnection = function (customElement) {\n this._customElements.push(customElement);\n\n let canvas = this.get(\"canvas\"),\n elementFactory = this.get(\"elementFactory\"),\n elementRegistry = this.get(\"elementRegistry\");\n\n let customAttrs = assign({ businessObject: customElement }, customElement);\n\n let connection = elementFactory.create(\n \"connection\",\n assign(customAttrs, {\n source: elementRegistry.get(customElement.source),\n target: elementRegistry.get(customElement.target),\n }),\n elementRegistry.get(customElement.source).parent,\n );\n\n return canvas.addConnection(connection);\n};\n\n//** We import BusinessObjects, not the whole Canvas Object!!!!!!!!\nDomainStoryModeler.prototype.importCustomElements = function (elements) {\n this.get(\"eventBus\").fire(\"diagram.clear\", {});\n this._customElements = [];\n this._groupElements = [];\n\n this.addCustomElements(elements);\n};\n\n/**\n * add a number of custom elements and connections to the underlying diagram.\n *\n * @param {Array} customElements\n */\nDomainStoryModeler.prototype.addCustomElements = function (customElements) {\n if (!isArray(customElements)) {\n throw new Error(\"argument must be an array\");\n }\n\n let shapes = [],\n connections = [],\n groups = [];\n\n customElements.forEach(function (customElement) {\n if (isConnection(customElement)) {\n connections.push(customElement);\n } else if (isGroup(customElement)) {\n groups.push(customElement);\n } else {\n shapes.push(customElement);\n }\n });\n\n // add groups before shapes and shapes before connections so that connections\n // can already rely on the shapes being part of the diagram\n groups.forEach(this._addCustomShape, this);\n shapes.forEach(this._addCustomShape, this);\n connections.forEach(this._addCustomConnection, this);\n};\n\n/**\n * get custom elements with their current status.\n *\n * @return {Array} custom elements on the diagram\n */\nDomainStoryModeler.prototype.getCustomElements = function () {\n return this._customElements;\n};\n\n// override standard function to prevent default elements on canvas\nDomainStoryModeler.prototype.createDiagram = function (done) {};\n\nfunction isConnection(element) {\n return (\n element.type === ElementTypes.ACTIVITY ||\n element.type === ElementTypes.CONNECTION\n );\n}\n\nfunction isGroup(element) {\n return element && element.type === ElementTypes.GROUP;\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\n/**\n * service that allow replacing of elements.\n */\nexport default function Replace(modeling) {\n this._modeling = modeling;\n}\n\n/**\n * @param {Element} oldElement - element to be replaced\n * @param {Object} newElementData - containing information about the new Element, for example height, width, type.\n * @param modeling\n */\nfunction replaceElement(oldElement, newElementData, modeling) {\n // let modeling = this._modeling;\n\n let newElement = setCenterOfElement(newElementData, oldElement, modeling);\n let outgoingActivities = newElement.outgoing;\n let incomingActivities = newElement.incoming;\n\n outgoingActivities.forEach((element) => {\n element.businessObject.source = newElement.id;\n });\n\n incomingActivities.forEach((element) => {\n element.businessObject.target = newElement.id;\n });\n\n return newElement;\n}\n\nfunction setCenterOfElement(newElementData, oldElement, modeling) {\n newElementData.x = Math.ceil(\n oldElement.x + (newElementData.width || oldElement.width) / 2,\n );\n newElementData.y = Math.ceil(\n oldElement.y + (newElementData.height || oldElement.height) / 2,\n );\n\n assign(newElementData, { name: oldElement.businessObject.name });\n\n return modeling.replaceShape(oldElement, newElementData, {});\n}\n\nReplace.prototype.replaceElement = replaceElement;\n","\"use strict\";\n\nimport Replace from \"./replace\";\nimport * as replaceOptions from \"./replaceOptions\";\n\nimport { forEach } from \"min-dash\";\n\n/**\n * This module is an element agnostic replace menu provider for the popup menu.\n */\nexport default function ReplaceMenuProvider(modeling) {\n this._dsReplace = new Replace(modeling);\n this._modeling = modeling;\n}\n\nReplaceMenuProvider.$inject = [\"modeling\"];\n\n/**\n * Get all entries from replaceOptions for the given element and apply filters\n * on them. Get for example only elements, which are different from the current one.\n *\n * @param {djs.model.Base} element\n *\n * @return {Array} a list of menu entry items\n */\nReplaceMenuProvider.prototype.getEntries = function (element) {\n let entries;\n if (element.type.includes(\"actor\")) {\n entries = replaceOptions.actorReplaceOptions(element.type);\n } else if (element.type.includes(\"workObject\")) {\n entries = replaceOptions.workObjectReplaceOptions(element.type);\n }\n\n return this._createEntries(element, entries);\n};\n\n/**\n * Creates an array of menu entry objects for a given element and filters the replaceOptions\n * according to a filter function.\n *\n * @param {djs.model.Base} element\n * @param {Object} replaceOptions\n *\n * @return {Array} a list of menu items\n */\nReplaceMenuProvider.prototype._createEntries = function (\n element,\n replaceOptions,\n) {\n let menuEntries = [];\n\n let self = this;\n\n forEach(replaceOptions, function (definition) {\n let entry = self._createMenuEntry(definition, element);\n\n menuEntries.push(entry);\n });\n\n return menuEntries;\n};\n\n/**\n * Creates and returns a single menu entry item.\n *\n * @param {Object} definition a single replace options definition object\n * @param {djs.model.Base} element\n * @param {Function} [action] an action callback function which gets called when\n * the menu entry is being triggered.\n *\n * @return {Object} menu entry item\n */\nReplaceMenuProvider.prototype._createMenuEntry = function (\n definition,\n element,\n action,\n) {\n let replaceElement = this._dsReplace.replaceElement;\n let modeling = this._modeling;\n let replaceAction = function () {\n return replaceElement(element, definition.target, modeling);\n };\n\n action = action || replaceAction;\n\n return {\n label: definition.label,\n className: definition.className,\n id: definition.actionName,\n action: action,\n };\n};\n","import { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\nlet iconDictionaryService;\n\nexport function initializeReplaceOptions(iconDictionary) {\n iconDictionaryService = iconDictionary;\n}\n\nexport function actorReplaceOptions(name) {\n const actorTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.ACTOR,\n );\n\n let replaceOption = {};\n let i = 0;\n\n actorTypes.keysArray().forEach((actorType) => {\n if (!name.includes(actorType)) {\n const typeName = actorType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName.toLowerCase(),\n className: iconDictionaryService.getIconForBPMN(\n ElementTypes.ACTOR,\n actorType,\n ),\n target: {\n type: `${ElementTypes.ACTOR}${actorType}`,\n },\n };\n i++;\n }\n });\n return replaceOption;\n}\n\nexport function workObjectReplaceOptions(name) {\n const workObjectTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.WORKOBJECT,\n );\n\n let replaceOption = {};\n let i = 0;\n\n workObjectTypes.keysArray().forEach((workObjectType) => {\n if (!name.includes(workObjectType)) {\n const typeName = workObjectType;\n replaceOption[i] = {\n label: \"Change to \" + typeName,\n actionName: \"replace-with-actor-\" + typeName,\n className: iconDictionaryService.getIconForBPMN(\n ElementTypes.WORKOBJECT,\n workObjectType,\n ),\n target: {\n type: `${ElementTypes.WORKOBJECT}${workObjectType}`,\n },\n };\n }\n i++;\n });\n return replaceOption;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport ContextPadProvider from \"bpmn-js/lib/features/context-pad/ContextPadProvider\";\n\nimport { assign, bind } from \"min-dash\";\nimport { generateAutomaticNumber } from \"../numbering/numbering\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { getAllStandardIconKeys } from \"src/app/tools/icon-set-config/domain/allIcons\";\nimport {\n hexToRGBA,\n isHexWithAlpha,\n rgbaToHex,\n} from \"../../../../../utils/colorConverter\";\n\nlet dirtyFlagService;\nlet iconDictionaryService;\n\nexport function initializeContextPadProvider(dirtyFlag, iconDictionary) {\n dirtyFlagService = dirtyFlag;\n iconDictionaryService = iconDictionary;\n}\n\nexport default function DomainStoryContextPadProvider(\n injector,\n connect,\n translate,\n elementFactory,\n create,\n canvas,\n contextPad,\n popupMenu,\n replaceMenuProvider,\n commandStack,\n eventBus,\n modeling,\n) {\n let startConnect;\n let selectedElement;\n\n injector.invoke(ContextPadProvider, this);\n let autoPlace = injector.get(\"autoPlace\", false);\n\n let cached = bind(this.getContextPadEntries, this);\n\n document.addEventListener(\"pickedColor\", (event) => {\n if (selectedElement) {\n executeCommandStack(event);\n }\n });\n\n popupMenu.registerProvider(\"ds-replace\", replaceMenuProvider);\n popupMenu.registerProvider(\"bpmn-replace\", replaceMenuProvider);\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 const allStandardIconKeys = getAllStandardIconKeys();\n let actions = cached(element);\n\n startConnect = function (event, element, autoActivate) {\n connect.start(event, element, autoActivate);\n };\n\n if (element.type.includes(ElementTypes.WORKOBJECT)) {\n 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 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 delete actions.delete;\n addTextAnnotation(actions);\n assign(actions, {\n deleteGroup: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove Group without Child-Elements\",\n action: {\n click: function (event, element) {\n modeling.removeGroup(element);\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n addColorChange(actions);\n } else if (element.type.includes(ElementTypes.ACTIVITY)) {\n moveDeleteActionToEndOfArray(actions);\n\n addColorChange(actions);\n\n assign(actions, {\n delete: {\n group: \"edit\",\n className: \"bpmn-icon-trash\",\n title: \"Remove\",\n action: {\n click: function (event, element) {\n modeling.removeElements({ element });\n dirtyFlagService.makeDirty();\n },\n },\n },\n });\n } else if (element.type.includes(ElementTypes.TEXTANNOTATION)) {\n addColorChange(actions);\n }\n\n return actions;\n };\n\n function moveDeleteActionToEndOfArray(actions) {\n delete actions.delete;\n\n assign(actions, {\n changeDirection: {\n group: \"edit\",\n className: \"icon-domain-story-changeDirection\",\n title: translate(\"Change direction\"),\n action: {\n // event needs to be addressed\n click: function (event, element) {\n changeDirection(element);\n },\n },\n },\n });\n }\n\n function addChangeActorTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function addColorChange(actions) {\n assign(actions, {\n colorChange: {\n group: \"edit\",\n className: \"icon-domain-story-color-picker\",\n title: translate(\"Change color\"),\n action: {\n click: function (event, element) {\n 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 workObjectTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.WORKOBJECT,\n );\n workObjectTypes.keysArray().forEach((workObjectType) => {\n let name = workObjectType;\n let icon = iconDictionaryService.getIconForBPMN(\n ElementTypes.WORKOBJECT,\n workObjectType,\n );\n let action = [];\n action[\"append.workObject\" + name] = appendAction(\n `${ElementTypes.WORKOBJECT}${workObjectType}`,\n icon,\n name,\n \"workObjects\",\n );\n assign(actions, action);\n });\n }\n\n function addActors(appendAction, actions) {\n let actorTypes = iconDictionaryService.getTypeDictionary(\n ElementTypes.ACTOR,\n );\n actorTypes.keysArray().forEach((actorType) => {\n let name = actorType;\n let icon = iconDictionaryService.getIconForBPMN(\n ElementTypes.ACTOR,\n actorType,\n );\n let action = [];\n action[\"append.actor\" + name] = appendAction(\n `${ElementTypes.ACTOR}${actorType}`,\n icon,\n name,\n \"actors\",\n );\n assign(actions, action);\n });\n }\n\n function addChangeWorkObjectTypeMenu(actions) {\n assign(actions, {\n replace: {\n group: \"edit\",\n className: \"bpmn-icon-screw-wrench\",\n title: translate(\"Change type\"),\n action: {\n click: function (event, element) {\n let position = assign(getReplaceMenuPosition(element), {\n cursor: { x: event.x, y: event.y },\n });\n popupMenu.open(element, \"ds-replace\", position);\n },\n },\n },\n });\n }\n\n function changeDirection(element) {\n let context;\n let businessObject = element.businessObject;\n let newNumber;\n\n if (element.source.type.includes(ElementTypes.ACTOR)) {\n newNumber = 0;\n } else {\n newNumber = generateAutomaticNumber(element, commandStack);\n }\n context = {\n businessObject: businessObject,\n newNumber: newNumber,\n element: element,\n };\n commandStack.execute(\"activity.directionChange\", context);\n }\n\n function getReplaceMenuPosition(element) {\n let Y_OFFSET = 5;\n\n let diagramContainer = canvas.getContainer(),\n pad = contextPad.getPad(element).html;\n\n let diagramRect = diagramContainer.getBoundingClientRect(),\n padRect = pad.getBoundingClientRect();\n\n let top = padRect.top - diagramRect.top;\n let left = padRect.left - diagramRect.left;\n\n return {\n x: left,\n y: top + padRect.height + Y_OFFSET,\n };\n }\n\n /**\n * create an append action\n *\n * @param {String} type\n * @param {String} className\n * @param {String} [title]\n * @param {String} group\n * @param {Object} [options]\n *\n * @return {Object} descriptor\n */\n function appendAction(type, className, title, group, options) {\n if (typeof title !== \"string\") {\n options = title;\n title = translate(\"{type}\", { type: type.replace(/^domainStory:/, \"\") });\n }\n\n function appendStart(event, element) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n let context = {\n elements: [shape],\n hints: {},\n source: element,\n };\n create.start(event, shape, context);\n }\n\n return {\n group: group,\n className: className,\n title: \"Append \" + title,\n action: {\n dragstart: startConnect,\n click: appendStart,\n },\n };\n }\n\n 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\ninherits(DomainStoryContextPadProvider, ContextPadProvider);\n\nDomainStoryContextPadProvider.$inject = [\n \"injector\",\n \"connect\",\n \"translate\",\n \"elementFactory\",\n \"create\",\n \"canvas\",\n \"contextPad\",\n \"popupMenu\",\n \"replaceMenuProvider\",\n \"commandStack\",\n \"eventBus\",\n \"modeling\",\n];\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport inherits from \"inherits\";\n\nimport BpmnElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\n\nimport { DEFAULT_LABEL_SIZE } from \"bpmn-js/lib/util/LabelUtil\";\n\nimport DomainStoryIdFactory from \"./domainStoryIdFactory\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\n\n/**\n * A custom factory that knows how to create BPMN _and_ custom elements.\n */\nexport default function DomainStoryElementFactory(bpmnFactory, moddle) {\n BpmnElementFactory.call(this, bpmnFactory, moddle);\n\n let self = this;\n let domainStoryIdFactory = new DomainStoryIdFactory();\n\n /**\n * create a diagram-js element with the given type (any of shape, connection, label).\n *\n * @param {String} elementType\n * @param {Object} attrs\n *\n * @return {djs.model.Base}\n */\n this.create = function (elementType, attrs) {\n let type = attrs.type;\n\n if (elementType === \"label\") {\n return self.baseCreate(\n elementType,\n assign({ type: \"label\" }, DEFAULT_LABEL_SIZE, attrs),\n );\n }\n\n // add type to businessObject if custom\n if (/^domainStory:/.test(type)) {\n if (!attrs.businessObject) {\n attrs.businessObject = {\n type: type,\n name: attrs.name ? attrs.name : \"\",\n };\n }\n\n if (attrs.id) {\n domainStoryIdFactory.registerId(attrs.id);\n } else {\n attrs.id = domainStoryIdFactory.getId(elementType);\n }\n assign(attrs.businessObject, {\n id: attrs.id,\n });\n\n let id = attrs.id;\n attrs.businessObject.get = function (key) {\n if (key === \"id\") {\n return id;\n }\n };\n attrs.businessObject.set = function (key, value) {\n if (key === \"id\") {\n assign(attrs.businessObject, { id: value });\n }\n };\n\n if (!attrs.businessObject.$type) {\n assign(attrs.businessObject, { $type: \"Element\" });\n }\n assign(attrs.businessObject, { di: {} });\n if (!attrs.businessObject.$descriptor) {\n assign(attrs.businessObject, { $descriptor: {} });\n }\n\n // add width and height if shape\n if (\n (!/:activity$/.test(type) || !/:connection$/.test(type)) &&\n !((/:group$/.test(type) && attrs.height) || attrs.width)\n ) {\n assign(attrs, self._getCustomElementSize(type));\n }\n\n if (!(\"$instanceOf\" in attrs.businessObject)) {\n // ensure we can use ModelUtil#is for type checks\n Object.defineProperty(attrs.businessObject, \"$instanceOf\", {\n value: function (type) {\n return this.type === type;\n },\n });\n }\n\n return self.baseCreate(elementType, attrs);\n }\n\n return self.createBpmnElement(elementType, attrs);\n };\n}\n\ninherits(DomainStoryElementFactory, BpmnElementFactory);\n\nDomainStoryElementFactory.$inject = [\"bpmnFactory\", \"moddle\"];\n\n/**\n * returns the default size of custom shapes.\n *\n * the following example shows an interface on how\n * to setup the custom shape's dimensions.\n * *\n * @param {String} type\n *\n * @return {Dimensions} a {width, height} object representing the size of the element\n */\nDomainStoryElementFactory.prototype._getCustomElementSize = function (type) {\n let shapes = {\n __default: { width: 75, height: 75 },\n [ElementTypes.TEXTANNOTATION]: { width: 100, height: 30 },\n [ElementTypes.GROUP]: { width: 525, height: 275 },\n };\n\n return shapes[type] || shapes.__default;\n};\n\nclass Dimensions {\n width;\n height;\n}\n","\"use strict\";\n\nlet idList = [];\n\nexport default function DomainStoryIdFactory() {}\n\nDomainStoryIdFactory.prototype.getId = function (type) {\n return generateId(type);\n};\n\nDomainStoryIdFactory.prototype.registerId = function (id) {\n idList.push(id);\n};\n\nfunction generateId(type) {\n let idNumber = fourDigitsId();\n\n let id = type + \"_\" + idSuffix(idNumber);\n\n while (containsId(id)) {\n idNumber++;\n\n id = type + \"_\" + idSuffix(idNumber);\n }\n\n idList.push(id);\n return id;\n}\n\nfunction idSuffix(idNumber) {\n let id;\n if (idNumber > 9999) {\n id = 0;\n } else if (idNumber < 10) {\n id = \"000\" + idNumber;\n } else if (idNumber < 100) {\n id = \"00\" + idNumber;\n } else if (idNumber < 1000) {\n id = \"0\" + idNumber;\n } else {\n id = \"\" + idNumber;\n }\n return id;\n}\n\nfunction fourDigitsId() {\n return Math.floor(Math.random() * 10000);\n}\n\nexport function containsId(id) {\n let same = false;\n idList.forEach((element) => {\n if (id === element) {\n same = true;\n }\n });\n return same;\n}\n","\"use strict\";\n\nimport inherits from \"inherits\";\nimport BaseRenderer from \"diagram-js/lib/draw/BaseRenderer\";\nimport Ids from \"ids\";\nimport { getAnnotationBoxHeight } from \"src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingPreview\";\nimport { componentsToPath, createLine } from \"diagram-js/lib/util/RenderUtil\";\nimport {\n append as svgAppend,\n attr as svgAttr,\n classes as svgClasses,\n create as svgCreate,\n} from \"tiny-svg\";\nimport { query as domQuery } from \"min-dom\";\nimport { assign, isObject } from \"min-dash\";\nimport { getNumberStash } from \"src/app/tools/modeler/bpmn/modeler/labeling/dsLabelEditingProvider\";\nimport {\n addNumberToRegistry,\n generateAutomaticNumber,\n numberBoxDefinitions,\n} from \"src/app/tools/modeler/bpmn/modeler/numbering/numbering\";\n\nimport { calculateTextWidth } from \"src/app/tools/modeler/bpmn/modeler/labeling/dsLabelUtil\";\nimport {\n countLines,\n labelPosition,\n} from \"src/app/tools/modeler/bpmn/modeler/labeling/position\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { angleBetween } from \"../../../../utils/mathExtensions\";\nimport { isCustomIcon, isCustomSvgIcon } from \"./util\";\n\nlet RENDERER_IDS = new Ids();\nlet numbers = [];\nconst DEFAULT_COLOR = \"#000000\";\n\n/**\n * a renderer that knows how to render custom elements.\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 pathMap,\n commandStack,\n) {\n BaseRenderer.call(this, eventBus, 2000);\n\n let rendererId = RENDERER_IDS.next();\n let markers = {};\n let computeStyle = styles.computeStyle;\n\n // generate the automatic Number for an activity originating from an actor\n function generateActivityNumber(parentGfx, element, box) {\n // whenever we want to edit an activity, it gets redrawn as a new object\n // and the custom information is lost,\n // so we stash it before the editing occurs and set the value here\n\n let numberStash = getNumberStash();\n let semantic = element.businessObject;\n\n if (numberStash.use) {\n semantic.number = numberStash.number;\n }\n\n numbers[semantic.number] = true;\n 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 backgroundBoxStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n fontSize: 50,\n position: \"absolute\",\n fontFamily: \"Courier New\",\n }),\n };\n }\n\n function backgroundDotStyle(box) {\n return {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"white\",\n fontSize: 150,\n position: \"absolute\",\n fontFamily: \"Courier\",\n }),\n };\n }\n\n // render functions\n // render label associated with actors and workobjects\n function renderEmbeddedLabel(parentGfx, element, align, padding) {\n let businessObject = element.businessObject;\n return renderLabel(\n parentGfx,\n businessObject.name,\n {\n box: element,\n align: align,\n padding: padding ? padding : 0,\n style: {\n fill: \"#000000\",\n },\n },\n element.type,\n );\n }\n\n // render label associated with activities\n function renderExternalLabel(parentGfx, element) {\n let semantic = element.businessObject;\n let waypoints = element.waypoints;\n let lines = countLines(semantic.name);\n\n if (element.waypoints != null) {\n let position = labelPosition(waypoints, lines);\n let startPoint = element.waypoints[position.selected];\n let endPoint = element.waypoints[position.selected + 1];\n let angle = angleBetween(startPoint, endPoint);\n let alignment = \"left\";\n let boxWidth = 500;\n let xStart = position.x;\n\n // if the activity is horizontal, we want to center the label\n if (angle === 0 || angle === 180) {\n boxWidth = Math.abs(startPoint.x - endPoint.x);\n alignment = \"center\";\n xStart =\n (startPoint.x + endPoint.x) / 2 - calculateTextWidth(semantic.name);\n }\n\n let box = {\n textAlign: alignment,\n width: boxWidth,\n height: 30,\n x: xStart,\n y: position.y,\n };\n\n if (semantic.name && semantic.name.length) {\n return renderLabel(\n parentGfx,\n semantic.name,\n {\n box: box,\n fitBox: true,\n style: assign({}, textRenderer.getExternalStyle(), {\n fill: \"black\",\n wordWrap: \"break-word\",\n overflowWrap: \"break-word\",\n hyphens: \"auto\",\n }),\n },\n element.type,\n );\n }\n }\n }\n\n // render the number associated with an activity\n function renderExternalNumber(parentGfx, element) {\n if (element && element.source) {\n let semantic = element.businessObject;\n\n let box = numberBoxDefinitions(element);\n\n if (\n semantic.number == null &&\n element.source.type &&\n element.source.type.includes(ElementTypes.ACTOR)\n ) {\n generateAutomaticNumber(element, commandStack);\n }\n\n // render the background for the number\n if (semantic.number && element.source.type.includes(ElementTypes.ACTOR)) {\n generateActivityNumber(parentGfx, element, box);\n } else {\n semantic.number = null;\n }\n }\n }\n\n // render a number on the canvas\n function renderNumber(parentGfx, number, options, type) {\n if (number < 10) {\n number = String(number);\n }\n number = String(number);\n let text = textRenderer.createText(number || \"\", options);\n let height = 0;\n\n svgClasses(text).add(\"djs-labelNumber\");\n\n setCoordinates(type, text, options, height, parentGfx);\n\n // !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 renderEmbeddedLabel(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 renderEmbeddedLabel(parent, element, \"center\", -5);\n return actor;\n };\n\n this.drawWorkObject = function (parent, element) {\n let svgDynamicSizeAttributes = {\n width: element.width * 0.65,\n height: element.height * 0.65,\n x: element.width / 2 - 25,\n y: element.height / 2 - 25,\n },\n workObject;\n let iconSRC = _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 renderEmbeddedLabel(parent, element, \"center\", -5);\n\n return workObject;\n };\n\n function useColorForActivity(element) {\n if (!element.businessObject.pickedColor) {\n element.businessObject.pickedColor = \"black\";\n }\n let attrs = \"\";\n return computeStyle(attrs, {\n stroke: element.businessObject.pickedColor,\n fill: \"none\",\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n markerEnd: marker(\n \"activity\",\n \"black\",\n element.businessObject.pickedColor,\n ),\n });\n }\n\n this.drawActivity = function (p, element) {\n adjustForTextOverlap(element);\n\n if (element) {\n let attrs = useColorForActivity(element);\n\n let x = svgAppend(p, createLine(element.waypoints, attrs));\n renderExternalLabel(p, element);\n renderExternalNumber(p, element);\n\n // just adjusting the start- and endpoint of the connection-element moves only the drawn connection,\n // not the interactive line. This can be fixed by manually overriding the points of the interactive polyline\n // in the HTMl with the points of the drawn one.\n // this however does not adjust the surrounding box of the connection.\n fixConnectionInHTML(p.parentElement);\n\n return x;\n }\n };\n\n function checkIfPointOverlapsText(point, source) {\n if (point.y > source.y + 60) {\n if (point.x > source.x + 3 && point.x < source.x + 72) {\n let lineOffset = getLineOffset(source);\n if (source.y + 75 + lineOffset > point.y) {\n point.y += lineOffset;\n }\n }\n }\n }\n\n function adjustForTextOverlap(element) {\n let source = element.source;\n let target = element.target;\n\n let waypoints = element.waypoints;\n let startPoint = waypoints[0];\n let endPoint = waypoints[waypoints.length - 1];\n\n if (startPoint && endPoint && source && target) {\n checkIfPointOverlapsText(startPoint, source);\n checkIfPointOverlapsText(endPoint, source);\n }\n }\n\n function getLineOffset(element) {\n let id = element.id;\n let offset = 0;\n\n let objects = document.getElementsByClassName(\"djs-element djs-shape\");\n for (let i = 0; i < objects.length; i++) {\n let data_id = objects.item(i).getAttribute(\"data-element-id\");\n if (data_id === id) {\n let object = objects.item(i);\n let text = object.getElementsByTagName(\"text\")[0];\n let tspans = text.getElementsByTagName(\"tspan\");\n let tspan = tspans[tspans.length - 1];\n offset = tspan.getAttribute(\"y\");\n }\n }\n return offset - 70;\n }\n\n function fixConnectionInHTML(wantedConnection) {\n if (wantedConnection) {\n let polylines = wantedConnection.getElementsByTagName(\"polyline\");\n if (polylines.length > 1) {\n polylines[1].setAttribute(\n \"points\",\n polylines[0].getAttribute(\"points\"),\n );\n }\n }\n }\n\n this.drawDSConnection = function (p, element) {\n let attrs = \"\";\n attrs = computeStyle(attrs, {\n stroke: 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 = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n drawPath(parentGfx, textPathData, {\n stroke: 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\n function marker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (!markers[id]) {\n createMarker(type, fill, stroke);\n }\n return \"url(#\" + id + \")\";\n }\n\n function createMarker(type, fill, stroke) {\n let id = type + \"-\" + fill + \"-\" + stroke + \"-\" + rendererId;\n\n if (type === \"activity\") {\n let sequenceflowEnd = svgCreate(\"path\");\n svgAttr(sequenceflowEnd, { d: \"M 1 5 L 11 10 L 1 15 Z\" });\n\n addMarker(id, {\n element: sequenceflowEnd,\n ref: { x: 11, y: 10 },\n scale: 0.5,\n attrs: {\n fill: stroke,\n stroke: stroke,\n },\n });\n }\n }\n\n function addMarker(id, options) {\n let attrs = assign(\n {\n fill: \"black\",\n strokeWidth: 1,\n strokeLinecap: \"round\",\n strokeDasharray: \"none\",\n },\n options.attrs,\n );\n\n let ref = options.ref || { x: 0, y: 0 };\n let scale = options.scale || 1;\n\n // resetting stroke dash array\n if (attrs.strokeDasharray === \"none\") {\n attrs.strokeDasharray = [10000, 1];\n }\n\n let marker = svgCreate(\"marker\");\n\n svgAttr(options.element, attrs);\n svgAppend(marker, options.element);\n svgAttr(marker, {\n id: id,\n viewBox: \"0 0 20 20\",\n refX: ref.x,\n refY: ref.y,\n markerWidth: 20 * scale,\n markerHeight: 20 * scale,\n orient: \"auto\",\n });\n\n let defs = domQuery(\"defs\", canvas._svg);\n if (!defs) {\n defs = svgCreate(\"defs\");\n svgAppend(canvas._svg, defs);\n }\n svgAppend(defs, marker);\n markers[id] = marker;\n }\n\n // path functions\n this.getWorkObjectPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getGroupPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n\n this.getActivityPath = function (connection) {\n let waypoints = connection.waypoints.map(function (p) {\n return p.original || p;\n });\n\n let activityPath = [[\"M\", waypoints[0].x, waypoints[0].y]];\n\n waypoints.forEach(function (waypoint, index) {\n if (index !== 0) {\n activityPath.push([\"L\", waypoint.x, waypoint.y]);\n }\n });\n return componentsToPath(activityPath);\n };\n\n this.getActorPath = function (shape) {\n let rectangle = getRectPath(shape);\n return componentsToPath(rectangle);\n };\n}\n\ninherits(DomainStoryRenderer, BaseRenderer);\n\nDomainStoryRenderer.$inject = [\n \"eventBus\",\n \"styles\",\n \"canvas\",\n \"textRenderer\",\n \"pathMap\",\n \"commandStack\",\n];\n\nDomainStoryRenderer.prototype.canRender = function (element) {\n return /^domainStory:/.test(element.type);\n};\n\nDomainStoryRenderer.prototype.drawShape = function (p, element) {\n // polyfill for tests\n if (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n }\n\n let type = element.type;\n element.businessObject.type = type;\n\n _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\";\n\nconst HIGH_PRIORITY = 1500;\nconst MIN_SIZE = 125;\n\nfunction isDomainStory(element) {\n return element && /^domainStory:/.test(element.type);\n}\n\nfunction isDomainStoryGroup(element) {\n return element && /^domainStory:group/.test(element.type);\n}\n\nfunction isActor(element) {\n return element && /^domainStory:actor\\w*/.test(element.type);\n}\n\nfunction isWorkObject(element) {\n return element && /^domainStory:workObject/.test(element.type);\n}\n\nfunction isActivity(element) {\n return element && /^domainStory:activity/.test(element.type);\n}\n\nfunction isConnection(element) {\n return element && /^domainStory:connection/.test(element.type);\n}\n\nfunction isAnnotation(element) {\n return element && /^domainStory:textAnnotation/.test(element.type);\n}\n\n/**\n * can source and target be connected?\n */\nfunction canConnect(source, target) {\n // only judge about two custom elements\n if (\n isDomainStoryGroup(target) ||\n !isDomainStory(source) ||\n !isDomainStory(target)\n ) {\n return;\n }\n\n // do not allow a connection from one element to itself\n if (source === target) {\n return;\n }\n\n // do not allow a connection between two actors\n if (isActor(source) && isActor(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an activity\n if (isActivity(source) || isActivity(target)) {\n return;\n }\n\n // do not allow a connection, where the source or target is an annotation connection\n if (isConnection(source) || isConnection(target)) {\n return;\n }\n\n // do not allow a connection to a connection(the special type of connection between an element and a comment box)\n // when the target is an annotation, the connection type is an annotation connection instead of an activity\n if (isAnnotation(target)) {\n return { type: ElementTypes.CONNECTION };\n }\n\n return { type: ElementTypes.ACTIVITY };\n}\n\nfunction canResize(shape, newBounds) {\n if (is(shape, ElementTypes.GROUP)) {\n if (newBounds) {\n let lowerLeft = { x: shape.x, y: shape.y + shape.height };\n let lowerRight = { x: shape.x + shape.width, y: shape.y + shape.height };\n let upperRight = { x: shape.x + shape.width, y: shape.y };\n\n if (newBounds.x !== shape.x && newBounds.y !== shape.y) {\n // upper left\n if (newBounds.x > lowerRight.x - MIN_SIZE) {\n assign(newBounds, { x: lowerRight.x - MIN_SIZE });\n }\n if (newBounds.y > lowerRight.y - MIN_SIZE) {\n assign(newBounds, { y: lowerRight.y - MIN_SIZE });\n }\n }\n\n if (newBounds.x !== shape.x && newBounds.y === shape.y) {\n // lower left\n if (newBounds.x > upperRight.x - MIN_SIZE) {\n assign(newBounds, { x: upperRight.x - MIN_SIZE });\n }\n }\n\n if (newBounds.x === shape.x && newBounds.y !== shape.y) {\n // upper right\n if (newBounds.y > lowerLeft.y - MIN_SIZE) {\n assign(newBounds, { y: lowerLeft.y - MIN_SIZE });\n }\n }\n\n if (newBounds.height < MIN_SIZE) {\n assign(newBounds, {\n height: MIN_SIZE,\n });\n }\n if (newBounds.width < MIN_SIZE) {\n assign(newBounds, {\n width: MIN_SIZE,\n });\n }\n }\n return true;\n }\n\n return false;\n}\n\nfunction canAttach(elements, target, source) {\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n // disallow appending as boundary event\n if (source) {\n return false;\n }\n\n // only (re-)attach one element at a time\n if (elements.length !== 1) {\n return false;\n }\n\n // allow default move operation\n if (!target) {\n return true;\n }\n\n // only allow drop on DomainStory Elements\n if (!isDomainStory(target)) {\n return false;\n }\n\n return \"attach\";\n}\n\nfunction canConnectToAnnotation(source, target, connection) {\n // do not allow an activity connect to an annotation\n if (isActivity(connection) && isAnnotation(target)) {\n return false;\n }\n\n // do not allow an annotation connection between two annotations\n if (\n isConnection(connection) &&\n isAnnotation(source) &&\n isAnnotation(target)\n ) {\n return false;\n }\n\n // do not allow an annotation connection between an actor or workObject and anything except an annotation\n return !(\n isConnection(connection) &&\n !isAnnotation(target) &&\n (isActor(source) || isWorkObject(source))\n );\n}\n\n/**\n * specific rules for custom elements\n */\nexport default function DomainStoryRules(eventBus) {\n RuleProvider.call(this, eventBus);\n}\n\ninherits(DomainStoryRules, RuleProvider);\n\nDomainStoryRules.$inject = [\"eventBus\"];\n\nDomainStoryRules.prototype.init = function () {\n /**\n * can shape be created on target container?\n */\n function canCreate(shape, target) {\n // only judge about custom elements\n if (!isDomainStory(shape)) {\n return;\n }\n\n // allow creation just on groups\n return !isDomainStory(target) || isDomainStoryGroup(target);\n }\n\n this.addRule(\"elements.create\", function (context) {\n const elements = context.elements,\n position = context.position,\n target = context.target;\n\n return every(elements, function (element) {\n if (isConnection(element)) {\n return canConnect(element.source, element.target, element);\n }\n\n if (element.host) {\n return canAttach(element, element.host, null, position);\n }\n\n return canCreate(element, target, null, position);\n });\n });\n\n this.addRule(\"elements.move\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shapes = context.shapes;\n\n let type;\n\n // do not allow mixed movements of custom / BPMN shapes\n // if any shape cannot be moved, the group cannot be moved, too\n\n // reject, if we have at least one\n // custom element that cannot be moved\n return reduce(\n shapes,\n function (result, s) {\n if (type === undefined) {\n type = isDomainStory(s);\n }\n\n if (type !== isDomainStory(s) || result === false) {\n return false;\n }\n\n return canCreate(s, target);\n },\n undefined,\n );\n });\n\n this.addRule(\"shape.create\", HIGH_PRIORITY, function (context) {\n let target = context.target,\n shape = context.shape;\n\n return canCreate(shape, target);\n });\n\n this.addRule(\"connection.create\", HIGH_PRIORITY, function (context) {\n let source = context.source,\n target = context.target;\n\n return canConnect(source, target);\n });\n\n this.addRule(\"connection.reconnect\", HIGH_PRIORITY, function (context) {\n let connection = context.connection,\n source = context.hover || context.source,\n target = context.target;\n\n // --------------------------------------------------------------\n let result = canConnectToAnnotation(source, target, connection);\n\n if (!result) {\n return;\n }\n\n // --------------------------------------------------------------\n\n return canConnect(source, target, connection);\n });\n\n this.addRule(\"shape.resize\", function (context) {\n let shape = context.shape,\n newBounds = context.newBounds;\n\n return canResize(shape, newBounds);\n });\n};\n\nDomainStoryRules.prototype.canConnect = canConnect;\nDomainStoryRules.prototype.canAttach = canAttach;\nDomainStoryRules.prototype.isDomainStory = isDomainStory;\nDomainStoryRules.prototype.canResize = canResize;\n","\"use strict\";\n\nimport inherits from \"inherits\";\n\nimport { pick, assign } from \"min-dash\";\n\nimport CommandInterceptor from \"diagram-js/lib/command/CommandInterceptor\";\n\nimport {\n add as collectionAdd,\n remove as collectionRemove,\n} from \"diagram-js/lib/util/Collections\";\n\nimport { reworkGroupElements } from \"./util\";\nimport { ElementTypes } from \"../../../../domain/entities/elementTypes\";\n\n/**\n * a handler responsible for updating the custom element's businessObject\n * once changes on the diagram happen.\n */\nexport default function DomainStoryUpdater(eventBus, bpmnjs) {\n CommandInterceptor.call(this, eventBus);\n\n function updateCustomElement(e) {\n let context = e.context,\n shape = context.shape,\n businessObject = shape.businessObject;\n\n if (!shape || !shape.type.includes(ElementTypes.DOMAINSTORY)) {\n return;\n }\n\n let parent = shape.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // save custom element position\n assign(businessObject, pick(shape, [\"x\", \"y\"]));\n\n // save custom element size if resizable\n if (shape.type === ElementTypes.GROUP) {\n assign(businessObject, pick(shape, [\"height\", \"width\"]));\n\n // rework the child-parent relations if a group was moved, such that all Objects that are visually in the group are also associated with it\n // since we do not have access to the standard-canvas object here, we cannot use the function correctGroupChildren() from DSLabelUtil\n if (parent != null) {\n reworkGroupElements(parent, shape);\n }\n }\n if (\n shape &&\n shape.parent &&\n \"type\" in shape.parent &&\n shape.parent.type === ElementTypes.GROUP\n ) {\n assign(businessObject, {\n parent: shape.parent.id,\n });\n }\n }\n\n function updateCustomConnection(e) {\n let context = e.context,\n connection = context.connection,\n source = connection.source,\n target = connection.target,\n businessObject = connection.businessObject;\n\n if (e.newTarget) {\n target = e.newTarget;\n }\n if (e.newSource) {\n source = e.newSource;\n }\n\n let parent = connection.parent;\n let customElements = bpmnjs._customElements;\n\n // make sure element is added / removed from bpmnjs.customElements\n if (!parent) {\n collectionRemove(customElements, businessObject);\n } else {\n collectionAdd(customElements, businessObject);\n }\n\n // update waypoints\n assign(businessObject, {\n waypoints: copyWaypoints(connection),\n });\n\n if (source) {\n if (!businessObject.source) {\n assign(businessObject, { source: source.id });\n } else {\n businessObject.source = source.id;\n }\n }\n if (target) {\n if (!businessObject.target) {\n assign(businessObject, { target: target.id });\n } else {\n businessObject.target = target.id;\n }\n }\n }\n\n function copyWaypoints(connection) {\n return connection.waypoints.map(function (p) {\n if (p.original) {\n return {\n original: {\n x: p.original.x,\n y: p.original.y,\n },\n x: p.x,\n y: p.y,\n };\n } else {\n return {\n x: p.x,\n y: p.y,\n };\n }\n });\n }\n\n this.executed(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement),\n );\n\n this.reverted(\n [\n \"shape.create\",\n \"shape.move\",\n \"shape.delete\",\n \"shape.resize\",\n \"shape.removeGroupWithChildren\",\n ],\n ifDomainStoryElement(updateCustomElement),\n );\n\n this.executed(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection),\n );\n\n this.reverted(\n [\n \"connection.create\",\n \"connection.reconnect\",\n \"connection.updateWaypoints\",\n \"connection.delete\",\n \"connection.layout\",\n \"connection.move\",\n ],\n ifDomainStoryElement(updateCustomConnection),\n );\n}\n\n// check if element in the context of an event is a domainStory element\nfunction ifDomainStoryElement(fn) {\n return (event) => {\n const context = event.context;\n const element = context.shape || context.connection;\n\n if (isDomainStory(element)) {\n fn(event);\n }\n };\n}\n\nfunction isDomainStory(element) {\n return element && /domainStory:/.test(element.type);\n}\n\ninherits(DomainStoryUpdater, CommandInterceptor);\n\nDomainStoryUpdater.$inject = [\"eventBus\", \"bpmnjs\"];\n","\"use strict\";\n\nimport DomainStoryElementFactory from \"./domainStoryElementFactory\";\nimport DomainStoryRenderer from \"./domainStoryRenderer\";\nimport DomainStoryPalette from \"./palette/domainStoryPalette\";\nimport DomainStoryRules from \"./domainStoryRules\";\nimport DomainStoryUpdater from \"./domainStoryUpdater\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"./updateHandler/updateLabelHandler\";\nimport headlineAndDescriptionUpdateHandler from \"./updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryContextPadProvider from \"./context-pad/domainStoryContextPadProvider\";\nimport ReplaceMenuProvider from \"./change-icon/replaceMenuProvider\";\nimport DSModeling from \"./modeling/dSModeling\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport {\n append as svgAppend,\n attr as svgAttr,\n create as svgCreate,\n remove as svgRemove,\n} from \"tiny-svg\";\n\nimport { translate } from \"diagram-js/lib/util/SvgTransformUtil\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util\";\n\nconst MARKER_HIDDEN = \"djs-element-hidden\",\n MARKER_LABEL_HIDDEN = \"djs-label-hidden\";\n\nexport default function DSLabelEditingPreview(eventBus, canvas, pathMap) {\n let self = this;\n\n let defaultLayer = canvas.getDefaultLayer();\n let element, absoluteElementBBox, gfx;\n\n eventBus.on(\"directEditing.activate\", function (context) {\n let activeProvider = context.active;\n\n element = activeProvider.element.label || activeProvider.element;\n\n // text annotation\n if (is(element, ElementTypes.TEXTANNOTATION)) {\n absoluteElementBBox = canvas.getAbsoluteBBox(element);\n gfx = svgCreate(\"g\");\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: element.height,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n let path = (self.path = svgCreate(\"path\"));\n\n svgAttr(path, {\n d: textPathData,\n strokeWidth: 2,\n stroke: getStrokeColor(element),\n });\n\n svgAppend(gfx, path);\n\n svgAppend(defaultLayer, gfx);\n\n translate(gfx, element.x, element.y);\n }\n\n if (is(element, ElementTypes.TEXTANNOTATION) || element.labelTarget) {\n canvas.addMarker(element, MARKER_HIDDEN);\n } else if (\n element.type.includes(ElementTypes.ACTOR) ||\n element.type.includes(ElementTypes.WORKOBJECT) ||\n element.type.includes(ElementTypes.ACTIVITY) ||\n element.type.includes(ElementTypes.GROUP)\n ) {\n canvas.addMarker(element, MARKER_LABEL_HIDDEN);\n }\n });\n\n eventBus.on(\"directEditing.resize\", function (context) {\n // text annotation\n if (is(element, ElementTypes.TEXTANNOTATION)) {\n let height = context.height,\n dy = context.dy;\n\n let newElementHeight = Math.max(\n (element.height / absoluteElementBBox.height) * (height + dy),\n 0,\n );\n\n let textPathData = pathMap.getScaledPath(\"TEXT_ANNOTATION\", {\n xScaleFactor: 1,\n yScaleFactor: 1,\n containerWidth: element.width,\n containerHeight: newElementHeight,\n position: {\n mx: 0.0,\n my: 0.0,\n },\n });\n\n svgAttr(self.path, {\n d: textPathData,\n });\n }\n });\n\n eventBus.on(\n [\"directEditing.complete\", \"directEditing.cancel\"],\n function (context) {\n let activeProvider = context.active;\n\n if (activeProvider) {\n canvas.removeMarker(\n activeProvider.element.label || activeProvider.element,\n MARKER_HIDDEN,\n );\n canvas.removeMarker(element, MARKER_LABEL_HIDDEN);\n }\n\n element = undefined;\n absoluteElementBBox = undefined;\n\n if (gfx) {\n svgRemove(gfx);\n\n gfx = undefined;\n }\n },\n );\n}\n\nDSLabelEditingPreview.$inject = [\"eventBus\", \"canvas\", \"pathMap\"];\n\n// helpers ///////////////////\n\nfunction getStrokeColor() {\n return \"black\";\n}\n","\"use strict\";\n\nimport { assign } from \"min-dash\";\n\nimport { autocomplete, getLabel } from \"./dsLabelUtil\";\n\nimport { isAny } from \"bpmn-js/lib/features/modeling/util/ModelingUtil\";\n\nimport {\n getExternalLabelMid,\n hasExternalLabel,\n isLabel,\n isLabelExternal,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util\";\n\nlet dictionaryService;\n\nlet numberStash = 0;\nlet stashUse = false;\n\nexport function initializeLabelEditingProvider(labelingDictionary) {\n dictionaryService = labelingDictionary;\n}\n\nexport function getNumberStash() {\n let number = { use: stashUse, number: numberStash };\n stashUse = false;\n return number;\n}\n\nexport function toggleStashUse(use) {\n stashUse = use;\n}\n\nexport function focusElement(element) {\n // Opening a Angular Dialog seems to mess with the focus logic somehow.\n // My guess is that is makes the mousedown event passive, which prevents \"preventDefault\" from intercepting.\n // I am not sure how to fix it, but this seems to be a workaround.\n setTimeout(() => element.focus(), 0);\n}\n\nexport default function DSLabelEditingProvider(\n eventBus,\n canvas,\n directEditing,\n modeling,\n resizeHandles,\n textRenderer,\n updateLabelHandler,\n) {\n this._canvas = canvas;\n this._modeling = modeling;\n this._textRenderer = textRenderer;\n this._updateLabelHandler = updateLabelHandler;\n\n directEditing.registerProvider(this);\n\n // listen to dblclick on non-root elements\n eventBus.on(\"element.dblclick\", function (event) {\n activateDirectEdit(event.element, true);\n if (is(event.element, ElementTypes.ACTIVITY)) {\n // if we edit an activity, we do not want the standard editing box\n numberStash = event.element.businessObject.number;\n stashUse = true;\n directEditing.complete();\n }\n });\n\n // complete on followup canvas operation\n eventBus.on(\n [\n \"element.mousedown\",\n \"drag.init\",\n \"canvas.viewbox.changing\",\n \"autoPlace\",\n \"popupMenu.open\",\n ],\n function () {\n if (directEditing.isActive()) {\n directEditing.complete();\n }\n },\n );\n\n // cancel on command stack changes\n eventBus.on([\"commandStack.changed\"], function () {\n if (directEditing.isActive()) {\n directEditing.cancel();\n }\n });\n\n eventBus.on(\"directEditing.activate\", function (event) {\n resizeHandles.removeResizers();\n let element = event.active.element;\n createAutocomplete(element);\n });\n\n eventBus.on(\"create.end\", 500, function (event) {\n let element = event.shape,\n canExecute = event.context.canExecute,\n isTouch = event.isTouch;\n\n if (isTouch) {\n return;\n }\n\n if (!canExecute) {\n return;\n }\n if (!is(element, ElementTypes.ACTIVITY)) {\n activateDirectEdit(element);\n }\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\",\n );\n focusElement(editingBox.item(0));\n });\n\n eventBus.on(\"autoPlace.end\", 500, function (event) {\n activateDirectEdit(event.shape);\n });\n\n function activateDirectEdit(element, force) {\n if (\n force ||\n isAny(element, [ElementTypes.TEXTANNOTATION]) ||\n element.businessObject.type.includes(ElementTypes.DOMAINSTORY)\n ) {\n directEditing.activate(element);\n }\n }\n\n function createAutocomplete(element) {\n let editingBox = document.getElementsByClassName(\n \"djs-direct-editing-content\",\n );\n focusElement(editingBox.item(0));\n autocomplete(\n editingBox[0],\n dictionaryService.getUniqueWorkObjectNames(),\n element,\n eventBus,\n );\n }\n}\n\nDSLabelEditingProvider.$inject = [\n \"eventBus\",\n \"canvas\",\n \"directEditing\",\n \"modeling\",\n \"resizeHandles\",\n \"textRenderer\",\n \"updateLabelHandler\",\n];\n\n/**\n * activate direct editing for activities and text annotations.\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object with properties bounds (position and size), text and options\n */\nDSLabelEditingProvider.prototype.activate = function (element) {\n // text\n if (element.id === \"__implicitrootbase\") {\n return;\n }\n let text = getLabel(element);\n\n if (text === undefined) {\n return;\n }\n\n let context = {\n text: text,\n };\n\n // bounds\n let bounds = this.getEditingBBox(element);\n\n assign(context, bounds);\n\n let options = {};\n\n // external labels\n if (isLabelExternal(element)) {\n assign(options, {\n autoResize: true,\n });\n }\n\n // text annotations\n if (element.businessObject.type.includes(ElementTypes.TEXTANNOTATION)) {\n assign(options, {\n resizable: true,\n autoResize: true,\n });\n }\n\n assign(context, {\n options: options,\n });\n\n return context;\n};\n\n/**\n * get the editing bounding box based on the element's size and position\n *\n * @param {djs.model.Base} element\n *\n * @return {Object} an object containing information about position\n * and size (fixed or minimum and/or maximum)\n */\nDSLabelEditingProvider.prototype.getEditingBBox = function (element) {\n let canvas = this._canvas;\n\n let target = element.label || element;\n\n let bbox = canvas.getAbsoluteBBox(target);\n\n let mid = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2,\n };\n\n // default position\n let bounds = { x: bbox.x, y: bbox.y };\n\n /** The cavnas is an Object from BPMN, the IDE might say, that zoom is deprecated,\n * because it thinks canvas is the standard HTMLElement. -> Needs to stay toom **/\n let zoom = canvas.zoom();\n let defaultStyle = this._textRenderer.getDefaultStyle(),\n externalStyle = this._textRenderer.getExternalStyle();\n\n // take zoom into account\n let externalFontSize = externalStyle.fontSize * zoom,\n externalLineHeight = externalStyle.lineHeight,\n defaultFontSize = defaultStyle.fontSize * zoom,\n defaultLineHeight = defaultStyle.lineHeight;\n\n let style = {\n fontFamily: this._textRenderer.getDefaultStyle().fontFamily,\n fontWeight: this._textRenderer.getDefaultStyle().fontWeight,\n };\n\n // adjust for groups\n if (is(element, ElementTypes.GROUP)) {\n assign(bounds, {\n minWidth: bbox.width / 2.5 > 125 ? bbox.width / 2.5 : 125,\n maxWidth: bbox.width,\n minHeight: 30 * zoom,\n x: bbox.x,\n y: bbox.y,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n textAlign: \"left\",\n });\n }\n\n // internal labels for tasks and collapsed call activities,\n // sub processes and participants\n if (\n /^domainStory:actor\\w*/.test(element.type) ||\n /^domainStory:workObject\\w*/.test(element.type)\n ) {\n assign(bounds, {\n width: bbox.width,\n minHeight: 30,\n y: bbox.y + bbox.height - 20,\n x: bbox.x,\n });\n\n assign(style, {\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n });\n }\n\n let width = 90 * zoom,\n paddingTop = 7 * zoom,\n paddingBottom = 4 * zoom;\n\n // external labels for events, data elements, gateways and connections\n if (target.labelTarget) {\n assign(bounds, {\n width: width,\n height: bbox.height + paddingTop + paddingBottom,\n x: mid.x - width / 2,\n y: bbox.y - paddingTop,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // external label not yet created\n if (\n isLabelExternal(target) &&\n !hasExternalLabel(target) &&\n !isLabel(target)\n ) {\n let externalLabelMid = getExternalLabelMid(element);\n\n let absoluteBBox = canvas.getAbsoluteBBox({\n x: externalLabelMid.x,\n y: externalLabelMid.y,\n width: 0,\n height: 0,\n });\n\n let height = externalFontSize + paddingTop + paddingBottom;\n\n assign(bounds, {\n width: width,\n height: height,\n x: absoluteBBox.x - width / 2,\n y: absoluteBBox.y - height / 2,\n });\n\n assign(style, {\n fontSize: externalFontSize + \"px\",\n lineHeight: externalLineHeight,\n paddingTop: paddingTop + \"px\",\n paddingBottom: paddingBottom + \"px\",\n });\n }\n\n // text annotations\n if (element.businessObject.type.includes(ElementTypes.TEXTANNOTATION)) {\n assign(bounds, {\n width: bbox.width,\n height: bbox.height,\n minWidth: 30 * zoom,\n minHeight: 10 * zoom,\n });\n\n assign(style, {\n textAlign: \"left\",\n paddingTop: 7 * zoom + \"px\",\n paddingBottom: 7 * zoom + \"px\",\n paddingLeft: 5 * zoom + \"px\",\n paddingRight: 5 * zoom + \"px\",\n fontSize: defaultFontSize + \"px\",\n lineHeight: defaultLineHeight,\n });\n }\n\n return { bounds: bounds, style: style };\n};\n\nDSLabelEditingProvider.prototype.update = function (\n element,\n newLabel,\n activeContextText,\n bounds,\n) {\n let newBounds, bbox;\n\n if (is(element, ElementTypes.TEXTANNOTATION)) {\n bbox = this._canvas.getAbsoluteBBox(element);\n\n newBounds = {\n x: element.x,\n y: element.y,\n width: (element.width / bbox.width) * bounds.width,\n height: (element.height / bbox.height) * bounds.height,\n };\n }\n\n this._modeling.updateLabel(element, newLabel, newBounds);\n};\n","\"use strict\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { is } from \"../util\";\n\nfunction getLabelAttr(semantic) {\n if (\n semantic.type.includes(ElementTypes.ACTOR) ||\n semantic.type.includes(ElementTypes.WORKOBJECT) ||\n semantic.type.includes(ElementTypes.ACTIVITY) ||\n semantic.type.includes(ElementTypes.GROUP)\n ) {\n return \"name\";\n }\n 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 \"bpmn-js/lib/features/modeling/Modeling\";\n\nimport { inherits } from \"util\";\n\nexport default function DSModeling(\n eventBus,\n elementFactory,\n commandStack,\n domainStoryRules,\n) {\n Modeling.call(this, eventBus, elementFactory, commandStack, domainStoryRules);\n}\n\nModeling.prototype.updateLabel = function (element, newLabel, newBounds) {\n if (\n element.businessObject\n ? newLabel !== element.businessObject.name\n : newLabel !== element.name\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newLabel: newLabel,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.updateNumber = function (element, newNumber, newBounds) {\n if (\n element.businessObject\n ? newNumber !== element.businessObject.number\n : newNumber !== element.number\n ) {\n if (/^domainStory:/.test(element.type)) {\n this._commandStack.execute(\"element.updateCustomLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n } else {\n this._commandStack.execute(\"element.updateLabel\", {\n element: element,\n newNumber: newNumber,\n newBounds: newBounds,\n });\n }\n }\n};\n\nModeling.prototype.replaceShape = function (oldShape, newShape, hints) {\n let context = {\n oldShape: oldShape,\n newData: newShape,\n hints: hints || {},\n };\n\n this._commandStack.execute(\"shape.replace\", context);\n return context.newShape;\n};\n\nModeling.prototype.removeGroup = function (element) {\n this._commandStack.execute(\"shape.removeGroupWithoutChildren\", {\n element: element,\n });\n this.removeElements({ element });\n};\n\ninherits(DSModeling, Modeling);\n\nDSModeling.$inject = [\n \"eventBus\",\n \"elementFactory\",\n \"commandStack\",\n \"domainStoryRules\",\n];\n","\"use strict\";\n\nimport DomainStoryPalette from \"../palette/domainStoryPalette\";\nimport ElementFactory from \"bpmn-js/lib/features/modeling/ElementFactory\";\nimport CreateModule from \"diagram-js/lib/features/create\";\nimport PathMap from \"bpmn-js/lib/draw/PathMap\";\nimport PopupMenuModule from \"bpmn-js/lib/features/popup-menu\";\nimport ContextPadModule from \"diagram-js/lib/features/context-pad\";\nimport CommandStack from \"diagram-js/lib/command/CommandStack\";\nimport UpdateLabelHandler from \"../updateHandler/updateLabelHandler\";\nimport DomainStoryUpdater from \"../domainStoryUpdater\";\nimport DomainStoryElementFactory from \"../domainStoryElementFactory\";\nimport headlineAndDescriptionUpdateHandler from \"../updateHandler/headlineAndDescriptionUpdateHandler\";\nimport DomainStoryRenderer from \"../domainStoryRenderer\";\nimport DSModeling from \"./dSModeling\";\nimport DomainStoryRules from \"../domainStoryRules\";\nimport ReplaceMenuProvider from \"../change-icon/replaceMenuProvider\";\nimport DomainStoryContextPadProvider from \"../context-pad/domainStoryContextPadProvider\";\n\nexport default {\n __depends__: [CreateModule, ContextPadModule, PopupMenuModule],\n __init__: [\n \"domainStoryRenderer\",\n \"paletteProvider\",\n \"domainStoryRules\",\n \"domainStoryUpdater\",\n \"contextPadProvider\",\n \"replaceMenuProvider\",\n ],\n elementFactory: [\"type\", DomainStoryElementFactory],\n domainStoryRenderer: [\"type\", DomainStoryRenderer],\n paletteProvider: [\"type\", DomainStoryPalette],\n domainStoryRules: [\"type\", DomainStoryRules],\n domainStoryUpdater: [\"type\", DomainStoryUpdater],\n contextPadProvider: [\"type\", DomainStoryContextPadProvider],\n elementFactoryBpmn: [\"type\", ElementFactory],\n pathMap: [\"type\", PathMap],\n replaceMenuProvider: [\"type\", ReplaceMenuProvider],\n commandStack: [\"type\", CommandStack],\n updateLabelHandler: [\"type\", UpdateLabelHandler],\n headlineAndDescriptionUpdateHandler: [\n \"type\",\n headlineAndDescriptionUpdateHandler,\n ],\n modeling: [\"type\", DSModeling],\n};\n","\"use strict\";\n\nimport { 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 { overrideAppendedIcons } from \"src/app/tools/icon-set-config/domain/allIcons\";\nimport { Dictionary } from \"src/app/domain/entities/dictionary\";\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { APPENDED_ICONS_TAG } from \"src/app/domain/entities/constants\";\n\n/**\n * A palette that allows you to create BPMN _and_ custom elements.\n */\n\nlet iconDictionary;\nlet configuration;\n\nexport function initializePalette(iconDictionaryService, configurationService) {\n iconDictionary = iconDictionaryService;\n configuration = configurationService;\n}\n\nexport default function PaletteProvider(\n palette,\n create,\n elementFactory,\n spaceTool,\n lassoTool,\n) {\n this._create = create;\n this._elementFactory = elementFactory;\n this._spaceTool = spaceTool;\n this._lassoTool = lassoTool;\n\n palette.registerProvider(this);\n}\n\nPaletteProvider.$inject = [\n \"palette\",\n \"create\",\n \"elementFactory\",\n \"spaceTool\",\n \"lassoTool\",\n \"modeling\",\n];\n\nPaletteProvider.prototype.getPaletteEntries = function () {\n let actions = {},\n create = this._create,\n elementFactory = this._elementFactory,\n spaceTool = this._spaceTool,\n lassoTool = this._lassoTool;\n\n function createAction(type, group, className, title, options) {\n function createListener(event) {\n let shape = elementFactory.createShape(assign({ type: type }, options));\n\n assign(shape.businessObject, {\n id: shape.id,\n });\n\n if (options) {\n shape.businessObject.di.isExpanded = options.isExpanded;\n }\n\n create.start(event, shape);\n }\n\n let shortType = type.replace(/^domainStory:/, \"\");\n\n return {\n group: group,\n className: className,\n title: \"Create \" + title || \"Create \" + shortType,\n action: {\n dragstart: createListener,\n click: createListener,\n },\n };\n }\n\n return initPalette(actions, spaceTool, lassoTool, createAction);\n};\n\nfunction appendCSSStyleCheat(customIcons) {\n const sheetEl = document.createElement(\"style\");\n document.head.appendChild(sheetEl);\n\n let customIconDict = new Dictionary();\n\n customIconDict.appendDict(customIcons);\n let customIconDictKeys = customIconDict.keysArray();\n\n customIconDictKeys.forEach((name) => {\n if (iconDictionary.getAppendedIconDictionary().has(name)) {\n let src = customIconDict.get(name);\n\n const iconStyle =\n \".icon-domain-story-\" +\n name.toLowerCase() +\n \"::before{\" +\n \" display: block;\" +\n ' content: url(\"data:image/svg+xml;utf8,' +\n wrapSRCInSVG(src) +\n '\");' +\n \" margin: 3px;}\";\n sheetEl.sheet.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n }\n });\n}\n\nfunction initPalette(actions, spaceTool, lassoTool, createAction) {\n let config = iconDictionary?.getCurrentIconConfigurationForBPMN();\n\n let customIcons = localStorage.getItem(APPENDED_ICONS_TAG);\n\n if (customIcons) {\n customIcons = JSON.parse(customIcons);\n if (customIconsLegacy(customIcons)) {\n customIcons = convertLegacyAppendedIconsToDict(customIcons);\n }\n if (customIcons.entries && customIcons.entries.forEach) {\n const customIconsDict = new Dictionary();\n customIcons.entries.forEach((entry) => {\n customIconsDict.putEntry(entry);\n });\n overrideAppendedIcons(customIconsDict);\n appendCSSStyleCheat(customIcons);\n }\n }\n\n iconDictionary?.initTypeDictionaries(config.actors, config.workObjects);\n\n let actorTypes = iconDictionary?.getTypeDictionary(ElementTypes.ACTOR);\n\n actorTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n ElementTypes.ACTOR,\n );\n });\n\n assign(actions, {\n \"actor-separator\": {\n group: \"actor\",\n separator: true,\n },\n });\n\n let workObjectTypes = iconDictionary?.getTypeDictionary(\n ElementTypes.WORKOBJECT,\n );\n\n workObjectTypes?.keysArray().forEach((name) => {\n addCanvasObjectTypes(\n name,\n createAction,\n actions,\n \"actor\",\n ElementTypes.WORKOBJECT,\n );\n });\n\n assign(actions, {\n \"workObject-separator\": {\n group: \"workObject\",\n separator: true,\n },\n \"domainStory-group\": createAction(\n ElementTypes.GROUP,\n \"group\",\n \"icon-domain-story-tool-group\",\n \"group\",\n ),\n \"group-separator\": {\n group: \"group\",\n separator: true,\n },\n \"lasso-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-lasso-tool\",\n title: \"Activate the lasso tool\",\n action: {\n click: function (event) {\n lassoTool.activateSelection(event);\n },\n },\n },\n \"space-tool\": {\n group: \"tools\",\n className: \"bpmn-icon-space-tool\",\n title: \"Activate the create/remove space tool\",\n action: {\n click: function (event) {\n spaceTool.activateSelection(event);\n },\n },\n },\n });\n\n return actions;\n}\n\nfunction addCanvasObjectTypes(\n name,\n createAction,\n actions,\n className,\n elementType,\n) {\n let icon = iconDictionary.getIconForBPMN(elementType, name);\n\n let action = [];\n action[\"domainStory-\" + className + name] = createAction(\n `${elementType}${name}`,\n className,\n icon,\n name,\n );\n assign(actions, action);\n}\n\nfunction customIconsLegacy(customIcons) {\n return !(\n Object.keys(customIcons).length === 1 &&\n Object.keys(customIcons)[0] === \"entries\"\n );\n}\n\nfunction convertLegacyAppendedIconsToDict(customIcons) {\n let dict = new Dictionary();\n Object.keys(customIcons).forEach((key) => {\n dict.set(key, customIcons[key]);\n });\n return dict;\n}\n\n// For some reason its important to use ' in the content for the Palette and ContextPad\n// Do not change!\nfunction wrapSRCInSVG(src) {\n return (\n \"\" +\n \"\"\n );\n}\n","\"use strict\";\n\nimport { getNumbersAndIDs } from \"../numbering/numbering\";\n\n/**\n * commandStack Handler for changes at activities\n */\n\nlet canvasElementRegistry;\nexport function initializeActivityUpdateHandler(canvasElementRegistryService) {\n canvasElementRegistry = canvasElementRegistryService;\n}\n\nexport default function activityUpdateHandler(commandStack, eventBus) {\n commandStack.registerHandler(\n \"activity.directionChange\",\n activity_directionChange,\n );\n commandStack.registerHandler(\"activity.changed\", activity_changed);\n\n // update the activity from the activity-dialog, either with or without number\n // and change other activities too, to keep the numbers consistent\n function activity_changed(modeling) {\n this.preExecute = function (context) {\n context.oldLabel = context.businessObject.name || \" \";\n\n let oldNumbersWithIDs = getNumbersAndIDs();\n modeling.updateLabel(context.businessObject, context.newLabel);\n modeling.updateNumber(context.businessObject, context.newNumber);\n\n context.oldNumber = context.businessObject.number;\n context.oldNumbersWithIDs = oldNumbersWithIDs;\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n\n if (context.newLabel && context.newLabel.length < 1) {\n context.newLabel = \" \";\n }\n\n businessObject.name = context.newLabel;\n businessObject.number = context.newNumber;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n semantic.name = context.oldLabel;\n semantic.number = context.oldNumber;\n\n revertAutomaticNumberGenerationChange(\n context.oldNumbersWithIDs,\n eventBus,\n );\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n\n // change the direction of a single activity without affecting other activities\n function activity_directionChange(modeling) {\n this.preExecute = function (context) {\n context.oldNumber = context.businessObject.number;\n context.oldWaypoints = context.element.waypoints;\n context.name = context.businessObject.name;\n\n if (!context.oldNumber) {\n context.oldNumber = 0;\n }\n modeling.updateNumber(context.businessObject, context.newNumber);\n };\n\n this.execute = function (context) {\n let businessObject = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n let newWaypoints = [];\n let waypoints = element.waypoints;\n\n for (let i = waypoints.length - 1; i >= 0; i--) {\n newWaypoints.push(waypoints[i]);\n }\n\n element.source = element.target;\n businessObject.source = businessObject.target;\n element.target = swapSource;\n businessObject.target = swapSource.id;\n\n businessObject.name = context.name;\n businessObject.number = context.newNumber;\n element.waypoints = newWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n\n this.revert = function (context) {\n let semantic = context.businessObject;\n let element = context.element;\n let swapSource = element.source;\n\n element.source = element.target;\n semantic.source = semantic.target;\n element.target = swapSource;\n semantic.target = swapSource.id;\n\n semantic.name = context.name;\n\n semantic.number = context.oldNumber;\n element.waypoints = context.oldWaypoints;\n\n eventBus.fire(\"element.changed\", { element });\n };\n }\n}\n\n// reverts the automatic changed done by the automatic number-generation at editing\nfunction revertAutomaticNumberGenerationChange(iDWithNumber, eventBus) {\n let activities = canvasElementRegistry?.getActivitesFromActors();\n for (let i = activities.length - 1; i >= 0; i--) {\n for (let j = iDWithNumber.length - 1; j >= 0; j--) {\n if (iDWithNumber[j].id.includes(activities[i].businessObject.id)) {\n let element = activities[i];\n element.businessObject.number = iDWithNumber[j].number;\n j = -5;\n eventBus.fire(\"element.changed\", { element });\n iDWithNumber.splice(j, 1);\n }\n }\n }\n}\n","\"use strict\";\n\nimport { undoGroupRework } from \"../util\";\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","/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function headlineAndDescriptionUpdateHandler(\n commandStack,\n titleService,\n) {\n commandStack.registerHandler(\n \"story.updateHeadlineAndDescription\",\n handlerFunction,\n );\n\n function handlerFunction() {\n this.execute = function (ctx) {\n ctx.oldTitle = titleService.getTitle();\n ctx.oldDescription = titleService.getDescription();\n\n titleService.updateTitleAndDescription(\n ctx.newTitle,\n ctx.newDescription,\n false,\n );\n };\n\n this.revert = function (ctx) {\n titleService.updateTitleAndDescription(\n ctx.oldTitle,\n ctx.oldDescription,\n false,\n );\n };\n }\n}\n","\"use strict\";\n\nexport default function DSMassRenameHandler(commandStack, eventBus) {\n commandStack.registerHandler(\"domainStoryObjects.massRename\", massRename);\n\n function massRename(modeling) {\n this.preExecute = function (context) {\n let relevantElements = context.elements;\n\n context.oldLabel = relevantElements[0].businessObject.name;\n\n relevantElements.forEach((element) => {\n modeling.updateLabel(element.businessObject, confirm.newValue);\n });\n };\n\n this.execute = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.newValue;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n\n this.revert = function (context) {\n let relevantElements = context.elements;\n relevantElements.forEach((element) => {\n let semantic = element.businessObject;\n semantic.name = context.oldLabel;\n\n eventBus.fire(\"element.changed\", { element });\n });\n };\n }\n}\n","\"use strict\";\n\nimport {\n setLabel,\n getLabel,\n setNumber,\n getNumber,\n} from \"../labeling/dsLabelUtil\";\n\nimport {\n getExternalLabelMid,\n isLabelExternal,\n hasExternalLabel,\n isLabel,\n} from \"bpmn-js/lib/util/LabelUtil\";\n\nimport { ElementTypes } from \"src/app/domain/entities/elementTypes\";\nimport { getBusinessObject, is } from \"../util\";\n\nconst NULL_DIMENSIONS = {\n width: 0,\n height: 0,\n};\n\n/**\n * a handler that updates the text of a BPMN element.\n */\nexport default function UpdateLabelHandler(\n modeling,\n textRenderer,\n commandStack,\n) {\n commandStack.registerHandler(\"element.updateCustomLabel\", handlerFunction);\n\n function handlerFunction() {\n /**\n * Set the label and return the changed elements.\n *\n * Element parameter can be label itself or connection (i.e. sequence flow).\n *\n * @param {djs.model.Base} element\n * @param {String} text\n */\n\n this.preExecute = function (ctx) {\n let element = ctx.element,\n businessObject = element.businessObject,\n newLabel = ctx.newLabel,\n newNumber = ctx.newNumber;\n\n if (\n !isLabel(element) &&\n isLabelExternal(element) &&\n !hasExternalLabel(element) &&\n (newLabel !== \"\" || newNumber !== \"\")\n ) {\n // create label\n let paddingTop = 7;\n\n let labelCenter = getExternalLabelMid(element);\n\n labelCenter = {\n x: labelCenter.x,\n y: labelCenter.y + paddingTop,\n };\n\n modeling.createLabel(element, labelCenter, {\n id: businessObject.id + \"_label\",\n businessObject: businessObject,\n });\n }\n };\n\n this.execute = function (ctx) {\n ctx.oldLabel = getLabel(ctx.element);\n ctx.oldNumber = getNumber(ctx.element);\n return setText(ctx.element, ctx.newLabel, ctx.newNumber);\n };\n\n this.revert = function (ctx) {\n return setText(ctx.element, ctx.oldLabel, ctx.oldNumber);\n };\n\n this.postExecute = function (ctx) {\n let element = ctx.element,\n label = element.label || element,\n newLabel = ctx.newLabel,\n newBounds = ctx.newBounds;\n\n if (isLabel(label) && newLabel.trim() === \"\") {\n modeling.removeShape(label);\n\n return;\n }\n\n // ignore internal labels for elements except text annotations\n if (\n !isLabelExternal(element) &&\n !is(element, ElementTypes.TEXTANNOTATION)\n ) {\n return;\n }\n\n let bo = getBusinessObject(label);\n\n let text = bo.name || bo.text;\n\n // don't resize without text\n if (!text) {\n return;\n }\n\n // resize element based on label _or_ pre-defined bounds\n if (typeof newBounds === \"undefined\") {\n newBounds = textRenderer.getLayoutedBounds(label, text);\n }\n\n // setting newBounds to false or _null_ will\n // disable the postExecute resize operation\n if (newBounds) {\n modeling.resizeShape(label, newBounds, NULL_DIMENSIONS);\n }\n };\n }\n}\n\nfunction setText(element, text, textNumber) {\n // external label if present\n let label = element.label || element;\n\n let number = element.number || element;\n\n let labelTarget = element.labelTarget || element;\n\n let numberTarget = element.numberTarget || element;\n setLabel(label, text);\n setNumber(number, textNumber);\n\n return [label, labelTarget, number, numberTarget];\n}\n\nUpdateLabelHandler.$inject = [\"modeling\", \"textRenderer\", \"commandStack\"];\n","import { some } from \"min-dash\";\n\nexport function is(element, type) {\n const bo = getBusinessObject(element);\n\n return bo && 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","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\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,\n SNACKBAR_DURATION_LONG,\n SNACKBAR_INFO,\n YELLOW,\n} from './domain/entities/constants';\nimport { MatSnackBar } from '@angular/material/snack-bar';\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 ) {\n this.showSettings$ = new BehaviorSubject(false);\n this.showDescription$ = new BehaviorSubject(true);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.ctrlKey && e.key === 's') {\n e.preventDefault();\n e.stopPropagation();\n if (this.exportService.isDomainStoryExportable()) {\n this.exportService.downloadDST();\n }\n }\n if (e.ctrlKey && e.key === 'l') {\n e.preventDefault();\n e.stopPropagation();\n document.getElementById('import')?.click();\n }\n if (\n (e.key === 'ArrowRight' || e.key === 'ArrowUp') &&\n 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.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","
\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/bpmn/modeler/context-pad/domainStoryContextPadProvider';\nimport { initializePalette } from './tools/modeler/bpmn/modeler/palette/domainStoryPalette';\nimport { initializeRenderer } from './tools/modeler/bpmn/modeler/domainStoryRenderer';\nimport { initializeLabelEditingProvider } from './tools/modeler/bpmn/modeler/labeling/dsLabelEditingProvider';\nimport { initializeReplaceOptions } from './tools/modeler/bpmn/modeler/change-icon/replaceOptions';\nimport { initializeNumbering } from './tools/modeler/bpmn/modeler/numbering/numbering';\nimport { initializeActivityUpdateHandler } from './tools/modeler/bpmn/modeler/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';\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 ],\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 /** The Palette and the Context Menu need the Icons present in the Domain,\n * so the IconDictionaryService and the IconSetConfigurationService needs to be given to the Palette **/\n initializePalette(iconDictionaryService, configurationService);\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/** LocalStorageTags **/\nexport const APPENDED_ICONS_TAG = 'appendedIcons';\n// String value of tag should not be renamed, because existing configurations would not load\nexport const ICON_SET_CONFIGURATION_TAG = 'iconSetConfigurationTag';\n\n/** Version Key **/\nexport const VERSION_KEY = 'versionKey';\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/** BPMN_RELEVANT_CONSTANTS **/\nexport const IMPLICIT_ROOT_ID = '__implicitroot';\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(new Entry(entry.value, entry.key));\n }\n }\n\n keysArray(): string[] {\n return this.entries.map((entry) => entry.key);\n }\n\n addEach(object: any): void {\n Object.keys(object).forEach((key) => {\n this.set(key, object[key]);\n });\n }\n\n appendDict(dict: Dictionary): void {\n dict.entries.forEach((entry) => this.putEntry(entry));\n }\n\n clear(): void {\n this.entries = [];\n }\n\n delete(key: string): void {\n this.entries = this.entries.filter((entry) => entry.key !== key);\n }\n\n get(key: string): any {\n const found = this.entries.filter((entry) => entry.key === key);\n return found[0] ? found[0].value : null;\n }\n}\n\nexport class Entry {\n value: any;\n key: string;\n\n constructor(value: any, key: string) {\n this.value = value;\n this.key = key;\n }\n}\n","export enum ElementTypes {\n ACTIVITY = 'domainStory:activity',\n CONNECTION = 'domainStory:connection',\n ACTOR = 'domainStory:actor',\n WORKOBJECT = 'domainStory:workObject',\n GROUP = 'domainStory:group',\n TEXTANNOTATION = 'domainStory:textAnnotation',\n DOMAINSTORY = 'domainStory:',\n}\n\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","export class InfoDialogData {\n title: string;\n infoText: string;\n isInfo: boolean;\n isLink: boolean;\n linkText: string | undefined;\n\n constructor(\n title: string,\n infoText: string,\n isInfo: boolean,\n isLink: boolean = false,\n linkText?: string,\n ) {\n this.title = title;\n this.infoText = infoText;\n this.isInfo = isInfo;\n this.isLink = isLink;\n this.linkText = linkText;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { InfoDialogComponent } from './info-dialog/info-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../material.module';\n\n@NgModule({\n declarations: [InfoDialogComponent],\n exports: [InfoDialogComponent],\n imports: [CommonModule, MaterialModule],\n})\nexport class DomainModule {}\n","import { AfterViewInit, Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { InfoDialogData } from 'src/app/domain/entities/infoDialogData';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './info-dialog.component.html',\n styleUrls: ['./info-dialog.component.scss'],\n})\nexport class InfoDialogComponent implements AfterViewInit {\n title: string;\n infoText: string;\n showConfirmButton: boolean;\n hasLink: boolean;\n linkText: string;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: InfoDialogData,\n ) {\n this.title = data.title;\n this.infoText = data.infoText;\n this.showConfirmButton = !data.isInfo;\n this.hasLink = data.isLink;\n this.linkText = data.linkText || '';\n }\n\n ngAfterViewInit() {\n const span = document.getElementsByClassName(\n 'readOnlyText',\n )[0] as HTMLTextAreaElement;\n span.style.height = span.scrollHeight + 'px';\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

{{ title }}

\n @if (infoText != \"\") {\n {{ infoText }} \n }\n @if (hasLink) {\n {{ linkText }}\n }\n
\n\n@if (showConfirmButton) {\n \n \n \n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CommandStackService {\n private commandStack: any;\n\n constructor() {}\n\n setCommandStack(commandStack: any): void {\n this.commandStack = commandStack;\n }\n\n execute(action: string, payload: any) {\n this.commandStack.execute(action, payload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { InfoDialogData } from '../entities/infoDialogData';\nimport { InfoDialogComponent } from '../presentation/info-dialog/info-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private matDialog: MatDialog) {}\n\n openDialog(dialog: ComponentType, config: MatDialogConfig): void {\n this.matDialog.open(dialog, config);\n }\n\n openKeyboardShortcutsDialog(): void {\n const title = 'Keyboard Shortcuts';\n const shortCutText =\n 'Undo:\\t\\t\\t\\t\\tctrl + Z \\n' +\n 'Redo:\\t\\t\\t\\t\\tctrl + Y OR ctrl + shift + Z\\n' +\n 'Select All:\\t\\t\\t\\tctrl + A\\n' +\n 'Export as EGN:\\t\\t\\tctrl + S\\n' +\n 'Import Domain Story: \\tctrl + L\\n' +\n 'Search for text:\\t\\t\\tctrl + F\\n' +\n 'Direct editing:\\t\\t\\tE\\n' +\n 'Hand tool:\\t\\t\\t\\tH\\n' +\n 'Lasso tool:\\t\\t\\t\\tL\\n' +\n 'Space tool:\\t\\t\\t\\tS';\n\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n\n config.data = new InfoDialogData(title, shortCutText, true);\n\n this.openDialog(InfoDialogComponent, config);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DirtyFlagService {\n private isDirtySubject = new BehaviorSubject(false);\n dirty$ = this.isDirtySubject.asObservable();\n\n makeDirty(): void {\n this.isDirtySubject.next(true);\n }\n\n makeClean(): void {\n this.isDirtySubject.next(false);\n }\n\n get dirty(): boolean {\n return this.isDirtySubject.value;\n }\n}\n","import { Injectable } from '@angular/core';\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\n const objectList: CanvasObject[] = [];\n\n this.fillListOfCanvasObjects(allObjectsFromCanvas, objectList, groups);\n\n return objectList;\n }\n return [];\n }\n\n private fillListOfCanvasObjects(\n allObjectsFromCanvas: CanvasObject[],\n objectList: CanvasObject[],\n groups: GroupCanvasObject[],\n ): void {\n allObjectsFromCanvas.forEach((canvasElement) => {\n if (canvasElement.type === ElementTypes.ACTIVITY) {\n objectList.push(canvasElement);\n }\n\n // ensure that Activities are always after Actors, Workobjects and Groups in .dst files\n else {\n if (canvasElement.type === ElementTypes.TEXTANNOTATION) {\n canvasElement.businessObject.width = canvasElement.width;\n canvasElement.businessObject.height = canvasElement.height;\n }\n if (!objectList.includes(canvasElement)) {\n objectList.unshift(canvasElement);\n }\n }\n });\n\n groups.forEach((group) => {\n objectList.push(group);\n });\n }\n\n getAllActivities(): ActivityCanvasObject[] {\n const activities: ActivityCanvasObject[] = [];\n\n this.getAllCanvasObjects().forEach((element) => {\n if (element.type.includes(ElementTypes.ACTIVITY)) {\n activities.push(element as ActivityCanvasObject);\n }\n });\n return activities;\n }\n\n getAllConnections(): ActivityCanvasObject[] {\n const connections: ActivityCanvasObject[] = [];\n this.getAllCanvasObjects().forEach((element) => {\n const type = element.type;\n if (type === ElementTypes.CONNECTION) {\n connections.push(element as ActivityCanvasObject);\n }\n });\n return connections;\n }\n\n getAllCanvasObjects(): CanvasObject[] {\n const allObjects: CanvasObject[] = [];\n const groupObjects: GroupCanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n // for each memorized group, remove it from the group-array and check its children, whether they are groups or not\n // if a child is a group, memorize it in the group-array\n // other children should already be in the allObjects list\n let i = groupObjects.length - 1;\n while (groupObjects.length >= 1) {\n const currentGroup = groupObjects.pop();\n // @ts-ignore\n currentGroup.children.forEach((child: CanvasObject) => {\n const type = child.type;\n if (type.includes(ElementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n i = groupObjects.length - 1;\n }\n return allObjects;\n }\n\n // returns all groups on the canvas and inside other groups\n getAllGroups(): GroupCanvasObject[] {\n const groupObjects: GroupCanvasObject[] = [];\n const allObjects: CanvasObject[] = [];\n\n this.checkChildForGroup(groupObjects, allObjects);\n\n for (const group of groupObjects) {\n group.children?.forEach((child: CanvasObject) => {\n if (child.type.includes(ElementTypes.GROUP)) {\n groupObjects.push(child as GroupCanvasObject);\n }\n });\n }\n return groupObjects;\n }\n\n private checkChildForGroup(\n groupObjects: GroupCanvasObject[],\n allObjects: CanvasObject[],\n ): void {\n const registryElementNames = Object.keys(this.registry);\n for (let name of registryElementNames) {\n const entry = this.registry[name].element;\n if (entry.businessObject) {\n const type = entry.type;\n if (type && type.includes(ElementTypes.GROUP)) {\n // if it is a group, memorize this for later\n groupObjects.push(entry);\n } else if (type) {\n allObjects.push(entry);\n }\n }\n }\n }\n\n // get a list of activities, that originate from an actor-type\n getActivitiesFromActors(): ActivityCanvasObject[] {\n const activitiesFromActors: ActivityCanvasObject[] = [];\n const activities = this.getAllActivities();\n\n activities.forEach((activity: ActivityCanvasObject) => {\n if (activity.source?.type.includes(ElementTypes.ACTOR)) {\n activitiesFromActors.push(activity);\n }\n });\n\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 \n \n Autosave Options\n \n \n
\n \n Enabled\n
\n
\n Interval [sec]\n \n
\n
\n Max. Drafts\n \n
\n \n Apply\n \n
\n
\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-autosave-settings',\n templateUrl: './autosave-settings.component.html',\n styleUrls: ['./autosave-settings.component.scss'],\n})\nexport class AutosaveSettingsComponent {}\n","\n\n","import { Component, OnInit } from '@angular/core';\nimport { AutosaveService } from '../../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","\n \n \n History\n \n {{ drafts.length ? drafts.length : \"no\" }}\n {{ drafts.length > 1 ? \"drafts\" : \"draft\" }} available\n \n \n @if (drafts.length) {\n
\n @for (draft of drafts; track draft) {\n
\n
\n
{{ draft.title }}
\n
{{ draft.date }}
\n
\n \n Load Draft\n \n
\n }\n
\n
\n \n Remove All Drafts\n \n
\n
\n } @else {\n No drafts found.\n }\n
\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(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 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\nexport const DRAFTS_TAG = 'autosaveDrafts';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutosaveService {\n private autosaveTimer: any;\n autosavedDraftsChanged$ = new Subject();\n\n constructor(\n private autosaveConfiguration: AutosaveConfigurationService,\n private exportService: ExportService,\n private iconDictionaryService: IconDictionaryService,\n private rendererService: RendererService,\n private snackbar: MatSnackBar,\n private storageService: StorageService,\n private titleService: TitleService,\n 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_TAG, []);\n this.autosavedDraftsChanged$.next();\n }\n\n loadLatestDraft() {\n const drafts = this.readDrafts();\n if (drafts.length === 0) {\n return;\n }\n this.loadDraft(drafts[0]);\n }\n\n private updateConfiguration(configuration: AutosaveConfiguration) {\n this.stopTimer();\n\n if (configuration.activated) {\n this.startTimer(configuration.interval, configuration.maxDrafts);\n }\n }\n\n private stopTimer(): void {\n if (this.autosaveTimer) {\n clearInterval(this.autosaveTimer);\n this.autosaveTimer = undefined;\n }\n }\n\n private startTimer(interval: number, maxDrafts: number): void {\n this.autosaveTimer = setInterval(() => {\n const savedDrafts = this.loadCurrentDrafts();\n const newDraft = this.createDraft();\n let isChanged = maxDrafts > 0;\n if (savedDrafts.length > 0) {\n isChanged = isChanged && !this.isSame(newDraft, savedDrafts[0]);\n }\n if (isChanged && !this.isDraftEmpty(newDraft)) {\n savedDrafts.unshift(newDraft);\n while (savedDrafts.length > maxDrafts) {\n savedDrafts.pop();\n }\n this.writeDrafts(savedDrafts);\n this.snackbar.open('Draft Saved', undefined, {\n panelClass: SNACKBAR_INFO,\n duration: SNACKBAR_DURATION,\n });\n this.autosavedDraftsChanged$.next();\n }\n }, interval * 1000);\n }\n\n private isDraftEmpty(draft: Draft) {\n 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_TAG, drafts);\n }\n\n private readDrafts(): Draft[] {\n return this.storageService.get(DRAFTS_TAG) ?? [];\n }\n\n private createDraft(): Draft {\n const dst = JSON.stringify(this.rendererService.getStory(), null, 2);\n const configAndDST = this.exportService.createConfigAndDST(dst);\n\n const date = new Date().toString().slice(0, 25);\n\n return {\n title: this.titleService.getTitle(),\n description: this.titleService.getDescription(),\n configAndDST,\n date,\n };\n }\n\n private sortDrafts(drafts: Draft[]): void {\n drafts.sort((a: Draft, b: Draft) => {\n const aDate = Date.parse(a.date);\n const bDate = Date.parse(b.date);\n return aDate > bDate ? 0 : 1;\n });\n }\n}\n","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\":\"' +\n '' +\n '\",' +\n '\"Group\":\"' +\n '' +\n '\",' +\n '\"System\":\"' +\n '\"},' +\n '\"workObjects\":{\"Document\":\"' +\n '\",' +\n '\"Folder\":\"' +\n '' +\n '\",' +\n '\"Call\":\"' +\n '\",' +\n '\"Email\":\"' +\n '\",' +\n '\"Conversation\":\"' +\n '\",' +\n '\"Info\":\"' +\n '' +\n '\"}}',\n ),\n dst:\n '[' +\n '{\"type\":\"domainStory:workObjectDocument\",\"name\":\"\",\"id\":\"shape_3792\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":302,\"y\":102},' +\n '{\"type\":\"domainStory:actorPerson\",\"name\":\"\",\"id\":\"shape_4666\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"x\":103,\"y\":93},' +\n '{\"type\":\"domainStory:activity\",\"name\":\"\",\"id\":\"connection_4884\",\"$type\":\"Element\",\"di\":{},\"$descriptor\":{},\"pickedColor\":\"black\",\"number\":1,' +\n '\"waypoints\":[{\"original\":{\"x\":141,\"y\":131},\"x\":186,\"y\":133},{\"original\":{\"x\":340,\"y\":140},\"x\":302,\"y\":138}],' +\n '\"source\":\"shape_4666\",\"target\":\"shape_3792\"}]',\n};\n","export const SVG_LINK = 'http://www.w3.org/2000/svg';\nexport const X_OFFSET_UTIL = '8';\nexport const TEXTSPAN_TITLE_HEIGHT = 30;\nexport const TEXTSPAN_DESCRIPTION_HEIGHT = 15;\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;\n useWhiteBackground: BehaviorSubject;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: ExportDialogData,\n ) {\n this.withTitle = new BehaviorSubject(true);\n this.useWhiteBackground = new BehaviorSubject(true);\n this.title = data.title;\n this.options = data.options;\n }\n\n ngOnInit(): void {}\n\n doOption(i: number): void {\n this.options[i].fn(this.withTitle.value, this.useWhiteBackground.value);\n this.close();\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n updateWithTitle($event: Event) {\n // @ts-ignore\n this.withTitle.next($event.target.checked);\n }\n\n updateUseWhiteBackground($event: Event) {\n // @ts-ignore\n this.useWhiteBackground.next($event.target.checked);\n }\n}\n","\n

{{ title }}

\n \n
\n \n
\n\n
\n\n
\n \n @for (option of options; track option; let i = $index) {\n \n {{ option.text }}\n \n }\n
\n
\n","import { ExportDialogComponent } from './export-dialog/export-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [ExportDialogComponent],\n exports: [ExportDialogComponent],\n imports: [CommonModule, MaterialModule],\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';\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(withTitle: boolean, useWhiteBackground: boolean): void {\n const story = this.getStoryForDownload();\n const dst = this.createConfigAndDST(story);\n\n const svgData = this.svgService.createSVGData(\n this.title,\n this.description,\n dst,\n withTitle,\n useWhiteBackground,\n );\n\n this.downloadFile(\n svgData,\n 'data:application/bpmn20-xml;charset=UTF-8,',\n sanitizeForDesktop(this.title + '_' + this.getCurrentDateString()),\n '.egn.svg',\n true,\n );\n }\n\n downloadPNG(withTitle: boolean): void {\n const canvas = document.getElementById('canvas');\n if (canvas) {\n const container = canvas.getElementsByClassName('djs-container');\n const svgElements = container[0].getElementsByTagName('svg');\n const outerSVGElement = svgElements[0];\n const viewport = outerSVGElement.getElementsByClassName('viewport')[0];\n const layerBase = viewport.getElementsByClassName('layer-base')[0];\n\n const image = document.createElement('img');\n\n // removes unwanted black dots in image\n let svg = this.pngService.extractSVG(viewport, outerSVGElement);\n\n svg = this.pngService.prepareSVG(\n svg,\n layerBase,\n this.description,\n this.title,\n withTitle,\n );\n\n image.onload = () => {\n const tempCanvas = document.createElement('canvas');\n\n // add a 10px buffer to the right and lower boundary\n tempCanvas.width = this.pngService.getWidth() + 10;\n tempCanvas.height = this.pngService.getHeight() + 10;\n\n const ctx = tempCanvas.getContext('2d');\n if (ctx) {\n // fill with white background\n ctx.rect(0, 0, tempCanvas.width, tempCanvas.height);\n ctx.fillStyle = 'white';\n ctx.fill();\n\n ctx.drawImage(image, 0, 0);\n }\n\n const png64 = tempCanvas.toDataURL('image/png');\n const ele = document.createElement('a');\n ele.setAttribute(\n 'download',\n sanitizeForDesktop(this.title) +\n '_' +\n this.getCurrentDateString() +\n '.png',\n );\n ele.setAttribute('href', png64);\n document.body.appendChild(ele);\n ele.click();\n document.body.removeChild(ele);\n\n // image source has to be removed to circumvent browser caching\n image.src = '';\n };\n image.onchange = image.onload;\n\n image.width = this.pngService.getWidth();\n image.height = this.pngService.getHeight();\n\n image.src = 'data:image/svg+xml,' + svg;\n }\n }\n\n downloadHTMLPresentation(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 const story = this.rendererService.getStory() as unknown[];\n story.push({ info: this.titleService.getDescription() });\n story.push({ version: environment.version });\n return story;\n }\n\n private getCurrentDateString(): string {\n return formatDate(new Date(), 'YYYY-MM-dd', 'en-GB');\n }\n\n 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 (withTitle: boolean, useWhiteBackground: boolean) =>\n this.downloadSVG(withTitle, useWhiteBackground),\n );\n const EGNDownloadOption = new ExportOption(\n 'EGN',\n 'Download an EGN-File with the Domain-Story. Can be used to save and share your Domain-Story.',\n () => this.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 {\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(''),\n result.svg.indexOf('') + 7,\n );\n const split = defs.split(' {\n const idToReplace = id.substring(4, id.length - 1);\n const newId =\n idToReplace.slice(0, id.length - 5) +\n 'customId' +\n sectionIndex +\n idToReplace.slice(idToReplace.length - 2);\n // @ts-ignore\n result.svg = result.svg.replaceAll(idToReplace, newId);\n });\n newDefs += '= 72) {\n fix = true;\n // https://www.chromestatus.com/features/5656049583390720\n }\n } else if (name.includes('Firefox')) {\n fix = true;\n\n // versionNumber of implementation unknown\n }\n if (fix) {\n while (svg.includes('#')) {\n svg = svg.replace('#', '%23');\n }\n }\n return svg;\n }\n\n findMostOuterElements(svg: HTMLElement): Box {\n let xLeft = 0;\n let xRight = 0;\n let yUp = 0;\n let yDown = 0;\n\n const elements = svg.getElementsByClassName('djs-group');\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const sub = element.children;\n\n let elXLeft: number;\n let elXRight: number;\n let elYUp: number;\n let elYDown: number;\n\n const transform = sub[0].getAttribute('transform');\n if (transform) {\n let nums;\n\n if (transform.includes('matrix')) {\n transform.replace('matrix(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[4]);\n elYUp = parseInt(nums[5]);\n } else {\n transform.replace('translate(', '');\n transform.replace(')', '');\n nums = transform.split(' ');\n elXLeft = parseInt(nums[0]);\n elYUp = parseInt(nums[1]);\n }\n\n const rects = sub[0].getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const width = outerRect.getAttribute('width');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + sub[0].getBoundingClientRect().height;\n } else {\n const rects = element.getElementsByTagName('rect');\n const outerRect = rects[rects.length - 1];\n\n const x = outerRect.getAttribute('x');\n const y = outerRect.getAttribute('y');\n\n elXLeft = parseInt(x != null ? x : '0');\n elYUp = parseInt(y != null ? y : '0');\n\n const width = outerRect.getAttribute('width');\n const height = outerRect.getAttribute('height');\n\n elXRight = elXLeft + parseInt(width != null ? width : '0');\n elYDown = elYUp + parseInt(height != null ? height : '0') + 20; // Add 20 px as Padding for text at the bottom\n }\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elXRight > xRight) {\n xRight = elXRight;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n if (elYDown > yDown) {\n yDown = elYDown;\n }\n }\n\n yUp -= 75; // we need to adjust yUp to have space for the title and description\n\n return {\n xLeft,\n xRight,\n yUp,\n yDown,\n };\n }\n\n prepareSVG(\n svg: string,\n layerBase: any,\n description: string,\n title: string,\n withTitle: boolean,\n ): string {\n const box = this.findMostOuterElements(layerBase);\n let viewBoxIndex = svg.indexOf('width=\"');\n\n this.calculateWidthAndHeight(box);\n\n const { insertText, 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, dynamicHeightOffset);\n\n const dataStart = svg.substring(0, viewBoxIndex);\n viewBoxIndex = svg.indexOf('style=\"');\n\n const dataEnd = svg.substring(viewBoxIndex);\n dataEnd.substring(viewBoxIndex);\n\n svg = dataStart + bounds + dataEnd;\n\n const insertIndex = svg.indexOf('') + 20;\n\n if (withTitle) {\n svg = [\n svg.slice(0, insertIndex),\n insertText,\n svg.slice(insertIndex),\n ].join('');\n }\n svg = this.URIHashtagFix(svg);\n\n return svg;\n }\n\n private createBounds(box: Box, extraHeight: number) {\n return (\n 'width=\"' +\n this.width +\n '\" height=\"' +\n this.height +\n '\" viewBox=\" ' +\n box.xLeft +\n ' ' +\n (box.yUp - extraHeight) +\n ' ' +\n this.width +\n ' ' +\n this.height +\n '\" '\n );\n }\n\n /**\n * Calculate the Width and Height of the Bounding Box for the PNG so no Parts are cut off\n */\n private calculateWidthAndHeight(box: Box): [number, number] {\n if (box.xLeft < 0) {\n if (box.xRight < 0) {\n this.width = Math.abs(box.xLeft - box.xRight);\n } else {\n this.width = Math.abs(box.xLeft) + box.xRight;\n }\n } else {\n this.width = box.xRight - box.xLeft;\n }\n\n if (box.yUp < 0) {\n if (box.yDown < 0) {\n this.height = Math.abs(box.yUp - box.yDown);\n } else {\n this.height = Math.abs(box.yUp) + box.yDown;\n }\n } else {\n this.height = box.yDown - box.yUp;\n }\n\n // if the domain-Story is smaller than 300px in width or height, increase its dimensions\n if (this.height < 300) {\n this.height += 300;\n box.yUp -= 150;\n box.yDown += 150;\n }\n if (this.width < 300) {\n this.width += 300;\n box.xLeft -= 150;\n box.xRight += 150;\n }\n return [this.height, this.width];\n }\n\n extractSVG(viewport: any, outerSVGElement: any): string {\n const layerResizers = viewport.getElementsByClassName('layer-resizers');\n const layerOverlays = viewport.getElementsByClassName('layer-overlays');\n const transform = viewport.getAttribute('transform');\n const translate = viewport.getAttribute('translate');\n\n if (layerResizers[0]) {\n layerResizers[0].parentNode.removeChild(layerResizers[0]);\n }\n if (layerOverlays[0]) {\n layerOverlays[0].parentNode.removeChild(layerOverlays[0]);\n }\n\n // remove canvas scrolling and scaling before serializeToString of SVG\n if (transform) {\n viewport.removeAttribute('transform');\n }\n if (translate) {\n viewport.removeAttribute('translate');\n }\n\n const svg = new XMLSerializer().serializeToString(outerSVGElement);\n\n // re-add canvas scrolling and scaling\n if (transform) {\n viewport.setAttribute('transform', transform);\n }\n if (translate) {\n viewport.setAttribute('translate', translate);\n }\n return svg;\n }\n\n getWidth(): number {\n return this.width;\n }\n\n getHeight(): number {\n return this.height;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigAndDST } from 'src/app/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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SvgService {\n private cacheData = '';\n\n constructor(private modelerService: ModelerService) {}\n\n createSVGData(\n title: string,\n description: string,\n dst: ConfigAndDST,\n withTitle: boolean,\n useWhiteBackground: boolean,\n ): string {\n this.cacheData = this.modelerService.getEncoded();\n\n let domainStorySvg = structuredClone(this.cacheData);\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 findIndexToInsertData(data: string) {\n let insertIndex = data.indexOf('');\n if (insertIndex < 0) {\n insertIndex = data.indexOf('version=\"1.2\">') + 14;\n } else {\n insertIndex += 7;\n }\n return insertIndex;\n }\n\n private createBounds(\n width: number,\n height: number,\n 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 return data;\n }\n}\n","import { Dictionary } from 'src/app/domain/entities/dictionary';\n\nexport let appendedIcons = new Dictionary();\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 allIcons = {\n Person:\n '',\n Group:\n '',\n Pet: '',\n Conversation:\n '',\n World:\n '',\n Store:\n '',\n Theater:\n '',\n Business:\n '',\n Water:\n '',\n Hotel:\n '',\n Dining:\n '',\n 'Gas-station':\n '',\n 'Meeting-room':\n '',\n Courthouse:\n '',\n Flag: '',\n Place:\n '',\n Car: '',\n Bus: '',\n Train:\n '',\n Truck:\n '',\n Taxi: '',\n Bike: '',\n Boat: '',\n Motorcycle:\n '',\n Plane:\n '',\n 'Flight-takeoff':\n '',\n 'Flight-landing':\n '',\n Shuttle:\n '',\n Walking:\n '',\n Traffic:\n '',\n Commute:\n '',\n System:\n '',\n Printer:\n '',\n Document:\n '',\n Folder:\n '',\n Call: '',\n Email:\n '',\n Copyright:\n '',\n DNS: '',\n Settings:\n '',\n Cellphone:\n '',\n Update:\n '',\n Briefcase:\n '',\n Microphone:\n '',\n Signal:\n '',\n Key: '',\n Pencil:\n '',\n Sum: '',\n Headset:\n '',\n Keyboard:\n '',\n Mouse:\n '',\n Router:\n '',\n Scanner:\n '',\n Security:\n '',\n Desktop:\n '',\n 'Speaker-phone':\n '',\n Tablet:\n '',\n Label:\n '',\n Receipt:\n '',\n Calendar:\n '',\n Cloud:\n '',\n Assessment:\n '',\n Dashboard:\n '',\n 'Pie-chart':\n '',\n Problem:\n '',\n 'Picture-as-PDF':\n '',\n Grid: '',\n Watch:\n '',\n Euro: '',\n Dollar:\n '',\n Info: '',\n Alarm:\n '',\n Wrench:\n '',\n 'Circle-Arrows':\n '',\n 'Credit-Card':\n '',\n Favorite:\n '',\n Gavel:\n '',\n Blind:\n '',\n Hourglass:\n '',\n Time: '',\n Search:\n '',\n Shopping:\n '',\n 'Thumb-up':\n '',\n 'Thumb-down':\n '',\n 'Thumb-up-down':\n '',\n Couch:\n '',\n Attach:\n '',\n Ruler:\n '',\n Education:\n '',\n 'How-To-Reg':\n '',\n 'View-List':\n '',\n Accessible:\n '',\n 'Account-Circle':\n '',\n Assignment:\n '',\n Battery:\n '',\n Book: '',\n Bug: '',\n 'Change-History':\n '',\n 'Check-Circle':\n '',\n Code: '',\n 'Contact-Mail':\n '',\n Crop: '',\n DVR: '',\n Error:\n '',\n Extension:\n '',\n Face: '',\n Fastfood:\n '',\n Fingerprint:\n '',\n Hand: '',\n Help: '',\n Image:\n '',\n Lightbulb:\n '',\n Lock: '',\n Loyalty:\n '',\n 'Picture-in-Picture':\n '',\n Portrait:\n '',\n Rocket:\n '',\n Satellite:\n '',\n Share:\n '',\n Slideshow:\n '',\n Star: '',\n Sun: '',\n Table:\n '',\n Videocam:\n '',\n Wysiwyg:\n '',\n};\n\nexport function getAllStandardIconKeys(): string[] {\n const allIconsDict = new Dictionary();\n\n allIconsDict.addEach(allIcons);\n\n return allIconsDict.keysArray();\n}\n\nexport function overrideAppendedIcons(newIcons: Dictionary): void {\n appendedIcons = newIcons;\n}\n\nexport function updateAppendedIcons(newIcons: Dictionary): void {\n for (const key in newIcons.keysArray().entries()) {\n appendedIcons.add(newIcons.get(key), key);\n }\n}\n","import { Dictionary } from 'src/app/domain/entities/dictionary';\nimport {\n overrideAppendedIcons,\n updateAppendedIcons,\n} 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 { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\nexport class IconConfiguration {\n domainName = INITIAL_ICON_SET_NAME;\n\n private allIconDictionary: Dictionary;\n\n constructor(allIconDictionary: Dictionary) {\n this.allIconDictionary = allIconDictionary;\n }\n\n /**\n * Select the Iconset which you want to use\n */\n getDefaultConf(): Configuration {\n return defaultConf;\n }\n\n updateAllIconRegistry(allIconDictionary: Dictionary): void {\n this.allIconDictionary = allIconDictionary;\n }\n\n appendSRCFile(\n actors: string[],\n actorsDict: Dictionary,\n workObjects: string[],\n workObjectsDict: Dictionary,\n ): void {\n const newAppendedIcons: { [key: string]: any } = {};\n\n actors.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = actorsDict.get(name);\n }\n });\n\n workObjects.forEach((name: string) => {\n if (!this.allIconDictionary.has(name)) {\n newAppendedIcons[name] = workObjectsDict.get(name);\n }\n });\n const appen = new Dictionary();\n Object.keys(newAppendedIcons).forEach((key) => {\n appen.set(key, newAppendedIcons[key]);\n });\n\n updateAppendedIcons(appen);\n }\n\n createCustomConf(iconSetConfiguration: IconSetConfiguration): Configuration {\n this.domainName = iconSetConfiguration.name;\n\n let actors = iconSetConfiguration.actors;\n let workObjects = iconSetConfiguration.workObjects;\n\n this.appendSRCFile(\n actors.keysArray(),\n actors,\n workObjects.keysArray(),\n workObjects,\n );\n\n return new Configuration(actors.keysArray(), workObjects.keysArray());\n }\n}\n\n/**\n * Default Iconset\n */\nexport const defaultConf = {\n actors: ['Person', 'Group', 'System'],\n workObjects: ['Document', 'Folder', 'Call', 'Email', 'Conversation', 'Info'],\n};\n","export enum IconFilterEnum {\n ICON_FILTER_ACTOR = 'ICON_FILTER_ACTOR',\n ICON_FILTER_WORKOBJECT = 'ICON_FILTER_WORKOBJECT',\n ICON_FILTER_UNASSIGNED = 'ICON_FILTER_UNASSIGNED',\n ICON_FILTER_NONE = 'ICON_FILTER_NONE',\n}\n","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","
\n \"{{\n {{ icon.name }}\n
\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({});\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","
\n
\n \"{{\n
{{ name }}
\n
\n
\n \n \n None\n \n \n Actor\n \n \n Workobject\n \n \n
\n
\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 { IconFilterEnum } from '../../domain/iconFilterEnum';\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(IconFilterEnum.ICON_FILTER_NONE);\n\n selectedActors = new BehaviorSubject([]);\n selectedWorkobjects = new BehaviorSubject([]);\n\n allIcons: BehaviorSubject;\n allIconNames = new BehaviorSubject([]);\n allFilteredIconNames = new BehaviorSubject([]);\n\n constructor(\n private 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(\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 exportIconSet(): void {\n this.iconSetCustomizationService.exportIconSet();\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) => {\n if (e.target) {\n const src: string = e.target.result as unknown as string;\n this.iconDictionaryService.addIMGToIconDictionary(src, iconName);\n // TODO: td: What kind of type is it here?\n this.iconDictionaryService.registerIconForBPMN(\n iconName,\n ICON_PREFIX + iconName.toLowerCase(),\n ElementTypes.ACTOR,\n );\n\n this.allIcons.next(this.iconDictionaryService.getFullDictionary());\n this.filter.next(this.filter.value);\n\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) => {\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 !== IconFilterEnum.ICON_FILTER_ACTOR) {\n this.filter.next(IconFilterEnum.ICON_FILTER_ACTOR);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForWorkobjects(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_WORKOBJECT) {\n this.filter.next(IconFilterEnum.ICON_FILTER_WORKOBJECT);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterForUnassigned(): void {\n if (this.filter.value !== IconFilterEnum.ICON_FILTER_UNASSIGNED) {\n this.filter.next(IconFilterEnum.ICON_FILTER_UNASSIGNED);\n } else {\n this.filter.next(IconFilterEnum.ICON_FILTER_NONE);\n }\n }\n\n filterByNameAndType($event: any) {\n const filteredByNameAndType = this.getFilteredNamesForType(\n this.filter.value,\n ).filter((name) =>\n name.toLowerCase().includes($event.target.value.toLowerCase()),\n );\n this.allFilteredIconNames.next(filteredByNameAndType.sort(this.sortByName));\n }\n\n private getFilteredNamesForType(type: IconFilterEnum): string[] {\n let allFiltered: string[] = [];\n switch (type) {\n case IconFilterEnum.ICON_FILTER_NONE:\n allFiltered = this.allIconNames.value;\n break;\n case IconFilterEnum.ICON_FILTER_ACTOR:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconActor(name),\n );\n break;\n case IconFilterEnum.ICON_FILTER_WORKOBJECT:\n allFiltered = this.allIconNames.value.filter((name) =>\n this.iconSetCustomizationService.isIconWorkObject(name),\n );\n break;\n case IconFilterEnum.ICON_FILTER_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","
\n
\n
\n
\n
Filter by assignment:
\n \n None\n \n \n Actors\n \n \n Workobjects\n \n \n
\n
\n \n \n home \n \n \n close\n \n
\n \n
\n \n unarchive\n \n \n \n
\n
\n
\n @for (iconName of allFilteredIconNames | async; track iconName) {\n \n }\n
\n
\n \n
\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 { IconListItem } from 'src/app/tools/icon-set-config/domain/iconListItem';\nimport { TitleService } from 'src/app/tools/title/services/title.service';\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;\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 titleService: TitleService,\n ) {\n this.iconSetName = titleService.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","
\n
\n
\n
\n \n \n \n
\n
\n
\n

Order of Actors

\n \n @for (\n iconName of selectedActors$ | async;\n track iconName;\n let i = $index\n ) {\n \n \n \n }\n \n
\n
\n

Order of Work Objects

\n \n @for (\n iconName of selectedWorkobjects$ | async;\n track iconName;\n let i = $index\n ) {\n \n \n \n }\n \n
\n
\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 defaultConf,\n IconConfiguration,\n} from 'src/app/tools/icon-set-config/domain/iconConfiguration';\nimport {\n allIcons,\n appendedIcons,\n} from 'src/app/tools/icon-set-config/domain/allIcons';\nimport { sanitizeIconName } from '../../../utils/sanitizer';\nimport getIconId = ElementTypes.getIconId;\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\nexport const ICON_PREFIX = 'icon-domain-story-';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconDictionaryService {\n private actorIconDictionary = new Dictionary();\n private workObjectDictionary = new Dictionary();\n\n private allIconDictionary = new Dictionary();\n private iconDictionaryForBPMN = new Dictionary();\n\n private customConfiguration?: IconSetConfiguration;\n\n private readonly iconConfig: IconConfiguration;\n\n constructor() {\n this.allIconDictionary.addEach(allIcons);\n this.iconConfig = new IconConfiguration(this.allIconDictionary);\n }\n\n initTypeDictionaries(actors: string[], workObjects: string[]): void {\n if (!actors || actors.length == 0) {\n actors = defaultConf.actors;\n }\n if (!workObjects || workObjects.length == 0) {\n workObjects = defaultConf.workObjects;\n }\n\n const allTypes = new Dictionary();\n allTypes.addEach(allIcons);\n allTypes.appendDict(this.getAppendedIconDictionary());\n\n this.initDictionary(\n actors,\n allTypes,\n this.actorIconDictionary,\n ElementTypes.ACTOR,\n );\n this.initDictionary(\n workObjects,\n allTypes,\n this.workObjectDictionary,\n ElementTypes.WORKOBJECT,\n );\n }\n\n private initDictionary(\n keys: string[],\n allTypes: Dictionary,\n dictionary: Dictionary,\n elementType: ElementTypes,\n ) {\n dictionary.clear();\n for (const key of keys) {\n dictionary.add(allTypes.get(key), key);\n }\n\n dictionary.keysArray().forEach((name) => {\n this.registerIconForBPMN(\n name,\n ICON_PREFIX + sanitizeIconName(name.toLowerCase()),\n elementType,\n );\n });\n }\n\n getCurrentIconConfigurationForBPMN(): Configuration {\n if (this.customConfiguration) {\n return this.iconConfig.createCustomConf(this.customConfiguration);\n }\n return this.iconConfig.getDefaultConf();\n }\n\n allInTypeDictionary(type: ElementTypes, elements: BusinessObject[]): boolean {\n let collection: Dictionary;\n if (type === ElementTypes.ACTOR) {\n collection = this.actorIconDictionary;\n } else if (type === ElementTypes.WORKOBJECT) {\n collection = this.workObjectDictionary;\n }\n\n let allIn = true;\n if (elements) {\n elements.forEach((element) => {\n if (!collection.has(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.addEach(allIcons);\n allTypes.appendDict(appendedIcons);\n\n iconTypes.forEach((name) => {\n if (!collection.has(name)) {\n const src = allTypes.get(name);\n if (src) {\n this.registerIconForType(dictionaryType, name, src);\n this.registerIconForBPMN(\n name,\n sanitizeIconName(ICON_PREFIX + name.toLowerCase()),\n dictionaryType,\n );\n }\n }\n });\n }\n\n /** Add Icon(s) to Dictionary **/\n registerIconForBPMN(\n name: string,\n src: string,\n elementType: ElementTypes,\n ): void {\n if (name.includes(elementType)) {\n throw new Error('Should not include elementType');\n }\n\n this.iconDictionaryForBPMN.set(`${elementType}${name}`, src);\n }\n\n addIconsToTypeDictionary(\n actorIcons: BusinessObject[],\n workObjectIcons: BusinessObject[],\n ) {\n if (!this.allInTypeDictionary(ElementTypes.ACTOR, actorIcons)) {\n this.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: IconSetConfiguration,\n ): void {\n const elements: BusinessObject[] = [];\n\n actors.forEach((a) => elements.push(a));\n workObjects.forEach((w) => elements.push(w));\n\n const customIcons = new Dictionary();\n\n const actorsDict = new Dictionary();\n const workObjectsDict = new Dictionary();\n config.actors.keysArray().forEach((key) => {\n actorsDict.set(key, config.actors.get(key));\n });\n config.workObjects.keysArray().forEach((key) => {\n workObjectsDict.set(key, config.workObjects.get(key));\n });\n\n this.extractCustomIconsFromDictionary(actorsDict, customIcons);\n this.extractCustomIconsFromDictionary(workObjectsDict, customIcons);\n\n elements.forEach((element) => {\n const name = sanitizeIconName(\n element.type\n .replace(ElementTypes.ACTOR, '')\n .replace(ElementTypes.WORKOBJECT, ''),\n );\n if (\n (element.type.includes(ElementTypes.ACTOR) ||\n element.type.includes(ElementTypes.WORKOBJECT)) &&\n !this.getFullDictionary().has(name)\n ) {\n let elementType;\n if (element.type.includes(ElementTypes.ACTOR)) {\n elementType = ElementTypes.ACTOR;\n } else {\n elementType = ElementTypes.WORKOBJECT;\n }\n this.registerIconForBPMN(\n ICON_PREFIX + name.toLowerCase(),\n 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 appendedIcons.set(name, input);\n }\n\n addIconsToCss(customIcons: Dictionary) {\n const sheetEl = document.getElementById('iconsCss');\n customIcons.keysArray().forEach((key) => {\n const src = customIcons.get(key);\n const iconStyle =\n '.' +\n ICON_PREFIX +\n sanitizeIconName(key.toLowerCase()) +\n '::before{ content: url(\"data:image/svg+xml;utf8,' +\n this.wrapSRCInSVG(src) +\n '\"); margin: 3px;}';\n // @ts-ignore\n sheetEl?.sheet?.insertRule(iconStyle, sheetEl.sheet.cssRules.length);\n });\n }\n\n private wrapSRCInSVG(src: string): string {\n return (\n \"\"\n );\n }\n\n /** Getter & Setter **/\n\n getFullDictionary(): Dictionary {\n const fullDictionary = new Dictionary();\n fullDictionary.appendDict(this.allIconDictionary);\n fullDictionary.appendDict(this.getAppendedIconDictionary());\n return fullDictionary;\n }\n\n getAppendedIconDictionary(): Dictionary {\n const appendedDict = new Dictionary();\n appendedIcons.keysArray().forEach((key) => {\n if (!this.allIconDictionary.has(key)) {\n appendedDict.set(key, appendedIcons.get(key));\n }\n });\n return appendedDict;\n }\n\n getTypeDictionary(type: ElementTypes): Dictionary {\n if (type === ElementTypes.ACTOR) {\n return this.actorIconDictionary;\n } else if (type === ElementTypes.WORKOBJECT) {\n return this.workObjectDictionary;\n }\n return new Dictionary();\n }\n\n getTypeDictionaryKeys(type: ElementTypes): string[] {\n return this.getTypeDictionary(type).keysArray();\n }\n\n getTypeIconSRC(type: ElementTypes, name: string): string | null {\n if (type === ElementTypes.ACTOR) {\n return this.actorIconDictionary.get(name);\n } else if (type === ElementTypes.WORKOBJECT) {\n return this.workObjectDictionary.get(name);\n }\n return null;\n }\n\n getIconForBPMN(elementType: ElementTypes, name: string): string | null {\n return this.iconDictionaryForBPMN.get(`${elementType}${name}`);\n }\n\n getIconSource(name: string): string | null {\n if (this.allIconDictionary.has(name)) {\n return this.allIconDictionary.get(name);\n } else if (appendedIcons.has(name)) {\n return appendedIcons.get(name);\n }\n return null;\n }\n\n getElementsOfType(\n elements: BusinessObject[],\n type: ElementTypes,\n ): BusinessObject[] {\n const elementOfType: any = [];\n elements.forEach((element) => {\n if (element.type.includes(type)) {\n elementOfType.push(element);\n }\n });\n return elementOfType;\n }\n\n getAllIconDictionary(): Dictionary {\n return this.allIconDictionary;\n }\n\n getActorsDictionary(): Dictionary {\n return this.actorIconDictionary;\n }\n\n getWorkObjectsDictionary(): Dictionary {\n return this.workObjectDictionary;\n }\n\n getIconConfiguration(): IconConfiguration {\n return this.iconConfig;\n }\n\n setCustomConfiguration(customConfiguration: IconSetConfiguration): void {\n this.customConfiguration = customConfiguration;\n }\n}\n","import { Injectable } from '@angular/core';\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 { defaultConf } from '../domain/iconConfiguration';\nimport { TitleService } from '../../title/services/title.service';\nimport {\n ICON_SET_CONFIGURATION_TAG,\n INITIAL_ICON_SET_NAME,\n} from '../../../domain/entities/constants';\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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 constructor(\n private iconDictionaryService: IconDictionaryService,\n private elementRegistryService: ElementRegistryService,\n private titleService: TitleService,\n private storageService: StorageService,\n ) {}\n\n setIconSetName(iconSetName: string): void {\n this.titleService.setIconSetName(\n iconSetName ? iconSetName : INITIAL_ICON_SET_NAME,\n );\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.titleService.getIconSetName();\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(\n customConfig: IconSetConfiguration,\n updateIconSetName = true,\n ): void {\n let actorDict = new Dictionary();\n let workObjectDict = new Dictionary();\n\n if (customConfig.actors.keysArray()) {\n actorDict = customConfig.actors;\n workObjectDict = customConfig.workObjects;\n } else {\n actorDict.addEach(customConfig.actors);\n workObjectDict.addEach(customConfig.workObjects);\n }\n\n const actorKeys = actorDict.keysArray();\n const workObjectKeys = workObjectDict.keysArray();\n\n this.iconDictionaryService.updateIconRegistries([], [], customConfig);\n\n this.iconDictionaryService\n .getIconConfiguration()\n .appendSRCFile(actorKeys, actorDict, workObjectKeys, workObjectDict);\n\n this.iconDictionaryService.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(): IconSetConfiguration | 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.titleService.getIconSetName() || 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(): IconSetConfiguration {\n const minimalConfig = this.createConfigFromCanvas();\n\n defaultConf.actors.forEach((iconName) => {\n minimalConfig.actors.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName,\n );\n });\n defaultConf.workObjects.forEach((iconName) => {\n minimalConfig.workObjects.add(\n this.iconDictionaryService.getIconSource(iconName),\n iconName,\n );\n });\n\n return minimalConfig;\n }\n\n private createConfigFromDictionaries(\n actorsDict: Dictionary,\n workObjectsDict: Dictionary,\n ): IconSetConfiguration {\n const actorNames = actorsDict.keysArray();\n const workobjectNames = workObjectsDict.keysArray();\n const newActors = new Dictionary();\n const newWorkobjects = new Dictionary();\n\n // Fill Configuration from Canvas-Objects\n actorNames.forEach((actor) => {\n newActors.add(\n actorsDict.get(actor),\n actor.replace(ElementTypes.ACTOR, ''),\n );\n });\n workobjectNames.forEach((workObject) => {\n newWorkobjects.add(\n workObjectsDict.get(workObject),\n workObject.replace(ElementTypes.WORKOBJECT, ''),\n );\n });\n\n return {\n name: this.titleService.getIconSetName(),\n actors: newActors,\n workObjects: newWorkobjects,\n };\n }\n\n public createIconSetConfiguration(\n fileConfiguration: FileConfiguration,\n ): IconSetConfiguration {\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(): IconSetConfiguration | undefined {\n const iconSetString = this.storageService.get(ICON_SET_CONFIGURATION_TAG);\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: IconSetConfiguration): 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_TAG,\n JSON.stringify(configForStorage, null, 2),\n );\n }\n\n private createConfigFromCanvas(): IconSetConfiguration {\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(\n iconSetConfiguration: IconSetConfiguration,\n ) {\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_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 { TitleService } from '../../title/services/title.service';\nimport { IconSetConfigurationService } from './icon-set-configuration.service';\nimport { IconDictionaryService } from './icon-dictionary.service';\nimport getIconId = ElementTypes.getIconId;\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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;\n public abstract getConfiguration(): IconSetConfiguration;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconSetCustomizationService {\n private readonly iconSetConfigurationTypes: BehaviorSubject;\n\n private allIconListItems = new Dictionary();\n\n private configurationHasChanged = false;\n\n selectedActors$ = new BehaviorSubject([]);\n selectedWorkobjects$ = new BehaviorSubject([]);\n private changedIconSetConfiguration: IconSetConfiguration | undefined;\n\n constructor(\n private iconSetConfigurationService: IconSetConfigurationService,\n private iconDictionaryService: IconDictionaryService,\n iconSetChangedService: IconSetChangedService,\n private titleService: TitleService,\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 const importedConfiguration = iconSetChangedService.getConfiguration();\n if (importedConfiguration) {\n this.importConfiguration(importedConfiguration, false);\n }\n }\n\n importConfiguration(\n customConfig: IconSetConfiguration,\n saveIconSet = true,\n ): void {\n const actorKeys = customConfig.actors.keysArray();\n const workObjectKeys = customConfig.workObjects.keysArray();\n\n this.changeName(customConfig.name);\n actorKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedActorNames = this.selectedActors$.value;\n if (!selectedActorNames.includes(iconName)) {\n this.selectActor(iconName);\n }\n });\n workObjectKeys.forEach((iconName) => {\n if (!this.allIconListItems.has(iconName)) {\n this.addIconToAllIconList(iconName);\n }\n const selectedWorkobjectNames = this.selectedWorkobjects$.value;\n if (!selectedWorkobjectNames.includes(iconName)) {\n this.selectWorkObject(iconName);\n }\n });\n if (saveIconSet) {\n this.saveIconSet(this.elementRegistryService.getUsedIcons(), true);\n }\n }\n\n /** Getter & Setter **/\n getIconSetConfiguration(): BehaviorSubject {\n return this.iconSetConfigurationTypes;\n }\n\n getIconForName(iconName: string): BehaviorSubject {\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.titleService.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_INFO,\n },\n );\n }\n if (changedWorkobjects.length) {\n const workobjects = changedWorkobjects.join(', ');\n this.snackbar.open(\n `The following icons are already in use as work objects and cannot be changed: ${workobjects}`,\n undefined,\n {\n duration: SNACKBAR_DURATION_LONGER,\n panelClass: SNACKBAR_INFO,\n },\n );\n }\n }\n }\n\n exportIconSet(): void {\n this.iconSetConfigurationService.exportConfiguration();\n }\n\n getAndClearSavedConfiguration(): IconSetConfiguration | undefined {\n const temp = this.changedIconSetConfiguration;\n this.changedIconSetConfiguration = undefined;\n\n return temp;\n }\n\n private createIconSetConfiguration(): IconSetConfiguration {\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.getSrcForIcon(iconName), iconName);\n this.iconDictionaryService.addIconsToCss(iconDict);\n this.addIconToAllIconList(iconName);\n }\n\n private addIconToAllIconList(iconName: string): void {\n this.allIconListItems.add(\n new BehaviorSubject({\n name: iconName,\n svg: this.getSrcForIcon(iconName),\n isActor: this.isIconActor(iconName),\n isWorkObject: this.isIconWorkObject(iconName),\n }),\n iconName,\n );\n }\n\n private updateIcon(\n isActor: boolean,\n isWorkobject: boolean,\n iconName: string,\n ) {\n const iconBehaviourSubject = this.getIconForName(iconName);\n const icon = iconBehaviourSubject.value;\n icon.isActor = isActor;\n icon.isWorkObject = isWorkobject;\n\n iconBehaviourSubject.next(icon);\n }\n\n private updateAllIconBehaviourSubjects(): void {\n const 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 getSrcForIcon(name: string): string {\n let iconName: string;\n if (name.includes(ElementTypes.DOMAINSTORY)) {\n // TODO: td: This returns empty every time!\n iconName = getIconId(name);\n } else {\n iconName = name;\n }\n const rawSrc = this.iconDictionaryService.getIconSource(iconName);\n\n if (!rawSrc) {\n return '';\n }\n\n if (rawSrc.startsWith('data')) {\n return rawSrc;\n } else {\n return 'data:image/svg+xml,' + rawSrc;\n }\n }\n\n private updateIcons(changedIconSet: IconSetConfiguration) {\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 { 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;\n\n constructor(\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data: () => {},\n ) {\n this.fileUrl = new BehaviorSubject('');\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","\n \n \n\n\n
\n
\n \n \n Import\n \n
\n
\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} from '../../../domain/entities/constants';\nimport { IconSetConfigurationService } from '../../icon-set-config/services/icon-set-configuration.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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';\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: IconSetConfiguration | null = null;\n\n private importedConfigurationEmitter =\n new EventEmitter();\n\n constructor(\n private iconDictionaryService: IconDictionaryService,\n private importRepairService: ImportRepairService,\n private titleService: TitleService,\n private rendererService: RendererService,\n private dialogService: DialogService,\n private 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 {\n return this.importedConfigurationEmitter.asObservable();\n }\n\n getConfiguration(): IconSetConfiguration {\n const config: IconSetConfiguration = {\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 const filename = file.name;\n\n const dstSvgPattern = /.*(.dst)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n\n if (filename.endsWith('.dst')) {\n this.importDST(file, filename, false);\n } else if (filename.match(dstSvgPattern)) {\n this.importDST(file, filename, true);\n } else if (filename.endsWith('.egn')) {\n this.importEGN(file, filename, false);\n } else if (filename.match(egnSvgPattern)) {\n this.importEGN(file, filename, true);\n }\n this.modelerService.commandStackChanged();\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 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].replace(/%20/g, ' ');\n\n if (!filename) {\n throw new Error('Unable to extract filename from URL');\n }\n\n const dstSvgPattern = /.*(.dst)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n const egnSvgPattern = /.*(.egn)(\\s*\\(\\d+\\)){0,1}\\.svg/;\n\n if (filename.endsWith('.dst')) {\n this.importDST(blob, filename, false);\n } else if (filename.match(dstSvgPattern)) {\n this.importDST(blob, filename, true);\n } else if (filename.endsWith('.egn')) {\n this.importEGN(blob, filename, false);\n } else if (filename.match(egnSvgPattern)) {\n this.importEGN(blob, filename, true);\n }\n this.modelerService.commandStackChanged();\n })\n .catch(() =>\n this.snackbar.open('Cross-origin request blocked', undefined, {\n duration: SNACKBAR_DURATION_LONG,\n panelClass: SNACKBAR_ERROR,\n }),\n );\n }\n\n openUploadUrlDialog(): void {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.data = (fileUrl: string) => this.importFromUrl(fileUrl);\n this.dialogService.openDialog(ImportDialogComponent, config);\n }\n\n importDST(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = this.restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, false);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n importEGN(input: Blob, filename: string, isSVG: boolean): void {\n const fileReader = new FileReader();\n const titleText = this.restoreTitleFromFileName(filename, isSVG);\n\n // no need to put this on the commandStack\n this.titleService.updateTitleAndDescription(titleText, null, false);\n\n fileReader.onloadend = (e) => {\n if (e && e.target) {\n this.fileReaderFunction(e.target.result, isSVG, true);\n }\n };\n\n fileReader.readAsText(input);\n }\n\n private fileReaderFunction(\n text: string | ArrayBuffer | null,\n isSVG: boolean,\n isEGN: boolean,\n ): void {\n let dstText;\n if (typeof text === 'string') {\n if (isSVG) {\n dstText = this.removeXMLComments(text);\n } else {\n dstText = text;\n }\n\n let elements: any[];\n let config: IconSetConfiguration;\n let configFromFile: {\n name: string;\n actors: { [key: string]: any };\n workObjects: { [key: string]: any };\n };\n\n let dstAndConfig = this.extractDstAndConfig(dstText);\n if (dstAndConfig == null) {\n return;\n }\n\n // current implementation\n if (dstAndConfig.domain) {\n configFromFile = isEGN\n ? dstAndConfig.domain\n : JSON.parse(dstAndConfig.domain);\n config =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\n elements = isEGN ? dstAndConfig.dst : JSON.parse(dstAndConfig.dst);\n } else {\n // legacy implementation\n if (dstAndConfig.config) {\n configFromFile = JSON.parse(dstAndConfig.config);\n config =\n this.iconSetConfigurationService.createIconSetConfiguration(\n configFromFile,\n );\n elements = JSON.parse(dstAndConfig.dst);\n } else {\n // implementation prior to configuration\n elements = JSON.parse(dstText);\n config =\n this.iconSetConfigurationService.createMinimalConfigurationWithDefaultIcons();\n }\n }\n\n this.importRepairService.removeWhitespacesFromIcons(elements);\n\n const configChanged = this.checkConfigForChanges(config);\n\n let lastElement = elements[elements.length - 1];\n if (!lastElement.id) {\n lastElement = elements.pop();\n let importVersionNumber = lastElement;\n\n // if the last element has the importedVersionNumber has the tag version,\n // then there exists another meta tag 'info' for the description\n if (importVersionNumber.version) {\n lastElement = elements.pop();\n }\n\n if (importVersionNumber.version) {\n importVersionNumber = importVersionNumber.version as string;\n } else {\n importVersionNumber = '?';\n this.snackbar.open(`The version number is unreadable.`, undefined, {\n duration: SNACKBAR_DURATION,\n panelClass: SNACKBAR_ERROR,\n });\n }\n elements = this.handleVersionNumber(importVersionNumber, elements);\n }\n\n if (\n !this.importRepairService.checkForUnreferencedElementsInActivitiesAndRepair(\n elements,\n )\n ) {\n this.showBrokenImportDialog();\n }\n\n this.titleService.updateTitleAndDescription(\n this.title,\n lastElement.info,\n false,\n );\n\n this.importRepairService.adjustPositions(elements);\n\n this.updateIconRegistries(elements, config);\n this.rendererService.importStory(elements, configChanged, config);\n }\n }\n\n private handleVersionNumber(\n importVersionNumber: string,\n elements: BusinessObject[],\n ): BusinessObject[] {\n const versionPrefix = +importVersionNumber.substring(\n 0,\n importVersionNumber.lastIndexOf('.'),\n );\n if (versionPrefix <= 0.5) {\n elements =\n this.importRepairService.updateCustomElementsPreviousV050(elements);\n this.showPreviousV050Dialog(versionPrefix);\n }\n return elements;\n }\n\n private extractDstAndConfig(dstText: string) {\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 removeXMLComments(xmlText: string): string {\n xmlText = xmlText.substring(xmlText.indexOf(''));\n while (xmlText.includes('')) {\n xmlText = xmlText.replace('', '');\n }\n xmlText = xmlText.replace('', '');\n xmlText = xmlText.replace('', '');\n return xmlText;\n }\n\n checkConfigForChanges(iconSetConfiguration: IconSetConfiguration): boolean {\n const newActorKeys = iconSetConfiguration.actors.keysArray();\n const newWorkObjectKeys = iconSetConfiguration.workObjects.keysArray();\n\n const currentActorKeys = this.iconDictionaryService.getTypeDictionaryKeys(\n ElementTypes.ACTOR,\n );\n const currentWorkobjectKeys =\n this.iconDictionaryService.getTypeDictionaryKeys(ElementTypes.WORKOBJECT);\n\n let changed = false;\n\n if (\n newActorKeys.length !== currentActorKeys.length ||\n newWorkObjectKeys.length !== currentWorkobjectKeys.length\n ) {\n return true;\n }\n\n for (let i = 0; i < newActorKeys.length; i++) {\n changed =\n this.clearName(currentActorKeys[i]) !== this.clearName(newActorKeys[i]);\n if (changed) {\n i = newActorKeys.length;\n }\n }\n if (changed) {\n return changed;\n }\n for (let i = 0; i < newWorkObjectKeys.length; i++) {\n changed =\n this.clearName(currentWorkobjectKeys[i]) !==\n this.clearName(newWorkObjectKeys[i]);\n if (changed) {\n i = newWorkObjectKeys.length;\n }\n }\n return changed;\n }\n\n private clearName(name: string): string {\n return name\n .replace(ElementTypes.ACTOR, '')\n .replace(ElementTypes.WORKOBJECT, '');\n }\n\n private updateIconRegistries(\n elements: BusinessObject[],\n config: IconSetConfiguration,\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: IconSetConfiguration) {\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 { Waypoint } from 'src/app/domain/entities/waypoint';\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 /**\n * Adjusts Positions of Elements to ensure the Domain Story starts in the visible parts of the canvas\n */\n adjustPositions(elements: BusinessObject[]): void {\n let xLeft = 0;\n let yUp = 0;\n let isFirst = true;\n\n this.findFirstElement(elements, isFirst, xLeft, yUp);\n\n if (xLeft < 75 || xLeft > 150 || yUp < 0 || yUp > 50) {\n // add Padding for the Palette and the top\n xLeft -= 75;\n yUp -= 50;\n\n elements.forEach((element) =>\n this.adjustElementPosition(element, xLeft, yUp),\n );\n }\n }\n\n private adjustElementPosition(\n element: BusinessObject,\n xLeft: number,\n yUp: number,\n ): void {\n if (\n element.type === ElementTypes.ACTIVITY ||\n element.type === ElementTypes.CONNECTION\n ) {\n const waypoints = (element as ActivityBusinessObject).waypoints;\n waypoints.forEach((point: Waypoint) => {\n point.x -= xLeft;\n point.y -= yUp;\n\n if (point.original) {\n point.original.x = point.x;\n point.original.y = point.y;\n }\n });\n } else {\n element.x -= xLeft;\n element.y -= yUp;\n }\n }\n\n private findFirstElement(\n elements: BusinessObject[],\n isFirst: boolean,\n xLeft: number,\n yUp: number,\n ) {\n elements.forEach((element) => {\n let elXLeft;\n let elYUp;\n if (\n element.type !== ElementTypes.ACTIVITY &&\n element.type !== ElementTypes.CONNECTION\n ) {\n if (isFirst) {\n xLeft = element.x;\n yUp = element.y;\n isFirst = false;\n }\n elXLeft = element.x;\n elYUp = element.y;\n if (elXLeft < xLeft) {\n xLeft = elXLeft;\n }\n if (elYUp < yUp) {\n yUp = elYUp;\n }\n }\n });\n }\n\n // 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","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-label-dictionary-dialog',\n templateUrl: './label-dictionary-dialog.component.html',\n styleUrls: ['./label-dictionary-dialog.component.scss'],\n})\nexport class LabelDictionaryDialogComponent {\n constructor(\n private dialogRef: MatDialogRef,\n ) {}\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","\n

Label Dictionary

\n \n
\n","import { 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';\nimport { initializeLabelEditingProvider } from '../../../modeler/bpmn/modeler/labeling/dsLabelEditingProvider';\n\n@Component({\n selector: 'app-label-dictionary',\n templateUrl: './label-dictionary.component.html',\n styleUrls: ['./label-dictionary.component.scss'],\n})\nexport class LabelDictionaryComponent implements AfterViewInit {\n workobjectEntriesSubject: BehaviorSubject;\n activityEntriesSubject: BehaviorSubject;\n\n workObjectEntries: WorkObjectLabelEntry[];\n activityEntries: LabelEntry[];\n\n @Output()\n closeEmitter: EventEmitter = new EventEmitter();\n\n constructor(\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","
\n
\n

Work Objects

\n \n @for (\n workobjectEntry of workobjectEntriesSubject | async;\n track workobjectEntry\n ) {\n \n \n \n \n \n }\n \n
\n
\n

Activities

\n \n @for (\n activityEntry of activityEntriesSubject | async;\n track activityEntry\n ) {\n \n \n \n \n \n }\n \n
\n
\n\n \n \n\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;\n activityNumber: FormControl;\n multipleNumbers: FormControl;\n}\n\nexport namespace ActivityDialogForm {\n export function create(\n activityLabel: string,\n activityNumber: number | null,\n numberIsAllowedMultipleTimes: boolean,\n ): FormGroup {\n return new FormGroup({\n activityLabel: new FormControl(activityLabel, {\n nonNullable: true,\n }),\n activityNumber: new FormControl(activityNumber, [\n Validators.required,\n ]),\n multipleNumbers: new FormControl(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;\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,\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","\n

Edit Activity

\n
\n
\n \n Number\n \n \n \n multiple\n
\n \n Label\n \n \n
\n
\n\n\n \n \n\n","import { NgModule } from '@angular/core';\nimport { ActivityDialogComponent } from './activity-dialog/activity-dialog.component';\nimport { ModelerComponent } from './modeler/modeler.component';\nimport { CommonModule } from '@angular/common';\nimport { MaterialModule } from '../../../material.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [ActivityDialogComponent, ModelerComponent],\n exports: [ActivityDialogComponent, ModelerComponent],\n imports: [CommonModule, MaterialModule, ReactiveFormsModule],\n})\nexport class ModelerModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { ModelerService } from '../../services/modeler.service';\n\n@Component({\n selector: 'app-modeler',\n templateUrl: './modeler.component.html',\n styleUrls: ['./modeler.component.scss'],\n})\nexport class ModelerComponent implements OnInit {\n constructor(private modelerService: ModelerService) {}\n\n ngOnInit(): void {\n this.modelerService.postInit();\n }\n}\n","
\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 '../bpmn/modeler/labeling/dsLabelEditingProvider';\nimport {\n getMultipleNumberRegistry,\n getNumberRegistry,\n setNumberIsMultiple,\n updateExistingNumbersAtEditing,\n} from '../bpmn/modeler/numbering/numbering';\nimport activityUpdateHandler from '../bpmn/modeler/updateHandler/activityUpdateHandlers';\n\nimport massRenameHandler from '../bpmn/modeler/updateHandler/massRenameHandler';\nimport elementUpdateHandler from '../bpmn/modeler/updateHandler/elementUpdateHandler';\nimport headlineAndDescriptionUpdateHandler from '../bpmn/modeler/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 canvas: any,\n selection: any,\n modeler: 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/bpmn';\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 '../bpmn/modeler/numbering/numbering';\nimport { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\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 canvas: any;\n private elementRegistry: any;\n private commandStack: any;\n private selection: any;\n private eventBus: any;\n\n private encoded: string | undefined;\n\n postInit(): void {\n 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 bindTo: document,\n },\n\n // Disable BPMN-SearchModule and re-enable browser Search\n additionalModules: [\n {\n bpmnSearch: ['value', 'foo'],\n },\n ],\n });\n\n if (this.modeler.get) {\n this.canvas = this.modeler.get('canvas');\n this.elementRegistry = this.modeler.get('elementRegistry');\n this.eventBus = this.modeler.get('eventBus');\n this.commandStack = this.modeler.get('commandStack');\n this.selection = this.modeler.get('selection');\n }\n\n this.initializerService.initializeDomainStoryModelerEventHandlers(\n this.commandStack,\n this.eventBus,\n );\n this.initializerService.propagateDomainStoryModelerClassesToServices(\n this.commandStack,\n this.elementRegistry,\n this.canvas,\n this.selection,\n this.modeler,\n );\n\n const exportArtifacts = this.debounce(this.saveSVG, 500);\n if (this.modeler.get) {\n this.modeler.on('commandStack.changed', exportArtifacts);\n }\n\n this.initializerService.initiateEventBusListeners(\n this.eventBus,\n this.commandStack,\n );\n\n this.modeler.createDiagram();\n // expose bpmnjs to window for debugging purposes\n assign(window, { bpmnjs: this.modeler });\n\n this.startDebounce();\n }\n\n 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 'The current version has changed. We recommend to clear the 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?: IconSetConfiguration,\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) => bo)\n .filter((bo) => bo.number !== null),\n );\n if (currentStory && this.modeler.get) {\n this.modeler.importCustomElements(currentStory);\n }\n }\n\n /** Interactions with the Modeler **/\n getModeler(): any {\n return this.modeler;\n }\n\n commandStackChanged(): void {\n // to update the title of the svg, we need to tell the command stack, that a value has changed\n this.eventBus.fire(\n 'commandStack.changed',\n this.debounce(this.saveSVG, 500),\n );\n }\n\n startDebounce(): void {\n this.debounce(this.saveSVG, 500);\n }\n\n debounce(fn: any, timeout: number): any {\n return () => {\n let timer;\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n // tslint:disable-next-line:no-unused-expression\n fn(this.modeler).then((svg: string) => {\n this.encoded = svg;\n }) as Promise;\n }, timeout);\n };\n }\n\n getEncoded(): string {\n return this.encoded ? this.encoded : '';\n }\n\n async saveSVG(modeler: any): Promise {\n try {\n const result = await modeler.saveSVG();\n return result.svg;\n } catch (err) {\n alert('There was an error saving the SVG.\\n' + err);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModelerService } from 'src/app/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 { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RendererService {\n constructor(\n private modelerService: ModelerService,\n private elementRegistryService: ElementRegistryService,\n private dirtyFlagService: DirtyFlagService,\n ) {}\n\n renderStory(domainStory: BusinessObject[]): void {\n this.modelerService.getModeler().importCustomElements(domainStory);\n }\n\n reset(): void {\n this.renderStory([]);\n this.dirtyFlagService.makeClean();\n }\n\n importStory(\n domainStory: BusinessObject[],\n configurationChange: boolean,\n config?: IconSetConfiguration,\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_BACKGROUNG_COLOR = '#43acbf';\nexport const HIGHLIGHT_NUMBER_COLOR = 'black';\nexport const HIGHLIGHT_STROKE_WIDTH = '4';\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_BACKGROUNG_COLOR,\n HIGHLIGHT_NUMBER_COLOR,\n HIGHLIGHT_STROKE_WIDTH,\n NUMBER_BACKGROUND_COLOR,\n NUMBER_COLOR,\n STROKE_WIDTH,\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: SVGPolylineElement): 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 =\n querySelector.getElementsByTagName('polyline')[0];\n\n activityDomObject.style.stroke =\n activity.businessObject.pickedColor || 'black';\n activityDomObject.style.strokeWidth = STROKE_WIDTH;\n\n const { numberBackgroundDom, numberTextDom } =\n this.getNumberDomForActivity(activityDomObject);\n if (numberBackgroundDom && numberTextDom) {\n numberBackgroundDom.style.fill = NUMBER_BACKGROUND_COLOR;\n numberTextDom.style.fill = NUMBER_COLOR;\n }\n }\n });\n\n allConnections.forEach((connection) => {\n // @ts-ignore\n const connectionDomObject = document\n .querySelector('[data-element-id=' + connection.id + ']')\n .getElementsByTagName('polyline')[0];\n\n connectionDomObject.style.stroke =\n connection.businessObject.pickedColor || 'black';\n connectionDomObject.style.strokeWidth = '1.5';\n });\n }\n\n private 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 =\n querySelector.getElementsByTagName('polyline')[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_BACKGROUNG_COLOR;\n numberTextDom.style.fill = HIGHLIGHT_NUMBER_COLOR;\n }\n }\n });\n }\n\n private getAllNotShown(shownElements: BusinessObject[]): BusinessObject[] {\n const notShownElements: BusinessObject[] = [];\n const allObjects = this.elementRegistryService\n .getAllCanvasObjects()\n .concat(this.elementRegistryService.getAllGroups());\n\n allObjects.forEach((element) => {\n if (!shownElements.includes(element.businessObject)) {\n if (element.type.includes(ElementTypes.CONNECTION)) {\n // @ts-ignore\n if (!element.source.type.includes(ElementTypes.GROUP)) {\n notShownElements.push(element.businessObject);\n } else {\n // @ts-ignore\n shownElements.push(element.target);\n }\n } else {\n notShownElements.push(element.businessObject);\n }\n }\n });\n return notShownElements;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { 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_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(-1);\n private maxSentenceNumber = new BehaviorSubject(0);\n private replayOnSubject = new BehaviorSubject(false);\n\n currentSentence$: Observable = this.currentSentence.asObservable();\n maxSentenceNumber$: Observable =\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_INFO,\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 initialSource: CanvasObject[] = [];\n const activities = tracedActivity;\n const targetObjects: CanvasObject[] = [];\n\n tracedActivity.forEach((parallelSentence: ActivityCanvasObject) => {\n initialSource.push(parallelSentence.source);\n\n const firstTarget = parallelSentence.target;\n targetObjects.push(firstTarget);\n\n // check the outgoing activities for each target\n for (const checkTarget of targetObjects) {\n if (\n checkTarget.businessObject &&\n !checkTarget.businessObject.type.includes('actor') &&\n checkTarget.outgoing\n ) {\n // check the target for each outgoing activity\n checkTarget.outgoing.forEach((activity: ActivityCanvasObject) => {\n activities.push(activity);\n const activityTarget = activity.target;\n if (activityTarget && !targetObjects.includes(activityTarget)) {\n targetObjects.push(activityTarget);\n }\n });\n }\n }\n });\n return initialSource\n .map((e) => e.businessObject)\n .concat(activities.map((a) => a.businessObject))\n .concat(targetObjects.map((t) => t.businessObject));\n }\n\n private addGroupsToLastSentence(story: StorySentence[]): void {\n const groups = this.elementRegistryService.getAllGroups() as CanvasObject[];\n if (groups.length > 0 && story.length > 0) {\n story[story.length - 1].objects = story[story.length - 1].objects.concat(\n groups.map((g) => g.businessObject),\n );\n }\n }\n}\n","import { FormControl, FormGroup } from '@angular/forms';\n\nexport interface TitleDialogForm {\n title: FormControl;\n description: FormControl;\n}\n\nexport namespace TitleDialogForm {\n export function create(\n titel: string,\n description: string,\n ): FormGroup {\n return new FormGroup({\n title: new FormControl(titel),\n description: new FormControl(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;\n\n constructor(\n private dialogRef: MatDialogRef,\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","\n
\n \n Title\n \n \n
\n \n Description\n \n \n
\n
\n\n\n \n \n\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_ICON_SET_NAME,\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(INITIAL_TITLE);\n private descriptionSubject = new BehaviorSubject(INITIAL_DESCRIPTION);\n private iconSetNameSubject = new BehaviorSubject(\n INITIAL_ICON_SET_NAME,\n );\n private showDescriptionSubject = new BehaviorSubject(true);\n\n title$ = this.titleSubject.asObservable();\n description$ = this.descriptionSubject.asObservable();\n showDescription$ = this.showDescriptionSubject.asObservable();\n iconSetName$ = this.iconSetNameSubject.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 setIconSetName(name: string): void {\n this.iconSetNameSubject.next(name);\n }\n\n getTitle(): string {\n return this.titleSubject.value;\n }\n\n getDescription(): string {\n return this.descriptionSubject.value;\n }\n\n getIconSetName(): string {\n return this.iconSetNameSubject.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","export function rgbaToHex(rgba: string) {\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\n// sanitize user-Input to be Desktop-Filename safe\nexport function sanitizeForDesktop(str: string): string {\n const map: { [key: string]: string } = {\n '/': '',\n '\\\\': '',\n ':': '',\n '*': '',\n '?': '',\n '\"': '',\n '<': '',\n '>': '',\n '|': '',\n };\n const reg = /[/\\\\:*?\"<>|]/gi;\n return str ? str.replace(reg, (match) => map[match]) : '';\n}\n\nexport function sanitizeIconName(name: string): string {\n 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';\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 @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();\n @Output()\n openSettings = new EventEmitter();\n @Output()\n startReplay = new EventEmitter();\n @Output()\n stopReplay = new EventEmitter();\n @Output()\n previousSentence = new EventEmitter();\n @Output()\n nextSentence = new EventEmitter();\n @Output()\n newStory = new EventEmitter();\n @Output()\n showKeyboardShortCuts = new EventEmitter();\n @Output()\n openLabelDictionary = new EventEmitter();\n @Output()\n openDownloadDialog = new EventEmitter();\n @Output()\n openUploadUrlDialog = new EventEmitter();\n}\n","@if (!isReplaying) {\n
\n \n play_arrow \n \n\n \n unarchive \n \n\n \n cloud_upload \n \n\n \n \n @if (!isDirty) {\n \n archive\n \n }\n @if (isDirty) {\n archive \n }\n \n \n \n spellcheck\n \n \n \n \n keyboard \n \n \n note_add \n \n
\n}\n@if (isReplaying) {\n
\n \n skip_previous \n \n \n skip_next \n \n \n stop \n \n
\n}\n","import { Component } from '@angular/core';\nimport { combineLatest, map, 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;\n isDirty$: Observable;\n sentenceDescription$: Observable;\n showDescription: Observable;\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.sentenceDescription$ = combineLatest([\n this.replayService.currentSentence$,\n this.replayService.maxSentenceNumber$,\n ]).pipe(map(([sentence, count]) => `${sentence}/${count}`));\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 this.titleService.reset();\n this.renderService.reset();\n }\n\n onImport(): void {\n this.importService.performImport();\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 openUploadUrlDialog(): void {\n this.importService.openUploadUrlDialog();\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","\n \n @if (showDescription | async) {\n \n \n expand_less\n \n \n }\n @if (!(showDescription | async)) {\n \n \n expand_more\n \n }\n
\n \n {{ title$ | async }}\n edit \n \n
\n\n \n\n @if (isReplay$ | async) {\n \n Sentence: {{ sentenceDescription$ | async }}\n }\n\n \n \n
\n
\n@if (showDescription$ | async) {\n \n {{ description$ | async }}\n \n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-general-settings',\n templateUrl: './general-settings.component.html',\n styleUrls: ['./general-settings.component.scss'],\n})\nexport class GeneralSettingsComponent {}\n","
\n \n
\n","import { Component } from '@angular/core';\nimport { SettingsService } from 'src/app/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 { IconSetConfiguration } from '../../../domain/entities/icon-set-configuration';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent {\n iconSetConfiguration: IconSetConfiguration | undefined;\n showGeneralSettings = new BehaviorSubject(false);\n showIconSetCustomization = new BehaviorSubject(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.showGeneralSettings.next(true);\n this.showIconSetCustomization.next(false);\n }\n\n openIconSetCustomization() {\n this.showGeneralSettings.next(false);\n this.showIconSetCustomization.next(true);\n }\n}\n","
\n \n \n \n
\n \n Customize Icons for Your Domain\n \n \n General Settings\n \n
\n
\n
\n\n @if (showGeneralSettings | async) {\n \n }\n @if (showIconSetCustomization | async) {\n \n }\n
\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 { GeneralSettingsComponent } from './settings/general/general-settings.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: [\n HeaderComponent,\n HeaderButtonsComponent,\n GeneralSettingsComponent,\n SettingsComponent,\n ],\n exports: [\n HeaderComponent,\n HeaderButtonsComponent,\n GeneralSettingsComponent,\n SettingsComponent,\n ],\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: '2.1.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","Modeler","ResizeModule","assign","isArray","inherits","DomainStoryModule","LabelEditingModule","ModelingModule","ElementTypes","DomainStoryModeler","options","call","_customElements","_groupElements","prototype","_modules","concat","_addCustomShape","customElement","parentId","parent","children","push","canvas","get","elementFactory","customAttrs","businessObject","customShape","create","isGroup","id","parentShape","addShape","_addCustomConnection","elementRegistry","connection","source","target","addConnection","importCustomElements","elements","fire","addCustomElements","customElements","Error","shapes","connections","groups","forEach","isConnection","getCustomElements","createDiagram","done","element","type","ACTIVITY","CONNECTION","GROUP","Replace","modeling","_modeling","replaceElement","oldElement","newElementData","newElement","setCenterOfElement","outgoingActivities","outgoing","incomingActivities","incoming","x","Math","ceil","y","height","name","replaceShape","replaceOptions","ReplaceMenuProvider","_dsReplace","$inject","getEntries","entries","includes","actorReplaceOptions","workObjectReplaceOptions","_createEntries","menuEntries","self","definition","entry","_createMenuEntry","action","replaceAction","label","className","actionName","iconDictionaryService","initializeReplaceOptions","iconDictionary","actorTypes","getTypeDictionary","ACTOR","replaceOption","keysArray","actorType","typeName","toLowerCase","getIconForBPMN","workObjectTypes","WORKOBJECT","workObjectType","ContextPadProvider","bind","generateAutomaticNumber","getAllStandardIconKeys","hexToRGBA","isHexWithAlpha","rgbaToHex","dirtyFlagService","initializeContextPadProvider","dirtyFlag","DomainStoryContextPadProvider","injector","connect","translate","contextPad","popupMenu","replaceMenuProvider","commandStack","eventBus","startConnect","selectedElement","invoke","autoPlace","cached","getContextPadEntries","addEventListener","event","executeCommandStack","registerProvider","pickedColor","dispatchEvent","CustomEvent","detail","color","allStandardIconKeys","actions","autoActivate","start","addColorChange","addConnectWithActivity","addTextAnnotation","addActors","appendAction","addWorkObjects","addChangeWorkObjectTypeMenu","addChangeActorTypeMenu","delete","deleteGroup","group","click","removeGroup","makeDirty","moveDeleteActionToEndOfArray","removeElements","TEXTANNOTATION","changeDirection","position","getReplaceMenuPosition","cursor","open","colorChange","dragstart","icon","context","newNumber","execute","Y_OFFSET","diagramContainer","getContainer","pad","getPad","html","diagramRect","getBoundingClientRect","padRect","top","left","appendStart","shape","createShape","hints","getSelectedBusinessObject","oldColor","newColor","selectedBusinessObject","BpmnElementFactory","DEFAULT_LABEL_SIZE","DomainStoryIdFactory","DomainStoryElementFactory","bpmnFactory","moddle","domainStoryIdFactory","elementType","attrs","baseCreate","test","registerId","getId","key","set","value","$type","di","$descriptor","_getCustomElementSize","Object","defineProperty","createBpmnElement","__default","Dimensions","idList","generateId","idNumber","fourDigitsId","idSuffix","containsId","floor","random","same","BaseRenderer","Ids","getAnnotationBoxHeight","componentsToPath","createLine","append","svgAppend","attr","svgAttr","classes","svgClasses","svgCreate","query","domQuery","isObject","getNumberStash","addNumberToRegistry","numberBoxDefinitions","calculateTextWidth","countLines","labelPosition","angleBetween","isCustomIcon","isCustomSvgIcon","RENDERER_IDS","numbers","DEFAULT_COLOR","_iconDictionaryService","_elementRegistryService","_dirtyFlagService","initializeRenderer","elementRegistryService","DomainStoryRenderer","styles","textRenderer","pathMap","rendererId","next","markers","computeStyle","generateActivityNumber","parentGfx","box","numberStash","semantic","use","number","newRenderedNumber","renderNumber","numberStyle","fitBox","style","getExternalStyle","fill","backgroundBoxStyle","fontFamily","backgroundDotStyle","renderEmbeddedLabel","align","padding","renderLabel","renderExternalLabel","waypoints","lines","startPoint","selected","endPoint","angle","alignment","boxWidth","xStart","abs","textAlign","wordWrap","overflowWrap","hyphens","renderExternalNumber","String","createText","add","setCoordinates","circle","radius","d","stroke","innerHTML","manipulateInnerHTMLXLabel","manipulateInnerHTMLYLabel","attributes","nodeValue","offset","result","Number","drawGroup","rect","drawRect","applyColorToCustomSvgIcon","iconSvg","rest","base64Svg","svg","atob","coloredSvg","applyColorToIcon","encodedColoredSvg","btoa","match","some","it","replaceAll","index","indexOf","substring","getIconSvg","dataURL","drawActor","svgDynamicSizeAttributes","iconSRC","getTypeIconSRC","getIconId","actor","drawWorkObject","workObject","useColorForActivity","strokeWidth","strokeLinejoin","markerEnd","marker","drawActivity","p","adjustForTextOverlap","fixConnectionInHTML","parentElement","checkIfPointOverlapsText","point","lineOffset","getLineOffset","objects","getElementsByClassName","data_id","item","getAttribute","object","getElementsByTagName","tspans","tspan","wantedConnection","polylines","drawDSConnection","strokeDasharray","drawAnnotation","textElement","textPathData","getScaledPath","xScaleFactor","yScaleFactor","containerWidth","containerHeight","mx","my","drawPath","path","r","rx","ry","createMarker","sequenceflowEnd","addMarker","ref","scale","strokeLinecap","viewBox","refX","refY","markerWidth","markerHeight","orient","defs","_svg","getWorkObjectPath","rectangle","getRectPath","getGroupPath","getActivityPath","map","original","activityPath","waypoint","getActorPath","canRender","drawShape","startsWith","search","pos","correctInitialize","getShapePath","drawConnection","every","reduce","RuleProvider","is","HIGH_PRIORITY","MIN_SIZE","isDomainStory","isDomainStoryGroup","isActor","isWorkObject","isActivity","isAnnotation","canConnect","canResize","newBounds","lowerLeft","lowerRight","upperRight","canAttach","Array","canConnectToAnnotation","DomainStoryRules","init","canCreate","addRule","host","s","undefined","hover","pick","CommandInterceptor","collectionAdd","remove","collectionRemove","reworkGroupElements","DomainStoryUpdater","bpmnjs","updateCustomElement","e","DOMAINSTORY","updateCustomConnection","newTarget","newSource","copyWaypoints","executed","ifDomainStoryElement","reverted","fn","DomainStoryPalette","ElementFactory","CreateModule","PathMap","PopupMenuModule","ContextPadModule","CommandStack","UpdateLabelHandler","headlineAndDescriptionUpdateHandler","DSModeling","__depends__","__init__","domainStoryRenderer","paletteProvider","domainStoryRules","domainStoryUpdater","contextPadProvider","elementFactoryBpmn","updateLabelHandler","svgRemove","MARKER_HIDDEN","MARKER_LABEL_HIDDEN","DSLabelEditingPreview","defaultLayer","getDefaultLayer","absoluteElementBBox","gfx","on","activeProvider","active","getAbsoluteBBox","getStrokeColor","labelTarget","dy","newElementHeight","max","removeMarker","autocomplete","getLabel","isAny","getExternalLabelMid","hasExternalLabel","isLabel","isLabelExternal","dictionaryService","stashUse","initializeLabelEditingProvider","labelingDictionary","toggleStashUse","focusElement","setTimeout","focus","DSLabelEditingProvider","directEditing","resizeHandles","_canvas","_textRenderer","_updateLabelHandler","activateDirectEdit","complete","isActive","cancel","removeResizers","createAutocomplete","canExecute","isTouch","editingBox","force","activate","getUniqueWorkObjectNames","bounds","getEditingBBox","autoResize","resizable","bbox","mid","zoom","defaultStyle","getDefaultStyle","externalStyle","externalFontSize","externalLineHeight","lineHeight","defaultFontSize","defaultLineHeight","fontWeight","minWidth","maxWidth","minHeight","paddingTop","paddingBottom","paddingLeft","paddingRight","externalLabelMid","absoluteBBox","update","newLabel","activeContextText","updateLabel","getLabelAttr","getNumberAttr","getNumber","setLabel","setNumber","textNumber","selectPartOfActivity","angleActivity","selectedActivity","linelength","fontsize","input","workObjectNames","closeAllLists","currentFocus","filteredWorkObjectNames","autocompleteList","autocompleteItem","val","parentNode","toUpperCase","visibility","onkeydown","getElementById","keyCode","addActive","preventDefault","removeActive","classList","survivor","removeChild","ChangeSupportModule","DirectEditingModule","dSlabelEditingProvider","dSlabelEditingPreview","str","amountWaypoints","determinedPosition","xPos","yPos","labelPositionX","labelPositionY","offsetX","scaledAngle","offsetY","Modeling","_commandStack","updateNumber","oldShape","newShape","newData","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","overrideAppendedIcons","Dictionary","APPENDED_ICONS_TAG","configuration","initializePalette","configurationService","PaletteProvider","palette","spaceTool","lassoTool","_create","_elementFactory","_spaceTool","_lassoTool","getPaletteEntries","createAction","createListener","isExpanded","shortType","initPalette","appendCSSStyleCheat","customIcons","sheetEl","head","customIconDict","appendDict","customIconDictKeys","getAppendedIconDictionary","has","src","iconStyle","wrapSRCInSVG","sheet","insertRule","cssRules","config","getCurrentIconConfigurationForBPMN","localStorage","getItem","JSON","parse","customIconsLegacy","convertLegacyAppendedIconsToDict","customIconsDict","putEntry","initTypeDictionaries","actors","workObjects","addCanvasObjectTypes","separator","activateSelection","keys","dict","initializeActivityUpdateHandler","activityUpdateHandler","registerHandler","activity_directionChange","activity_changed","preExecute","oldLabel","oldNumbersWithIDs","oldNumber","revert","revertAutomaticNumberGenerationChange","oldWaypoints","swapSource","newWaypoints","getActivitesFromActors","splice","undoGroupRework","elementUpdateHandler","element_colorChange","removeGroupWithoutChildren","child","titleService","handlerFunction","oldTitle","getTitle","oldDescription","getDescription","updateTitleAndDescription","newTitle","newDescription","DSMassRenameHandler","massRename","relevantElements","confirm","newValue","getBusinessObject","NULL_DIMENSIONS","labelCenter","createLabel","setText","postExecute","trim","removeShape","bo","getLayoutedBounds","resizeShape","numberTarget","innerShape","superParent","svgShape","querySelector","svgGroup","svgGroupParent","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","constructor","settingsService","exportService","autosaveService","cd","snackbar","replayService","version","skipNextColorUpdate","colorBox","showSettings$","showDescription$","ctrlKey","stopPropagation","isDomainStoryExportable","downloadDST","getReplayOn","nextSentence","previousSentence","colorPicker","closeDialog","customEvent","openDialog","duration","panelClass","ngOnInit","onColorChanged","ngAfterViewInit","loadLatestDraft","detectChanges","_","ɵɵdirectiveInject","i1","SettingsService","i2","TitleService","i3","ExportService","i4","AutosaveService","ChangeDetectorRef","i5","MatSnackBar","i6","ReplayService","_2","selectors","viewQuery","AppComponent_Query","rf","ɵɵelementStart","ɵɵtwoWayListener","AppComponent_Template_input_colorPickerChange_1_listener","$event","ɵɵtwoWayBindingSet","ɵɵlistener","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","DirtyFlagService","IconSetChangedService","WorkbenchModule","DomainModule","AutosaveModule","ExportModule","IconSetConfigModule","ImportModule","LabelDictionaryModule","ModelerModule","TitleModule","AppModule","ngDoBootstrap","app","componentElement","body","bootstrap","ɵɵinject","_3","provide","useValue","clickAction","useFactory","initialize","deps","useExisting","imports","declarations","labelDictionaryService","Configuration","INITIAL_TITLE","INITIAL_DESCRIPTION","INITIAL_ICON_SET_NAME","ICON_SET_CONFIGURATION_TAG","VERSION_KEY","DEFAULT_AUTOSAVES_ENABLED","DEFAULT_AUTOSAVES_MAX_DRAFTS","DEFAULT_AUTOSAVES_INTERVAL","SNACKBAR_DURATION","SNACKBAR_DURATION_LONGER","SNACKBAR_SUCCESS","SNACKBAR_ERROR","IMPLICIT_ROOT_ID","all","size","isEmpty","Entry","addEach","clear","filter","found","InfoDialogData","infoText","isInfo","isLink","linkText","InfoDialogComponent","CommonModule","exports","MAT_DIALOG_DATA","ɵɵtextInterpolate1","ctx_r0","ɵɵpropertyInterpolate","ɵɵsanitizeUrl","InfoDialogComponent_Conditional_5_Template_button_click_1_listener","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","close","dialogRef","showConfirmButton","hasLink","span","scrollHeight","MatDialogRef","decls","vars","consts","template","InfoDialogComponent_Template","InfoDialogComponent_Conditional_3_Template","InfoDialogComponent_Conditional_4_Template","InfoDialogComponent_Conditional_5_Template","CommandStackService","setCommandStack","payload","factory","ɵfac","providedIn","MatDialogConfig","DialogService","matDialog","dialog","openKeyboardShortcutsDialog","shortCutText","disableClose","autoFocus","MatDialog","isDirtySubject","dirty$","asObservable","makeClean","dirty","fullyInitialized","registry","__implicitroot","setElementRegistry","_elements","createObjectListForDSTDownload","allObjectsFromCanvas","getAllCanvasObjects","getAllGroups","objectList","fillListOfCanvasObjects","canvasElement","unshift","getAllActivities","getAllConnections","allObjects","groupObjects","checkChildForGroup","currentGroup","pop","registryElementNames","sort","activityCanvasA","activityCanvasB","activityNumberA","activityNumberB","getUsedIcons","getAllActors","workobjects","getAllWorkobjects","a","w","co","StorageService","setItem","stringify","json","MatDialogModule","MatFormFieldModule","MatInputModule","MatToolbarModule","MatExpansionModule","MatCardModule","MatSnackBarModule","MatButtonModule","MatGridListModule","MatButtonToggleModule","MatListModule","MatCheckboxModule","AutosaveOptionsComponent_Conditional_0_Template_button_click_20_listener","_r1","activated_r2","ɵɵreference","interval_r3","drafts_r4","ctx_r4","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_r3","$implicit","ctx_r3","loadDraft","date","ɵɵrepeaterCreate","AutosavedDraftsComponent_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIdentity","AutosavedDraftsComponent_Conditional_7_Template_button_click_5_listener","removeAllDrafts","ɵɵrepeater","drafts","AutosavedDraftsComponent","subscription","autosavedDraftsChanged$","subscribe","initDrafts","loadCurrentDrafts","draft","AutosavedDraftsComponent_Template","AutosavedDraftsComponent_Conditional_7_Template","AutosavedDraftsComponent_Conditional_8_Template","ɵɵtextInterpolate2","FormsModule","ReplaySubject","AUTOSAVE_CONFIGURATION_TAG","defaultConfiguration","storageService","configurationSubject","initializeConfiguration","loadConfiguration","saveConfiguration","Subject","DRAFTS_TAG","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","i7","i8","ExportDialogData","ExportOption","tooltip","ConfigAndDST","testConfigAndDst","DEFAULT_PADDING","ExportDialogComponent_For_18_Template_button_click_0_listener","i_r2","$index","ctx_r2","doOption","option_r4","ExportDialogComponent","withTitle","useWhiteBackground","updateWithTitle","updateUseWhiteBackground","ExportDialogComponent_Template","ExportDialogComponent_Template_input_change_4_listener","ExportDialogComponent_Template_input_change_9_listener","ExportDialogComponent_Template_button_click_15_listener","ExportDialogComponent_For_18_Template","sanitizeForDesktop","formatDate","pngService","svgService","htmlPresentationService","modelerService","dialogService","titleSubscription","title$","descriptionSubscription","description$","ngOnDestroy","unsubscribe","DomainStory","getCurrentConfigurationForExport","getStoryForDownload","filename","getCurrentDateString","downloadFile","datatype","fileEnding","encodeURIComponent","display","downloadSVG","svgData","createSVGData","downloadPNG","container","svgElements","outerSVGElement","viewport","layerBase","image","extractSVG","prepareSVG","onload","getWidth","getHeight","fillStyle","drawImage","png64","toDataURL","ele","onchange","downloadHTMLPresentation","modeler","then","info","openDownloadDialog","SVGDownloadOption","EGNDownloadOption","PNGDownloadOption","HTMLDownloadOption","getModeler","PngService","SvgService","HtmlPresentationService","ModelerService","i9","i10","doT","storyCreatorService","viewBoxCoordinates","ViewBoxCoordinate","_this","_asyncToGenerator","startReplay","saveSVG","fixActivityMarkersForEachSentence","getCurrentSentenceNumber","content","transition","err","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","parseInt","findMostOuterElements","xRight","yDown","sub","elXLeft","elXRight","elYUp","elYDown","transform","nums","rects","outerRect","calculateWidthAndHeight","insertIndex","join","extraHeight","layerResizers","layerOverlays","removeAttribute","XMLSerializer","serializeToString","cacheData","getEncoded","domainStorySvg","viewBoxWidth","viewBoxHeight","findIndexToInsertData","svgIndex","backgroundColorWhite","appendDST","appendedIcons","allIcons","Person","Group","Pet","Conversation","World","Store","Theater","Business","Water","Hotel","Dining","Courthouse","Flag","Place","Car","Bus","Train","Truck","Taxi","Bike","Boat","Motorcycle","Plane","Shuttle","Walking","Traffic","Commute","System","Printer","Document","Folder","Call","Email","Copyright","DNS","Settings","Cellphone","Update","Briefcase","Microphone","Signal","Key","Pencil","Sum","Headset","Keyboard","Mouse","Router","Scanner","Security","Desktop","Tablet","Label","Receipt","Calendar","Cloud","Assessment","Dashboard","Problem","Grid","Watch","Euro","Dollar","Info","Alarm","Wrench","Favorite","Gavel","Blind","Hourglass","Time","Search","Shopping","Couch","Attach","Ruler","Education","Accessible","Assignment","Battery","Book","Bug","Code","Crop","DVR","Extension","Face","Fastfood","Fingerprint","Hand","Help","Image","Lightbulb","Lock","Loyalty","Portrait","Rocket","Satellite","Share","Slideshow","Star","Sun","Table","Videocam","Wysiwyg","allIconsDict","newIcons","updateAppendedIcons","IconConfiguration","allIconDictionary","domainName","getDefaultConf","defaultConf","updateAllIconRegistry","appendSRCFile","actorsDict","workObjectsDict","newAppendedIcons","appen","createCustomConf","iconSetConfiguration","IconFilterEnum","DetailsListItemComponent","iconInitiated","ngAfterViewChecked","createIcon","img","inputs","DetailsListItemComponent_Template","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","ICON_PREFIX","sanitizeIconName","iconName_r1","ICON_FILTER_NONE","selectedActors","selectedWorkobjects","allIconNames","allFilteredIconNames","iconSetConfigurationTypes","getIconSetConfiguration","getFullDictionary","sortByName","selectedActors$","selectedWorkobjects$","allFiltered","getFilteredNamesForType","localeCompare","loadMinimalIconConfigurationWithDefaultIcons","resetIconSet","loadInitialConfiguration","saveIconSet","exportIconSet","startIconUpload","importIcon","files","iconInputFile","reader","FileReader","onloadend","addIMGToIconDictionary","registerIconForBPMN","addNewIcon","readAsDataURL","startIconSetImport","importIconSet","iconSetInputFile","importConfiguration","readAsText","filterForActors","ICON_FILTER_ACTOR","filterForWorkobjects","ICON_FILTER_WORKOBJECT","filterForUnassigned","ICON_FILTER_UNASSIGNED","filterByNameAndType","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_18_listener","IconSetConfigurationComponent_Template_button_click_20_listener","IconSetConfigurationComponent_Template_input_change_23_listener","IconSetConfigurationComponent_Template_button_click_24_listener","IconSetConfigurationComponent_Template_button_click_27_listener","IconSetConfigurationComponent_Template_button_click_31_listener","IconSetConfigurationComponent_Template_button_click_35_listener","IconSetConfigurationComponent_Template_input_change_38_listener","IconSetConfigurationComponent_Template_button_click_39_listener","IconSetConfigurationComponent_For_44_Template","IconSetDetailsComponent_For_12_Template_mat_list_item_dragover_0_listener","ctx_r1","allowDrop","IconSetDetailsComponent_For_12_Template_mat_list_item_dragstart_0_listener","i_r3","onDragStart","IconSetDetailsComponent_For_12_Template_mat_list_item_drop_0_listener","iconName_r5","onDrop","IconSetDetailsComponent_For_19_Template_mat_list_item_dragover_0_listener","_r6","IconSetDetailsComponent_For_19_Template_mat_list_item_dragstart_0_listener","i_r7","IconSetDetailsComponent_For_19_Template_mat_list_item_drop_0_listener","ctx_r7","iconName_r9","customizationService","draggedList","draggedIndex","iconSetName","iconSetName$","changeName","listName","list","sortedList","setSelectedActors","setSelectedWorkObject","IconSetDetailsComponent_Template","IconSetDetailsComponent_Template_input_input_5_listener","IconSetDetailsComponent_For_12_Template","IconSetDetailsComponent_For_19_Template","actorIconDictionary","workObjectDictionary","iconDictionaryForBPMN","iconConfig","allTypes","initDictionary","dictionary","customConfiguration","allInTypeDictionary","collection","allIn","addIconsFromIconSetConfiguration","dictionaryType","iconTypes","registerIconForType","addIconsToTypeDictionary","unregisterIconForType","extractCustomIconsFromDictionary","addNewIconsToDictionary","elementDictionary","sanitizedName","custom","addIconsToCss","fullDictionary","appendedDict","getTypeDictionaryKeys","getIconSource","elementOfType","getAllIconDictionary","getActorsDictionary","getWorkObjectsDictionary","getIconConfiguration","setCustomConfiguration","setIconSetName","exportConfiguration","configJSONString","getIconSetName","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","importedConfiguration","getConfiguration","selectedActorNames","selectActor","selectedWorkobjectNames","selectWorkObject","changedIconSet","deselectActor","deselectWorkobject","updateIcon","workobject","updateActorSubject","updateWorkObjectSubject","defaultConfig","workObjectName","actorName","updateAllIconBehaviourSubjects","resetToInitialConfiguration","usedIcons","imported","changedActors","changedWorkobjects","configurationActors","configurationWorkobjects","changedIconSetConfiguration","updateIcons","getAndClearSavedConfiguration","temp","iconDict","getSrcForIcon","iconBehaviourSubject","customIconSetConfiguration","rawSrc","ImportDialogComponent","fileUrl","doImport","updateUrl","ImportDialogComponent_Template","ImportDialogComponent_Template_input_input_4_listener","ImportDialogComponent_Template_button_click_9_listener","ImportDialogComponent_Template_button_click_11_listener","EventEmitter","importRepairService","importedConfigurationEmitter","performImport","file","dstSvgPattern","egnSvgPattern","endsWith","importDST","importEGN","commandStackChanged","importFromUrl","fetch","response","blob","catch","openUploadUrlDialog","isSVG","fileReader","titleText","restoreTitleFromFileName","fileReaderFunction","isEGN","dstText","removeXMLComments","dstAndConfig","extractDstAndConfig","removeWhitespacesFromIcons","configChanged","checkConfigForChanges","lastElement","importVersionNumber","handleVersionNumber","checkForUnreferencedElementsInActivitiesAndRepair","showBrokenImportDialog","adjustPositions","versionPrefix","lastIndexOf","updateCustomElementsPreviousV050","showPreviousV050Dialog","xmlText","newActorKeys","newWorkObjectKeys","currentActorKeys","currentWorkobjectKeys","changed","clearName","setImportedConfigurationAndEmit","message","emit","domainStoryRegex","svgRegex","egnSuffix","dstSuffix","svgSuffix","filenameWithoutDateSuffix","ImportRepairService","objectIDs","activityIndex","isFirst","findFirstElement","adjustElementPosition","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","Set","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","ModelerComponent","ReactiveFormsModule","postInit","ModelerComponent_Template","positionsMatch","massRenameHandler","InitializerService","propagateDomainStoryModelerClassesToServices","selection","initializeDomainStoryModelerEventHandlers","initiateEventBusListeners","activityDoubleClick","renderedNumberRegistry","allActivities","htmlCanvas","transformX","transformY","zoomX","zoomY","clickX","originalEvent","clickY","parseFloat","currentNum","tx","ty","tNumber","elementX","elementY","pasteColor","pasteText","pasteHeight","descriptor","oldBusinessObject","elementsKey","shift","saveActivityInputLabel","activityData","hasNumber","initializerService","checkCurrentVersion","keyboard","bindTo","additionalModules","bpmnSearch","exportArtifacts","debounce","window","startDebounce","onAction","restart","domainStory","currentStory","destroy","timeout","timer","clearTimeout","encoded","renderStory","reset","configurationChange","c","NUMBER_BACKGROUND_COLOR","NUMBER_COLOR","STROKE_WIDTH","HIGHLIGHT_NUMBER_BACKGROUNG_COLOR","HIGHLIGHT_NUMBER_COLOR","HIGHLIGHT_STROKE_WIDTH","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","traceActivitiesAndCreateStory","initializeReplay","showCurrentSentence","checkSequenceNumbers","missingSentences","getMissingSentences","sentence","getValue","tracedActivityMap","tracedActivityMapKeys","tracedItem","storyIndex","createSentence","addGroupsToLastSentence","tracedActivityMapKey","tracedActivity","getSentenceObjects","highlightedElements","t","highlightedObjects","allActivityNumbersFromActors","allActivityNumbers","highestSequenceNumber","initialSource","targetObjects","parallelSentence","firstTarget","checkTarget","activityTarget","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","iconSetNameSubject","showDescriptionSubject","openHeaderDialog","allowUndo","fireTitleAndDescriptionUpdate","updateTitle","updateDescription","inputTitle","setShowDescription","show","getVersion","hasTitleOrDescription","rgba","red","padStart","green","blue","alpha","round","isValidHex","hex","getChunksFromString","st","chunkSize","RegExp","convertHexUnitTo256","hexStr","repeat","getAlphafloat","EPSILON","hexArr","degrees","radians","PI","quadrant","adjacent","opposite","atan2","Point","reg","nameWithoutFileEnding","HeaderButtonsComponent_Conditional_0_Template_button_click_1_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_7_listener","HeaderButtonsComponent_Conditional_0_Template_input_change_10_listener","import","HeaderButtonsComponent_Conditional_0_Template_button_click_11_listener","HeaderButtonsComponent_Conditional_0_Conditional_12_Template","HeaderButtonsComponent_Conditional_0_Conditional_13_Template","HeaderButtonsComponent_Conditional_0_Template_button_click_14_listener","HeaderButtonsComponent_Conditional_0_Template_button_click_17_listener","openSettings","HeaderButtonsComponent_Conditional_0_Template_button_click_20_listener","showKeyboardShortCuts","HeaderButtonsComponent_Conditional_0_Template_button_click_23_listener","newStory","hasDomainStory","hasTitle","isDirty","HeaderButtonsComponent_Conditional_1_Template_button_click_1_listener","_r3","HeaderButtonsComponent_Conditional_1_Template_button_click_4_listener","HeaderButtonsComponent_Conditional_1_Template_button_click_7_listener","HeaderButtonsComponent","isReplaying","HeaderButtonsComponent_Template","HeaderButtonsComponent_Conditional_0_Template","HeaderButtonsComponent_Conditional_1_Template","combineLatest","HeaderComponent_Conditional_2_Template_button_click_0_listener","HeaderComponent_Conditional_4_Template_button_click_0_listener","sentenceDescription$","HeaderComponent","importService","renderService","isReplay$","isDirty$","pipe","count","showDescription","createNewDomainStory","onImport","HeaderComponent_Template","HeaderComponent_Conditional_2_Template","HeaderComponent_Conditional_4_Template","HeaderComponent_Template_span_click_7_listener","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_openUploadUrlDialog_16_listener","HeaderComponent_Conditional_19_Template","GeneralSettingsComponent","GeneralSettingsComponent_Template","SettingsComponent","showGeneralSettings","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","error"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file diff --git a/app-latest-build/styles.css b/app-latest-build/styles.css index 35ed3cc..ae24863 100644 --- a/app-latest-build/styles.css +++ b/app-latest-build/styles.css @@ -3563,6 +3563,7 @@ mat-dialog-actions.mdc-dialog__actions { .mat-mdc-snack-bar-container.snackbar_info { --mdc-snackbar-container-color: #42aebb; --mat-mdc-snack-bar-button-color: black; + --mat-snack-bar-button-color: #000000; --mdc-snackbar-supporting-text-color: #fff; } diff --git a/app-latest-build/styles.css.map b/app-latest-build/styles.css.map index 13d3920..d74831d 100644 --- a/app-latest-build/styles.css.map +++ b/app-latest-build/styles.css.map @@ -1 +1 @@ -{"version":3,"file":"styles.css","mappings":"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kB/oBM;EnB2BF;ACwnBJ;;AkBnpBM;EnB2BF;AC4nBJ;;AkBvpBM;EnB2BF;ACgoBJ;;AkB3pBM;EnB2BF;ACooBJ;;AkB/pBM;EnB2BF;ACwoBJ;;AkBnqBM;EnB2BF;AC4oBJ;;AkBvqBM;EnB2BF;ACgpBJ;;AkB3qBM;EnB2BF;ACopBJ;;AkB/qBM;EnB2BF;ACwpBJ;;AkBnrBM;EnB2BF;AC4pBJ;;AkBvrBM;EnB2BF;ACgqBJ;;AkB3rBM;EnB2BF;ACoqBJ;;AkB/rBM;EnB2BF;ACwqBJ;;AkBnsBM;EnB2BF;AC4qBJ;;AkBvsBM;EnB2BF;ACgrBJ;;AkB3sBM;EnB2BF;ACorBJ;;AkB/sBM;EnB2BF;ACwrBJ;;AkBntBM;EnB2BF;AC4rBJ;;AkBvtBM;EnB2BF;ACgsBJ;;AkB3tBM;EnB2BF;ACosBJ;;AkB/tBM;EnB2BF;ACwsBJ;;AkBnuBM;EnB2BF;AC4sBJ;;AkBvuBM;EnB2BF;ACgtBJ;;AkB3uBM;EnB2BF;ACotBJ;;AkB/uBM;EnB2BF;ACwtBJ;;AkB1uBI;EACE;AlB6uBN;;AFzxBI;EC6DA;EAAA;EAAA;ACkuBJ;;AF/xBI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;AC2uBJ;;AFxyBI;EC6DA;EAAA;EAAA;ACivBJ;;AmBzxBI;EpBwCA;EAAA;ACsvBJ;AmB3xBM;EpBqCF;EAAA;AC0vBJ;AmB3xBM;EpBiCF;EAAA;AC8vBJ;;AF3zBI;EC6DA;EAAA;ACmwBJ;;AFh0BI;EC6DA;EAAA;ACwwBJ;;AFr0BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACixBJ;;AF90BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC60BJ;;AoBt2BI;ErByBA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu1BJ;;AoBv2BI;ErBgBA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACi2BJ;;AF95BI;EC6DA;EAAA;EAAA;EAAA;EAAA;ACy2BJ;;AFt6BI;EC6DA;AC62BJ;;AF16BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACw3BJ;AqBh6BM;EtBwCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACk4BJ;AqBr6BM;EtBmCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC44BJ;;AFz8BI;EC6DA;ACg5BJ;;AF78BI;EC6DA;EAAA;ACq5BJ;;AFl9BI;EC6DA;ACy5BJ;;AFt9BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu6BJ;;AFp+BI;EC6DA;EAAA;EAAA;AC66BJ;;AGz+BI;EJ4DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu8BJ;;AGj/BI;EJ0CA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC89BJ;AGhgCQ;EJkCJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACo/BJ;AG/gCQ;EJ2BJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC0gCJ;AG9hCQ;EJoBJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACgiCJ;;AG/gCI;EJjBA;ACoiCJ;;AFjmCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC6kCJ;;AF1oCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EK7BA;AJgpCJ;AI1oCI;ELuBA;ACsnCJ;AIzoCQ;ELmBJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmoCJ;AIjpCQ;ELcJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACgpCJ;;AF7sCI;EC6DA;ACopCJ;;AFjtCI;EC6DA;EAAA;EAAA;AC0pCJ;;AKlsCI;ENwCA;AC8pCJ;AKnsCM;ENqCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4qCJ;AK3sCM;EN+BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC0rCJ;AKntCM;ENyBF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACwsCJ;;AFrwCI;EC6DA;EAAA;AC6sCJ;;AF1wCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmuCJ;;AFhyCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACyvCJ;AsBhxCI;EvBuBA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACqwCJ;AsBnxCM;EvBcF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACixCJ;;AF90CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC6xCJ;;AF11CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACsyCJ;;AFn2CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACwzCJ;;AFr3CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC40CJ;;AM72CI;;EPiCA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACy1CJ;;AMp3CM;;EP2BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACs2CJ;;AM13CM;;EPoBF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACm3CJ;;AMj4CI;EPcA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu4CJ;;AMl5CI;EPWA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC25CJ;;AMn6CI;EPQA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+6CJ;;AuBrtBE;;ExB1tBE;ACo7CJ;AuB3CI;;ExBz4CA;ACw7CJ;;AMj7CM;;;EAGE;ANo7CR;;AF3/CI;EC6DA;EAAA;EAAA;EAAA;EAAA;ACs8CJ;;AMv6CI;;EP/BA;AC28CJ;;AMh6CQ;EACE;ANm6CV;AMz5CQ;EACE;AN25CV;;AF/gDI;EC6DA;EAAA;EAAA;EAAA;ACy9CJ;;AFthDI;EC6DA;EAAA;EAAA;AC+9CJ;;AF5hDI;EC6DA;EAAA;EAAA;EAAA;EAAA;ACu+CJ;;AOzgDI;ERkCA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu/CJ;AOthDM;ER+BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACsgDJ;AOjiDM;ER2BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACqhDJ;AO5iDM;ERuBF;EAAA;ACyhDJ;AO5iDM;ERmBF;EAAA;AC6hDJ;AO5iDM;EReF;EAAA;ACiiDJ;;AOhgDI;ERjCA;ACqiDJ;;AFlmDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+iDJ;;AF5mDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACokDJ;;AQtmDI;ETkCA;ACwkDJ;AQvmDM;ET+BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC2lDJ;AQtnDM;ET2BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC8mDJ;;AF3qDI;EC6DA;EAAA;ACmnDJ;;AFhrDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4oDJ;;AFzsDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC2rDJ;;AwBzmDM;EzBlFF;EAAA;EAAA;ACisDJ;AwB3mDM;EzBtFF;EAAA;EAAA;ACssDJ;AwB5mDM;EzB1FF;EAAA;EAAA;AC2sDJ;;AwB3mDM;EzBhGF;EAAA;EAAA;EAAA;ACktDJ;AwB9mDM;EzBpGF;EAAA;EAAA;EAAA;ACwtDJ;AwBhnDM;EzBxGF;EAAA;EAAA;EAAA;AC8tDJ;;AwBhnDM;EzB9GF;EAAA;EAAA;EAAA;ACquDJ;AwBnnDM;EzBlHF;EAAA;EAAA;EAAA;AC2uDJ;AwBrnDM;EzBtHF;EAAA;EAAA;EAAA;ACivDJ;;AwBrnDM;EzB5HF;EAAA;EAAA;EAAA;ACwvDJ;AwBxnDM;EzBhIF;EAAA;EAAA;EAAA;AC8vDJ;AwB1nDM;EzBpIF;EAAA;EAAA;EAAA;ACowDJ;;AFj0DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+wDJ;;AF50DI;EC6DA;ACmxDJ;;AFh1DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC8xDJ;AyB3zDQ;E1B6BJ;EAAA;EAAA;ACmyDJ;AyB5zDQ;E1ByBJ;EAAA;EAAA;ACwyDJ;AyB7zDQ;E1BqBJ;EAAA;EAAA;AC6yDJ;;AF12DI;EC6DA;ACizDJ;;AyBvxDI;E1B1BA;E0BsCE;EACA;EACA;AzBgxDN;;AFr3DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACi0DJ;;AF93DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu2DJ;A0Br2DQ;E3BFJ;EAAA;EAAA;EAAA;AC62DJ;A0Bv2DQ;E3BNJ;EAAA;EAAA;EAAA;ACm3DJ;A0Bz2DQ;E3BVJ;EAAA;EAAA;EAAA;ACy3DJ;A0Bz2DQ;E3BhBJ;EAAA;EAAA;EAAA;AC+3DJ;A0B32DQ;E3BpBJ;EAAA;EAAA;EAAA;ACq4DJ;A0B72DQ;E3BxBJ;EAAA;EAAA;EAAA;AC24DJ;;AFx8DI;EC6DA;EAAA;ACg5DJ;;AF78DI;EC6DA;ACo5DJ;;AFj9DI;EC6DA;EAAA;EAAA;AC05DJ;;AFv9DI;EC6DA;AC85DJ;;AF39DI;EC6DA;EAAA;EAAA;EAAA;ACq6DJ;;AFl+DI;EC6DA;EAAA;EAAA;AC26DJ;;AFx+DI;EC6DA;EAAA;ACg7DJ;;AF7+DI;EC6DA;ACo7DJ;A2B19DM;E5BsCF;ACu7DJ;A2Bx9DM;E5BiCF;AC07DJ;;AFv/DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC68DJ;;AF1gEI;EC6DA;EAAA;EAAA;EAAA;ACo9DJ;;A4B3/DI;E7BuCA;EAAA;ACy9DJ;;A4B3/DI;E7BkCA;EAAA;AC89DJ;;AF3hEI;EC6DA;ACk+DJ;;AF/hEI;EC6DA;EAAA;ACu+DJ;;AFpiEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACg/DJ;;AF7iEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACogEJ;;AFjkEI;EC6DA;ACwgEJ;;AFrkEI;EC6DA;EAAA;EAAA;EAAA;AC+gEJ;;AF5kEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+iEJ;;A6BhkEM;E9BiBF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4jEJ;A6BzkEM;E9BaF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACwkEJ;;A6B/kEM;E9BOF;AC4kEJ;A6B7kEM;E9BCF;AC+kEJ;;A6B3hEI;E9BpDA;ACmlEJ;AyBzjEI;E1B1BA;E0BsCE;EACA;EACA;AzBijEN;;AFtpEI;EC6DA;AC6lEJ;;AF1pEI;EC6DA;ACimEJ;;AF9pEI;EC6DA;EAAA;EAAA;ACumEJ;;AFpqEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmnEJ;;AFhrEI;EC6DA;EAAA;ACwnEJ;;AFrrEI;EC6DA;AC4nEJ;;A8BnqEM;E/BuCF;ACgoEJ;A8BnqEM;E/BmCF;ACmoEJ;A8BlqEM;E/B+BF;ACsoEJ;;AFnsEI;EC6DA;EAAA;EAAA;AC4oEJ;;AFzsEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACqpEJ;;AFltEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC0qEJ;A+BxtEM;EhC8CF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmrEJ;A+B5tEM;EhCyCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4rEJ;;AFzvEI;EC6DA;ACgsEJ;;AF7vEI;EC6DA;ACosEJ;;AFjwEI;EC6DA;EAAA;ACysEJ;;AgCvvEM;EjC8CF;EAAA;AC8sEJ;AgCxvEM;EjC0CF;EAAA;ACktEJ;AgCxvEM;EjCsCF;EAAA;ACstEJ;;AFnxEI;EC6DA;EAAA;AC2tEJ;;AFxxEI;EC6DA;EAAA;ACguEJ;;AF7xEI;EC6DA;ACouEJ;;AA5wEA;AAEA;EACE;EACA;EACA;EACA;AA8wEF;AA3wEA;AAEA;;EAEE;AA4wEF;;AAzwEA;EACE;EACA;AA4wEF;;AAzwEA;EACE;EACA;EAEA;AA2wEF;AA1wEE;EACE;AA4wEJ;;AAxwEA;EACE;EACA;EACA;AA2wEF;;AAxwEA;EACE;EACA;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;EACA;EACA;EACA;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;EACA;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;AAEA;EACE;EACA;AA0wEF;;AAvwEA;AAGE;EACE;EACA;EACA;AAwwEJ;AAtwEE;EACE;EACA;EACA;AAwwEJ;AAtwEE;EACE;EACA;EACA;AAwwEJ;AAtwEE;EACE;EACA;EACA;AAwwEJ;;AApwEA;AAEA;EACE;EACA;AAswEF;;AAnwEA;EACE;AAswEF;;AAnwEA;EACE;EACA;EACA;AAswEF;;AAnwEA;;EAAA;AAIA;;EAAA;AAIA;EACE;EACA;EACA;EAEA;EACA;AAmwEF;;AAhwEA;EACE;EACA;EAEA;EACA;EAEA;AAiwEF;;AA9vEA;EACE;AAiwEF;;AA9vEA;EACE;AAiwEF;;AA9vEA;;EAEE;EACA;EAEA;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;EACA;EACA;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;;EAEE;EACA;EACA;EACA;AAgwEF;;AA7vEA;;;;EAAA;AAKA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;;EAAA;AAIA;EACE;EACA;AA+vEF;;AA5vEA;;EAEE;EACA;EACA;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;;;CAAA;AAIA;EACE;AA+vEF;;AA5vEA;;EAAA;AAGA;EACE;AA+vEF;;AA5vEA;;EAAA;AAGA;;;;;;EAME;EACA;AA+vEF;;AA5vEA;;EAAA;AAGA;EACE;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;EACA;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;;;;EAIE;EACA;EACA;AA+vEF;;AA5vEA;;EAEE;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF,C","sources":["./node_modules/diagram-js/assets/diagram-js.css","./node_modules/bpmn-js/dist/assets/bpmn-font/css/bpmn.css","./node_modules/material-icons/iconfont/material-icons.css","./node_modules/@angular/material/core/style/_sass-utils.scss","./node_modules/@material/theme/_css.scss","./src/styles.scss","./node_modules/@angular/material/core/typography/_typography.scss","./node_modules/@angular/material/core/typography/_typography-utils.scss","./node_modules/@angular/material/chips/_chips-theme.scss","./node_modules/@angular/material/slide-toggle/_slide-toggle-theme.scss","./node_modules/@angular/material/radio/_radio-theme.scss","./node_modules/@angular/material/list/_list-theme.scss","./node_modules/@angular/material/tabs/_tabs-theme.scss","./node_modules/@angular/material/checkbox/_checkbox-theme.scss","./node_modules/@angular/material/core/ripple/_ripple.scss","./node_modules/@angular/cdk/a11y/_index.scss","./node_modules/@angular/cdk/overlay/_index.scss","./node_modules/@angular/cdk/text-field/_index.scss","./node_modules/@angular/material/core/focus-indicators/_private.scss","./node_modules/@angular/material/core/style/_layout-common.scss","./node_modules/@angular/material/core/_core.scss","./node_modules/@angular/material/core/option/_option-theme.scss","./node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss","./node_modules/@angular/material/core/_core-theme.scss","./node_modules/@angular/material/progress-bar/_progress-bar-theme.scss","./node_modules/@angular/material/form-field/_form-field-theme.scss","./node_modules/@angular/material/select/_select-theme.scss","./node_modules/@angular/material/slider/_slider-theme.scss","./node_modules/@material/list/_list.scss","./node_modules/@angular/material/button/_button-theme.scss","./node_modules/@angular/material/button/_icon-button-theme.scss","./node_modules/@angular/material/button/_fab-theme.scss","./node_modules/@angular/material/progress-spinner/_progress-spinner-theme.scss","./node_modules/@angular/material/badge/_badge-theme.scss","./node_modules/@angular/material/datepicker/_datepicker-theme.scss","./node_modules/@angular/material/icon/_icon-theme.scss","./node_modules/@angular/material/stepper/_stepper-theme.scss","./node_modules/@angular/material/toolbar/_toolbar-theme.scss"],"sourcesContent":["/**\n * color definitions\n */\n.djs-container {\n --color-grey-225-10-15: hsl(225, 10%, 15%);\n --color-grey-225-10-35: hsl(225, 10%, 35%);\n --color-grey-225-10-55: hsl(225, 10%, 55%);\n --color-grey-225-10-75: hsl(225, 10%, 75%);\n --color-grey-225-10-80: hsl(225, 10%, 80%);\n --color-grey-225-10-85: hsl(225, 10%, 85%);\n --color-grey-225-10-90: hsl(225, 10%, 90%);\n --color-grey-225-10-95: hsl(225, 10%, 95%); \n --color-grey-225-10-97: hsl(225, 10%, 97%);\n\n --color-blue-205-100-45: hsl(205, 100%, 45%);\n --color-blue-205-100-45-opacity-30: hsla(205, 100%, 45%, 30%);\n --color-blue-205-100-50: hsl(205, 100%, 50%);\n --color-blue-205-100-95: hsl(205, 100%, 95%);\n\n --color-green-150-86-44: hsl(150, 86%, 44%);\n\n --color-red-360-100-40: hsl(360, 100%, 40%);\n --color-red-360-100-45: hsl(360, 100%, 45%);\n --color-red-360-100-92: hsl(360, 100%, 92%);\n --color-red-360-100-97: hsl(360, 100%, 97%);\n\n --color-white: hsl(0, 0%, 100%);\n --color-black: hsl(0, 0%, 0%); \n --color-black-opacity-05: hsla(0, 0%, 0%, 5%); \n --color-black-opacity-10: hsla(0, 0%, 0%, 10%);\n\n --bendpoint-fill-color: var(--color-blue-205-100-45-opacity-30);\n --bendpoint-stroke-color: var(--color-blue-205-100-50);\n\n --context-pad-entry-background-color: var(--color-white);\n --context-pad-entry-hover-background-color: var(--color-grey-225-10-95);\n\n --element-dragger-color: var(--color-blue-205-100-50);\n --element-hover-outline-fill-color: var(--color-blue-205-100-45);\n --element-selected-outline-stroke-color: var(--color-blue-205-100-50);\n\n --lasso-fill-color: var(--color-black-opacity-05);\n --lasso-stroke-color: var(--color-black);\n\n --palette-entry-color: var(--color-grey-225-10-15);\n --palette-entry-hover-color: var(--color-blue-205-100-45);\n --palette-entry-selected-color: var(--color-blue-205-100-50);\n --palette-separator-color: var(--color-grey-225-10-75);\n --palette-toggle-hover-background-color: var(--color-grey-225-10-55);\n --palette-background-color: var(--color-grey-225-10-97);\n --palette-border-color: var(--color-grey-225-10-75);\n\n --popup-body-background-color: var(--color-white);\n --popup-header-entry-selected-color: var(--color-blue-205-100-50);\n --popup-header-entry-selected-background-color: var(--color-black-opacity-10);\n --popup-header-separator-color: var(--color-grey-225-10-75);\n --popup-background-color: var(--color-grey-225-10-97);\n --popup-border-color: var(--color-grey-225-10-75);\n\n --resizer-fill-color: var(--color-blue-205-100-45-opacity-30);\n --resizer-stroke-color: var(--color-blue-205-100-50);\n\n --search-container-background-color: var(--color-grey-225-10-97);\n --search-container-border-color: var(--color-blue-205-100-50);\n --search-container-box-shadow-color: var(--color-blue-205-100-95);\n --search-container-box-shadow-inset-color: var(--color-grey-225-10-80);\n --search-input-border-color: var(--color-grey-225-10-75);\n --search-result-border-color: var(--color-grey-225-10-75);\n --search-result-highlight-color: var(--color-black);\n --search-result-selected-color: var(--color-blue-205-100-45-opacity-30);\n\n --shape-attach-allowed-stroke-color: var(--color-blue-205-100-50);\n --shape-connect-allowed-fill-color: var(--color-grey-225-10-97);\n --shape-drop-allowed-fill-color: var(--color-grey-225-10-97);\n --shape-drop-not-allowed-fill-color: var(--color-red-360-100-97);\n --shape-resize-preview-stroke-color: var(--color-blue-205-100-50);\n\n --snap-line-stroke-color: var(--color-blue-205-100-45-opacity-30);\n\n --space-tool-crosshair-stroke-color: var(--color-black);\n\n --tooltip-error-background-color: var(--color-red-360-100-97);\n --tooltip-error-border-color: var(--color-red-360-100-45);\n --tooltip-error-color: var(--color-red-360-100-45);\n}\n\n/**\n * outline styles\n */\n\n.djs-outline {\n fill: none;\n visibility: hidden;\n}\n\n.djs-element.hover .djs-outline,\n.djs-element.selected .djs-outline {\n visibility: visible;\n shape-rendering: geometricPrecision;\n stroke-dasharray: 3,3;\n}\n\n.djs-element.selected .djs-outline {\n stroke: var(--element-selected-outline-stroke-color);\n stroke-width: 1px;\n}\n\n.djs-element.hover .djs-outline {\n stroke: var(--element-hover-outline-fill-color);\n stroke-width: 1px;\n}\n\n.djs-shape.connect-ok .djs-visual > :nth-child(1) {\n fill: var(--shape-connect-allowed-fill-color) !important;\n}\n\n.djs-shape.connect-not-ok .djs-visual > :nth-child(1),\n.djs-shape.drop-not-ok .djs-visual > :nth-child(1) {\n fill: var(--shape-drop-not-allowed-fill-color) !important;\n}\n\n.djs-shape.new-parent .djs-visual > :nth-child(1) {\n fill: var(--shape-drop-allowed-fill-color) !important;\n}\n\nsvg.drop-not-ok {\n background: var(--shape-drop-not-allowed-fill-color) !important;\n}\n\nsvg.new-parent {\n background: var(--shape-drop-allowed-fill-color) !important;\n}\n\n.djs-connection.connect-ok .djs-visual > :nth-child(1),\n.djs-connection.drop-ok .djs-visual > :nth-child(1) {\n stroke: var(--shape-drop-allowed-fill-color) !important;\n}\n\n.djs-connection.connect-not-ok .djs-visual > :nth-child(1),\n.djs-connection.drop-not-ok .djs-visual > :nth-child(1) {\n stroke: var(--shape-drop-not-allowed-fill-color) !important;\n}\n\n.drop-not-ok,\n.connect-not-ok {\n cursor: not-allowed;\n}\n\n.djs-element.attach-ok .djs-visual > :nth-child(1) {\n stroke-width: 5px !important;\n stroke: var(--shape-attach-allowed-stroke-color) !important;\n}\n\n.djs-frame.connect-not-ok .djs-visual > :nth-child(1),\n.djs-frame.drop-not-ok .djs-visual > :nth-child(1) {\n stroke-width: 3px !important;\n stroke: var(--shape-drop-not-allowed-fill-color) !important;\n fill: none !important;\n}\n\n/**\n* Selection box style\n*\n*/\n.djs-lasso-overlay {\n fill: var(--lasso-fill-color);\n\n stroke-dasharray: 5 1 3 1;\n stroke: var(--lasso-stroke-color);\n\n shape-rendering: geometricPrecision;\n pointer-events: none;\n}\n\n/**\n * Resize styles\n */\n.djs-resize-overlay {\n fill: none;\n\n stroke-dasharray: 5 1 3 1;\n stroke: var(--shape-resize-preview-stroke-color);\n\n pointer-events: none;\n}\n\n.djs-resizer-hit {\n fill: none;\n pointer-events: all;\n}\n\n.djs-resizer-visual {\n fill: var(--resizer-fill-color);\n stroke-width: 1px;\n stroke-opacity: 0.5;\n stroke: var(--resizer-stroke-color);\n shape-rendering: geometricprecision;\n}\n\n.djs-resizer:hover .djs-resizer-visual {\n stroke: var(--resizer-stroke-color);\n stroke-opacity: 1;\n}\n\n.djs-cursor-resize-ns,\n.djs-resizer-n,\n.djs-resizer-s {\n cursor: ns-resize;\n}\n\n.djs-cursor-resize-ew,\n.djs-resizer-e,\n.djs-resizer-w {\n cursor: ew-resize;\n}\n\n.djs-cursor-resize-nwse,\n.djs-resizer-nw,\n.djs-resizer-se {\n cursor: nwse-resize;\n}\n\n.djs-cursor-resize-nesw,\n.djs-resizer-ne,\n.djs-resizer-sw {\n cursor: nesw-resize;\n}\n\n.djs-shape.djs-resizing > .djs-outline {\n visibility: hidden !important;\n}\n\n.djs-shape.djs-resizing > .djs-resizer {\n visibility: hidden;\n}\n\n.djs-dragger > .djs-resizer {\n visibility: hidden;\n}\n\n/**\n * drag styles\n */\n.djs-dragger * {\n fill: none !important;\n stroke: var(--element-dragger-color) !important;\n}\n\n.djs-dragger tspan,\n.djs-dragger text {\n fill: var(--element-dragger-color) !important;\n stroke: none !important;\n}\n\nmarker.djs-dragger circle,\nmarker.djs-dragger path,\nmarker.djs-dragger polygon,\nmarker.djs-dragger polyline,\nmarker.djs-dragger rect {\n fill: var(--element-dragger-color) !important;\n stroke: none !important;\n}\n\nmarker.djs-dragger text,\nmarker.djs-dragger tspan {\n fill: none !important;\n stroke: var(--element-dragger-color) !important;\n}\n\n.djs-dragging {\n opacity: 0.3;\n}\n\n.djs-dragging,\n.djs-dragging > * {\n pointer-events: none !important;\n}\n\n.djs-dragging .djs-context-pad,\n.djs-dragging .djs-outline {\n display: none !important;\n}\n\n/**\n * no pointer events for visual\n */\n.djs-visual,\n.djs-outline {\n pointer-events: none;\n}\n\n.djs-element.attach-ok .djs-hit {\n stroke-width: 60px !important;\n}\n\n/**\n * all pointer events for hit shape\n */\n.djs-element > .djs-hit-all {\n pointer-events: all;\n}\n\n.djs-element > .djs-hit-stroke,\n.djs-element > .djs-hit-click-stroke {\n pointer-events: stroke;\n}\n\n/**\n * all pointer events for hit shape\n */\n.djs-drag-active .djs-element > .djs-hit-click-stroke {\n pointer-events: all;\n}\n\n/**\n * shape / connection basic styles\n */\n.djs-connection .djs-visual {\n stroke-width: 2px;\n fill: none;\n}\n\n.djs-cursor-grab {\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n\n.djs-cursor-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n\n.djs-cursor-crosshair {\n cursor: crosshair;\n}\n\n.djs-cursor-move {\n cursor: move;\n}\n\n.djs-cursor-resize-ns {\n cursor: ns-resize;\n}\n\n.djs-cursor-resize-ew {\n cursor: ew-resize;\n}\n\n\n/**\n * snapping\n */\n.djs-snap-line {\n stroke: var(--snap-line-stroke-color);\n stroke-linecap: round;\n stroke-width: 2px;\n pointer-events: none;\n}\n\n/**\n * snapping\n */\n.djs-crosshair {\n stroke: var(--space-tool-crosshair-stroke-color);\n stroke-linecap: round;\n stroke-width: 1px;\n pointer-events: none;\n shape-rendering: crispEdges;\n stroke-dasharray: 5, 5;\n}\n\n/**\n * palette\n */\n\n.djs-palette {\n position: absolute;\n left: 20px;\n top: 20px;\n\n box-sizing: border-box;\n width: 48px;\n}\n\n.djs-palette .separator {\n margin: 0 5px;\n padding-top: 5px;\n\n border: none;\n border-bottom: solid 1px var(--palette-separator-color);\n\n clear: both;\n}\n\n.djs-palette .entry:before {\n vertical-align: text-bottom;\n}\n\n.djs-palette .djs-palette-toggle {\n cursor: pointer;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n color: var(--palette-entry-color);\n font-size: 30px;\n\n text-align: center;\n}\n\n.djs-palette .entry {\n float: left;\n}\n\n.djs-palette .entry img {\n max-width: 100%;\n}\n\n.djs-palette .djs-palette-entries:after {\n content: '';\n display: table;\n clear: both;\n}\n\n.djs-palette .djs-palette-toggle:hover {\n background: var(--palette-toggle-hover-background-color);\n}\n\n.djs-palette .entry:hover {\n color: var(--palette-entry-hover-color);\n}\n\n.djs-palette .highlighted-entry {\n color: var(--palette-entry-selected-color) !important;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n width: 46px;\n height: 46px;\n line-height: 46px;\n cursor: default;\n}\n\n/**\n * Palette open / two-column layout is controlled via\n * classes on the palette. Events to hook into palette\n * changed life-cycle are available in addition.\n */\n.djs-palette.two-column.open {\n width: 94px;\n}\n\n.djs-palette:not(.open) .djs-palette-entries {\n display: none;\n}\n\n.djs-palette:not(.open) {\n overflow: hidden;\n}\n\n.djs-palette.open .djs-palette-toggle {\n display: none;\n}\n\n/**\n * context-pad\n */\n.djs-overlay-context-pad {\n width: 72px;\n z-index: 100;\n}\n\n.djs-context-pad {\n position: absolute;\n display: none;\n pointer-events: none;\n line-height: 1;\n}\n\n.djs-context-pad .entry {\n width: 22px;\n height: 22px;\n text-align: center;\n display: inline-block;\n font-size: 22px;\n margin: 0 2px 2px 0;\n\n border-radius: 3px;\n\n cursor: default;\n\n background-color: var(--context-pad-entry-background-color);\n box-shadow: 0 0 2px 1px var(--context-pad-entry-background-color);\n pointer-events: all;\n vertical-align: middle;\n}\n\n.djs-context-pad .entry:hover {\n background: var(--context-pad-entry-hover-background-color);\n}\n\n.djs-context-pad.open {\n display: block;\n}\n\n/**\n * popup styles\n */\n.djs-popup .entry {\n line-height: 20px;\n white-space: nowrap;\n cursor: default;\n}\n\n/* larger font for prefixed icons */\n.djs-popup .entry:before {\n vertical-align: middle;\n font-size: 20px;\n}\n\n.djs-popup .entry > span {\n vertical-align: middle;\n font-size: 14px;\n}\n\n.djs-popup .entry:hover,\n.djs-popup .entry.active:hover {\n background: var(--popup-header-entry-selected-background-color);\n}\n\n.djs-popup .entry.disabled {\n background: inherit;\n}\n\n.djs-popup .djs-popup-header .entry {\n display: inline-block;\n padding: 2px 3px 2px 3px;\n\n border: solid 1px transparent;\n border-radius: 3px;\n}\n\n.djs-popup .djs-popup-header .entry.active {\n color: var(--popup-header-entry-selected-color);\n border: solid 1px var(--popup-header-entry-selected-color);\n background-color: var(--popup-header-entry-selected-background-color);\n}\n\n.djs-popup-body .entry {\n padding: 4px 10px 4px 5px;\n}\n\n.djs-popup-body .entry > span {\n margin-left: 5px;\n}\n\n.djs-popup-body {\n background-color: var(--popup-body-background-color);\n}\n\n.djs-popup-header {\n border-bottom: 1px solid var(--popup-header-separator-color);\n}\n\n.djs-popup-header .entry {\n margin: 1px;\n margin-left: 3px;\n}\n\n.djs-popup-header .entry:last-child {\n margin-right: 3px;\n}\n\n/**\n * popup / palette styles\n */\n.djs-palette {\n background: var(--palette-background-color);\n border: solid 1px var(--palette-border-color);\n border-radius: 2px;\n}\n\n.djs-popup {\n background: var(--popup-background-color);\n border: solid 1px var(--popup-border-color);\n border-radius: 2px;\n}\n\n/**\n * touch\n */\n\n.djs-shape,\n.djs-connection {\n touch-action: none;\n}\n\n.djs-segment-dragger,\n.djs-bendpoint {\n display: none;\n}\n\n/**\n * bendpoints\n */\n.djs-segment-dragger .djs-visual {\n display: none;\n\n fill: var(--bendpoint-fill-color);\n stroke: var(--bendpoint-stroke-color);\n stroke-width: 1px;\n stroke-opacity: 1;\n}\n\n.djs-segment-dragger:hover .djs-visual {\n display: block;\n}\n\n.djs-bendpoint .djs-visual {\n fill: var(--bendpoint-fill-color);\n stroke: var(--bendpoint-stroke-color);\n stroke-width: 1px;\n stroke-opacity: 0.5;\n}\n\n.djs-segment-dragger:hover,\n.djs-bendpoints.hover .djs-segment-dragger,\n.djs-bendpoints.selected .djs-segment-dragger,\n.djs-bendpoint:hover,\n.djs-bendpoints.hover .djs-bendpoint,\n.djs-bendpoints.selected .djs-bendpoint {\n display: block;\n}\n\n.djs-drag-active .djs-bendpoints * {\n display: none;\n}\n\n.djs-bendpoints:not(.hover) .floating {\n display: none;\n}\n\n.djs-segment-dragger:hover .djs-visual,\n.djs-segment-dragger.djs-dragging .djs-visual,\n.djs-bendpoint:hover .djs-visual,\n.djs-bendpoint.floating .djs-visual {\n fill: var(--bendpoint-fill-color);\n stroke: var(--bendpoint-stroke-color);\n stroke-opacity: 1;\n}\n\n.djs-bendpoint.floating .djs-hit {\n pointer-events: none;\n}\n\n.djs-segment-dragger .djs-hit,\n.djs-bendpoint .djs-hit {\n fill: none;\n pointer-events: all;\n}\n\n.djs-segment-dragger.horizontal .djs-hit {\n cursor: ns-resize;\n}\n\n.djs-segment-dragger.vertical .djs-hit {\n cursor: ew-resize;\n}\n\n.djs-segment-dragger.djs-dragging .djs-hit {\n pointer-events: none;\n}\n\n.djs-updating,\n.djs-updating > * {\n pointer-events: none !important;\n}\n\n.djs-updating .djs-context-pad,\n.djs-updating .djs-outline,\n.djs-updating .djs-bendpoint,\n.connect-ok .djs-bendpoint,\n.connect-not-ok .djs-bendpoint,\n.drop-ok .djs-bendpoint,\n.drop-not-ok .djs-bendpoint {\n display: none !important;\n}\n\n.djs-segment-dragger.djs-dragging,\n.djs-bendpoint.djs-dragging {\n display: block;\n opacity: 1.0;\n}\n\n\n/**\n * tooltips\n */\n.djs-tooltip-error {\n width: 160px;\n padding: 6px;\n\n background: var(--tooltip-error-background-color);\n border: solid 1px var(--tooltip-error-border-color);\n border-radius: 2px;\n color: var(--tooltip-error-color);\n font-size: 12px;\n line-height: 16px;\n\n opacity: 0.75;\n}\n\n.djs-tooltip-error:hover {\n opacity: 1;\n}\n\n\n/**\n * search pad\n */\n.djs-search-container {\n position: absolute;\n top: 20px;\n left: 0;\n right: 0;\n margin-left: auto;\n margin-right: auto;\n\n width: 25%;\n min-width: 300px;\n max-width: 400px;\n z-index: 10;\n\n font-size: 1.05em;\n opacity: 0.9;\n background: var(--search-container-background-color);\n border: solid 1px var(--search-container-border-color);\n border-radius: 2px;\n box-shadow: 0 0 0 2px var(--search-container-box-shadow-color), 0 0 0 1px var(--search-container-box-shadow-inset-color) inset;\n}\n\n.djs-search-container:not(.open) {\n display: none;\n}\n\n.djs-search-input input {\n font-size: 1.05em;\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--search-input-border-color);\n box-sizing: border-box;\n}\n\n.djs-search-input input:focus {\n outline: none;\n border-color: var(--search-input-border-color);\n}\n\n.djs-search-results {\n position: relative;\n overflow-y: auto;\n max-height: 200px;\n}\n\n.djs-search-results:hover {\n cursor: pointer;\n}\n\n.djs-search-result {\n width: 100%;\n padding: 6px 10px;\n background: white;\n border-bottom: solid 1px var(--search-result-border-color);\n border-radius: 1px;\n}\n\n.djs-search-highlight {\n color: var(--search-result-highlight-color);\n}\n\n.djs-search-result-primary {\n margin: 0 0 10px;\n}\n\n.djs-search-result-secondary {\n font-family: monospace;\n margin: 0;\n}\n\n.djs-search-result:hover {\n background: var(--search-result-selected-color);\n}\n\n.djs-search-result-selected {\n background: var(--search-result-selected-color);\n}\n\n.djs-search-result-selected:hover {\n background: var(--search-result-selected-color);\n}\n\n.djs-search-overlay {\n background: var(--search-result-selected-color);\n}\n\n/**\n * hidden styles\n */\n.djs-element-hidden,\n.djs-element-hidden .djs-hit,\n.djs-element-hidden .djs-outline,\n.djs-label-hidden .djs-label {\n display: none !important;\n}\n","@font-face {\n font-family: 'bpmn';\n src: url('../font/bpmn.eot?26374340');\n src: url('../font/bpmn.eot?26374340#iefix') format('embedded-opentype'),\n url('../font/bpmn.woff2?26374340') format('woff2'),\n url('../font/bpmn.woff?26374340') format('woff'),\n url('../font/bpmn.ttf?26374340') format('truetype'),\n url('../font/bpmn.svg?26374340#bpmn') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */\n/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */\n/*\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n @font-face {\n font-family: 'bpmn';\n src: url('../font/bpmn.svg?26374340#bpmn') format('svg');\n }\n}\n*/\n\n [class^=\"bpmn-icon-\"]:before, [class*=\" bpmn-icon-\"]:before {\n font-family: \"bpmn\";\n font-style: normal;\n font-weight: normal;\n speak: never;\n\n display: inline-block;\n text-decoration: inherit;\n width: 1em;\n /* margin-right: .2em; */\n text-align: center;\n /* opacity: .8; */\n\n /* For safety - reset parent styles, that can break glyph codes*/\n font-variant: normal;\n text-transform: none;\n\n /* fix buttons height, for twitter bootstrap */\n line-height: 1em;\n\n /* Animation center compensation - margins should be symmetric */\n /* remove if not needed */\n /* margin-left: .2em; */\n\n /* you can be more comfortable with increased icons size */\n /* font-size: 120%; */\n\n /* Font smoothing. That was taken from TWBS */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n /* Uncomment for 3D effect */\n /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */\n}\n\n.bpmn-icon-screw-wrench:before { content: '\\e800'; } /* '' */\n.bpmn-icon-trash:before { content: '\\e801'; } /* '' */\n.bpmn-icon-conditional-flow:before { content: '\\e802'; } /* '' */\n.bpmn-icon-default-flow:before { content: '\\e803'; } /* '' */\n.bpmn-icon-gateway-parallel:before { content: '\\e804'; } /* '' */\n.bpmn-icon-intermediate-event-catch-cancel:before { content: '\\e805'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-message:before { content: '\\e806'; } /* '' */\n.bpmn-icon-start-event-compensation:before { content: '\\e807'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-parallel-multiple:before { content: '\\e808'; } /* '' */\n.bpmn-icon-loop-marker:before { content: '\\e809'; } /* '' */\n.bpmn-icon-parallel-mi-marker:before { content: '\\e80a'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-signal:before { content: '\\e80b'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-timer:before { content: '\\e80c'; } /* '' */\n.bpmn-icon-intermediate-event-catch-parallel-multiple:before { content: '\\e80d'; } /* '' */\n.bpmn-icon-intermediate-event-catch-compensation:before { content: '\\e80e'; } /* '' */\n.bpmn-icon-gateway-xor:before { content: '\\e80f'; } /* '' */\n.bpmn-icon-connection:before { content: '\\e810'; } /* '' */\n.bpmn-icon-end-event-cancel:before { content: '\\e811'; } /* '' */\n.bpmn-icon-intermediate-event-catch-condition:before { content: '\\e812'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-parallel-multiple:before { content: '\\e813'; } /* '' */\n.bpmn-icon-start-event-condition:before { content: '\\e814'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-timer:before { content: '\\e815'; } /* '' */\n.bpmn-icon-sequential-mi-marker:before { content: '\\e816'; } /* '' */\n.bpmn-icon-user-task:before { content: '\\e817'; } /* '' */\n.bpmn-icon-business-rule:before { content: '\\e818'; } /* '' */\n.bpmn-icon-sub-process-marker:before { content: '\\e819'; } /* '' */\n.bpmn-icon-start-event-parallel-multiple:before { content: '\\e81a'; } /* '' */\n.bpmn-icon-start-event-error:before { content: '\\e81b'; } /* '' */\n.bpmn-icon-intermediate-event-catch-signal:before { content: '\\e81c'; } /* '' */\n.bpmn-icon-intermediate-event-catch-error:before { content: '\\e81d'; } /* '' */\n.bpmn-icon-end-event-compensation:before { content: '\\e81e'; } /* '' */\n.bpmn-icon-subprocess-collapsed:before { content: '\\e81f'; } /* '' */\n.bpmn-icon-subprocess-expanded:before { content: '\\e820'; } /* '' */\n.bpmn-icon-task:before { content: '\\e821'; } /* '' */\n.bpmn-icon-end-event-error:before { content: '\\e822'; } /* '' */\n.bpmn-icon-intermediate-event-catch-escalation:before { content: '\\e823'; } /* '' */\n.bpmn-icon-intermediate-event-catch-timer:before { content: '\\e824'; } /* '' */\n.bpmn-icon-start-event-escalation:before { content: '\\e825'; } /* '' */\n.bpmn-icon-start-event-signal:before { content: '\\e826'; } /* '' */\n.bpmn-icon-business-rule-task:before { content: '\\e827'; } /* '' */\n.bpmn-icon-manual:before { content: '\\e828'; } /* '' */\n.bpmn-icon-receive:before { content: '\\e829'; } /* '' */\n.bpmn-icon-call-activity:before { content: '\\e82a'; } /* '' */\n.bpmn-icon-start-event-timer:before { content: '\\e82b'; } /* '' */\n.bpmn-icon-start-event-message:before { content: '\\e82c'; } /* '' */\n.bpmn-icon-intermediate-event-none:before { content: '\\e82d'; } /* '' */\n.bpmn-icon-intermediate-event-catch-link:before { content: '\\e82e'; } /* '' */\n.bpmn-icon-end-event-escalation:before { content: '\\e82f'; } /* '' */\n.bpmn-icon-text-annotation:before { content: '\\e830'; } /* '' */\n.bpmn-icon-bpmn-io:before { content: '\\e831'; } /* '' */\n.bpmn-icon-gateway-complex:before { content: '\\e832'; } /* '' */\n.bpmn-icon-gateway-eventbased:before { content: '\\e833'; } /* '' */\n.bpmn-icon-gateway-none:before { content: '\\e834'; } /* '' */\n.bpmn-icon-gateway-or:before { content: '\\e835'; } /* '' */\n.bpmn-icon-end-event-terminate:before { content: '\\e836'; } /* '' */\n.bpmn-icon-end-event-signal:before { content: '\\e837'; } /* '' */\n.bpmn-icon-end-event-none:before { content: '\\e838'; } /* '' */\n.bpmn-icon-end-event-multiple:before { content: '\\e839'; } /* '' */\n.bpmn-icon-end-event-message:before { content: '\\e83a'; } /* '' */\n.bpmn-icon-end-event-link:before { content: '\\e83b'; } /* '' */\n.bpmn-icon-intermediate-event-catch-message:before { content: '\\e83c'; } /* '' */\n.bpmn-icon-intermediate-event-throw-compensation:before { content: '\\e83d'; } /* '' */\n.bpmn-icon-start-event-multiple:before { content: '\\e83e'; } /* '' */\n.bpmn-icon-script:before { content: '\\e83f'; } /* '' */\n.bpmn-icon-manual-task:before { content: '\\e840'; } /* '' */\n.bpmn-icon-send:before { content: '\\e841'; } /* '' */\n.bpmn-icon-service:before { content: '\\e842'; } /* '' */\n.bpmn-icon-receive-task:before { content: '\\e843'; } /* '' */\n.bpmn-icon-user:before { content: '\\e844'; } /* '' */\n.bpmn-icon-start-event-none:before { content: '\\e845'; } /* '' */\n.bpmn-icon-intermediate-event-throw-escalation:before { content: '\\e846'; } /* '' */\n.bpmn-icon-intermediate-event-catch-multiple:before { content: '\\e847'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-escalation:before { content: '\\e848'; } /* '' */\n.bpmn-icon-intermediate-event-throw-link:before { content: '\\e849'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-condition:before { content: '\\e84a'; } /* '' */\n.bpmn-icon-data-object:before { content: '\\e84b'; } /* '' */\n.bpmn-icon-script-task:before { content: '\\e84c'; } /* '' */\n.bpmn-icon-send-task:before { content: '\\e84d'; } /* '' */\n.bpmn-icon-data-store:before { content: '\\e84e'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-escalation:before { content: '\\e84f'; } /* '' */\n.bpmn-icon-intermediate-event-throw-message:before { content: '\\e850'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-multiple:before { content: '\\e851'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-signal:before { content: '\\e852'; } /* '' */\n.bpmn-icon-intermediate-event-throw-multiple:before { content: '\\e853'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-message:before { content: '\\e854'; } /* '' */\n.bpmn-icon-ad-hoc-marker:before { content: '\\e855'; } /* '' */\n.bpmn-icon-service-task:before { content: '\\e856'; } /* '' */\n.bpmn-icon-task-none:before { content: '\\e857'; } /* '' */\n.bpmn-icon-compensation-marker:before { content: '\\e858'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-multiple:before { content: '\\e859'; } /* '' */\n.bpmn-icon-intermediate-event-throw-signal:before { content: '\\e85a'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-condition:before { content: '\\e85b'; } /* '' */\n.bpmn-icon-participant:before { content: '\\e85c'; } /* '' */\n.bpmn-icon-event-subprocess-expanded:before { content: '\\e85d'; } /* '' */\n.bpmn-icon-lane-insert-below:before { content: '\\e85e'; } /* '' */\n.bpmn-icon-space-tool:before { content: '\\e85f'; } /* '' */\n.bpmn-icon-connection-multi:before { content: '\\e860'; } /* '' */\n.bpmn-icon-lane:before { content: '\\e861'; } /* '' */\n.bpmn-icon-lasso-tool:before { content: '\\e862'; } /* '' */\n.bpmn-icon-lane-insert-above:before { content: '\\e863'; } /* '' */\n.bpmn-icon-lane-divide-three:before { content: '\\e864'; } /* '' */\n.bpmn-icon-lane-divide-two:before { content: '\\e865'; } /* '' */\n.bpmn-icon-data-input:before { content: '\\e866'; } /* '' */\n.bpmn-icon-data-output:before { content: '\\e867'; } /* '' */\n.bpmn-icon-hand-tool:before { content: '\\e868'; } /* '' */\n.bpmn-icon-group:before { content: '\\e869'; } /* '' */\n.bpmn-icon-transaction:before { content: '\\e8c4'; } /* '' */","@font-face {\n font-family: \"Material Icons\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons.woff2\") format(\"woff2\"), url(\"./material-icons.woff\") format(\"woff\");\n}\n.material-icons {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Outlined\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-outlined.woff2\") format(\"woff2\"), url(\"./material-icons-outlined.woff\") format(\"woff\");\n}\n.material-icons-outlined {\n font-family: \"Material Icons Outlined\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Round\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-round.woff2\") format(\"woff2\"), url(\"./material-icons-round.woff\") format(\"woff\");\n}\n.material-icons-round {\n font-family: \"Material Icons Round\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Sharp\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-sharp.woff2\") format(\"woff2\"), url(\"./material-icons-sharp.woff\") format(\"woff\");\n}\n.material-icons-sharp {\n font-family: \"Material Icons Sharp\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Two Tone\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-two-tone.woff2\") format(\"woff2\"), url(\"./material-icons-two-tone.woff\") format(\"woff\");\n}\n.material-icons-two-tone {\n font-family: \"Material Icons Two Tone\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n","@use 'sass:color';\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n\n/// Include content under the current selector (&) or the document root if there is no current\n/// selector.\n/// @param {String} $root [html] The default root selector to use when there is no current selector.\n/// @output The given content under the current selector, or root selector if there is no current\n/// selector.\n/// @content Content to output under the current selector, or root selector if there is no current\n/// selector.\n@mixin current-selector-or-root($root: html) {\n @if & {\n @content;\n }\n @else {\n #{$root} {\n @content;\n }\n }\n}\n\n/// A version of the standard `map.merge` function that takes a variable number of arguments.\n/// Each argument is merged into the final result from left to right.\n/// @param {List} $maps The maps to combine with map.merge\n/// @return {Map} The combined result of successively calling map.merge with each parameter.\n@function merge-all($maps...) {\n $result: ();\n @each $map in $maps {\n $result: map.merge($result, $map);\n }\n @return $result;\n}\n\n/// A version of the standard `map.deep-merge` function that takes a variable number of arguments.\n/// Each argument is deep-merged into the final result from left to right.\n/// @param {List} $maps The maps to combine with map.deep-merge\n/// @return {Map} The combined result of successively calling map.deep-merge with each parameter.\n@function deep-merge-all($maps...) {\n $result: ();\n @each $map in $maps {\n $result: map.deep-merge($result, $map);\n }\n @return $result;\n}\n\n/// Coerces the given value to a list, by converting any non-list value into a single-item list.\n/// This should be used when dealing with user-passed lists of args to avoid confusing errors,\n/// since Sass treats `($x)` as equivalent to `$x`.\n/// @param {Any} $value The value to coerce to a list.\n/// @return {List} The original $value if it was a list, otherwise a single-item list containing\n/// $value.\n@function coerce-to-list($value) {\n @return if(meta.type-of($value) != 'list', ($value,), $value);\n}\n\n/// A version of the Sass `color.change` function that is safe ot use with CSS variables.\n@function safe-color-change($color, $args...) {\n $args: meta.keywords($args);\n @return if(meta.type-of($color) == 'color', color.change($color, $args...), $color);\n}\n\n/// Gets the given arguments as a map of keywords and validates that only supported arguments were\n/// passed.\n/// @param {ArgList} $args The arguments to convert to a keywords map.\n/// @param {List} $supported-args The supported argument names.\n/// @return {Map} The $args as a map of argument name to argument value.\n@function validate-keyword-args($args, $supported-args) {\n @if list.length($args) > 0 {\n @error #{'Expected keyword args, but got positional args: '}#{$args};\n }\n $kwargs: meta.keywords($args);\n @each $arg, $v in $kwargs {\n @if list.index($supported-args, $arg) == null {\n @error #{'Unsupported argument '}#{$arg}#{'. Valid arguments are: '}#{$supported-args};\n }\n }\n @return $kwargs;\n}\n","//\n// Copyright 2020 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n@use './gss';\n\n/// When true, add an additional property/value declaration before declarations\n/// that use advanced features such as custom properties or CSS functions. This\n/// adds fallback support for older browsers such as IE11 that do not support\n/// these features at the cost of additional CSS. Set this variable to false to\n/// disable generating fallback declarations.\n$enable-fallback-declarations: true !default;\n\n/// Writes a CSS property/value declaration. This mixin is used throughout the\n/// theme package for consistency for dynamically setting CSS property values.\n///\n/// This mixin may optionally take a fallback value. For advanced features such\n/// as custom properties or CSS functions like min and max, a fallback value is\n/// recommended to support older browsers.\n///\n/// @param {String} $property - The CSS property of the declaration.\n/// @param {*} $value - The value of the CSS declaration. The value should be\n/// resolved by other theme functions first (i.e. custom property Maps and\n/// Material theme keys are not supported in this mixin). If the value is\n/// null, no declarations will be emitted.\n/// @param {*} $fallback - An optional fallback value for older browsers. If\n/// provided, a second property/value declaration will be added before the\n/// main property/value declaration.\n/// @param {Map} $gss - An optional Map of GSS annotations to add.\n/// @param {Bool} $important - If true, add `!important` to the declaration.\n@mixin declaration(\n $property,\n $value,\n $fallback-value: null,\n $gss: (),\n $important: false\n) {\n // Normally setting a null value to a property will not emit CSS, so mixins\n // wouldn't need to check this. However, Sass will throw an error if the\n // interpolated property is a custom property.\n @if $value != null {\n $important-rule: if($important, ' !important', '');\n\n @if $fallback-value and $enable-fallback-declarations {\n @include gss.annotate($gss);\n #{$property}: #{$fallback-value} #{$important-rule};\n\n // Add @alternate to annotations.\n $gss: map.merge(\n $gss,\n (\n alternate: true,\n )\n );\n }\n\n @include gss.annotate($gss);\n #{$property}: #{$value}#{$important-rule};\n }\n}\n\n/// Unpacks shorthand values for CSS properties (i.e. lists of 1-3 values).\n/// If a list of 4 values is given, it is returned as-is.\n///\n/// Examples:\n///\n/// unpack-value(4px) => 4px 4px 4px 4px\n/// unpack-value(4px 2px) => 4px 2px 4px 2px\n/// unpack-value(4px 2px 2px) => 4px 2px 2px 2px\n/// unpack-value(4px 2px 0 2px) => 4px 2px 0 2px\n///\n/// @param {Number | Map | List} $value - List of 1 to 4 value numbers.\n/// @return {List} a List of 4 value numbers.\n@function unpack-value($value) {\n @if meta.type-of($value) == 'map' or list.length($value) == 1 {\n @return $value $value $value $value;\n } @else if list.length($value) == 4 {\n @return $value;\n } @else if list.length($value) == 3 {\n @return list.nth($value, 1) list.nth($value, 2) list.nth($value, 3)\n list.nth($value, 2);\n } @else if list.length($value) == 2 {\n @return list.nth($value, 1) list.nth($value, 2) list.nth($value, 1)\n list.nth($value, 2);\n }\n\n @error \"Invalid CSS property value: '#{$value}' is more than 4 values\";\n}\n","// Custom Theming for Angular Material\n// For more information: https://material.angular.io/guide/theming\n@use \"@angular/material\" as mat;\n@import \"@angular/material\";\n@import \"material-icons/iconfont/material-icons.css\";\n// Plus imports for other components in your app.\n// Include the common styles for Angular Material. We include this here so that you only\n// have to load a single css file for Angular Material in your app.\n// Be sure that you only ever include this mixin once!\n@include mat.all-component-typographies();\n@include mat.core();\n\n// Define the palettes for your theme using the Material Design palettes available in palette.scss\n// (imported above). For each palette, you can optionally specify a default, lighter, and darker\n// hue. Available color palettes: https://material.io/design/color/\n$egon-primary: mat.define-palette(mat.$cyan-palette);\n$egon-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);\n\n// The warn palette is optional (defaults to red).\n$egon-warn: mat.define-palette(mat.$red-palette);\n\n// Create the theme object. A theme consists of configurations for individual\n// theming systems such as \"color\" or \"typography\".\n$egon-theme: mat.define-light-theme(\n (\n color: (\n primary: $egon-primary,\n accent: $egon-accent,\n warn: $egon-warn,\n ),\n )\n);\n\n// Include theme styles for core and each component used in your app.\n// Alternatively, you can import and @include the theme mixins for each component\n// that you are using.\n@include mat.all-component-themes($egon-theme);\n\n/* FONTS */\n\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 700;\n src: local(\"Roboto-Regular\"), url(\"~src/assets/font/Roboto-Regular.woff\");\n}\n\n/* You can add global styles to this file, and also import other style files */\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n margin: 0;\n font-family: Roboto, \"Helvetica Neue\", Arial, sans-serif;\n}\n\n.smallScrollbar {\n /* Works on Firefox */\n scrollbar-width: thin;\n\n /* Works on Chrome, Edge, and Safari */\n *::-webkit-scrollbar {\n width: 12px;\n }\n}\n\n.headline {\n font-size: 17pt;\n height: 40px;\n cursor: pointer;\n}\n\n.headerButton {\n background-color: transparent;\n border: none;\n}\n\n.spacer {\n flex: 1 1 auto;\n}\n\n.mr-1 {\n margin-right: 8px !important;\n}\n\n.mr-10 {\n margin-right: 10px !important;\n}\n\n.materialIconButton {\n font-size: 24px !important;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 9px;\n}\n\n.toolbar {\n height: 65px;\n}\n\napp-root {\n display: block;\n height: 100%;\n}\n\na {\n color: map-get($egon-accent, 900);\n}\n\n/* Material Design */\n\nmat-dialog-actions.mdc-dialog__actions {\n padding: 0 24px 20px 24px;\n justify-content: end;\n}\n\n/* Snackbar */\n\n.mat-mdc-snack-bar-container {\n &.snackbar_success {\n --mdc-snackbar-container-color: darkgreen;\n --mat-mdc-snack-bar-button-color: #fff;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n &.snackbar_warning {\n --mdc-snackbar-container-color: darkorange;\n --mat-mdc-snack-bar-button-color: black;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n &.snackbar_error {\n --mdc-snackbar-container-color: #d04437;\n --mat-mdc-snack-bar-button-color: #fff;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n &.snackbar_info {\n --mdc-snackbar-container-color: #42aebb;\n --mat-mdc-snack-bar-button-color: black;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n}\n\n/* BPMN elements */\n\n.djs-overlay-context-pad {\n min-width: 7.5rem;\n height: auto;\n}\n\n.djs-context-pad.open {\n border: solid 1px #80808054;\n}\n\n.djs-context-pad.open > .group {\n border: solid 1px #80808054;\n padding: 1px;\n background-color: white;\n}\n\n/**\n * from bpmn.io\n */\n\n/**\n * palette\n */\n\n.djs-palette {\n position: absolute;\n left: 20px;\n top: 20px;\n\n box-sizing: border-box;\n width: 32px;\n}\n\n.djs-palette .separator {\n margin: 0 2px;\n padding-top: 0;\n\n border: none;\n border-bottom: solid 1px #ddd;\n\n clear: both;\n}\n\n.djs-palette .entry:before {\n vertical-align: middle;\n}\n\n.djs-palette .djs-palette-toggle {\n cursor: pointer;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n color: #333;\n font-size: 26px;\n\n text-align: center;\n}\n\n.djs-palette .entry {\n float: left;\n}\n\n.djs-palette .entry img {\n max-width: 100%;\n}\n\n.djs-palette .djs-palette-entries:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.djs-palette .djs-palette-toggle:hover {\n background: #666;\n}\n\n.djs-palette .entry:hover {\n fill: #42aebb;\n}\n\n.djs-palette .highlighted-entry {\n color: #42aebb !important;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n width: 30px;\n height: 30px;\n line-height: 30px;\n cursor: default;\n}\n\n/**\n * Palette open / two-column layout is controlled via\n * classes on the palette. Events to hook into palette\n * changed life-cycle are available in addition.\n */\n.djs-palette.two-column.open {\n width: 64px;\n}\n\n.djs-palette:not(.open) .djs-palette-entries {\n display: none;\n}\n\n.djs-palette:not(.open) {\n overflow: hidden;\n}\n\n.djs-palette.open .djs-palette-toggle {\n display: none;\n}\n\n/**\n * outline styles\n */\n\n.djs-outline {\n fill: none;\n visibility: hidden;\n}\n\n.djs-element.hover .djs-outline,\n.djs-element.selected .djs-outline {\n visibility: visible;\n shape-rendering: crispEdges;\n stroke-dasharray: 3, 3;\n}\n\n.djs-element.selected .djs-outline {\n stroke: #8888ff;\n stroke-width: 1px;\n}\n\n.djs-element.hover .djs-outline {\n stroke: #42aebb;\n}\n\n.djs-element.attach-ok .djs-visual > :nth-child(1) {\n stroke: #42aebb !important;\n}\n\n/**\n* Selection box style\n*\n*/\n.djs-lasso-overlay {\n stroke: #42aebb;\n}\n\n/**\n * Resize styles\n */\n.djs-resize-overlay {\n stroke: #42aebb;\n}\n\n/**\n * drag styles\n */\n.djs-dragger .djs-visual circle,\n.djs-dragger .djs-visual path,\n.djs-dragger .djs-visual polygon,\n.djs-dragger .djs-visual polyline,\n.djs-dragger .djs-visual rect,\n.djs-dragger .djs-visual text {\n fill: none !important;\n stroke: #42aebb !important;\n}\n\n/**\n * snapping\n */\n.djs-snap-line {\n stroke: #42aebb;\n stroke: rgba(255, 195, 66, 0.5);\n}\n\n.djs-palette .entry:hover {\n color: #42aebb;\n}\n\n.djs-palette .highlighted-entry {\n color: #42aebb !important;\n}\n\n.djs-context-pad .entry:hover {\n background: #42aebb;\n}\n\n.djs-popup .djs-popup-header .entry.active {\n color: #42aebb;\n border: solid 1px #42aebb;\n background-color: #f6f6f6;\n}\n\n.djs-popup-body .entry {\n width: auto !important;\n}\n\n.djs-segment-dragger:hover .djs-visual,\n.djs-segment-dragger.djs-dragging .djs-visual,\n.djs-bendpoint:hover .djs-visual,\n.djs-bendpoint.floating .djs-visual {\n fill: #42aebb;\n stroke-opacity: 0.5;\n stroke: black;\n}\n\n.djs-segment-dragger.djs-dragging .djs-visual,\n.djs-bendpoint.djs-dragging .djs-visual {\n fill: #42aebb;\n}\n\n.djs-tooltip-error > * {\n color: #42aebb;\n border-left: solid 5px #42aebb;\n}\n\n.djs-search-input input:focus {\n outline: none;\n border-color: #52b415;\n}\n\n.djs-search-result:hover {\n background: #fdffd6;\n}\n\n.djs-search-result-selected {\n background: #42aebb;\n}\n\n.djs-search-result-selected:hover {\n background: #42aebb;\n}\n\n.djs-search-overlay {\n background: #42aebb;\n}\n\n.autocomplete-items {\n border: 1px solid #a9a9a9;\n background-color: #f0f0f0;\n}\n\n.autocomplete-active {\n background-color: DodgerBlue !important;\n color: #ffffff;\n}\n","@use 'sass:list';\n@use 'sass:map';\n@use 'sass:string';\n@use 'typography-utils';\n@use '../theming/inspection';\n@use './versioning';\n\n// Definition and versioning functions live in their own files to avoid circular dependencies, but\n// we re-export them here so that historical imports from this file continue to work without needing\n// to be updated.\n@forward './definition';\n@forward './versioning';\n\n@mixin typography-hierarchy($theme, $selector: '.mat-typography', $back-compat: false) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _m3-typography-hierarchy($theme, $selector, $back-compat);\n }\n @else {\n @include _m2-typography-hierarchy($theme, $selector);\n }\n}\n\n@function _get-selector($selectors, $prefix) {\n $result: ();\n @each $selector in $selectors {\n // Don't add \"naked\" tag selectors, and don't nest prefix selector.\n @if string.index($selector, '.') == 1 {\n $result: list.append($result, $selector, $separator: comma);\n }\n // Don't nest the prefix selector in itself.\n @if $selector != $prefix {\n $result: list.append($result, '#{$prefix} #{$selector}', $separator: comma);\n }\n }\n @return $result;\n}\n\n@mixin _m3-typography-level($theme, $selector-prefix, $level, $selectors, $margin: null) {\n #{_get-selector($selectors, $selector-prefix)} {\n // TODO(mmalerba): When we expose system tokens as CSS vars, we should change this to emit token\n // slots.\n font: inspection.get-theme-typography($theme, $level, font);\n letter-spacing: inspection.get-theme-typography($theme, $level, letter-spacing);\n @if $margin != null {\n margin: 0 0 $margin;\n }\n }\n}\n\n@mixin _m3-typography-hierarchy($theme, $selector-prefix, $add-m2-selectors) {\n $levels: (\n display-large: (\n selectors: ('.mat-display-large', 'h1'),\n m2-selectors: ('.mat-h1', '.mat-headline-1'),\n margin: 0.5em\n ),\n display-medium: (\n selectors: ('.mat-display-medium', 'h2'),\n m2-selectors: ('.mat-h2', '.mat-headline-2'),\n margin: 0.5em\n ),\n display-small: (\n selectors: ('.mat-display-small', 'h3'),\n m2-selectors: ('.mat-h3', '.mat-headline-3'),\n margin: 0.5em\n ),\n headline-large: (\n selectors: ('.mat-headline-large', 'h4'),\n m2-selectors: ('.mat-h4', '.mat-headline-4'),\n margin: 0.5em\n ),\n headline-medium: (\n selectors: ('.mat-headline-medium', 'h5'),\n m2-selectors: ('.mat-h5', '.mat-headline-5'),\n margin: 0.5em\n ),\n headline-small: (\n selectors: ('.mat-headline-small', 'h6'),\n m2-selectors: ('.mat-h6', '.mat-headline-6'),\n margin: 0.5em\n ),\n title-large: (\n selectors: ('.mat-title-large'),\n m2-selectors: ('.mat-subtitle-1'),\n ),\n title-medium: (\n selectors: ('.mat-title-medium'),\n m2-selectors: ('.mat-subtitle-2'),\n ),\n title-small: (\n selectors: ('.mat-title-small')\n ),\n body-large: (\n selectors: ('.mat-body-large', $selector-prefix),\n m2-selectors: ('.mat-body', '.mat-body-strong', '.mat-body-2'),\n ),\n body-medium: (\n selectors: ('.mat-body-medium')\n ),\n body-small: (\n selectors: ('.mat-body-small')\n ),\n label-large: (\n selectors: ('.mat-label-large')\n ),\n label-medium: (\n selectors: ('.mat-label-medium')\n ),\n label-small: (\n selectors: ('.mat-label-small'),\n m2-selectors: ('.mat-small', '.mat-caption')\n ),\n );\n\n @each $level, $options in $levels {\n @if $add-m2-selectors {\n $options: map.set($options, selectors,\n list.join(map.get($options, selectors), map.get($options, m2-selectors) or ()));\n }\n $options: map.remove($options, m2-selectors);\n\n // Apply styles for the level.\n @include _m3-typography-level($theme, $selector-prefix, $level, $options...);\n\n // Also style

inside body-large.\n @if $level == body-large {\n #{_get-selector(map.get($options, selectors), $selector-prefix)} {\n p {\n margin: 0 0 0.75em;\n }\n }\n }\n }\n}\n\n/// Emits baseline typographic styles based on a given config.\n/// @param {Map} $config-or-theme A typography config for an entire theme.\n/// @param {String} $selector Ancestor selector under which native elements, such as h1, will\n/// be styled.\n@mixin _m2-typography-hierarchy($theme, $selector) {\n // Note that it seems redundant to prefix the class rules with the `$selector`, however it's\n // necessary if we want to allow people to overwrite the tag selectors. This is due to\n // selectors like `#{$selector} h1` being more specific than ones like `.mat-title`.\n .mat-h1,\n .mat-headline-5,\n #{$selector} .mat-h1,\n #{$selector} .mat-headline-5,\n #{$selector} h1 {\n font: inspection.get-theme-typography($theme, headline-5, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-5, letter-spacing);\n margin: 0 0 16px;\n }\n\n .mat-h2,\n .mat-headline-6,\n #{$selector} .mat-h2,\n #{$selector} .mat-headline-6,\n #{$selector} h2 {\n font: inspection.get-theme-typography($theme, headline-6, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-6, letter-spacing);\n margin: 0 0 16px;\n }\n\n .mat-h3,\n .mat-subtitle-1,\n #{$selector} .mat-h3,\n #{$selector} .mat-subtitle-1,\n #{$selector} h3 {\n font: inspection.get-theme-typography($theme, subtitle-1, font);\n letter-spacing: inspection.get-theme-typography($theme, subtitle-1, letter-spacing);\n margin: 0 0 16px;\n }\n\n .mat-h4,\n .mat-body-1,\n #{$selector} .mat-h4,\n #{$selector} .mat-body-1,\n #{$selector} h4 {\n font: inspection.get-theme-typography($theme, body-1, font);\n letter-spacing: inspection.get-theme-typography($theme, body-1, letter-spacing);\n margin: 0 0 16px;\n }\n\n // Note: the spec doesn't have anything that would correspond to h5 and h6, but we add these for\n // consistency. The font sizes come from the Chrome user agent styles which have h5 at 0.83em\n // and h6 at 0.67em.\n .mat-h5,\n #{$selector} .mat-h5,\n #{$selector} h5 {\n @include typography-utils.font-shorthand(\n // calc is used here to support css variables\n calc(#{inspection.get-theme-typography($theme, body-2, font-size)} * 0.83),\n inspection.get-theme-typography($theme, body-2, font-weight),\n inspection.get-theme-typography($theme, body-2, line-height),\n inspection.get-theme-typography($theme, body-2, font-family)\n );\n\n margin: 0 0 12px;\n }\n\n .mat-h6,\n #{$selector} .mat-h6,\n #{$selector} h6 {\n @include typography-utils.font-shorthand(\n // calc is used here to support css variables\n calc(#{inspection.get-theme-typography($theme, body-2, font-size)} * 0.67),\n inspection.get-theme-typography($theme, body-2, font-weight),\n inspection.get-theme-typography($theme, body-2, line-height),\n inspection.get-theme-typography($theme, body-2, font-family)\n );\n\n margin: 0 0 12px;\n }\n\n .mat-body-strong,\n .mat-subtitle-2,\n #{$selector} .mat-body-strong,\n #{$selector} .mat-subtitle-2 {\n font: inspection.get-theme-typography($theme, subtitle-2, font);\n letter-spacing: inspection.get-theme-typography($theme, subtitle-2, letter-spacing);\n }\n\n .mat-body,\n .mat-body-2,\n #{$selector} .mat-body,\n #{$selector} .mat-body-2,\n #{$selector} {\n font: inspection.get-theme-typography($theme, body-2, font);\n letter-spacing: inspection.get-theme-typography($theme, body-2, letter-spacing);\n\n p {\n margin: 0 0 12px;\n }\n }\n\n .mat-small,\n .mat-caption,\n #{$selector} .mat-small,\n #{$selector} .mat-caption {\n font: inspection.get-theme-typography($theme, caption, font);\n letter-spacing: inspection.get-theme-typography($theme, caption, letter-spacing);\n }\n\n .mat-headline-1,\n #{$selector} .mat-headline-1 {\n font: inspection.get-theme-typography($theme, headline-1, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-1, letter-spacing);\n margin: 0 0 56px;\n }\n\n .mat-headline-2,\n #{$selector} .mat-headline-2 {\n font: inspection.get-theme-typography($theme, headline-2, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-2, letter-spacing);\n margin: 0 0 64px;\n }\n\n .mat-headline-3,\n #{$selector} .mat-headline-3 {\n font: inspection.get-theme-typography($theme, headline-3, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-3, letter-spacing);\n margin: 0 0 64px;\n }\n\n .mat-headline-4,\n #{$selector} .mat-headline-4 {\n font: inspection.get-theme-typography($theme, headline-4, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-4, letter-spacing);\n margin: 0 0 64px;\n }\n}\n","@use 'sass:list';\n@use 'sass:math';\n@use './property-getters';\n\n// Property getters live in their own file to avoid circular dependencies, but we re-export them\n// here so that historical imports from this file continue to work without needing to be updated.\n@forward './property-getters';\n\n/// Outputs the shorthand `font` CSS property, based on a set of typography values. Falls back to\n/// the individual properties if a value that isn't allowed in the shorthand is passed in.\n/// @param {String} $font-size The font-size value.\n/// @param {String | Number} $font-weight The font-weight value.\n/// @param {String | Number} $line-height The line-height value.\n/// @param {String} $font-family The font-family value.\n/// @returns {String} The `font` shorthand value combining the given parts.\n@mixin font-shorthand($font-size, $font-weight, $line-height, $font-family) {\n // If any of the values are set to `inherit`, we can't use the shorthand\n // so we fall back to passing in the individual properties.\n @if ($font-size == inherit or\n $font-weight == inherit or\n $line-height == inherit or\n $font-family == inherit or\n $font-size == null or\n $font-weight == null or\n $line-height == null or\n $font-family == null) {\n\n font-size: $font-size;\n font-weight: $font-weight;\n line-height: $line-height;\n font-family: $font-family;\n }\n @else {\n // Otherwise use the shorthand `font`, because it's the least amount of bytes.\n font: $font-weight list.slash($font-size, $line-height) $font-family;\n }\n}\n\n/// Emits CSS styles for the given typography level.\n/// @param {Map} $config A typography config.\n/// @param {Map} $level A typography level.\n@mixin typography-level($config, $level) {\n // we deliberately do not use the font shorthand here because it overrides\n // certain font properties that can't be configured in the current typography\n // config, e.g. the font-variant-caps or font-feature-settings property\n font-size: property-getters.font-size($config, $level);\n font-weight: property-getters.font-weight($config, $level);\n line-height: property-getters.line-height($config, $level);\n font-family: property-getters.font-family($config, $level);\n letter-spacing: property-getters.letter-spacing($config, $level);\n}\n\n/// Coerce a value to `em` if it is a unitless number, otherwise returns\n/// the value provided.\n@function private-coerce-unitless-to-em($value) {\n @return if(math.is-unitless($value), 1em * $value, $value);\n}\n","@use 'sass:color';\n@use '@material/chips/chip-theme' as mdc-chip-theme;\n@use '../core/tokens/m2/mdc/chip' as tokens-mdc-chip;\n@use '../core/tokens/m2/mat/chip' as tokens-mat-chip;\n@use '../core/tokens/token-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-chips.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n .mat-mdc-standard-chip {\n @include mdc-chip-theme.theme(tokens-mdc-chip.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected chip: primary, secondary, tertiary,\n/// or error (If not specified, default secondary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-standard-chip {\n $default-color-tokens: tokens-mdc-chip.get-color-tokens($theme);\n @include mdc-chip-theme.theme($default-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme));\n\n &.mat-mdc-chip-selected,\n &.mat-mdc-chip-highlighted {\n &.mat-primary {\n $primary-color-tokens: tokens-mdc-chip.get-color-tokens($theme, primary);\n @include mdc-chip-theme.theme($primary-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme, primary));\n }\n\n &.mat-accent {\n $accent-color-tokens: tokens-mdc-chip.get-color-tokens($theme, accent);\n @include mdc-chip-theme.theme($accent-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme, accent));\n }\n\n &.mat-warn {\n $warn-color-tokens: tokens-mdc-chip.get-color-tokens($theme, warn);\n @include mdc-chip-theme.theme($warn-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme, warn));\n }\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n $typography-tokens: tokens-mdc-chip.get-typography-tokens($theme);\n\n .mat-mdc-standard-chip {\n @include mdc-chip-theme.theme($typography-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $density-tokens: tokens-mdc-chip.get-density-tokens($theme);\n\n .mat-mdc-chip.mat-mdc-standard-chip {\n @include mdc-chip-theme.theme($density-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected chip: primary, secondary, tertiary,\n/// or error (If not specified, default secondary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-chips') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-chip-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-chip.$prefix, $options...);\n $mat-chip-tokens: token-utils.get-tokens-for($tokens, tokens-mat-chip.$prefix, $options...);\n @include mdc-chip-theme.theme($mdc-chip-tokens);\n @include token-utils.create-token-values(tokens-mat-chip.$prefix, $mat-chip-tokens);\n}\n","@use '@material/switch/switch-theme' as mdc-switch-theme;\n@use '@material/form-field/form-field-theme' as mdc-form-field-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/form-field' as tokens-mdc-form-field;\n@use '../core/tokens/m2/mat/switch' as tokens-mat-switch;\n@use '../core/tokens/m2/mdc/switch' as tokens-mdc-switch;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-switch.get-unthemable-tokens();\n $mdc-tokens: tokens-mdc-switch.get-unthemable-tokens();\n @include mdc-switch-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-tokens);\n }\n }\n}\n\n/// Outputs color theme styles for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slide-toggle: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n $is-dark: inspection.get-theme-type($theme) == dark;\n $mat-tokens: tokens-mat-switch.get-color-tokens($theme);\n $mdc-tokens: tokens-mdc-switch.get-color-tokens($theme);\n\n // Add values for MDC slide toggles tokens\n @include sass-utils.current-selector-or-root() {\n @include mdc-switch-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-tokens);\n\n // TODO(wagnermaciel): Use our token system to define this css variable.\n --mdc-switch-disabled-label-text-color: #{inspection.get-theme-color(\n $theme,\n foreground,\n disabled-text\n )};\n\n .mat-mdc-slide-toggle {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-color-tokens($theme));\n\n // Change the color palette related tokens to accent or warn if applicable\n &.mat-accent {\n @include mdc-switch-theme.theme(\n tokens-mdc-switch.private-get-color-palette-color-tokens($theme, accent));\n }\n\n &.mat-warn {\n @include mdc-switch-theme.theme(\n tokens-mdc-switch.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n $mat-tokens: tokens-mat-switch.get-typography-tokens($theme);\n $mdc-tokens: tokens-mdc-switch.get-typography-tokens($theme);\n\n // Add values for MDC slide toggle tokens\n @include sass-utils.current-selector-or-root() {\n @include mdc-switch-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-tokens);\n\n .mat-mdc-slide-toggle {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-typography-tokens($theme));\n }\n }\n }\n}\n\n/// Outputs density theme styles for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-switch.get-density-tokens($theme);\n $mdc-tokens: tokens-mdc-switch.get-density-tokens($theme);\n @include mdc-switch-theme.theme(tokens-mdc-switch.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slide-toggle: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-slide-toggle') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n // Don't pass $options here, since the mdc-form-field doesn't support color options,\n // only the mdc-switch does.\n $mdc-form-field-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-form-field.$prefix);\n $mat-switch-tokens: token-utils.get-tokens-for($tokens, tokens-mat-switch.$prefix);\n $mdc-switch-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-switch.$prefix, $options...);\n\n @include mdc-form-field-theme.theme($mdc-form-field-tokens);\n @include mdc-switch-theme.theme($mdc-switch-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-switch-tokens);\n}\n","@use '@material/radio/radio-theme' as mdc-radio-theme;\n@use '@material/form-field/form-field-theme' as mdc-form-field-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/form-field' as tokens-mdc-form-field;\n@use '../core/tokens/m2/mdc/radio' as tokens-mdc-radio;\n@use '../core/tokens/m2/mat/radio' as tokens-mat-radio;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-radio.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-radio.$prefix, tokens-mat-radio.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the radio button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-radio-button {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-color-tokens($theme));\n\n &.mat-primary {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, primary));\n @include token-utils.create-token-values(tokens-mat-radio.$prefix,\n tokens-mat-radio.get-color-tokens($theme, primary));\n }\n\n &.mat-accent {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-radio.$prefix,\n tokens-mat-radio.get-color-tokens($theme));\n }\n\n &.mat-warn {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, warn));\n @include token-utils.create-token-values(tokens-mat-radio.$prefix,\n tokens-mat-radio.get-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-typography-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-radio.$prefix, tokens-mat-radio.get-typography-tokens($theme));\n }\n\n .mat-mdc-radio-button {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $density-scale: inspection.get-theme-density($theme);\n\n @include sass-utils.current-selector-or-root() {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-density-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-radio.$prefix, tokens-mat-radio.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the radio button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-radio') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-radio-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-radio.$prefix, $options...);\n $mat-radio-tokens: token-utils.get-tokens-for($tokens, tokens-mat-radio.$prefix, $options...);\n // Don't pass $options here, since the mdc-form-field doesn't support color options,\n // only the mdc-radio and mat-radio do.\n $mdc-form-field-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-form-field.$prefix);\n @include mdc-radio-theme.theme($mdc-radio-tokens);\n @include mdc-form-field-theme.theme($mdc-form-field-tokens);\n @include token-utils.create-token-values(tokens-mat-radio.$prefix, $mat-radio-tokens);\n}\n","@use 'sass:map';\n@use '@material/list/evolution-mixins';\n@use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme;\n@use '@material/radio/radio-theme' as mdc-radio-theme;\n@use '@material/list/list-theme' as mdc-list-theme;\n\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/m2/mat/list' as tokens-mat-list;\n@use '../core/tokens/m2/mdc/checkbox' as tokens-mdc-checkbox;\n@use '../core/tokens/m2/mdc/radio' as tokens-mdc-radio;\n@use '../core/tokens/m2/mdc/list' as tokens-mdc-list;\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n\n@mixin base($theme) {\n // Add default values for tokens not related to color, typography, or density.\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme(tokens-mdc-list.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-unthemable-tokens());\n }\n }\n}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n $mdc-list-color-tokens: tokens-mdc-list.get-color-tokens($theme);\n\n // Add values for MDC list tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme($mdc-list-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-color-tokens($theme));\n }\n\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, primary));\n }\n\n .mat-accent {\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, accent));\n }\n }\n\n .mat-warn {\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, warn));\n }\n }\n\n .mat-mdc-list-option {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, primary));\n }\n .mat-mdc-list-option.mat-accent {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, accent));\n }\n .mat-mdc-list-option.mat-warn {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, warn));\n }\n\n // There is no token for activated color on nav list.\n // TODO(mmalerba): Add a token to MDC or make a custom one.\n .mat-mdc-list-base.mat-mdc-list-base {\n @include evolution-mixins.list-selected-ink-color(\n inspection.get-theme-color($theme, primary));\n }\n\n // TODO(mmalerba): Leaking styles from the old MDC list mixins used in other components can\n // cause opacity issues, so we need this override for now. We can remove it when all\n // Angular Material components stop using the old MDC mixins.\n .mat-mdc-list-base .mdc-list-item--disabled {\n .mdc-list-item__start,\n .mdc-list-item__content,\n .mdc-list-item__end {\n opacity: 1;\n }\n }\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $density-scale: inspection.get-theme-density($theme);\n $mdc-list-density-tokens: tokens-mdc-list.get-density-tokens($theme);\n\n // Add values for MDC list tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme($mdc-list-density-tokens);\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-density-tokens($theme));\n }\n\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-density-tokens($theme));\n }\n\n // TODO(mmalerba): This is added to maintain the same style MDC used prior to the token-based\n // API, to avoid screenshot diffs. We should remove it in favor of following MDC's current\n // style, or add custom tokens for it.\n .mat-mdc-list-item {\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-icon {\n &.mdc-list-item--with-one-line {\n height: map.get((\n 0: 56px,\n -1: 52px,\n -2: 48px,\n -3: 44px,\n -4: 40px,\n -5: 40px,\n ), $density-scale);\n }\n\n &.mdc-list-item--with-two-lines {\n height: map.get((\n 0: 72px,\n -1: 68px,\n -2: 64px,\n -3: 60px,\n -4: 56px,\n -5: 56px,\n ), $density-scale);\n }\n }\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n $mdc-list-typography-tokens: tokens-mdc-list.get-typography-tokens($theme);\n\n // Add values for MDC list tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme($mdc-list-typography-tokens);\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-typography-tokens($theme));\n }\n\n // MDC does not have tokens for the subheader.\n // TODO(mmalerba): Discuss with MDC about adding them, or create custom tokens.\n .mdc-list-group__subheader {\n font: inspection.get-theme-typography($theme, subtitle-1, font);\n letter-spacing: inspection.get-theme-typography($theme, subtitle-1, letter-spacing);\n }\n }\n}\n\n@mixin theme($theme) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-list') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme));\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @include mdc-list-theme.theme(token-utils.get-tokens-for($tokens, tokens-mdc-list.$prefix));\n\n $mat-list-tokens: token-utils.get-tokens-for($tokens, tokens-mat-list.$prefix);\n @include token-utils.create-token-values(tokens-mat-list.$prefix, $mat-list-tokens);\n}\n","@use '@material/tab-indicator/tab-indicator-theme' as mdc-tab-indicator-theme;\n@use '@material/tab/tab-theme' as mdc-tab-theme;\n@use '../core/style/sass-utils';\n@use '../core/tokens/m2/mdc/tab' as tokens-mdc-tab;\n@use '../core/tokens/m2/mdc/tab-indicator' as tokens-mdc-tab-indicator;\n@use '../core/tokens/m2/mat/tab-header' as tokens-mat-tab-header;\n@use '../core/tokens/m2/mat/tab-header-with-background' as tokens-mat-tab-header-with-background;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/tokens/token-utils';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-tab.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-tab-indicator-theme.theme(tokens-mdc-tab-indicator.get-unthemable-tokens());\n @include mdc-tab-theme.secondary-navigation-tab-theme(tokens-mdc-tab.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-tab-header.$prefix, tokens-mat-tab-header.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-unthemable-tokens()\n );\n }\n }\n}\n\n/// Outputs color theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the tab indicator: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-tab-group, .mat-mdc-tab-nav-bar {\n @include _palette-styles($theme, primary);\n\n &.mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($theme, warn);\n }\n\n &.mat-background-primary {\n @include _background-styles($theme, primary);\n }\n\n &.mat-background-accent {\n @include _background-styles($theme, accent);\n }\n\n &.mat-background-warn {\n @include _background-styles($theme, warn);\n }\n }\n }\n}\n\n@mixin _background-styles($theme, $palette-name) {\n @include token-utils.create-token-values(tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-color-tokens($theme, $palette-name));\n}\n\n@mixin _palette-styles($theme, $palette-name) {\n @include mdc-tab-theme.secondary-navigation-tab-theme(\n tokens-mdc-tab.get-color-tokens($theme, $palette-name));\n @include mdc-tab-indicator-theme.theme(\n tokens-mdc-tab-indicator.get-color-tokens($theme, $palette-name));\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix,\n tokens-mat-tab-header.get-color-tokens($theme, $palette-name));\n}\n\n/// Outputs typography theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n .mat-mdc-tab-header {\n @include mdc-tab-theme.secondary-navigation-tab-theme(\n tokens-mdc-tab.get-typography-tokens($theme));\n @include mdc-tab-indicator-theme.theme(\n tokens-mdc-tab-indicator.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix,\n tokens-mat-tab-header.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n .mat-mdc-tab-header {\n @include mdc-tab-theme.secondary-navigation-tab-theme(\n tokens-mdc-tab.get-density-tokens($theme));\n @include mdc-tab-indicator-theme.theme(\n tokens-mdc-tab-indicator.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix,\n tokens-mat-tab-header.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the tab indicator: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-tabs') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-tab-indicator-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mdc-tab-indicator.$prefix, $options...);\n $mat-tab-header-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mat-tab-header.$prefix, $options...);\n // Don't pass $options here, because the mdc-tab doesn't have color variants,\n // only the mdc-tab-indicator and mat-tab-header do.\n $mdc-tab-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-tab.$prefix);\n @include mdc-tab-theme.secondary-navigation-tab-theme($mdc-tab-tokens);\n @include mdc-tab-indicator-theme.theme($mdc-tab-indicator-tokens);\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix, $mat-tab-header-tokens);\n}\n","@use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme;\n@use '@material/form-field/form-field-theme' as mdc-form-field-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/checkbox' as tokens-mdc-checkbox;\n@use '../core/tokens/m2/mdc/form-field' as tokens-mdc-form-field;\n@use '../core/tokens/m2/mat/checkbox' as tokens-mat-checkbox;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-checkbox.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the checkbox: primary, secondary, tertiary, or\n/// error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-color-tokens($theme));\n }\n\n .mat-mdc-checkbox {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-color-tokens($theme));\n\n &.mat-primary {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, primary));\n }\n\n &.mat-warn {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-typography-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-typography-tokens($theme));\n }\n\n .mat-mdc-checkbox {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n $density-scale: inspection.get-theme-density($theme);\n\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-density-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the checkbox: primary, secondary, tertiary, or\n/// error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-checkbox') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-checkbox-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mdc-checkbox.$prefix, $options...);\n // Don't pass $options here, since the mdc-form-field doesn't support color options,\n // only the mdc-checkbox does.\n $mdc-form-field-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-form-field.$prefix);\n $mat-checkbox-tokens: token-utils.get-tokens-for($tokens, tokens-mat-checkbox.$prefix);\n @include mdc-checkbox-theme.theme($mdc-checkbox-tokens);\n @include mdc-form-field-theme.theme($mdc-form-field-tokens);\n @include token-utils.create-token-values(tokens-mat-checkbox.$prefix, $mat-checkbox-tokens);\n}\n","@use '@angular/cdk';\n@use '../tokens/m2/mat/ripple' as tokens-mat-ripple;\n@use '../tokens/token-utils';\n\n@mixin ripple() {\n // The host element of an mat-ripple directive should always have a position of \"absolute\" or\n // \"relative\" so that the ripples inside are correctly positioned relatively to the container.\n .mat-ripple {\n overflow: hidden;\n\n // By default, every ripple container should have position: relative in favor of creating an\n // easy API for developers using the MatRipple directive.\n position: relative;\n\n // Promote containers that have ripples to a new layer. We want to target `:not(:empty)`,\n // because we don't want all ripple containers to have their own layer since they're used in a\n // lot of places and the layer is only relevant while animating. Note that ideally we'd use\n // the `contain` property here (see #13175), because `:empty` can be broken by having extra\n // text inside the element, but it isn't very well supported yet.\n &:not(:empty) {\n transform: translateZ(0);\n }\n }\n\n .mat-ripple.mat-ripple-unbounded {\n overflow: visible;\n }\n\n .mat-ripple-element {\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\n\n // We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n transform: scale3d(0, 0, 0);\n\n @include token-utils.use-tokens(\n tokens-mat-ripple.$prefix, tokens-mat-ripple.get-token-slots()) {\n // We have to emit a fallback value here, because some internal builds depend on it.\n background-color: var(#{token-utils.get-token-variable(color)}, rgba(#000, 0.1));\n }\n\n // In high contrast mode the ripple is opaque, causing it to obstruct the content.\n @include cdk.high-contrast(active, off) {\n display: none;\n }\n }\n}\n","/// Emits a CSS class, `.cdk-visually-hidden`. This class can be applied to an element\n/// to make that element visually hidden while remaining available to assistive technology.\n@mixin a11y-visually-hidden() {\n .cdk-visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n\n // This works around a Chrome bug that can cause the tab to crash when large amounts of\n // non-English text get wrapped: https://bugs.chromium.org/p/chromium/issues/detail?id=1201444\n white-space: nowrap;\n\n // Avoid browsers rendering the focus ring in some cases.\n outline: 0;\n\n // Avoid some cases where the browser will still render the native controls (see #9049).\n -webkit-appearance: none;\n -moz-appearance: none;\n\n // We need at least one of top/bottom/left/right in order to prevent cases where the\n // absolute-positioned element is pushed down and can affect scrolling (see #24597).\n // `left` was chosen here, because it's the least likely to break overrides where the\n // element might have been positioned (e.g. `mat-checkbox`).\n left: 0;\n\n [dir='rtl'] & {\n left: auto;\n right: 0;\n }\n }\n}\n\n/// @deprecated Use `a11y-visually-hidden`.\n@mixin a11y() {\n @include a11y-visually-hidden;\n}\n\n/// Emits the mixin's content nested under `$selector-context` if `$selector-context`\n/// is non-empty.\n/// @param {String} selector-context The selector under which to nest the mixin's content.\n@mixin _optionally-nest-content($selector-context) {\n @if ($selector-context == '') {\n @content;\n }\n @else {\n #{$selector-context} {\n @content;\n }\n }\n}\n\n/// Applies styles for users in high contrast mode. Note that this only applies\n/// to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\n/// attribute, however Chrome handles high contrast differently.\n///\n/// @param {String} target Type of high contrast setting to target. Defaults to `active`, can be\n/// `white-on-black` or `black-on-white`.\n/// @param {String} encapsulation Whether to emit styles for view encapsulation. Values are:\n/// * `on` - works for `Emulated`, `Native`, and `ShadowDom`\n/// * `off` - works for `None`\n/// * `any` - works for all encapsulation modes by emitting the CSS twice (default).\n@mixin high-contrast($target: active, $encapsulation: 'any') {\n @if ($target != 'active' and $target != 'black-on-white' and $target != 'white-on-black') {\n @error 'Unknown cdk-high-contrast value \"#{$target}\" provided. ' +\n 'Allowed values are \"active\", \"black-on-white\", and \"white-on-black\"';\n }\n\n @if ($encapsulation != 'on' and $encapsulation != 'off' and $encapsulation != 'any') {\n @error 'Unknown cdk-high-contrast encapsulation \"#{$encapsulation}\" provided. ' +\n 'Allowed values are \"on\", \"off\", and \"any\"';\n }\n\n // If the selector context has multiple parts, such as `.section, .region`, just doing\n // `.cdk-high-contrast-xxx #{&}` will only apply the parent selector to the first part of the\n // context. We address this by nesting the selector context under .cdk-high-contrast.\n @at-root {\n $selector-context: #{&};\n\n @if ($encapsulation != 'on') {\n // Note that if this selector is updated, the same change has to be made inside\n // `_overlay.scss` which can't depend on this mixin due to some infrastructure limitations.\n .cdk-high-contrast-#{$target} {\n @include _optionally-nest-content($selector-context) {\n @content;\n }\n }\n }\n\n @if ($encapsulation != 'off') {\n .cdk-high-contrast-#{$target} :host {\n @include _optionally-nest-content($selector-context) {\n @content;\n }\n }\n }\n }\n}\n","// We want overlays to always appear over user content, so set a baseline\n// very high z-index for the overlay container, which is where we create the new\n// stacking context for all overlays.\n$overlay-container-z-index: 1000 !default;\n$overlay-z-index: 1000 !default;\n$overlay-backdrop-z-index: 1000 !default;\n\n// Background color for all of the backdrops\n$overlay-backdrop-color: rgba(0, 0, 0, 0.32) !default;\n\n// Default backdrop animation is based on the Material Design swift-ease-out.\n$backdrop-animation-duration: 400ms !default;\n$backdrop-animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;\n\n/// Emits structural styles required for cdk/overlay to function.\n@mixin overlay() {\n .cdk-overlay-container, .cdk-global-overlay-wrapper {\n // Disable events from being captured on the overlay container.\n pointer-events: none;\n\n // The container should be the size of the viewport.\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n }\n\n // The overlay-container is an invisible element which contains all individual overlays.\n .cdk-overlay-container {\n position: fixed;\n z-index: $overlay-container-z-index;\n\n &:empty {\n // Hide the element when it doesn't have any child nodes. This doesn't\n // include overlays that have been detached, rather than disposed.\n display: none;\n }\n }\n\n // We use an extra wrapper element in order to use make the overlay itself a flex item.\n // This makes centering the overlay easy without running into the subpixel rendering\n // problems tied to using `transform` and without interfering with the other position\n // strategies.\n .cdk-global-overlay-wrapper {\n display: flex;\n position: absolute;\n z-index: $overlay-z-index;\n }\n\n // A single overlay pane.\n .cdk-overlay-pane {\n // Note: it's important for this one to start off `absolute`,\n // in order for us to be able to measure it correctly.\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n z-index: $overlay-z-index;\n\n // For connected-position overlays, we set `display: flex` in\n // order to force `max-width` and `max-height` to take effect.\n display: flex;\n max-width: 100%;\n max-height: 100%;\n }\n\n .cdk-overlay-backdrop {\n // TODO(jelbourn): reuse sidenav fullscreen mixin.\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n\n z-index: $overlay-backdrop-z-index;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n transition: opacity $backdrop-animation-duration $backdrop-animation-timing-function;\n opacity: 0;\n\n &.cdk-overlay-backdrop-showing {\n opacity: 1;\n\n // Note that we can't import and use the `high-contrast` mixin from `_a11y.scss`, because\n // this file will be copied to the top-level `cdk` package when putting together the files\n // for npm. Any relative import paths we use here will become invalid once the file is copied.\n .cdk-high-contrast-active & {\n // In high contrast mode the rgba background will become solid\n // so we need to fall back to making it opaque using `opacity`.\n opacity: 0.6;\n }\n }\n }\n\n .cdk-overlay-dark-backdrop {\n background: $overlay-backdrop-color;\n }\n\n .cdk-overlay-transparent-backdrop {\n // Define a transition on the visibility so that the `transitionend` event can fire immediately.\n transition: visibility 1ms linear, opacity 1ms linear;\n visibility: hidden;\n opacity: 1;\n\n // Note: as of Firefox 57, having the backdrop be `background: none` will prevent it from\n // capturing the user's mouse scroll events. Since we also can't use something like\n // `rgba(0, 0, 0, 0)`, we work around the inconsistency by not setting the background at\n // all and using `opacity` to make the element transparent.\n &.cdk-overlay-backdrop-showing {\n opacity: 0;\n visibility: visible;\n }\n }\n\n .cdk-overlay-backdrop-noop-animation {\n transition: none;\n }\n\n // Overlay parent element used with the connected position strategy. Used to constrain the\n // overlay element's size to fit within the viewport.\n .cdk-overlay-connected-position-bounding-box {\n position: absolute;\n z-index: $overlay-z-index;\n\n // We use `display: flex` on this element exclusively for centering connected overlays.\n // When *not* centering, a top/left/bottom/right will be set which overrides the normal\n // flex layout.\n display: flex;\n\n // We use the `column` direction here to avoid some flexbox issues in Edge\n // when using the \"grow after open\" options.\n flex-direction: column;\n\n // Add some dimensions so the element has an `innerText` which some people depend on in tests.\n min-width: 1px;\n min-height: 1px;\n }\n\n // Used when disabling global scrolling.\n .cdk-global-scrollblock {\n position: fixed;\n\n // Necessary for the content not to lose its width. Note that we're using 100%, instead of\n // 100vw, because 100vw includes the width plus the scrollbar, whereas 100% is the width\n // that the element had before we made it `fixed`.\n width: 100%;\n\n // Note: this will always add a scrollbar to whatever element it is on, which can\n // potentially result in double scrollbars. It shouldn't be an issue, because we won't\n // block scrolling on a page that doesn't have a scrollbar in the first place.\n overflow-y: scroll;\n }\n}\n","// Structural styles for the autosize text fields.\n@mixin text-field-autosize() {\n // Remove the resize handle on autosizing textareas, because whatever height\n // the user resized to will be overwritten once they start typing again.\n textarea.cdk-textarea-autosize {\n resize: none;\n }\n\n // This class is temporarily applied to the textarea when it is being measured. It is immediately\n // removed when measuring is complete. We use `!important` rules here to make sure user-specified\n // rules do not interfere with the measurement.\n textarea.cdk-textarea-autosize-measuring {\n @include _autosize-measuring-base;\n height: auto !important;\n overflow: hidden !important;\n }\n\n // Similar to the `cdk-textarea-autosize-measuring` class, but only applied on Firefox. We need\n // to use this class, because Firefox has a bug where changing the `overflow` breaks the user's\n // ability to undo/redo what they were typing (see #16629). This class is only scoped to Firefox,\n // because the measurements there don't seem to be affected by the `height: 0`, whereas on other\n // browsers they are, e.g. Chrome detects longer text and IE does't resize back to normal.\n // Identical issue report: https://bugzilla.mozilla.org/show_bug.cgi?id=448784\n textarea.cdk-textarea-autosize-measuring-firefox {\n @include _autosize-measuring-base;\n height: 0 !important;\n }\n}\n\n// Core styles that enable monitoring autofill state of text fields.\n@mixin text-field-autofill() {\n // Keyframes that apply no styles, but allow us to monitor when an text field becomes autofilled\n // by watching for the animation events that are fired when they start. Note: the /*!*/ comment is\n // needed to prevent LibSass from stripping the keyframes out.\n // Based on: https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n @keyframes cdk-text-field-autofill-start {/*!*/}\n @keyframes cdk-text-field-autofill-end {/*!*/}\n\n .cdk-text-field-autofill-monitored:-webkit-autofill {\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\n animation: cdk-text-field-autofill-start 0s 1ms;\n }\n\n .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\n animation: cdk-text-field-autofill-end 0s 1ms;\n }\n}\n\n@mixin _autosize-measuring-base {\n // Having 2px top and bottom padding seems to fix a bug where Chrome gets an incorrect\n // measurement. We just have to account for it later and subtract it off the final result.\n padding: 2px 0 !important;\n box-sizing: content-box !important;\n}\n\n// Used to generate UIDs for keyframes used to change the text field autofill styles.\n$autofill-color-frame-count: 0;\n\n// Mixin used to apply custom background and foreground colors to an autofilled text field.\n// Based on: https://stackoverflow.com/questions/2781549/\n// removing-input-background-colour-for-chrome-autocomplete#answer-37432260\n@mixin text-field-autofill-color($background, $foreground:'') {\n @keyframes cdk-text-field-autofill-color-#{$autofill-color-frame-count} {\n to {\n background: $background;\n @if $foreground != '' { color: $foreground; }\n }\n }\n\n &:-webkit-autofill {\n animation: cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\n }\n\n &.cdk-text-field-autofill-monitored:-webkit-autofill {\n // Since Chrome 80 we need a 1ms delay for cdk-text-field-autofill-start, or the animationstart\n // event won't fire.\n animation: cdk-text-field-autofill-start 0s 1ms,\n cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\n }\n\n $autofill-color-frame-count: $autofill-color-frame-count + 1 !global;\n}\n\n// @deprecated Use `autosize` and `autofill` instead.\n@mixin text-field {\n @include text-field-autosize();\n @include text-field-autofill();\n}\n","@use 'sass:map';\n@use 'sass:meta';\n@use '@angular/cdk';\n@use '../style/layout-common';\n@use '../theming/theming';\n@use '../theming/inspection';\n\n// Private sass variables that will be used as reference throughout component stylesheets.\n$default-border-width: 3px;\n$default-border-style: solid;\n$default-border-color: transparent;\n$default-border-radius: 4px;\n\n// Mixin that renders the focus indicator structural styles.\n@mixin structural-styling($prefix) {\n .#{$prefix}-focus-indicator {\n position: relative;\n\n &::before {\n @include layout-common.fill();\n box-sizing: border-box;\n pointer-events: none;\n display: var(--#{$prefix}-focus-indicator-display, none); // Hide the indicator by default.\n border: var(\n --#{$prefix}-focus-indicator-border-width,\n #{$default-border-width}\n )\n var(\n --#{$prefix}-focus-indicator-border-style,\n #{$default-border-style}\n )\n var(\n --#{$prefix}-focus-indicator-border-color,\n #{$default-border-color}\n );\n border-radius: var(\n --#{$prefix}-focus-indicator-border-radius,\n #{$default-border-radius}\n );\n }\n\n // By default, render the focus indicator when the focus indicator host element takes focus.\n // Defining a pseudo element's content will cause it to render.\n &:focus::before {\n content: '';\n }\n }\n\n // Enable the indicator in high contrast mode.\n @include cdk.high-contrast(active, off) {\n @include customize-focus-indicators((display: block), $prefix);\n }\n}\n\n// Generates CSS variable declarations from a map.\n@mixin _output-variables($map) {\n @each $key, $value in $map {\n @if ($value) {\n --#{$key}: #{$value};\n }\n }\n}\n\n// Mixin that dedups CSS variables for the strong-focus-indicators mixin.\n@mixin customize-focus-indicators($config, $prefix) {\n $border-style: map.get($config, border-style);\n $border-width: map.get($config, border-width);\n $border-radius: map.get($config, border-radius);\n $border-color: map.get($config, border-color);\n $display: map.get($config, display);\n $map: (\n '#{$prefix}-focus-indicator-border-style': $border-style,\n '#{$prefix}-focus-indicator-border-width': $border-width,\n '#{$prefix}-focus-indicator-border-radius': $border-radius,\n '#{$prefix}-focus-indicator-border-color': $border-color,\n '#{$prefix}-focus-indicator-display': $display,\n );\n\n @if (&) {\n @include _output-variables($map);\n }\n @else {\n // We use `html` here instead of `:root`, because the\n // latter causes some issues with internal tooling.\n html {\n @include _output-variables($map);\n }\n }\n}\n\n@mixin strong-focus-indicators($config: ()) {\n // Default focus indicator config.\n $default-config: (\n border-color: black,\n display: block,\n );\n\n // Merge default config with user config.\n $config: map.merge($default-config, $config);\n\n @include customize-focus-indicators($config, 'mat');\n}\n\n@mixin mdc-strong-focus-indicators($config: ()) {\n // Default focus indicator config.\n $default-config: (\n border-color: black,\n display: block,\n );\n\n // Merge default config with user config.\n $config: map.merge($default-config, $config);\n\n @include customize-focus-indicators($config, 'mat-mdc');\n}\n\n@mixin strong-focus-indicators-color($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat');\n }\n @else {\n $border-color: inspection.get-theme-color($theme-or-color, primary);\n @include customize-focus-indicators((\n border-color: $border-color\n ), 'mat');\n }\n}\n\n@mixin strong-focus-indicators-theme($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat');\n }\n @else {\n @include theming.private-check-duplicate-theme-styles($theme-or-color, 'mat-focus-indicators') {\n @if inspection.theme-has($theme-or-color, color) {\n @include strong-focus-indicators-color($theme-or-color);\n }\n }\n }\n}\n\n@mixin mdc-strong-focus-indicators-color($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat-mdc');\n }\n @else {\n $border-color: inspection.get-theme-color($theme-or-color, primary);\n @include customize-focus-indicators((\n border-color: $border-color\n ), 'mat-mdc');\n }\n}\n\n@mixin mdc-strong-focus-indicators-theme($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat-mdc');\n }\n @else {\n @include theming.private-check-duplicate-theme-styles(\n $theme-or-color, 'mat-mdc-focus-indicators') {\n @if inspection.theme-has($theme-or-color, color) {\n @include mdc-strong-focus-indicators-color($theme-or-color);\n }\n }\n }\n}\n","// This mixin ensures an element spans to fill the nearest ancestor with defined positioning.\n@mixin fill {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n}\n","@use '@angular/cdk';\n@use './tokens/m2/mat/app' as tokens-mat-app;\n@use './tokens/token-utils';\n@use './ripple/ripple';\n@use './focus-indicators/private';\n@use './mdc-helpers/mdc-helpers';\n\n// Mixin that renders all of the core styles that are not theme-dependent.\n@mixin core() {\n @include ripple.ripple();\n @include cdk.a11y-visually-hidden();\n @include cdk.overlay();\n @include cdk.text-field-autosize();\n @include cdk.text-field-autofill();\n @include private.structural-styling('mat');\n @include private.structural-styling('mat-mdc');\n\n // Wrapper element that provides the theme background when the\n // user's content isn't inside of a `mat-sidenav-container`.\n @at-root {\n .mat-app-background {\n @include mdc-helpers.disable-mdc-fallback-declarations {\n @include token-utils.use-tokens(tokens-mat-app.$prefix, tokens-mat-app.get-token-slots()) {\n // Note: we need to emit fallback values here to avoid errors in internal builds.\n @include token-utils.create-token-slot(background-color, background-color, transparent);\n @include token-utils.create-token-slot(color, text-color, inherit);\n }\n }\n }\n }\n}\n","@use '../tokens/m2/mat/option' as tokens-mat-option;\n@use '../tokens/token-utils';\n@use '../style/sass-utils';\n@use '../theming/theming';\n@use '../theming/inspection';\n@use '../theming/validation';\n@use '../typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-option.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {}\n}\n\n/// Outputs color theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected option: primary, secondary,\n/// tertiary, or error (If not specified, default secondary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($theme));\n }\n\n .mat-accent {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($theme, accent));\n }\n\n .mat-warn {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($theme, warn));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {}\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected option: primary, secondary,\n/// tertiary, or error (If not specified, default secondary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-option') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-option-tokens: token-utils.get-tokens-for($tokens, tokens-mat-option.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-option.$prefix, $mat-option-tokens);\n}\n","@use '../../theming/theming';\n@use '../../theming/inspection';\n@use '../../theming/validation';\n@use '../../style/sass-utils';\n@use '../../tokens/token-utils';\n@use '../../tokens/m2/mat/full-pseudo-checkbox' as tokens-mat-full-pseudo-checkbox;\n@use '../../tokens/m2/mat/minimal-pseudo-checkbox' as tokens-mat-minimal-pseudo-checkbox;\n\n@mixin _palette-styles($theme, $palette-name) {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-full-pseudo-checkbox.$prefix,\n tokens-mat-full-pseudo-checkbox.get-color-tokens($theme, $palette-name));\n @include token-utils.create-token-values(tokens-mat-minimal-pseudo-checkbox.$prefix,\n tokens-mat-minimal-pseudo-checkbox.get-color-tokens($theme, $palette-name));\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-full-pseudo-checkbox-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-full-pseudo-checkbox.$prefix, $options...);\n $mat-minimal-pseudo-checkbox-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-minimal-pseudo-checkbox.$prefix, $options...);\n @include token-utils.create-token-values(\n tokens-mat-full-pseudo-checkbox.$prefix, $mat-full-pseudo-checkbox-tokens);\n @include token-utils.create-token-values(\n tokens-mat-minimal-pseudo-checkbox.$prefix, $mat-minimal-pseudo-checkbox-tokens);\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {}\n\n/// Outputs color theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the pseudo-checkbox: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-primary {\n @include _palette-styles($theme, primary);\n }\n\n // Default to the accent color. Note that the pseudo checkboxes are meant to inherit the\n // theme from their parent, rather than implementing their own theming, which is why we\n // don't attach to the `mat-*` classes. Also note that this needs to be below `.mat-primary`\n // in order to allow for the color to be overwritten if the checkbox is inside a parent that\n // has `mat-accent` and is placed inside another parent that has `mat-primary`.\n @include _palette-styles($theme, accent);\n .mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n .mat-warn {\n @include _palette-styles($theme, warn);\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n}\n\n/// Outputs density theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the pseudo-checkbox: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-pseudo-checkbox') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n","@use './theming/theming';\n@use './theming/inspection';\n@use './theming/validation';\n@use './style/private';\n@use './ripple/ripple-theme';\n@use './option/option-theme';\n@use './option/optgroup-theme';\n@use './selection/pseudo-checkbox/pseudo-checkbox-theme';\n@use './style/elevation';\n@use './style/sass-utils';\n@use './typography/typography';\n@use './tokens/token-utils';\n@use './tokens/m2/mat/app' as tokens-mat-app;\n@use './tokens/m2/mat/ripple' as tokens-mat-ripple;\n@use './tokens/m2/mat/option' as tokens-mat-option;\n@use './tokens/m2/mat/full-pseudo-checkbox' as tokens-mat-full-pseudo-checkbox;\n@use './tokens/m2/mat/minimal-pseudo-checkbox' as tokens-mat-minimal-pseudo-checkbox;\n\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include ripple-theme.base($theme);\n @include option-theme.base($theme);\n @include optgroup-theme.base($theme);\n @include pseudo-checkbox-theme.base($theme);\n }\n}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n @include ripple-theme.color($theme);\n @include option-theme.color($theme);\n @include optgroup-theme.color($theme);\n @include pseudo-checkbox-theme.color($theme);\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-app.$prefix,\n tokens-mat-app.get-color-tokens($theme));\n }\n\n // Provides external CSS classes for each elevation value. Each CSS class is formatted as\n // `mat-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the element is\n // elevated.\n @for $zValue from 0 through 24 {\n $selector: elevation.$prefix + $zValue;\n // We need the `mat-mdc-elevation-specific`, because some MDC mixins\n // come with elevation baked in and we don't have a way of removing it.\n .#{$selector}, .mat-mdc-elevation-specific.#{$selector} {\n @include private.private-theme-elevation($zValue, $theme);\n }\n }\n }\n\n // TODO(crisbeto): move this into the base.\n // Marker that is used to determine whether the user has added a theme to their page.\n @at-root {\n .mat-theme-loaded-marker {\n display: none;\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include option-theme.typography($theme);\n @include optgroup-theme.typography($theme);\n @include pseudo-checkbox-theme.typography($theme);\n @include ripple-theme.typography($theme);\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include option-theme.density($theme);\n @include optgroup-theme.density($theme);\n @include pseudo-checkbox-theme.density($theme);\n @include ripple-theme.density($theme);\n }\n}\n\n// Mixin that renders all of the core styles that depend on the theme.\n@mixin theme($theme, $options...) {\n // Wrap the sub-theme includes in the duplicate theme styles mixin. This ensures that\n // there won't be multiple warnings. e.g. if `mat-core-theme` reports a warning, then\n // the imported themes (such as `mat-ripple-theme`) should not report again.\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-core') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-app-tokens: token-utils.get-tokens-for($tokens, tokens-mat-app.$prefix, $options...);\n $mat-ripple-tokens: token-utils.get-tokens-for($tokens, tokens-mat-ripple.$prefix, $options...);\n $mat-option-tokens: token-utils.get-tokens-for($tokens, tokens-mat-option.$prefix, $options...);\n $mat-full-pseudo-checkbox-tokens: token-utils.get-tokens-for($tokens,\n tokens-mat-full-pseudo-checkbox.$prefix, $options...);\n $mat-minimal-pseudo-checkbox-tokens: token-utils.get-tokens-for($tokens,\n tokens-mat-minimal-pseudo-checkbox.$prefix, $options...);\n\n @include token-utils.create-token-values(tokens-mat-app.$prefix, $mat-app-tokens);\n @include token-utils.create-token-values(tokens-mat-ripple.$prefix, $mat-ripple-tokens);\n @include token-utils.create-token-values(tokens-mat-option.$prefix, $mat-option-tokens);\n @include token-utils.create-token-values(tokens-mat-full-pseudo-checkbox.$prefix,\n $mat-full-pseudo-checkbox-tokens);\n @include token-utils.create-token-values(tokens-mat-minimal-pseudo-checkbox.$prefix,\n $mat-minimal-pseudo-checkbox-tokens);\n}\n","@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mdc/linear-progress' as tokens-mdc-linear-progress;\n@use '@material/linear-progress/linear-progress-theme' as mdc-linear-progress-theme;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-linear-progress-theme.theme(tokens-mdc-linear-progress.get-unthemable-tokens());\n }\n }\n}\n\n@mixin _palette-styles($theme, $palette-name) {\n @include mdc-linear-progress-theme.theme(\n tokens-mdc-linear-progress.get-color-tokens($theme, $palette-name));\n}\n\n/// Outputs color theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the progress bar: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-progress-bar {\n @include _palette-styles($theme, primary);\n\n &.mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($theme, warn);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {}\n\n\n/// Outputs density theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the progress bar: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-bar') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-linear-progress-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-linear-progress.$prefix, $options...);\n @include mdc-linear-progress-theme.theme($mdc-linear-progress-tokens);\n}\n","@use '@material/textfield/filled-text-field-theme' as mdc-filled-text-field-theme;\n@use '@material/textfield/outlined-text-field-theme' as mdc-outlined-text-field-theme;\n@use '../core/tokens/m2/mdc/filled-text-field' as tokens-mdc-filled-text-field;\n@use '../core/tokens/m2/mdc/outlined-text-field' as tokens-mdc-outlined-text-field;\n@use '../core/tokens/m2/mat/form-field' as tokens-mat-form-field;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-form-field.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(\n tokens-mdc-filled-text-field.$prefix,\n tokens-mdc-filled-text-field.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mdc-outlined-text-field.$prefix,\n tokens-mdc-outlined-text-field.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the form field: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.get-color-tokens($theme));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.get-color-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-color-tokens($theme));\n }\n\n .mat-mdc-form-field.mat-accent {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.private-get-color-palette-color-tokens($theme, accent));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.private-get-color-palette-color-tokens($theme, accent));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-mdc-form-field.mat-warn {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.private-get-color-palette-color-tokens($theme, warn));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.private-get-color-palette-color-tokens($theme, warn));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.get-typography-tokens($theme));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the form field: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-filled-text-field-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-filled-text-field.$prefix, $options...);\n $mdc-outlined-text-field-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-outlined-text-field.$prefix, $options...);\n $mat-form-field-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-form-field.$prefix, $options...);\n @include mdc-filled-text-field-theme.theme($mdc-filled-text-field-tokens);\n @include mdc-outlined-text-field-theme.theme($mdc-outlined-text-field-tokens);\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix, $mat-form-field-tokens);\n}\n","@use '../core/tokens/m2/mat/select' as tokens-mat-select;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-select.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-select.get-unthemable-tokens();\n @include token-utils.create-token-values(tokens-mat-select.$prefix, $mat-tokens);\n }\n }\n}\n\n/// Outputs color theme styles for the mat-select.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the select arrow: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-color-tokens($theme));\n\n .mat-mdc-form-field.mat-accent {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-color-tokens($theme, accent));\n }\n\n .mat-mdc-form-field.mat-warn {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-select.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-select.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the select arrow: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-select') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-select-tokens: token-utils.get-tokens-for($tokens, tokens-mat-select.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-select.$prefix, $mat-select-tokens);\n}\n","@use '@material/slider/slider-theme' as mdc-slider-theme;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mat/slider' as tokens-mat-slider;\n@use '../core/tokens/m2/mdc/slider' as tokens-mdc-slider;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-slider.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-slider.get-unthemable-tokens();\n @include token-utils.create-token-values(tokens-mat-slider.$prefix, $mat-tokens);\n @include mdc-slider-theme.theme(tokens-mdc-slider.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-slider.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slider: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n $is-dark: inspection.get-theme-type($theme) == dark;\n\n $mdc-color-tokens: token-utils.resolve-elevation(\n tokens-mdc-slider.get-color-tokens($theme),\n handle-elevation,\n handle-shadow-color\n );\n\n $mat-slider-color-tokens: tokens-mat-slider.get-color-tokens($theme);\n\n // Add values for MDC slider tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-slider-theme.theme($mdc-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-slider.$prefix,\n $mat-slider-color-tokens\n );\n\n .mat-accent {\n @include token-utils.create-token-values(\n tokens-mat-slider.$prefix,\n tokens-mat-slider.private-get-color-palette-color-tokens($theme, accent),\n );\n @include mdc-slider-theme.theme(\n tokens-mdc-slider.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-warn {\n @include token-utils.create-token-values(\n tokens-mat-slider.$prefix,\n tokens-mat-slider.private-get-color-palette-color-tokens($theme, warn),\n );\n @include mdc-slider-theme.theme(\n tokens-mdc-slider.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n }\n}\n\n\n/// Outputs typography theme styles for the mat-slider.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n // Add values for MDC slider tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-slider-theme.theme(tokens-mdc-slider.get-typography-tokens($theme));\n }\n }\n}\n\n\n/// Outputs density theme styles for the mat-slider.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n // Add values for MDC slider tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-slider-theme.theme(tokens-mdc-slider.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slider: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-slider') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-slider-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-slider.$prefix, $options...);\n $mat-slider-tokens: token-utils.get-tokens-for($tokens, tokens-mat-slider.$prefix, $options...);\n @include mdc-slider-theme.theme($mdc-slider-tokens);\n @include token-utils.create-token-values(tokens-mat-slider.$prefix, $mat-slider-tokens);\n}\n","//\n// Copyright 2022 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// stylelint-disable selector-class-pattern --\n// Internal stylesheet for material list component. Selector '.mdc-*' should\n// only be used in this project.\n\n@use '@material/density/functions' as density-functions;\n@use '@material/dom/mixins' as dom-mixins;\n@use '@material/feature-targeting/feature-targeting';\n@use '@material/ripple/ripple-theme';\n@use '@material/ripple/ripple';\n@use '@material/rtl/rtl';\n@use '@material/shape/mixins' as shape-mixins;\n@use '@material/theme/theme-color';\n@use '@material/theme/theme';\n@use '@material/typography/typography';\n@use './evolution-variables' as variables;\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:math';\n\n$ripple-target: variables.$ripple-target;\n\n@mixin static-styles($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include _high-contrast-mode($query: $query);\n .mdc-list {\n @include _static-list-base($query: $query);\n }\n\n .mdc-list-item__wrapper {\n @include feature-targeting.targets($feat-structure) {\n display: block;\n }\n }\n\n .mdc-list-item {\n @include item-base($query: $query);\n @include _list-item-baseline-height($query: $query);\n @include one-line-item-start-alignment(center, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n @include three-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n\n @include one-line-item-end-alignment(center, $query: $query);\n @include two-line-item-end-alignment(center, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n\n @include feature-targeting.targets($feat-structure) {\n align-items: stretch;\n cursor: pointer;\n }\n\n // Reset mouse cursor for disabled and non-interactive items.\n &.mdc-list-item--disabled,\n &.mdc-list-item--non-interactive {\n @include feature-targeting.targets($feat-structure) {\n cursor: auto;\n }\n }\n\n // TODO(b/254711887): Likely need to update this to adhere to a HCM focus\n // ring spec.\n // For components using aria-activedescendant, the focus pseudoclass is\n // never applied and use `.mdc-ripple-upgraded--background-focused` instead.\n &:not(.mdc-list-item--selected):focus::before,\n &.mdc-ripple-upgraded--background-focused::before {\n @include dom-mixins.transparent-border($query: $query);\n }\n\n &.mdc-list-item--selected::before {\n @include dom-mixins.transparent-border(\n $border-width: 3px,\n $border-style: double,\n $query: $query\n );\n }\n\n &.mdc-list-item--selected:focus::before {\n @include dom-mixins.transparent-border(\n $border-width: 3px,\n $query: $query\n );\n }\n }\n\n // stylelint-disable selector-max-type --\n // Override anchor tag styles for the use-case of a list being used for navigation\n a.mdc-list-item {\n @include feature-targeting.targets($feat-structure) {\n color: inherit;\n text-decoration: none;\n }\n }\n // stylelint-enable selector-max-type\n\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n fill: currentColor;\n flex-shrink: 0;\n pointer-events: none;\n }\n }\n\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n flex-shrink: 0;\n pointer-events: none;\n }\n }\n\n .mdc-list-item__content {\n @include typography.overflow-ellipsis($query);\n @include feature-targeting.targets($feat-structure) {\n align-self: center;\n flex: 1;\n pointer-events: none;\n }\n\n .mdc-list-item--with-two-lines &,\n .mdc-list-item--with-three-lines & {\n @include feature-targeting.targets($feat-structure) {\n align-self: stretch;\n }\n }\n\n // Disable interaction on label elements that may automatically\n // toggle corresponding checkbox / radio input.\n &[for] {\n @include feature-targeting.targets($feat-structure) {\n pointer-events: none;\n }\n }\n }\n\n .mdc-list-item__primary-text {\n @include typography.overflow-ellipsis($query);\n\n .mdc-list-item--with-two-lines &,\n .mdc-list-item--with-three-lines & {\n @include typography.text-baseline(\n $top: 28px,\n $bottom: 20px,\n $query: $query\n );\n }\n }\n\n .mdc-list-item__secondary-text {\n @include typography.overflow-ellipsis($query);\n @include typography.text-baseline(\n $top: 20px,\n $display: block,\n $query: $query\n );\n\n .mdc-list-item--with-three-lines & {\n @include feature-targeting.targets($feat-structure) {\n white-space: normal;\n line-height: 20px;\n }\n }\n\n .mdc-list-item--with-overline & {\n @include feature-targeting.targets($feat-structure) {\n white-space: nowrap;\n line-height: auto;\n }\n }\n }\n\n .mdc-list-item__overline-text {\n @include typography.overflow-ellipsis($query);\n\n .mdc-list-item--with-two-lines & {\n @include typography.text-baseline(\n $top: 24px,\n $bottom: 20px,\n $query: $query\n );\n }\n\n .mdc-list-item--with-three-lines & {\n @include typography.text-baseline(\n $top: 28px,\n $bottom: 20px,\n $query: $query\n );\n }\n }\n\n .mdc-list-item--with-leading-avatar {\n @include item-start-spacing(16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n border-radius: 50%;\n }\n }\n }\n\n .mdc-list-item--with-leading-icon {\n @include item-start-spacing(\n $leading: 16px,\n $trailing: 32px,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-thumbnail {\n @include item-start-spacing(16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-image {\n @include item-start-spacing(16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _one-line-item-taller-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n @include _two-line-item-tall-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n }\n\n .mdc-list-item--with-leading-video {\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 8px,\n $query: $query\n );\n @include item-start-spacing($leading: 0, $trailing: 16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _one-line-item-taller-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n @include _two-line-item-tall-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n }\n\n .mdc-list-item--with-leading-checkbox {\n $leading: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-start-spacing($leading, $trailing, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-radio {\n $leading: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-start-spacing($leading, $trailing, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-switch {\n @include item-start-spacing(16px, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-trailing-icon {\n @include item-end-spacing(16px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-meta {\n @include two-line-item-end-alignment(flex-start, $query: $query);\n @include three-line-item-end-alignment(flex-start, $query: $query);\n @include item-end-spacing($leading: 28px, $trailing: 16px, $query: $query);\n @include _multi-line-item-end-text-baseline($query: $query);\n\n .mdc-list-item__end {\n @include typography.typography(caption, $query);\n }\n }\n\n .mdc-list-item--with-trailing-checkbox {\n $leading: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-end-spacing($leading, $trailing, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n }\n\n .mdc-list-item--with-trailing-radio {\n $leading: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-end-spacing($leading, $trailing, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n }\n\n .mdc-list-item--with-trailing-switch {\n @include item-end-spacing(16px, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n }\n\n .mdc-list-item--with-overline {\n @include _two-line-item-primary-text-baseline(20px, 0px, $query: $query);\n @include _three-line-item-primary-baseline(20px, 0px, $query: $query);\n }\n\n // This must be specified last to ensure that RTL padding takes priority over\n // LTR padding in the cascade.\n .mdc-list-item {\n @include item-spacing(16px, $query: $query);\n }\n\n //\n // Grouping\n //\n .mdc-list-group {\n @include feature-targeting.targets($feat-structure) {\n // Cancel top/bottom padding on individual lists within group\n .mdc-deprecated-list {\n padding: 0;\n }\n }\n }\n .mdc-list-group__subheader {\n @include _list-group-subheader-margin($query: $query);\n }\n\n //\n // Dividers\n //\n\n .mdc-list-divider {\n @include feature-targeting.targets($feat-structure) {\n padding: 0;\n\n // Allows the use of padding to specify leading and trailing insets\n // independently.\n background-clip: content-box;\n }\n }\n\n // The base inset variant corresponds to the item's padding.\n .mdc-list-divider,\n .mdc-list-divider--with-leading-text,\n .mdc-list-divider--with-leading-icon,\n .mdc-list-divider--with-leading-image,\n .mdc-list-divider--with-leading-thumbnail,\n .mdc-list-divider--with-leading-avatar,\n .mdc-list-divider--with-leading-checkbox,\n .mdc-list-divider--with-leading-switch,\n .mdc-list-divider--with-leading-radio {\n @include divider-leading-inset(16px, $query: $query);\n @include divider-trailing-inset(16px, $query: $query);\n }\n\n .mdc-list-divider--with-leading-video {\n @include divider-leading-inset(0px, $query: $query);\n }\n\n // This is needed to ensure that default padding isn't applied in RTL locales.\n .mdc-list-divider {\n @include feature-targeting.targets($feat-structure) {\n @include rtl.rtl {\n padding: 0;\n }\n }\n }\n}\n\n@mixin core-styles($query: feature-targeting.all()) {\n @include without-ripple($query);\n @include with-ripple($query);\n}\n\n@mixin without-ripple($query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n $feat-structure: feature-targeting.create-target($query, structure);\n $feat-typography: feature-targeting.create-target($query, typography);\n\n //\n // Items\n //\n\n @include list-primary-text-ink-color(text-primary-on-background, $query);\n @include list-secondary-text-ink-color(text-secondary-on-background, $query);\n @include list-overline-text-ink-color(text-hint-on-background, $query);\n @include list-icon-fill-color(transparent, $query);\n @include list-icon-ink-color(text-icon-on-background, $query);\n @include list-meta-text-ink-color(text-hint-on-background, $query);\n @include list-disabled-opacity(variables.$content-disabled-opacity, $query);\n @include list-disabled-ink-color(variables.$content-disabled-color, $query);\n @include list-selected-ink-color(variables.$content-selected-color, $query);\n\n @include group-subheader-ink-color(text-primary-on-background, $query);\n\n @include _high-contrast-mode-border-color($query);\n\n .mdc-list {\n @include _typography-list-base($query: $query);\n }\n\n .mdc-list-item__primary-text {\n @include typography.typography(subtitle1, $query);\n }\n\n .mdc-list-item__secondary-text {\n @include typography.typography(body2, $query);\n }\n\n .mdc-list-item__overline-text {\n @include typography.typography(overline, $query);\n }\n\n .mdc-list-item--with-leading-avatar {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-icon {\n @include item-start-size(24px, $query: $query);\n }\n\n .mdc-list-item--with-leading-thumbnail {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-image {\n @include item-start-size(56px, $query: $query);\n }\n\n .mdc-list-item--with-leading-video {\n @include item-start-size($width: 100px, $height: 56px, $query: $query);\n }\n\n .mdc-list-item--with-leading-checkbox {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-radio {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-switch {\n @include item-start-size($width: 36px, $height: 20px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-icon {\n @include item-end-size(24px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-meta {\n .mdc-list-item__end {\n @include typography.typography(caption, $query);\n }\n }\n\n .mdc-list-item--with-trailing-checkbox {\n @include item-end-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-radio {\n @include item-end-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-switch {\n @include item-end-size($width: 36px, $height: 20px, $query: $query);\n }\n\n .mdc-list-group__subheader {\n @include typography.typography(subtitle1, $query);\n }\n\n //\n // Dividers\n //\n\n $divider-color: if(\n theme-color.tone(theme-color.$background) == 'dark',\n variables.$divider-color-on-dark-bg,\n variables.$divider-color-on-light-bg\n );\n\n @include divider-color($divider-color, $query: $query);\n @include divider-height(1px, $query: $query);\n @include static-styles($query: $query);\n} // end of without-ripple\n\n@mixin with-ripple($query: feature-targeting.all()) {\n @include ripple.common($query); // COPYBARA_COMMENT_THIS_LINE\n\n :not(.mdc-list-item--disabled).mdc-list-item {\n @include _item-interactive-ripple($query);\n }\n}\n\n///\n/// Adjusts an offset (i.e., margin) to accomodate contents that are larger than\n/// the space allocated by the specification.\n///\n/// For instance, the specification provides 24x24dp for a checkbox with a 16dp\n/// margin. However, checkboxes are actually 40x40dp. To ensure that the\n/// checkbox is positioned correctly, the margin is reduced by 8dp to reflect\n/// that the margin is already \"baked into\" the checkbox.\n///\n/// Concretely, 40dp - 24dp = 16dp. Assuming that the control is symmetrical,\n/// half of the overflow (8dp) is on the leading side and half on the trailing\n/// side. Therefore, the leading and trailing margins are reduced by 8dp.\n///\n/// Note: this might be more useful if it's added into the leading/trailing\n/// margin mixins as a parameter.\n///\n@function absorb-overflow($offset, $actual, $available, $symmetric: true) {\n @if $actual <= $available {\n @return $offset;\n }\n $overflow: $actual - $available;\n @return $offset - math.div($overflow, if($symmetric, 2, 1));\n}\n\n@mixin one-line-item-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-one-line {\n @include feature-targeting.targets($feat-structure) {\n height: $height;\n }\n }\n}\n\n@mixin two-line-item-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-two-lines {\n @include feature-targeting.targets($feat-structure) {\n height: $height;\n }\n }\n}\n@mixin three-line-item-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-three-lines {\n @include feature-targeting.targets($feat-structure) {\n height: $height;\n }\n }\n}\n\n@mixin list-item-height($height) {\n &.mdc-list-item--with-one-line,\n &.mdc-list-item--with-two-lines,\n &.mdc-list-item--with-three-lines {\n @include theme.property(height, $height);\n }\n}\n\n@mixin item-spacing(\n $leading,\n $trailing: $leading,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n @include rtl.reflexive-property(padding, $leading, $trailing);\n }\n}\n\n@mixin one-line-item-start-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-one-line {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin two-line-item-start-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin three-line-item-start-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin one-line-item-end-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-one-line {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin two-line-item-end-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin three-line-item-end-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin item-start-spacing(\n $leading,\n $trailing: $leading,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n // Extra specificity needed to override default customizations.\n &.mdc-list-item {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, 0, auto);\n }\n\n .mdc-list-item__start {\n @include rtl.reflexive-property(margin, $leading, $trailing);\n }\n }\n}\n\n@mixin item-end-spacing(\n $leading,\n $trailing: $leading,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n // Extra specificity needed to override default customizations.\n &.mdc-list-item {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, auto, 0);\n }\n\n .mdc-list-item__end {\n @include rtl.reflexive-property(margin, $leading, $trailing);\n }\n }\n}\n\n@mixin item-start-size(\n $width,\n $height: $width,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n .mdc-list-item__start {\n @include theme.property(width, $width);\n @include theme.property(height, $height);\n }\n }\n}\n\n@mixin item-end-size($width, $height: $width, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n .mdc-list-item__end {\n @include theme.property(width, $width);\n @include theme.property(height, $height);\n }\n }\n}\n\n@mixin list-item-selected-container-color($color) {\n &.mdc-list-item.mdc-list-item--selected {\n @include theme.property(background-color, $color);\n }\n}\n\n@mixin list-primary-text-typography($typography-theme) {\n .mdc-list-item__primary-text {\n @include typography.theme-styles($typography-theme);\n }\n}\n\n@mixin list-primary-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__primary-text {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-secondary-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__secondary-text {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-secondary-text-typography($typography-theme) {\n .mdc-list-item__secondary-text {\n @include typography.theme-styles($typography-theme);\n }\n}\n\n@mixin list-overline-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__overline-text {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-meta-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-icon-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--with-leading-icon .mdc-list-item__start,\n .mdc-list-item--with-trailing-icon .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-icon-fill-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--with-leading-icon .mdc-list-item__start,\n .mdc-list-item--with-trailing-icon .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(background-color, $color);\n }\n }\n}\n\n@mixin list-selected-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--selected,\n .mdc-list-item--activated {\n @include list-primary-text-ink-color($color, $query);\n @include _item-icon-ink-color($color, $leading-only: true, $query: $query);\n }\n}\n\n@mixin list-selected-meta-text-ink-color(\n $color,\n $query: feature-targeting.all()\n) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--selected,\n .mdc-list-item--activated {\n @include list-meta-text-ink-color($color, $query);\n }\n}\n\n@mixin list-disabled-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--disabled {\n @include list-primary-text-ink-color($color, $query);\n @include list-secondary-text-ink-color($color, $query);\n @include list-overline-text-ink-color($color, $query);\n @include _item-icon-ink-color($color, $query: $query);\n @include item-meta-text-ink-color($color, $query);\n }\n}\n\n@mixin list-disabled-opacity($opacity, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--disabled {\n .mdc-list-item__start,\n .mdc-list-item__content,\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(opacity, $opacity);\n }\n }\n }\n}\n\n@mixin group-subheader-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-deprecated-list-group__subheader {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n///\n/// Sets shape radius (rounded) to single line list variant.\n///\n/// @param {Number | List} $radius Radius size in `px` or percentage. It can be 4 value corner or single radius.\n/// Set to `50%` for rounded shape.\n/// @param {Boolean} $rtl-reflexive Set to true to flip border radius in RTL context. Defaults to `false`.\n/// @param {Number} $density-scale Density scale of single line list. Set this only when custom density is applied.\n/// Defaults to `$mdc-deprecated-list-single-line-density-scale`.\n///\n/// @access public\n///\n@mixin one-line-list-radius(\n $radius,\n $rtl-reflexive: false,\n $density-scale: variables.$one-line-item-density-scale,\n $query: feature-targeting.all()\n) {\n .mdc-list-item--with-one-line {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$one-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$one-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$one-line-item-taller-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n }\n}\n\n@mixin two-line-list-radius(\n $radius,\n $rtl-reflexive: false,\n $density-scale: variables.$two-line-item-density-scale,\n $query: feature-targeting.all()\n) {\n .mdc-list-item--with-two-lines {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$two-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch,\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$two-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n }\n}\n\n@mixin three-line-list-radius(\n $radius,\n $rtl-reflexive: false,\n $density-scale: variables.$three-line-item-density-scale,\n $query: feature-targeting.all()\n) {\n .mdc-list-item--with-three-lines {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$three-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n}\n\n@mixin divider-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-divider {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(background-color, $color);\n }\n }\n}\n\n@mixin divider-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n .mdc-list-divider {\n @include feature-targeting.targets($feat-structure) {\n @include theme.property(height, $height);\n }\n }\n}\n\n@mixin divider-leading-inset($inset, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-divider--with-leading-inset {\n @include feature-targeting.targets($feat-structure) {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, $inset, auto);\n }\n }\n}\n\n@mixin divider-trailing-inset($inset, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-divider--with-trailing-inset {\n @include feature-targeting.targets($feat-structure) {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, auto, $inset);\n }\n }\n}\n\n// The public density mixins apply the appropriate density styles regardless of\n// the item's start contents.\n@mixin one-line-item-density(\n $density-scale,\n $exclude-variants: false,\n $query: feature-targeting.all()\n) {\n @include _one-line-item-density($density-scale, $query: $query);\n\n @if not $exclude-variants {\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch {\n @include _one-line-item-tall-density($density-scale, $query: $query);\n }\n\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include _one-line-item-taller-density($density-scale, $query: $query);\n }\n }\n}\n\n@mixin two-line-item-density($density-scale, $query: feature-targeting.all()) {\n @include _two-line-item-density($density-scale, $query: $query);\n\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch,\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include _two-line-item-tall-density($density-scale, $query: $query);\n }\n}\n\n@mixin three-line-item-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n @include _three-line-item-density($density-scale, $query: $query);\n}\n\n//\n// Private\n//\n\n// Mixins that apply baseline height for one-, two-, and three- line item\n// container heights. This mixin calls the density mixins so that the styles\n// can be overwritten by future density mixin calls.\n@mixin _list-item-baseline-height($query: feature-targeting.all()) {\n @include _one-line-item-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n\n @include _two-line-item-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n\n @include _three-line-item-density(\n variables.$three-line-item-density-scale,\n $query: $query\n );\n}\n\n@mixin _tall-list-item-baseline-height($query: feature-targeting.all()) {\n @include _one-line-item-tall-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n @include _two-line-item-tall-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n}\n\n// The private density mixins allow density properties to be overridden\n// individually to avoid increasing specificity.\n\n@mixin _one-line-item-density($density-scale, $query: feature-targeting.all()) {\n $height: density-functions.prop-value(\n $density-config: variables.$one-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include one-line-item-height($height, $query: $query);\n}\n\n@mixin _one-line-item-tall-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$one-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include one-line-item-height($height, $query: $query);\n}\n\n@mixin _one-line-item-taller-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$one-line-item-taller-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include one-line-item-height($height, $query: $query);\n}\n\n@mixin _two-line-item-density($density-scale, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n $height: density-functions.prop-value(\n $density-config: variables.$two-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include two-line-item-height($height, $query: $query);\n\n @if ($density-scale and $density-scale != 0) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .mdc-list-item__primary-text,\n .mdc-list-item__secondary-text {\n margin-top: 0px;\n margin-bottom: 0px;\n line-height: 1.4;\n &::before,\n &::after {\n display: none;\n }\n }\n }\n }\n}\n\n@mixin _two-line-item-tall-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$two-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include two-line-item-height($height, $query: $query);\n}\n\n@mixin _three-line-item-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$three-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include three-line-item-height($height, $query: $query);\n}\n\n// Split the list-base mixin into two sub-mixins, one holding the\n// structural/static styles (static-list-base) and the other holding styles\n// that are themable (typography-list-base). However, the existing list-base\n// mixin need to be preserved as Angular calls this mixin for autocomplete\n// base styling.\n@mixin _typography-list-base($query: feature-targeting.all()) {\n $feat-typography: feature-targeting.create-target($query, typography);\n @include typography.typography(subtitle1, $query);\n @include feature-targeting.targets($feat-typography) {\n // According to the mocks and stickersheet, the line-height is\n // adjusted to 24px for text content, same as for body1.\n /* @alternate */\n line-height: map.get(map.get(typography.$styles, body1), line-height);\n }\n}\n\n@mixin _static-list-base($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n margin: 0;\n padding: 8px 0;\n list-style-type: none;\n\n &:focus // lint-disable-focus-psuedo-selector\n {\n outline: none;\n }\n }\n}\n\n@mixin list-base($query: feature-targeting.all()) {\n @include _typography-list-base($query: $query);\n @include _static-list-base($query: $query);\n}\n\n@mixin item-base($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: flex-start;\n overflow: hidden;\n padding: 0;\n\n &:focus // lint-disable-focus-psuedo-selector\n {\n outline: none;\n }\n }\n}\n\n@mixin _item-interactive-ripple($query: feature-targeting.all()) {\n @include ripple.surface(\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple.radius-bounded(\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple-theme.states(\n theme-color.prop-value(on-surface),\n false,\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple-theme.states-activated(\n primary,\n false,\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple-theme.states-selected(\n primary,\n false,\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n\n #{variables.$ripple-target} {\n @include ripple.surface-styles($query: $query);\n @include ripple.target-common($query: $query);\n }\n}\n\n@mixin _two-line-item-text-baseline($query: feature-targeting.all()) {\n @include _two-line-item-primary-text-baseline(32px, 20px, $query: $query);\n @include _two-line-item-overline-text-baseline(28px, 20px, $query: $query);\n @include _two-line-item-meta-text-baseline($top: 32px, $query: $query);\n}\n\n@mixin _two-line-item-primary-text-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__primary-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _three-line-item-primary-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__primary-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _two-line-item-overline-text-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__overline-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _three-line-item-overline-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__overline-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _multi-line-item-end-text-baseline($query: feature-targeting.all()) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__end {\n @include typography.text-baseline(\n $display: block,\n $top: 28px,\n $query: $query\n );\n }\n }\n\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__end {\n @include typography.text-baseline(\n $display: block,\n $top: 28px,\n $query: $query\n );\n }\n }\n}\n\n@mixin _two-line-item-meta-text-baseline(\n $top,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-two-lines {\n &.mdc-list-item--with-trailing-meta {\n .mdc-list-item__end {\n @include typography.text-baseline(\n $display: block,\n $top: $top,\n $query: $query\n );\n }\n }\n }\n}\n\n@mixin item-meta-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n &.mdc-list-item--with-trailing-meta {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n }\n}\n\n@mixin _item-icon-ink-color(\n $color,\n $leading-only: false,\n $query: feature-targeting.all()\n) {\n $feat-color: feature-targeting.create-target($query, color);\n\n &.mdc-list-item--with-leading-icon {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n }\n\n @if (not $leading-only) {\n &.mdc-list-item--with-trailing-icon {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n }\n }\n}\n\n@mixin _high-contrast-mode-border-color($query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n .mdc-list-divider::after {\n @include feature-targeting.targets($feat-color) {\n // Color ensures border is shown, but will be overridden by the browser.\n @include theme.property(border-bottom-color, white);\n }\n }\n}\n\n@mixin _high-contrast-mode($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include dom-mixins.forced-colors-mode {\n .mdc-list-divider::after {\n @include feature-targeting.targets($feat-structure) {\n content: '';\n display: block;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n }\n }\n }\n}\n\n@mixin _list-group-subheader-margin($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n $mdc-list-subheader-virtual-height: 3rem;\n $mdc-list-subheader-leading: map.get(\n map.get(typography.$styles, body1),\n line-height\n );\n $mdc-list-subheader-margin: calc(\n (#{$mdc-list-subheader-virtual-height} - #{$mdc-list-subheader-leading}) / 2\n );\n\n @include feature-targeting.targets($feat-structure) {\n margin: $mdc-list-subheader-margin variables.$side-padding;\n }\n}\n","@use '@material/button/button-text-theme' as mdc-button-text-theme;\n@use '@material/button/button-filled-theme' as mdc-button-filled-theme;\n@use '@material/button/button-protected-theme' as mdc-button-protected-theme;\n@use '@material/button/button-outlined-theme' as mdc-button-outlined-theme;\n\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/filled-button' as tokens-mdc-filled-button;\n@use '../core/tokens/m2/mat/filled-button' as tokens-mat-filled-button;\n@use '../core/tokens/m2/mdc/outlined-button' as tokens-mdc-outlined-button;\n@use '../core/tokens/m2/mat/outlined-button' as tokens-mat-outlined-button;\n@use '../core/tokens/m2/mdc/protected-button' as tokens-mdc-protected-button;\n@use '../core/tokens/m2/mat/protected-button' as tokens-mat-protected-button;\n@use '../core/tokens/m2/mdc/text-button' as tokens-mdc-text-button;\n@use '../core/tokens/m2/mat/text-button' as tokens-mat-text-button;\n@use '../core/style/sass-utils';\n\n@mixin _text-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-text-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-text-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-text-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-text-button.get-color-tokens($theme)\n );\n\n @include mdc-button-text-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix, $mat-tokens);\n}\n\n@mixin _filled-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-filled-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-filled-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-filled-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-filled-button.get-color-tokens($theme)\n );\n\n @include mdc-button-filled-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix, $mat-tokens);\n}\n\n@mixin _protected-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-protected-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-protected-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-protected-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-protected-button.get-color-tokens($theme)\n );\n\n @include mdc-button-protected-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix, $mat-tokens);\n}\n\n@mixin _outlined-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-outlined-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-outlined-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-outlined-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-outlined-button.get-color-tokens($theme)\n );\n\n @include mdc-button-outlined-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix, $mat-tokens);\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-text-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-text-button.$prefix, $options...);\n $mdc-protected-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-protected-button.$prefix, $options...);\n $mdc-filled-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-filled-button.$prefix, $options...);\n $mdc-outlined-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-outlined-button.$prefix, $options...);\n $mat-text-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-text-button.$prefix, $options...);\n $mat-protected-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-protected-button.$prefix, $options...);\n $mat-filled-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-filled-button.$prefix, $options...);\n $mat-outlined-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-outlined-button.$prefix, $options...);\n @include mdc-button-text-theme.theme($mdc-text-button-tokens);\n @include mdc-button-protected-theme.theme($mdc-protected-button-tokens);\n @include mdc-button-filled-theme.theme($mdc-filled-button-tokens);\n @include mdc-button-outlined-theme.theme($mdc-outlined-button-tokens);\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix, $mat-text-button-tokens);\n @include token-utils.create-token-values(\n tokens-mat-protected-button.$prefix, $mat-protected-button-tokens);\n @include token-utils.create-token-values(\n tokens-mat-filled-button.$prefix, $mat-filled-button-tokens);\n @include token-utils.create-token-values(\n tokens-mat-outlined-button.$prefix, $mat-outlined-button-tokens);\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-button.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-button-text-theme.theme(\n tokens-mdc-text-button.get-unthemable-tokens());\n @include mdc-button-filled-theme.theme(\n tokens-mdc-filled-button.get-unthemable-tokens());\n @include mdc-button-protected-theme.theme(\n tokens-mdc-protected-button.get-unthemable-tokens());\n @include mdc-button-outlined-theme.theme(\n tokens-mdc-outlined-button.get-unthemable-tokens());\n\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix,\n tokens-mat-text-button.get-unthemable-tokens());\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix,\n tokens-mat-filled-button.get-unthemable-tokens());\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix,\n tokens-mat-protected-button.get-unthemable-tokens());\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix,\n tokens-mat-outlined-button.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include _text-button-variant($theme, null);\n @include _filled-button-variant($theme, null);\n @include _protected-button-variant($theme, null);\n @include _outlined-button-variant($theme, null);\n }\n\n .mat-mdc-button {\n &.mat-primary {\n @include _text-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _text-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _text-button-variant($theme, warn);\n }\n }\n\n .mat-mdc-unelevated-button {\n &.mat-primary {\n @include _filled-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _filled-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _filled-button-variant($theme, warn);\n }\n }\n\n .mat-mdc-raised-button {\n &.mat-primary {\n @include _protected-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _protected-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _protected-button-variant($theme, warn);\n }\n }\n\n .mat-mdc-outlined-button {\n &.mat-primary {\n @include _outlined-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _outlined-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _outlined-button-variant($theme, warn);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-button-text-theme.theme(\n tokens-mdc-text-button.get-typography-tokens($theme));\n @include mdc-button-filled-theme.theme(\n tokens-mdc-filled-button.get-typography-tokens($theme));\n @include mdc-button-outlined-theme.theme(\n tokens-mdc-outlined-button.get-typography-tokens($theme));\n @include mdc-button-protected-theme.theme(\n tokens-mdc-protected-button.get-typography-tokens($theme));\n\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix,\n tokens-mat-text-button.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix,\n tokens-mat-filled-button.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix,\n tokens-mat-protected-button.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix,\n tokens-mat-outlined-button.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-button-text-theme.theme(\n tokens-mdc-text-button.get-density-tokens($theme));\n @include mdc-button-filled-theme.theme(\n tokens-mdc-filled-button.get-density-tokens($theme));\n @include mdc-button-outlined-theme.theme(\n tokens-mdc-outlined-button.get-density-tokens($theme));\n @include mdc-button-protected-theme.theme(\n tokens-mdc-protected-button.get-density-tokens($theme));\n\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix,\n tokens-mat-text-button.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix,\n tokens-mat-filled-button.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix,\n tokens-mat-protected-button.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix,\n tokens-mat-outlined-button.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-button') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n","@use 'sass:map';\n@use 'sass:math';\n@use '@material/density/functions' as mdc-density-functions;\n@use '@material/icon-button/icon-button-theme' as mdc-icon-button-theme;\n@use '../core/tokens/m2/mdc/icon-button' as tokens-mdc-icon-button;\n@use '../core/tokens/m2/mat/icon-button' as tokens-mat-icon-button;\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n\n\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-icon-button-theme.theme(tokens-mdc-icon-button.get-unthemable-tokens());\n }\n }\n}\n\n@mixin _icon-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-icon-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-icon-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-icon-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-icon-button.get-color-tokens($theme)\n );\n\n @include mdc-icon-button-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-icon-button.$prefix, $mat-tokens);\n}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include _icon-button-variant($theme, null);\n\n .mat-mdc-icon-button {\n &.mat-primary {\n @include _icon-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _icon-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _icon-button-variant($theme, warn);\n }\n }\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-icon-button.$prefix,\n tokens-mat-icon-button.get-typography-tokens($theme));\n }\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $icon-size: 24px;\n $density-scale: inspection.get-theme-density($theme);\n // Manually apply the expected density theming, and include the padding\n // as it was applied before\n $calculated-size: mdc-density-functions.prop-value(\n $density-config: (\n size: (\n default: 48px,\n maximum: 48px,\n minimum: 28px,\n ),\n ),\n $density-scale: $density-scale,\n $property-name: size,\n );\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-icon-button.$prefix,\n tokens-mat-icon-button.get-density-tokens($theme));\n }\n\n // Use `mat-mdc-button-base` to increase the specificity over the button's structural styles.\n .mat-mdc-icon-button.mat-mdc-button-base {\n // Match the styles that used to be present. This is necessary for backwards\n // compat to match the previous implementations selector count (two classes).\n @include mdc-icon-button-theme.theme((\n state-layer-size: $calculated-size,\n ));\n\n // TODO: Switch calculated-size to \"var(--mdc-icon-button-state-layer-size)\"\n // Currently fails validation because the variable is \"undefined\"\n // in the sass stack.\n // TODO: Switch icon-size to \"var(--mdc-icon-button-icon-size)\". Currently\n // fails validation because the variable is \"undefined\" in the sass stack.\n width: var(--mdc-icon-button-state-layer-size);\n height: var(--mdc-icon-button-state-layer-size);\n padding: math.div($calculated-size - $icon-size, 2);\n }\n }\n}\n\n@mixin theme($theme) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-icon-button') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme));\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @if ($tokens != ()) {\n @include mdc-icon-button-theme.theme(map.get($tokens, tokens-mdc-icon-button.$prefix));\n @include token-utils.create-token-values(\n tokens-mat-icon-button.$prefix, map.get($tokens, tokens-mat-icon-button.$prefix));\n }\n}\n","@use '@material/fab/fab-theme' as mdc-fab-theme;\n@use '@material/fab/fab-small-theme' as mdc-fab-small-theme;\n@use '@material/fab/extended-fab-theme' as mdc-extended-fab-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/m2/mdc/fab' as tokens-mdc-fab;\n@use '../core/tokens/m2/mdc/fab-small' as tokens-mdc-fab-small;\n@use '../core/tokens/m2/mdc/extended-fab' as tokens-mdc-extended-fab;\n@use '../core/tokens/m2/mat/fab' as tokens-mat-fab;\n@use '../core/tokens/m2/mat/fab-small' as tokens-mat-fab-small;\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-fab.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-fab-theme.theme(tokens-mdc-fab.get-unthemable-tokens());\n @include mdc-fab-small-theme.theme(tokens-mdc-fab-small.get-unthemable-tokens());\n @include mdc-extended-fab-theme.theme(\n tokens-mdc-extended-fab.get-unthemable-tokens()\n );\n }\n }\n}\n\n@mixin _fab-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-fab.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-fab.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-fab.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-fab.get-color-tokens($theme)\n );\n\n @include mdc-fab-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-fab.$prefix, $mat-tokens);\n}\n\n@mixin _fab-small-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-fab-small.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-fab-small.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-fab-small.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-fab-small.get-color-tokens($theme)\n );\n\n @include mdc-fab-small-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix, $mat-tokens);\n}\n\n/// Outputs color theme styles for the mat-fab.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the fab: primary, secondary, or tertiary\n/// (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include _fab-variant($theme, null);\n @include _fab-small-variant($theme, null);\n @include mdc-extended-fab-theme.theme(tokens-mdc-extended-fab.get-color-tokens($theme));\n\n .mat-mdc-fab {\n &.mat-primary {\n @include _fab-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _fab-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _fab-variant($theme, warn);\n }\n }\n\n .mat-mdc-mini-fab {\n &.mat-primary {\n @include _fab-small-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _fab-small-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _fab-small-variant($theme, warn);\n }\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-fab.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-extended-fab-theme.theme(tokens-mdc-extended-fab.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-fab.$prefix,\n tokens-mat-fab.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix,\n tokens-mat-fab-small.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-fab.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-fab.$prefix,\n tokens-mat-fab.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix,\n tokens-mat-fab-small.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the fab: primary, secondary, or tertiary\n/// (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-fab') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-extended-fab-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mdc-extended-fab.$prefix, $options...);\n $mdc-fab-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-fab.$prefix, $options...);\n $mdc-fab-small-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-fab-small.$prefix,\n $options...);\n $mat-fab-tokens: token-utils.get-tokens-for($tokens, tokens-mat-fab.$prefix, $options...);\n $mat-fab-small-tokens: token-utils.get-tokens-for($tokens, tokens-mat-fab-small.$prefix,\n $options...);\n @include mdc-extended-fab-theme.theme($mdc-extended-fab-tokens);\n @include mdc-fab-theme.theme($mdc-fab-tokens);\n @include mdc-fab-small-theme.theme($mdc-fab-small-tokens);\n @include token-utils.create-token-values(tokens-mat-fab.$prefix, $mat-fab-tokens);\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix, $mat-fab-small-tokens);\n}\n","@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mdc/circular-progress' as tokens-mdc-circular-progress;\n@use '@material/circular-progress/circular-progress-theme' as mdc-circular-progress-theme;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-circular-progress-theme.theme(\n tokens-mdc-circular-progress.get-unthemable-tokens()\n );\n }\n }\n}\n\n/// Outputs color theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the spinner: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n $mdc-circular-progress-color-tokens: tokens-mdc-circular-progress.get-color-tokens($theme);\n\n @include sass-utils.current-selector-or-root() {\n @include mdc-circular-progress-theme.theme($mdc-circular-progress-color-tokens);\n\n .mat-accent {\n $color: inspection.get-theme-color($theme, accent);\n @include mdc-circular-progress-theme.theme((active-indicator-color: $color));\n }\n\n .mat-warn {\n $color: inspection.get-theme-color($theme, warn);\n @include mdc-circular-progress-theme.theme((active-indicator-color: $color));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n}\n\n/// Outputs density theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the spinner: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-spinner') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-circular-progress-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-circular-progress.$prefix, $options...);\n @include mdc-circular-progress-theme.theme($mdc-circular-progress-tokens);\n}\n","@use 'sass:color';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mat/badge' as tokens-mat-badge;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-badge.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the badge: primary, secondary, tertiary,\n/// or error (If not specified, default error color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.get-color-tokens($theme));\n }\n\n .mat-badge-accent {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-badge-warn {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {}\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the badge: primary, secondary, tertiary,\n/// or error (If not specified, default error color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-badge') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-badge-tokens: token-utils.get-tokens-for($tokens, tokens-mat-badge.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-badge.$prefix, $mat-badge-tokens);\n}\n","@use 'sass:color';\n@use 'sass:map';\n@use '../core/tokens/m2/mat/datepicker' as tokens-mat-datepicker;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n@use '../core/typography/typography';\n@use '../button/icon-button-theme';\n\n// TODO(crisbeto): these variables aren't used anymore and should be removed.\n$selected-today-box-shadow-width: 1px;\n$selected-fade-amount: 0.6;\n$range-fade-amount: 0.2;\n$today-fade-amount: 0.2;\n$calendar-body-font-size: 13px !default;\n$calendar-weekday-table-font-size: 11px !default;\n\n@mixin _calendar-color($theme, $palette-name) {\n $palette-color: inspection.get-theme-color($theme, $palette-name);\n $range-color: tokens-mat-datepicker.private-get-range-background-color($palette-color);\n $range-tokens: tokens-mat-datepicker.get-range-color-tokens($range-color);\n $calendar-tokens:\n tokens-mat-datepicker.private-get-calendar-color-palette-color-tokens($theme, $palette-name);\n\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n map.merge($calendar-tokens, $range-tokens));\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-datepicker.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n tokens-mat-datepicker.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the main selection: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n tokens-mat-datepicker.get-color-tokens($theme));\n }\n\n .mat-datepicker-content {\n &.mat-accent {\n @include _calendar-color($theme, accent);\n }\n\n &.mat-warn {\n @include _calendar-color($theme, warn);\n }\n }\n\n .mat-datepicker-toggle-active {\n &.mat-accent {\n $accent-tokens:\n tokens-mat-datepicker.private-get-toggle-color-palette-color-tokens($theme, accent);\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $accent-tokens);\n }\n\n &.mat-warn {\n $warn-tokens:\n tokens-mat-datepicker.private-get-toggle-color-palette-color-tokens($theme, warn);\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $warn-tokens);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n tokens-mat-datepicker.get-typography-tokens($theme));\n }\n }\n}\n\n@mixin date-range-colors(\n $range-color,\n $comparison-color: tokens-mat-datepicker.$private-default-comparison-color,\n $overlap-color: tokens-mat-datepicker.$private-default-overlap-color,\n $overlap-selected-color:\n tokens-mat-datepicker.private-get-default-overlap-selected-color($overlap-color)) {\n $tokens: tokens-mat-datepicker.get-range-color-tokens(\n $range-color: $range-color,\n $comparison-color: $comparison-color,\n $overlap-color: $overlap-color,\n $overlap-selected-color: $overlap-selected-color,\n );\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $tokens);\n }\n}\n\n/// Outputs density theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n // TODO(crisbeto): move this into the structural styles\n // once the icon button density is switched to tokens.\n\n // Regardless of the user-passed density, we want the calendar\n // previous/next buttons to remain at density -2\n .mat-calendar-controls {\n @include icon-button-theme.density(-2);\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the main selection: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-datepicker') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-datepicker-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-datepicker.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $mat-datepicker-tokens);\n}\n","@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/m2/mat/icon' as tokens-mat-icon;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n@mixin _palette-colors($theme, $palette-name) {\n $color: inspection.get-theme-color($theme, $palette-name, text);\n $tokens: tokens-mat-icon.private-get-icon-color-tokens($color);\n @include token-utils.create-token-values(tokens-mat-icon.$prefix, $tokens);\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-icon.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {}\n}\n\n/// Outputs color theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the icon: primary, secondary, tertiary, or error\n/// (If not specified, default neutral color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-icon.$prefix,\n tokens-mat-icon.get-color-tokens($theme));\n }\n\n .mat-icon {\n &.mat-primary {\n @include _palette-colors($theme, primary);\n }\n\n &.mat-accent {\n @include _palette-colors($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-colors($theme, warn);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {}\n}\n\n/// Outputs density theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {}\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the icon: surface, primary, secondary, tertiary,\n/// or error (If not specified, default surface color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-icon') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-icon-tokens: token-utils.get-tokens-for($tokens, tokens-mat-icon.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-icon.$prefix, $mat-icon-tokens);\n}\n","@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mat/stepper' as tokens-mat-stepper;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for mat-stepper.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {}\n}\n\n/// Outputs color theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the stepper: primary, secondary,\n/// tertiary, or error (If not specified, primary color values will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.get-color-tokens($theme));\n\n .mat-step-header.mat-accent {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-step-header.mat-warn {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the stepper: primary, secondary,\n/// tertiary, or error (If not specified, primary color values will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-stepper') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @if ($tokens != ()) {\n $mat-stepper-tokens: token-utils.get-tokens-for(\n $tokens,\n tokens-mat-stepper.$prefix,\n $options...\n );\n @include token-utils.create-token-values(\n tokens-mat-stepper.$prefix, $mat-stepper-tokens);\n }\n}\n","@use 'sass:map';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mat/toolbar' as tokens-mat-toolbar;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n@mixin _palette-styles($theme, $palette-name) {\n @include token-utils.create-token-values(\n tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.private-get-color-palette-color-tokens(\n $background-color: inspection.get-theme-color($theme, $palette-name),\n $text-color: inspection.get-theme-color($theme, $palette-name, default-contrast)\n )\n );\n}\n\n@mixin base($theme) {}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.get-color-tokens($theme));\n }\n\n .mat-toolbar {\n &.mat-primary {\n @include _palette-styles($theme, primary);\n }\n\n &.mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($theme, warn);\n }\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n // TODO(mmalerba): Stop calling this and resolve resulting screen diffs.\n $theme: inspection.private-get-typography-back-compat-theme($theme);\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.get-typography-tokens($theme));\n }\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.get-density-tokens($theme));\n }\n }\n}\n\n@mixin theme($theme) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-toolbar') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme));\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @if ($tokens != ()) {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n map.get($tokens, tokens-mat-toolbar.$prefix));\n }\n}\n"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]} \ No newline at end of file +{"version":3,"file":"styles.css","mappings":"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kB/oBM;EnB2BF;ACwnBJ;;AkBnpBM;EnB2BF;AC4nBJ;;AkBvpBM;EnB2BF;ACgoBJ;;AkB3pBM;EnB2BF;ACooBJ;;AkB/pBM;EnB2BF;ACwoBJ;;AkBnqBM;EnB2BF;AC4oBJ;;AkBvqBM;EnB2BF;ACgpBJ;;AkB3qBM;EnB2BF;ACopBJ;;AkB/qBM;EnB2BF;ACwpBJ;;AkBnrBM;EnB2BF;AC4pBJ;;AkBvrBM;EnB2BF;ACgqBJ;;AkB3rBM;EnB2BF;ACoqBJ;;AkB/rBM;EnB2BF;ACwqBJ;;AkBnsBM;EnB2BF;AC4qBJ;;AkBvsBM;EnB2BF;ACgrBJ;;AkB3sBM;EnB2BF;ACorBJ;;AkB/sBM;EnB2BF;ACwrBJ;;AkBntBM;EnB2BF;AC4rBJ;;AkBvtBM;EnB2BF;ACgsBJ;;AkB3tBM;EnB2BF;ACosBJ;;AkB/tBM;EnB2BF;ACwsBJ;;AkBnuBM;EnB2BF;AC4sBJ;;AkBvuBM;EnB2BF;ACgtBJ;;AkB3uBM;EnB2BF;ACotBJ;;AkB/uBM;EnB2BF;ACwtBJ;;AkB1uBI;EACE;AlB6uBN;;AFzxBI;EC6DA;EAAA;EAAA;ACkuBJ;;AF/xBI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;AC2uBJ;;AFxyBI;EC6DA;EAAA;EAAA;ACivBJ;;AmBzxBI;EpBwCA;EAAA;ACsvBJ;AmB3xBM;EpBqCF;EAAA;AC0vBJ;AmB3xBM;EpBiCF;EAAA;AC8vBJ;;AF3zBI;EC6DA;EAAA;ACmwBJ;;AFh0BI;EC6DA;EAAA;ACwwBJ;;AFr0BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACixBJ;;AF90BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC60BJ;;AoBt2BI;ErByBA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu1BJ;;AoBv2BI;ErBgBA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACi2BJ;;AF95BI;EC6DA;EAAA;EAAA;EAAA;EAAA;ACy2BJ;;AFt6BI;EC6DA;AC62BJ;;AF16BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACw3BJ;AqBh6BM;EtBwCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACk4BJ;AqBr6BM;EtBmCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC44BJ;;AFz8BI;EC6DA;ACg5BJ;;AF78BI;EC6DA;EAAA;ACq5BJ;;AFl9BI;EC6DA;ACy5BJ;;AFt9BI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu6BJ;;AFp+BI;EC6DA;EAAA;EAAA;AC66BJ;;AGz+BI;EJ4DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu8BJ;;AGj/BI;EJ0CA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC89BJ;AGhgCQ;EJkCJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACo/BJ;AG/gCQ;EJ2BJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC0gCJ;AG9hCQ;EJoBJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACgiCJ;;AG/gCI;EJjBA;ACoiCJ;;AFjmCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC6kCJ;;AF1oCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EK7BA;AJgpCJ;AI1oCI;ELuBA;ACsnCJ;AIzoCQ;ELmBJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmoCJ;AIjpCQ;ELcJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACgpCJ;;AF7sCI;EC6DA;ACopCJ;;AFjtCI;EC6DA;EAAA;EAAA;AC0pCJ;;AKlsCI;ENwCA;AC8pCJ;AKnsCM;ENqCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4qCJ;AK3sCM;EN+BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC0rCJ;AKntCM;ENyBF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACwsCJ;;AFrwCI;EC6DA;EAAA;AC6sCJ;;AF1wCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmuCJ;;AFhyCI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACyvCJ;AsBhxCI;EvBuBA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACqwCJ;AsBnxCM;EvBcF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACixCJ;;AF90CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC6xCJ;;AF11CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACsyCJ;;AFn2CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACwzCJ;;AFr3CI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC40CJ;;AM72CI;;EPiCA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACy1CJ;;AMp3CM;;EP2BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACs2CJ;;AM13CM;;EPoBF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACm3CJ;;AMj4CI;EPcA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu4CJ;;AMl5CI;EPWA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC25CJ;;AMn6CI;EPQA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+6CJ;;AuBrtBE;;ExB1tBE;ACo7CJ;AuB3CI;;ExBz4CA;ACw7CJ;;AMj7CM;;;EAGE;ANo7CR;;AF3/CI;EC6DA;EAAA;EAAA;EAAA;EAAA;ACs8CJ;;AMv6CI;;EP/BA;AC28CJ;;AMh6CQ;EACE;ANm6CV;AMz5CQ;EACE;AN25CV;;AF/gDI;EC6DA;EAAA;EAAA;EAAA;ACy9CJ;;AFthDI;EC6DA;EAAA;EAAA;AC+9CJ;;AF5hDI;EC6DA;EAAA;EAAA;EAAA;EAAA;ACu+CJ;;AOzgDI;ERkCA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu/CJ;AOthDM;ER+BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACsgDJ;AOjiDM;ER2BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACqhDJ;AO5iDM;ERuBF;EAAA;ACyhDJ;AO5iDM;ERmBF;EAAA;AC6hDJ;AO5iDM;EReF;EAAA;ACiiDJ;;AOhgDI;ERjCA;ACqiDJ;;AFlmDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+iDJ;;AF5mDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACokDJ;;AQtmDI;ETkCA;ACwkDJ;AQvmDM;ET+BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC2lDJ;AQtnDM;ET2BF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC8mDJ;;AF3qDI;EC6DA;EAAA;ACmnDJ;;AFhrDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4oDJ;;AFzsDI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC2rDJ;;AwBzmDM;EzBlFF;EAAA;EAAA;ACisDJ;AwB3mDM;EzBtFF;EAAA;EAAA;ACssDJ;AwB5mDM;EzB1FF;EAAA;EAAA;AC2sDJ;;AwB3mDM;EzBhGF;EAAA;EAAA;EAAA;ACktDJ;AwB9mDM;EzBpGF;EAAA;EAAA;EAAA;ACwtDJ;AwBhnDM;EzBxGF;EAAA;EAAA;EAAA;AC8tDJ;;AwBhnDM;EzB9GF;EAAA;EAAA;EAAA;ACquDJ;AwBnnDM;EzBlHF;EAAA;EAAA;EAAA;AC2uDJ;AwBrnDM;EzBtHF;EAAA;EAAA;EAAA;ACivDJ;;AwBrnDM;EzB5HF;EAAA;EAAA;EAAA;ACwvDJ;AwBxnDM;EzBhIF;EAAA;EAAA;EAAA;AC8vDJ;AwB1nDM;EzBpIF;EAAA;EAAA;EAAA;ACowDJ;;AFj0DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+wDJ;;AF50DI;EC6DA;ACmxDJ;;AFh1DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC8xDJ;AyB3zDQ;E1B6BJ;EAAA;EAAA;ACmyDJ;AyB5zDQ;E1ByBJ;EAAA;EAAA;ACwyDJ;AyB7zDQ;E1BqBJ;EAAA;EAAA;AC6yDJ;;AF12DI;EC6DA;ACizDJ;;AyBvxDI;E1B1BA;E0BsCE;EACA;EACA;AzBgxDN;;AFr3DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACi0DJ;;AF93DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACu2DJ;A0Br2DQ;E3BFJ;EAAA;EAAA;EAAA;AC62DJ;A0Bv2DQ;E3BNJ;EAAA;EAAA;EAAA;ACm3DJ;A0Bz2DQ;E3BVJ;EAAA;EAAA;EAAA;ACy3DJ;A0Bz2DQ;E3BhBJ;EAAA;EAAA;EAAA;AC+3DJ;A0B32DQ;E3BpBJ;EAAA;EAAA;EAAA;ACq4DJ;A0B72DQ;E3BxBJ;EAAA;EAAA;EAAA;AC24DJ;;AFx8DI;EC6DA;EAAA;ACg5DJ;;AF78DI;EC6DA;ACo5DJ;;AFj9DI;EC6DA;EAAA;EAAA;AC05DJ;;AFv9DI;EC6DA;AC85DJ;;AF39DI;EC6DA;EAAA;EAAA;EAAA;ACq6DJ;;AFl+DI;EC6DA;EAAA;EAAA;AC26DJ;;AFx+DI;EC6DA;EAAA;ACg7DJ;;AF7+DI;EC6DA;ACo7DJ;A2B19DM;E5BsCF;ACu7DJ;A2Bx9DM;E5BiCF;AC07DJ;;AFv/DI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC68DJ;;AF1gEI;EC6DA;EAAA;EAAA;EAAA;ACo9DJ;;A4B3/DI;E7BuCA;EAAA;ACy9DJ;;A4B3/DI;E7BkCA;EAAA;AC89DJ;;AF3hEI;EC6DA;ACk+DJ;;AF/hEI;EC6DA;EAAA;ACu+DJ;;AFpiEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACg/DJ;;AF7iEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACogEJ;;AFjkEI;EC6DA;ACwgEJ;;AFrkEI;EC6DA;EAAA;EAAA;EAAA;AC+gEJ;;AF5kEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC+iEJ;;A6BhkEM;E9BiBF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4jEJ;A6BzkEM;E9BaF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACwkEJ;;A6B/kEM;E9BOF;AC4kEJ;A6B7kEM;E9BCF;AC+kEJ;;A6B3hEI;E9BpDA;ACmlEJ;AyBzjEI;E1B1BA;E0BsCE;EACA;EACA;AzBijEN;;AFtpEI;EC6DA;AC6lEJ;;AF1pEI;EC6DA;ACimEJ;;AF9pEI;EC6DA;EAAA;EAAA;ACumEJ;;AFpqEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmnEJ;;AFhrEI;EC6DA;EAAA;ACwnEJ;;AFrrEI;EC6DA;AC4nEJ;;A8BnqEM;E/BuCF;ACgoEJ;A8BnqEM;E/BmCF;ACmoEJ;A8BlqEM;E/B+BF;ACsoEJ;;AFnsEI;EC6DA;EAAA;EAAA;AC4oEJ;;AFzsEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;ACqpEJ;;AFltEI;EC6DA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC0qEJ;A+BxtEM;EhC8CF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ACmrEJ;A+B5tEM;EhCyCF;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AC4rEJ;;AFzvEI;EC6DA;ACgsEJ;;AF7vEI;EC6DA;ACosEJ;;AFjwEI;EC6DA;EAAA;ACysEJ;;AgCvvEM;EjC8CF;EAAA;AC8sEJ;AgCxvEM;EjC0CF;EAAA;ACktEJ;AgCxvEM;EjCsCF;EAAA;ACstEJ;;AFnxEI;EC6DA;EAAA;AC2tEJ;;AFxxEI;EC6DA;EAAA;ACguEJ;;AF7xEI;EC6DA;ACouEJ;;AA5wEA;AAEA;EACE;EACA;EACA;EACA;AA8wEF;AA3wEA;AAEA;;EAEE;AA4wEF;;AAzwEA;EACE;EACA;AA4wEF;;AAzwEA;EACE;EACA;EAEA;AA2wEF;AA1wEE;EACE;AA4wEJ;;AAxwEA;EACE;EACA;EACA;AA2wEF;;AAxwEA;EACE;EACA;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;EACA;EACA;EACA;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;EACE;EACA;AA2wEF;;AAxwEA;EACE;AA2wEF;;AAxwEA;AAEA;EACE;EACA;AA0wEF;;AAvwEA;AAGE;EACE;EACA;EACA;AAwwEJ;AAtwEE;EACE;EACA;EACA;AAwwEJ;AAtwEE;EACE;EACA;EACA;AAwwEJ;AAtwEE;EACE;EACA;EACA;EACA;AAwwEJ;;AApwEA;AAEA;EACE;EACA;AAswEF;;AAnwEA;EACE;AAswEF;;AAnwEA;EACE;EACA;EACA;AAswEF;;AAnwEA;;EAAA;AAIA;;EAAA;AAIA;EACE;EACA;EACA;EAEA;EACA;AAmwEF;;AAhwEA;EACE;EACA;EAEA;EACA;EAEA;AAiwEF;;AA9vEA;EACE;AAiwEF;;AA9vEA;EACE;AAiwEF;;AA9vEA;;EAEE;EACA;EAEA;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;EACA;EACA;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;;EAEE;EACA;EACA;EACA;AAgwEF;;AA7vEA;;;;EAAA;AAKA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;EACE;AAgwEF;;AA7vEA;;EAAA;AAIA;EACE;EACA;AA+vEF;;AA5vEA;;EAEE;EACA;EACA;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;;;CAAA;AAIA;EACE;AA+vEF;;AA5vEA;;EAAA;AAGA;EACE;AA+vEF;;AA5vEA;;EAAA;AAGA;;;;;;EAME;EACA;AA+vEF;;AA5vEA;;EAAA;AAGA;EACE;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;EACA;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;;;;EAIE;EACA;EACA;AA+vEF;;AA5vEA;;EAEE;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF;;AA5vEA;EACE;EACA;AA+vEF,C","sources":["./node_modules/diagram-js/assets/diagram-js.css","./node_modules/bpmn-js/dist/assets/bpmn-font/css/bpmn.css","./node_modules/material-icons/iconfont/material-icons.css","./node_modules/@angular/material/core/style/_sass-utils.scss","./node_modules/@material/theme/_css.scss","./src/styles.scss","./node_modules/@angular/material/core/typography/_typography.scss","./node_modules/@angular/material/core/typography/_typography-utils.scss","./node_modules/@angular/material/chips/_chips-theme.scss","./node_modules/@angular/material/slide-toggle/_slide-toggle-theme.scss","./node_modules/@angular/material/radio/_radio-theme.scss","./node_modules/@angular/material/list/_list-theme.scss","./node_modules/@angular/material/tabs/_tabs-theme.scss","./node_modules/@angular/material/checkbox/_checkbox-theme.scss","./node_modules/@angular/material/core/ripple/_ripple.scss","./node_modules/@angular/cdk/a11y/_index.scss","./node_modules/@angular/cdk/overlay/_index.scss","./node_modules/@angular/cdk/text-field/_index.scss","./node_modules/@angular/material/core/focus-indicators/_private.scss","./node_modules/@angular/material/core/style/_layout-common.scss","./node_modules/@angular/material/core/_core.scss","./node_modules/@angular/material/core/option/_option-theme.scss","./node_modules/@angular/material/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss","./node_modules/@angular/material/core/_core-theme.scss","./node_modules/@angular/material/progress-bar/_progress-bar-theme.scss","./node_modules/@angular/material/form-field/_form-field-theme.scss","./node_modules/@angular/material/select/_select-theme.scss","./node_modules/@angular/material/slider/_slider-theme.scss","./node_modules/@material/list/_list.scss","./node_modules/@angular/material/button/_button-theme.scss","./node_modules/@angular/material/button/_icon-button-theme.scss","./node_modules/@angular/material/button/_fab-theme.scss","./node_modules/@angular/material/progress-spinner/_progress-spinner-theme.scss","./node_modules/@angular/material/badge/_badge-theme.scss","./node_modules/@angular/material/datepicker/_datepicker-theme.scss","./node_modules/@angular/material/icon/_icon-theme.scss","./node_modules/@angular/material/stepper/_stepper-theme.scss","./node_modules/@angular/material/toolbar/_toolbar-theme.scss"],"sourcesContent":["/**\n * color definitions\n */\n.djs-container {\n --color-grey-225-10-15: hsl(225, 10%, 15%);\n --color-grey-225-10-35: hsl(225, 10%, 35%);\n --color-grey-225-10-55: hsl(225, 10%, 55%);\n --color-grey-225-10-75: hsl(225, 10%, 75%);\n --color-grey-225-10-80: hsl(225, 10%, 80%);\n --color-grey-225-10-85: hsl(225, 10%, 85%);\n --color-grey-225-10-90: hsl(225, 10%, 90%);\n --color-grey-225-10-95: hsl(225, 10%, 95%); \n --color-grey-225-10-97: hsl(225, 10%, 97%);\n\n --color-blue-205-100-45: hsl(205, 100%, 45%);\n --color-blue-205-100-45-opacity-30: hsla(205, 100%, 45%, 30%);\n --color-blue-205-100-50: hsl(205, 100%, 50%);\n --color-blue-205-100-95: hsl(205, 100%, 95%);\n\n --color-green-150-86-44: hsl(150, 86%, 44%);\n\n --color-red-360-100-40: hsl(360, 100%, 40%);\n --color-red-360-100-45: hsl(360, 100%, 45%);\n --color-red-360-100-92: hsl(360, 100%, 92%);\n --color-red-360-100-97: hsl(360, 100%, 97%);\n\n --color-white: hsl(0, 0%, 100%);\n --color-black: hsl(0, 0%, 0%); \n --color-black-opacity-05: hsla(0, 0%, 0%, 5%); \n --color-black-opacity-10: hsla(0, 0%, 0%, 10%);\n\n --bendpoint-fill-color: var(--color-blue-205-100-45-opacity-30);\n --bendpoint-stroke-color: var(--color-blue-205-100-50);\n\n --context-pad-entry-background-color: var(--color-white);\n --context-pad-entry-hover-background-color: var(--color-grey-225-10-95);\n\n --element-dragger-color: var(--color-blue-205-100-50);\n --element-hover-outline-fill-color: var(--color-blue-205-100-45);\n --element-selected-outline-stroke-color: var(--color-blue-205-100-50);\n\n --lasso-fill-color: var(--color-black-opacity-05);\n --lasso-stroke-color: var(--color-black);\n\n --palette-entry-color: var(--color-grey-225-10-15);\n --palette-entry-hover-color: var(--color-blue-205-100-45);\n --palette-entry-selected-color: var(--color-blue-205-100-50);\n --palette-separator-color: var(--color-grey-225-10-75);\n --palette-toggle-hover-background-color: var(--color-grey-225-10-55);\n --palette-background-color: var(--color-grey-225-10-97);\n --palette-border-color: var(--color-grey-225-10-75);\n\n --popup-body-background-color: var(--color-white);\n --popup-header-entry-selected-color: var(--color-blue-205-100-50);\n --popup-header-entry-selected-background-color: var(--color-black-opacity-10);\n --popup-header-separator-color: var(--color-grey-225-10-75);\n --popup-background-color: var(--color-grey-225-10-97);\n --popup-border-color: var(--color-grey-225-10-75);\n\n --resizer-fill-color: var(--color-blue-205-100-45-opacity-30);\n --resizer-stroke-color: var(--color-blue-205-100-50);\n\n --search-container-background-color: var(--color-grey-225-10-97);\n --search-container-border-color: var(--color-blue-205-100-50);\n --search-container-box-shadow-color: var(--color-blue-205-100-95);\n --search-container-box-shadow-inset-color: var(--color-grey-225-10-80);\n --search-input-border-color: var(--color-grey-225-10-75);\n --search-result-border-color: var(--color-grey-225-10-75);\n --search-result-highlight-color: var(--color-black);\n --search-result-selected-color: var(--color-blue-205-100-45-opacity-30);\n\n --shape-attach-allowed-stroke-color: var(--color-blue-205-100-50);\n --shape-connect-allowed-fill-color: var(--color-grey-225-10-97);\n --shape-drop-allowed-fill-color: var(--color-grey-225-10-97);\n --shape-drop-not-allowed-fill-color: var(--color-red-360-100-97);\n --shape-resize-preview-stroke-color: var(--color-blue-205-100-50);\n\n --snap-line-stroke-color: var(--color-blue-205-100-45-opacity-30);\n\n --space-tool-crosshair-stroke-color: var(--color-black);\n\n --tooltip-error-background-color: var(--color-red-360-100-97);\n --tooltip-error-border-color: var(--color-red-360-100-45);\n --tooltip-error-color: var(--color-red-360-100-45);\n}\n\n/**\n * outline styles\n */\n\n.djs-outline {\n fill: none;\n visibility: hidden;\n}\n\n.djs-element.hover .djs-outline,\n.djs-element.selected .djs-outline {\n visibility: visible;\n shape-rendering: geometricPrecision;\n stroke-dasharray: 3,3;\n}\n\n.djs-element.selected .djs-outline {\n stroke: var(--element-selected-outline-stroke-color);\n stroke-width: 1px;\n}\n\n.djs-element.hover .djs-outline {\n stroke: var(--element-hover-outline-fill-color);\n stroke-width: 1px;\n}\n\n.djs-shape.connect-ok .djs-visual > :nth-child(1) {\n fill: var(--shape-connect-allowed-fill-color) !important;\n}\n\n.djs-shape.connect-not-ok .djs-visual > :nth-child(1),\n.djs-shape.drop-not-ok .djs-visual > :nth-child(1) {\n fill: var(--shape-drop-not-allowed-fill-color) !important;\n}\n\n.djs-shape.new-parent .djs-visual > :nth-child(1) {\n fill: var(--shape-drop-allowed-fill-color) !important;\n}\n\nsvg.drop-not-ok {\n background: var(--shape-drop-not-allowed-fill-color) !important;\n}\n\nsvg.new-parent {\n background: var(--shape-drop-allowed-fill-color) !important;\n}\n\n.djs-connection.connect-ok .djs-visual > :nth-child(1),\n.djs-connection.drop-ok .djs-visual > :nth-child(1) {\n stroke: var(--shape-drop-allowed-fill-color) !important;\n}\n\n.djs-connection.connect-not-ok .djs-visual > :nth-child(1),\n.djs-connection.drop-not-ok .djs-visual > :nth-child(1) {\n stroke: var(--shape-drop-not-allowed-fill-color) !important;\n}\n\n.drop-not-ok,\n.connect-not-ok {\n cursor: not-allowed;\n}\n\n.djs-element.attach-ok .djs-visual > :nth-child(1) {\n stroke-width: 5px !important;\n stroke: var(--shape-attach-allowed-stroke-color) !important;\n}\n\n.djs-frame.connect-not-ok .djs-visual > :nth-child(1),\n.djs-frame.drop-not-ok .djs-visual > :nth-child(1) {\n stroke-width: 3px !important;\n stroke: var(--shape-drop-not-allowed-fill-color) !important;\n fill: none !important;\n}\n\n/**\n* Selection box style\n*\n*/\n.djs-lasso-overlay {\n fill: var(--lasso-fill-color);\n\n stroke-dasharray: 5 1 3 1;\n stroke: var(--lasso-stroke-color);\n\n shape-rendering: geometricPrecision;\n pointer-events: none;\n}\n\n/**\n * Resize styles\n */\n.djs-resize-overlay {\n fill: none;\n\n stroke-dasharray: 5 1 3 1;\n stroke: var(--shape-resize-preview-stroke-color);\n\n pointer-events: none;\n}\n\n.djs-resizer-hit {\n fill: none;\n pointer-events: all;\n}\n\n.djs-resizer-visual {\n fill: var(--resizer-fill-color);\n stroke-width: 1px;\n stroke-opacity: 0.5;\n stroke: var(--resizer-stroke-color);\n shape-rendering: geometricprecision;\n}\n\n.djs-resizer:hover .djs-resizer-visual {\n stroke: var(--resizer-stroke-color);\n stroke-opacity: 1;\n}\n\n.djs-cursor-resize-ns,\n.djs-resizer-n,\n.djs-resizer-s {\n cursor: ns-resize;\n}\n\n.djs-cursor-resize-ew,\n.djs-resizer-e,\n.djs-resizer-w {\n cursor: ew-resize;\n}\n\n.djs-cursor-resize-nwse,\n.djs-resizer-nw,\n.djs-resizer-se {\n cursor: nwse-resize;\n}\n\n.djs-cursor-resize-nesw,\n.djs-resizer-ne,\n.djs-resizer-sw {\n cursor: nesw-resize;\n}\n\n.djs-shape.djs-resizing > .djs-outline {\n visibility: hidden !important;\n}\n\n.djs-shape.djs-resizing > .djs-resizer {\n visibility: hidden;\n}\n\n.djs-dragger > .djs-resizer {\n visibility: hidden;\n}\n\n/**\n * drag styles\n */\n.djs-dragger * {\n fill: none !important;\n stroke: var(--element-dragger-color) !important;\n}\n\n.djs-dragger tspan,\n.djs-dragger text {\n fill: var(--element-dragger-color) !important;\n stroke: none !important;\n}\n\nmarker.djs-dragger circle,\nmarker.djs-dragger path,\nmarker.djs-dragger polygon,\nmarker.djs-dragger polyline,\nmarker.djs-dragger rect {\n fill: var(--element-dragger-color) !important;\n stroke: none !important;\n}\n\nmarker.djs-dragger text,\nmarker.djs-dragger tspan {\n fill: none !important;\n stroke: var(--element-dragger-color) !important;\n}\n\n.djs-dragging {\n opacity: 0.3;\n}\n\n.djs-dragging,\n.djs-dragging > * {\n pointer-events: none !important;\n}\n\n.djs-dragging .djs-context-pad,\n.djs-dragging .djs-outline {\n display: none !important;\n}\n\n/**\n * no pointer events for visual\n */\n.djs-visual,\n.djs-outline {\n pointer-events: none;\n}\n\n.djs-element.attach-ok .djs-hit {\n stroke-width: 60px !important;\n}\n\n/**\n * all pointer events for hit shape\n */\n.djs-element > .djs-hit-all {\n pointer-events: all;\n}\n\n.djs-element > .djs-hit-stroke,\n.djs-element > .djs-hit-click-stroke {\n pointer-events: stroke;\n}\n\n/**\n * all pointer events for hit shape\n */\n.djs-drag-active .djs-element > .djs-hit-click-stroke {\n pointer-events: all;\n}\n\n/**\n * shape / connection basic styles\n */\n.djs-connection .djs-visual {\n stroke-width: 2px;\n fill: none;\n}\n\n.djs-cursor-grab {\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n\n.djs-cursor-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n\n.djs-cursor-crosshair {\n cursor: crosshair;\n}\n\n.djs-cursor-move {\n cursor: move;\n}\n\n.djs-cursor-resize-ns {\n cursor: ns-resize;\n}\n\n.djs-cursor-resize-ew {\n cursor: ew-resize;\n}\n\n\n/**\n * snapping\n */\n.djs-snap-line {\n stroke: var(--snap-line-stroke-color);\n stroke-linecap: round;\n stroke-width: 2px;\n pointer-events: none;\n}\n\n/**\n * snapping\n */\n.djs-crosshair {\n stroke: var(--space-tool-crosshair-stroke-color);\n stroke-linecap: round;\n stroke-width: 1px;\n pointer-events: none;\n shape-rendering: crispEdges;\n stroke-dasharray: 5, 5;\n}\n\n/**\n * palette\n */\n\n.djs-palette {\n position: absolute;\n left: 20px;\n top: 20px;\n\n box-sizing: border-box;\n width: 48px;\n}\n\n.djs-palette .separator {\n margin: 0 5px;\n padding-top: 5px;\n\n border: none;\n border-bottom: solid 1px var(--palette-separator-color);\n\n clear: both;\n}\n\n.djs-palette .entry:before {\n vertical-align: text-bottom;\n}\n\n.djs-palette .djs-palette-toggle {\n cursor: pointer;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n color: var(--palette-entry-color);\n font-size: 30px;\n\n text-align: center;\n}\n\n.djs-palette .entry {\n float: left;\n}\n\n.djs-palette .entry img {\n max-width: 100%;\n}\n\n.djs-palette .djs-palette-entries:after {\n content: '';\n display: table;\n clear: both;\n}\n\n.djs-palette .djs-palette-toggle:hover {\n background: var(--palette-toggle-hover-background-color);\n}\n\n.djs-palette .entry:hover {\n color: var(--palette-entry-hover-color);\n}\n\n.djs-palette .highlighted-entry {\n color: var(--palette-entry-selected-color) !important;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n width: 46px;\n height: 46px;\n line-height: 46px;\n cursor: default;\n}\n\n/**\n * Palette open / two-column layout is controlled via\n * classes on the palette. Events to hook into palette\n * changed life-cycle are available in addition.\n */\n.djs-palette.two-column.open {\n width: 94px;\n}\n\n.djs-palette:not(.open) .djs-palette-entries {\n display: none;\n}\n\n.djs-palette:not(.open) {\n overflow: hidden;\n}\n\n.djs-palette.open .djs-palette-toggle {\n display: none;\n}\n\n/**\n * context-pad\n */\n.djs-overlay-context-pad {\n width: 72px;\n z-index: 100;\n}\n\n.djs-context-pad {\n position: absolute;\n display: none;\n pointer-events: none;\n line-height: 1;\n}\n\n.djs-context-pad .entry {\n width: 22px;\n height: 22px;\n text-align: center;\n display: inline-block;\n font-size: 22px;\n margin: 0 2px 2px 0;\n\n border-radius: 3px;\n\n cursor: default;\n\n background-color: var(--context-pad-entry-background-color);\n box-shadow: 0 0 2px 1px var(--context-pad-entry-background-color);\n pointer-events: all;\n vertical-align: middle;\n}\n\n.djs-context-pad .entry:hover {\n background: var(--context-pad-entry-hover-background-color);\n}\n\n.djs-context-pad.open {\n display: block;\n}\n\n/**\n * popup styles\n */\n.djs-popup .entry {\n line-height: 20px;\n white-space: nowrap;\n cursor: default;\n}\n\n/* larger font for prefixed icons */\n.djs-popup .entry:before {\n vertical-align: middle;\n font-size: 20px;\n}\n\n.djs-popup .entry > span {\n vertical-align: middle;\n font-size: 14px;\n}\n\n.djs-popup .entry:hover,\n.djs-popup .entry.active:hover {\n background: var(--popup-header-entry-selected-background-color);\n}\n\n.djs-popup .entry.disabled {\n background: inherit;\n}\n\n.djs-popup .djs-popup-header .entry {\n display: inline-block;\n padding: 2px 3px 2px 3px;\n\n border: solid 1px transparent;\n border-radius: 3px;\n}\n\n.djs-popup .djs-popup-header .entry.active {\n color: var(--popup-header-entry-selected-color);\n border: solid 1px var(--popup-header-entry-selected-color);\n background-color: var(--popup-header-entry-selected-background-color);\n}\n\n.djs-popup-body .entry {\n padding: 4px 10px 4px 5px;\n}\n\n.djs-popup-body .entry > span {\n margin-left: 5px;\n}\n\n.djs-popup-body {\n background-color: var(--popup-body-background-color);\n}\n\n.djs-popup-header {\n border-bottom: 1px solid var(--popup-header-separator-color);\n}\n\n.djs-popup-header .entry {\n margin: 1px;\n margin-left: 3px;\n}\n\n.djs-popup-header .entry:last-child {\n margin-right: 3px;\n}\n\n/**\n * popup / palette styles\n */\n.djs-palette {\n background: var(--palette-background-color);\n border: solid 1px var(--palette-border-color);\n border-radius: 2px;\n}\n\n.djs-popup {\n background: var(--popup-background-color);\n border: solid 1px var(--popup-border-color);\n border-radius: 2px;\n}\n\n/**\n * touch\n */\n\n.djs-shape,\n.djs-connection {\n touch-action: none;\n}\n\n.djs-segment-dragger,\n.djs-bendpoint {\n display: none;\n}\n\n/**\n * bendpoints\n */\n.djs-segment-dragger .djs-visual {\n display: none;\n\n fill: var(--bendpoint-fill-color);\n stroke: var(--bendpoint-stroke-color);\n stroke-width: 1px;\n stroke-opacity: 1;\n}\n\n.djs-segment-dragger:hover .djs-visual {\n display: block;\n}\n\n.djs-bendpoint .djs-visual {\n fill: var(--bendpoint-fill-color);\n stroke: var(--bendpoint-stroke-color);\n stroke-width: 1px;\n stroke-opacity: 0.5;\n}\n\n.djs-segment-dragger:hover,\n.djs-bendpoints.hover .djs-segment-dragger,\n.djs-bendpoints.selected .djs-segment-dragger,\n.djs-bendpoint:hover,\n.djs-bendpoints.hover .djs-bendpoint,\n.djs-bendpoints.selected .djs-bendpoint {\n display: block;\n}\n\n.djs-drag-active .djs-bendpoints * {\n display: none;\n}\n\n.djs-bendpoints:not(.hover) .floating {\n display: none;\n}\n\n.djs-segment-dragger:hover .djs-visual,\n.djs-segment-dragger.djs-dragging .djs-visual,\n.djs-bendpoint:hover .djs-visual,\n.djs-bendpoint.floating .djs-visual {\n fill: var(--bendpoint-fill-color);\n stroke: var(--bendpoint-stroke-color);\n stroke-opacity: 1;\n}\n\n.djs-bendpoint.floating .djs-hit {\n pointer-events: none;\n}\n\n.djs-segment-dragger .djs-hit,\n.djs-bendpoint .djs-hit {\n fill: none;\n pointer-events: all;\n}\n\n.djs-segment-dragger.horizontal .djs-hit {\n cursor: ns-resize;\n}\n\n.djs-segment-dragger.vertical .djs-hit {\n cursor: ew-resize;\n}\n\n.djs-segment-dragger.djs-dragging .djs-hit {\n pointer-events: none;\n}\n\n.djs-updating,\n.djs-updating > * {\n pointer-events: none !important;\n}\n\n.djs-updating .djs-context-pad,\n.djs-updating .djs-outline,\n.djs-updating .djs-bendpoint,\n.connect-ok .djs-bendpoint,\n.connect-not-ok .djs-bendpoint,\n.drop-ok .djs-bendpoint,\n.drop-not-ok .djs-bendpoint {\n display: none !important;\n}\n\n.djs-segment-dragger.djs-dragging,\n.djs-bendpoint.djs-dragging {\n display: block;\n opacity: 1.0;\n}\n\n\n/**\n * tooltips\n */\n.djs-tooltip-error {\n width: 160px;\n padding: 6px;\n\n background: var(--tooltip-error-background-color);\n border: solid 1px var(--tooltip-error-border-color);\n border-radius: 2px;\n color: var(--tooltip-error-color);\n font-size: 12px;\n line-height: 16px;\n\n opacity: 0.75;\n}\n\n.djs-tooltip-error:hover {\n opacity: 1;\n}\n\n\n/**\n * search pad\n */\n.djs-search-container {\n position: absolute;\n top: 20px;\n left: 0;\n right: 0;\n margin-left: auto;\n margin-right: auto;\n\n width: 25%;\n min-width: 300px;\n max-width: 400px;\n z-index: 10;\n\n font-size: 1.05em;\n opacity: 0.9;\n background: var(--search-container-background-color);\n border: solid 1px var(--search-container-border-color);\n border-radius: 2px;\n box-shadow: 0 0 0 2px var(--search-container-box-shadow-color), 0 0 0 1px var(--search-container-box-shadow-inset-color) inset;\n}\n\n.djs-search-container:not(.open) {\n display: none;\n}\n\n.djs-search-input input {\n font-size: 1.05em;\n width: 100%;\n padding: 6px 10px;\n border: 1px solid var(--search-input-border-color);\n box-sizing: border-box;\n}\n\n.djs-search-input input:focus {\n outline: none;\n border-color: var(--search-input-border-color);\n}\n\n.djs-search-results {\n position: relative;\n overflow-y: auto;\n max-height: 200px;\n}\n\n.djs-search-results:hover {\n cursor: pointer;\n}\n\n.djs-search-result {\n width: 100%;\n padding: 6px 10px;\n background: white;\n border-bottom: solid 1px var(--search-result-border-color);\n border-radius: 1px;\n}\n\n.djs-search-highlight {\n color: var(--search-result-highlight-color);\n}\n\n.djs-search-result-primary {\n margin: 0 0 10px;\n}\n\n.djs-search-result-secondary {\n font-family: monospace;\n margin: 0;\n}\n\n.djs-search-result:hover {\n background: var(--search-result-selected-color);\n}\n\n.djs-search-result-selected {\n background: var(--search-result-selected-color);\n}\n\n.djs-search-result-selected:hover {\n background: var(--search-result-selected-color);\n}\n\n.djs-search-overlay {\n background: var(--search-result-selected-color);\n}\n\n/**\n * hidden styles\n */\n.djs-element-hidden,\n.djs-element-hidden .djs-hit,\n.djs-element-hidden .djs-outline,\n.djs-label-hidden .djs-label {\n display: none !important;\n}\n","@font-face {\n font-family: 'bpmn';\n src: url('../font/bpmn.eot?26374340');\n src: url('../font/bpmn.eot?26374340#iefix') format('embedded-opentype'),\n url('../font/bpmn.woff2?26374340') format('woff2'),\n url('../font/bpmn.woff?26374340') format('woff'),\n url('../font/bpmn.ttf?26374340') format('truetype'),\n url('../font/bpmn.svg?26374340#bpmn') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */\n/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */\n/*\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n @font-face {\n font-family: 'bpmn';\n src: url('../font/bpmn.svg?26374340#bpmn') format('svg');\n }\n}\n*/\n\n [class^=\"bpmn-icon-\"]:before, [class*=\" bpmn-icon-\"]:before {\n font-family: \"bpmn\";\n font-style: normal;\n font-weight: normal;\n speak: never;\n\n display: inline-block;\n text-decoration: inherit;\n width: 1em;\n /* margin-right: .2em; */\n text-align: center;\n /* opacity: .8; */\n\n /* For safety - reset parent styles, that can break glyph codes*/\n font-variant: normal;\n text-transform: none;\n\n /* fix buttons height, for twitter bootstrap */\n line-height: 1em;\n\n /* Animation center compensation - margins should be symmetric */\n /* remove if not needed */\n /* margin-left: .2em; */\n\n /* you can be more comfortable with increased icons size */\n /* font-size: 120%; */\n\n /* Font smoothing. That was taken from TWBS */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n /* Uncomment for 3D effect */\n /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */\n}\n\n.bpmn-icon-screw-wrench:before { content: '\\e800'; } /* '' */\n.bpmn-icon-trash:before { content: '\\e801'; } /* '' */\n.bpmn-icon-conditional-flow:before { content: '\\e802'; } /* '' */\n.bpmn-icon-default-flow:before { content: '\\e803'; } /* '' */\n.bpmn-icon-gateway-parallel:before { content: '\\e804'; } /* '' */\n.bpmn-icon-intermediate-event-catch-cancel:before { content: '\\e805'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-message:before { content: '\\e806'; } /* '' */\n.bpmn-icon-start-event-compensation:before { content: '\\e807'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-parallel-multiple:before { content: '\\e808'; } /* '' */\n.bpmn-icon-loop-marker:before { content: '\\e809'; } /* '' */\n.bpmn-icon-parallel-mi-marker:before { content: '\\e80a'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-signal:before { content: '\\e80b'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-timer:before { content: '\\e80c'; } /* '' */\n.bpmn-icon-intermediate-event-catch-parallel-multiple:before { content: '\\e80d'; } /* '' */\n.bpmn-icon-intermediate-event-catch-compensation:before { content: '\\e80e'; } /* '' */\n.bpmn-icon-gateway-xor:before { content: '\\e80f'; } /* '' */\n.bpmn-icon-connection:before { content: '\\e810'; } /* '' */\n.bpmn-icon-end-event-cancel:before { content: '\\e811'; } /* '' */\n.bpmn-icon-intermediate-event-catch-condition:before { content: '\\e812'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-parallel-multiple:before { content: '\\e813'; } /* '' */\n.bpmn-icon-start-event-condition:before { content: '\\e814'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-timer:before { content: '\\e815'; } /* '' */\n.bpmn-icon-sequential-mi-marker:before { content: '\\e816'; } /* '' */\n.bpmn-icon-user-task:before { content: '\\e817'; } /* '' */\n.bpmn-icon-business-rule:before { content: '\\e818'; } /* '' */\n.bpmn-icon-sub-process-marker:before { content: '\\e819'; } /* '' */\n.bpmn-icon-start-event-parallel-multiple:before { content: '\\e81a'; } /* '' */\n.bpmn-icon-start-event-error:before { content: '\\e81b'; } /* '' */\n.bpmn-icon-intermediate-event-catch-signal:before { content: '\\e81c'; } /* '' */\n.bpmn-icon-intermediate-event-catch-error:before { content: '\\e81d'; } /* '' */\n.bpmn-icon-end-event-compensation:before { content: '\\e81e'; } /* '' */\n.bpmn-icon-subprocess-collapsed:before { content: '\\e81f'; } /* '' */\n.bpmn-icon-subprocess-expanded:before { content: '\\e820'; } /* '' */\n.bpmn-icon-task:before { content: '\\e821'; } /* '' */\n.bpmn-icon-end-event-error:before { content: '\\e822'; } /* '' */\n.bpmn-icon-intermediate-event-catch-escalation:before { content: '\\e823'; } /* '' */\n.bpmn-icon-intermediate-event-catch-timer:before { content: '\\e824'; } /* '' */\n.bpmn-icon-start-event-escalation:before { content: '\\e825'; } /* '' */\n.bpmn-icon-start-event-signal:before { content: '\\e826'; } /* '' */\n.bpmn-icon-business-rule-task:before { content: '\\e827'; } /* '' */\n.bpmn-icon-manual:before { content: '\\e828'; } /* '' */\n.bpmn-icon-receive:before { content: '\\e829'; } /* '' */\n.bpmn-icon-call-activity:before { content: '\\e82a'; } /* '' */\n.bpmn-icon-start-event-timer:before { content: '\\e82b'; } /* '' */\n.bpmn-icon-start-event-message:before { content: '\\e82c'; } /* '' */\n.bpmn-icon-intermediate-event-none:before { content: '\\e82d'; } /* '' */\n.bpmn-icon-intermediate-event-catch-link:before { content: '\\e82e'; } /* '' */\n.bpmn-icon-end-event-escalation:before { content: '\\e82f'; } /* '' */\n.bpmn-icon-text-annotation:before { content: '\\e830'; } /* '' */\n.bpmn-icon-bpmn-io:before { content: '\\e831'; } /* '' */\n.bpmn-icon-gateway-complex:before { content: '\\e832'; } /* '' */\n.bpmn-icon-gateway-eventbased:before { content: '\\e833'; } /* '' */\n.bpmn-icon-gateway-none:before { content: '\\e834'; } /* '' */\n.bpmn-icon-gateway-or:before { content: '\\e835'; } /* '' */\n.bpmn-icon-end-event-terminate:before { content: '\\e836'; } /* '' */\n.bpmn-icon-end-event-signal:before { content: '\\e837'; } /* '' */\n.bpmn-icon-end-event-none:before { content: '\\e838'; } /* '' */\n.bpmn-icon-end-event-multiple:before { content: '\\e839'; } /* '' */\n.bpmn-icon-end-event-message:before { content: '\\e83a'; } /* '' */\n.bpmn-icon-end-event-link:before { content: '\\e83b'; } /* '' */\n.bpmn-icon-intermediate-event-catch-message:before { content: '\\e83c'; } /* '' */\n.bpmn-icon-intermediate-event-throw-compensation:before { content: '\\e83d'; } /* '' */\n.bpmn-icon-start-event-multiple:before { content: '\\e83e'; } /* '' */\n.bpmn-icon-script:before { content: '\\e83f'; } /* '' */\n.bpmn-icon-manual-task:before { content: '\\e840'; } /* '' */\n.bpmn-icon-send:before { content: '\\e841'; } /* '' */\n.bpmn-icon-service:before { content: '\\e842'; } /* '' */\n.bpmn-icon-receive-task:before { content: '\\e843'; } /* '' */\n.bpmn-icon-user:before { content: '\\e844'; } /* '' */\n.bpmn-icon-start-event-none:before { content: '\\e845'; } /* '' */\n.bpmn-icon-intermediate-event-throw-escalation:before { content: '\\e846'; } /* '' */\n.bpmn-icon-intermediate-event-catch-multiple:before { content: '\\e847'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-escalation:before { content: '\\e848'; } /* '' */\n.bpmn-icon-intermediate-event-throw-link:before { content: '\\e849'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-condition:before { content: '\\e84a'; } /* '' */\n.bpmn-icon-data-object:before { content: '\\e84b'; } /* '' */\n.bpmn-icon-script-task:before { content: '\\e84c'; } /* '' */\n.bpmn-icon-send-task:before { content: '\\e84d'; } /* '' */\n.bpmn-icon-data-store:before { content: '\\e84e'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-escalation:before { content: '\\e84f'; } /* '' */\n.bpmn-icon-intermediate-event-throw-message:before { content: '\\e850'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-multiple:before { content: '\\e851'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-signal:before { content: '\\e852'; } /* '' */\n.bpmn-icon-intermediate-event-throw-multiple:before { content: '\\e853'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-message:before { content: '\\e854'; } /* '' */\n.bpmn-icon-ad-hoc-marker:before { content: '\\e855'; } /* '' */\n.bpmn-icon-service-task:before { content: '\\e856'; } /* '' */\n.bpmn-icon-task-none:before { content: '\\e857'; } /* '' */\n.bpmn-icon-compensation-marker:before { content: '\\e858'; } /* '' */\n.bpmn-icon-start-event-non-interrupting-multiple:before { content: '\\e859'; } /* '' */\n.bpmn-icon-intermediate-event-throw-signal:before { content: '\\e85a'; } /* '' */\n.bpmn-icon-intermediate-event-catch-non-interrupting-condition:before { content: '\\e85b'; } /* '' */\n.bpmn-icon-participant:before { content: '\\e85c'; } /* '' */\n.bpmn-icon-event-subprocess-expanded:before { content: '\\e85d'; } /* '' */\n.bpmn-icon-lane-insert-below:before { content: '\\e85e'; } /* '' */\n.bpmn-icon-space-tool:before { content: '\\e85f'; } /* '' */\n.bpmn-icon-connection-multi:before { content: '\\e860'; } /* '' */\n.bpmn-icon-lane:before { content: '\\e861'; } /* '' */\n.bpmn-icon-lasso-tool:before { content: '\\e862'; } /* '' */\n.bpmn-icon-lane-insert-above:before { content: '\\e863'; } /* '' */\n.bpmn-icon-lane-divide-three:before { content: '\\e864'; } /* '' */\n.bpmn-icon-lane-divide-two:before { content: '\\e865'; } /* '' */\n.bpmn-icon-data-input:before { content: '\\e866'; } /* '' */\n.bpmn-icon-data-output:before { content: '\\e867'; } /* '' */\n.bpmn-icon-hand-tool:before { content: '\\e868'; } /* '' */\n.bpmn-icon-group:before { content: '\\e869'; } /* '' */\n.bpmn-icon-transaction:before { content: '\\e8c4'; } /* '' */","@font-face {\n font-family: \"Material Icons\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons.woff2\") format(\"woff2\"), url(\"./material-icons.woff\") format(\"woff\");\n}\n.material-icons {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Outlined\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-outlined.woff2\") format(\"woff2\"), url(\"./material-icons-outlined.woff\") format(\"woff\");\n}\n.material-icons-outlined {\n font-family: \"Material Icons Outlined\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Round\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-round.woff2\") format(\"woff2\"), url(\"./material-icons-round.woff\") format(\"woff\");\n}\n.material-icons-round {\n font-family: \"Material Icons Round\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Sharp\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-sharp.woff2\") format(\"woff2\"), url(\"./material-icons-sharp.woff\") format(\"woff\");\n}\n.material-icons-sharp {\n font-family: \"Material Icons Sharp\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n\n@font-face {\n font-family: \"Material Icons Two Tone\";\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"./material-icons-two-tone.woff2\") format(\"woff2\"), url(\"./material-icons-two-tone.woff\") format(\"woff\");\n}\n.material-icons-two-tone {\n font-family: \"Material Icons Two Tone\";\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n}\n","@use 'sass:color';\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n\n/// Include content under the current selector (&) or the document root if there is no current\n/// selector.\n/// @param {String} $root [html] The default root selector to use when there is no current selector.\n/// @output The given content under the current selector, or root selector if there is no current\n/// selector.\n/// @content Content to output under the current selector, or root selector if there is no current\n/// selector.\n@mixin current-selector-or-root($root: html) {\n @if & {\n @content;\n }\n @else {\n #{$root} {\n @content;\n }\n }\n}\n\n/// A version of the standard `map.merge` function that takes a variable number of arguments.\n/// Each argument is merged into the final result from left to right.\n/// @param {List} $maps The maps to combine with map.merge\n/// @return {Map} The combined result of successively calling map.merge with each parameter.\n@function merge-all($maps...) {\n $result: ();\n @each $map in $maps {\n $result: map.merge($result, $map);\n }\n @return $result;\n}\n\n/// A version of the standard `map.deep-merge` function that takes a variable number of arguments.\n/// Each argument is deep-merged into the final result from left to right.\n/// @param {List} $maps The maps to combine with map.deep-merge\n/// @return {Map} The combined result of successively calling map.deep-merge with each parameter.\n@function deep-merge-all($maps...) {\n $result: ();\n @each $map in $maps {\n $result: map.deep-merge($result, $map);\n }\n @return $result;\n}\n\n/// Coerces the given value to a list, by converting any non-list value into a single-item list.\n/// This should be used when dealing with user-passed lists of args to avoid confusing errors,\n/// since Sass treats `($x)` as equivalent to `$x`.\n/// @param {Any} $value The value to coerce to a list.\n/// @return {List} The original $value if it was a list, otherwise a single-item list containing\n/// $value.\n@function coerce-to-list($value) {\n @return if(meta.type-of($value) != 'list', ($value,), $value);\n}\n\n/// A version of the Sass `color.change` function that is safe ot use with CSS variables.\n@function safe-color-change($color, $args...) {\n $args: meta.keywords($args);\n @return if(meta.type-of($color) == 'color', color.change($color, $args...), $color);\n}\n\n/// Gets the given arguments as a map of keywords and validates that only supported arguments were\n/// passed.\n/// @param {ArgList} $args The arguments to convert to a keywords map.\n/// @param {List} $supported-args The supported argument names.\n/// @return {Map} The $args as a map of argument name to argument value.\n@function validate-keyword-args($args, $supported-args) {\n @if list.length($args) > 0 {\n @error #{'Expected keyword args, but got positional args: '}#{$args};\n }\n $kwargs: meta.keywords($args);\n @each $arg, $v in $kwargs {\n @if list.index($supported-args, $arg) == null {\n @error #{'Unsupported argument '}#{$arg}#{'. Valid arguments are: '}#{$supported-args};\n }\n }\n @return $kwargs;\n}\n","//\n// Copyright 2020 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:meta';\n@use './gss';\n\n/// When true, add an additional property/value declaration before declarations\n/// that use advanced features such as custom properties or CSS functions. This\n/// adds fallback support for older browsers such as IE11 that do not support\n/// these features at the cost of additional CSS. Set this variable to false to\n/// disable generating fallback declarations.\n$enable-fallback-declarations: true !default;\n\n/// Writes a CSS property/value declaration. This mixin is used throughout the\n/// theme package for consistency for dynamically setting CSS property values.\n///\n/// This mixin may optionally take a fallback value. For advanced features such\n/// as custom properties or CSS functions like min and max, a fallback value is\n/// recommended to support older browsers.\n///\n/// @param {String} $property - The CSS property of the declaration.\n/// @param {*} $value - The value of the CSS declaration. The value should be\n/// resolved by other theme functions first (i.e. custom property Maps and\n/// Material theme keys are not supported in this mixin). If the value is\n/// null, no declarations will be emitted.\n/// @param {*} $fallback - An optional fallback value for older browsers. If\n/// provided, a second property/value declaration will be added before the\n/// main property/value declaration.\n/// @param {Map} $gss - An optional Map of GSS annotations to add.\n/// @param {Bool} $important - If true, add `!important` to the declaration.\n@mixin declaration(\n $property,\n $value,\n $fallback-value: null,\n $gss: (),\n $important: false\n) {\n // Normally setting a null value to a property will not emit CSS, so mixins\n // wouldn't need to check this. However, Sass will throw an error if the\n // interpolated property is a custom property.\n @if $value != null {\n $important-rule: if($important, ' !important', '');\n\n @if $fallback-value and $enable-fallback-declarations {\n @include gss.annotate($gss);\n #{$property}: #{$fallback-value} #{$important-rule};\n\n // Add @alternate to annotations.\n $gss: map.merge(\n $gss,\n (\n alternate: true,\n )\n );\n }\n\n @include gss.annotate($gss);\n #{$property}: #{$value}#{$important-rule};\n }\n}\n\n/// Unpacks shorthand values for CSS properties (i.e. lists of 1-3 values).\n/// If a list of 4 values is given, it is returned as-is.\n///\n/// Examples:\n///\n/// unpack-value(4px) => 4px 4px 4px 4px\n/// unpack-value(4px 2px) => 4px 2px 4px 2px\n/// unpack-value(4px 2px 2px) => 4px 2px 2px 2px\n/// unpack-value(4px 2px 0 2px) => 4px 2px 0 2px\n///\n/// @param {Number | Map | List} $value - List of 1 to 4 value numbers.\n/// @return {List} a List of 4 value numbers.\n@function unpack-value($value) {\n @if meta.type-of($value) == 'map' or list.length($value) == 1 {\n @return $value $value $value $value;\n } @else if list.length($value) == 4 {\n @return $value;\n } @else if list.length($value) == 3 {\n @return list.nth($value, 1) list.nth($value, 2) list.nth($value, 3)\n list.nth($value, 2);\n } @else if list.length($value) == 2 {\n @return list.nth($value, 1) list.nth($value, 2) list.nth($value, 1)\n list.nth($value, 2);\n }\n\n @error \"Invalid CSS property value: '#{$value}' is more than 4 values\";\n}\n","// Custom Theming for Angular Material\n// For more information: https://material.angular.io/guide/theming\n@use \"@angular/material\" as mat;\n@import \"@angular/material\";\n@import \"material-icons/iconfont/material-icons.css\";\n// Plus imports for other components in your app.\n// Include the common styles for Angular Material. We include this here so that you only\n// have to load a single css file for Angular Material in your app.\n// Be sure that you only ever include this mixin once!\n@include mat.all-component-typographies();\n@include mat.core();\n\n// Define the palettes for your theme using the Material Design palettes available in palette.scss\n// (imported above). For each palette, you can optionally specify a default, lighter, and darker\n// hue. Available color palettes: https://material.io/design/color/\n$egon-primary: mat.define-palette(mat.$cyan-palette);\n$egon-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);\n\n// The warn palette is optional (defaults to red).\n$egon-warn: mat.define-palette(mat.$red-palette);\n\n// Create the theme object. A theme consists of configurations for individual\n// theming systems such as \"color\" or \"typography\".\n$egon-theme: mat.define-light-theme(\n (\n color: (\n primary: $egon-primary,\n accent: $egon-accent,\n warn: $egon-warn,\n ),\n )\n);\n\n// Include theme styles for core and each component used in your app.\n// Alternatively, you can import and @include the theme mixins for each component\n// that you are using.\n@include mat.all-component-themes($egon-theme);\n\n/* FONTS */\n\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 700;\n src: local(\"Roboto-Regular\"), url(\"~src/assets/font/Roboto-Regular.woff\");\n}\n\n/* You can add global styles to this file, and also import other style files */\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n margin: 0;\n font-family: Roboto, \"Helvetica Neue\", Arial, sans-serif;\n}\n\n.smallScrollbar {\n /* Works on Firefox */\n scrollbar-width: thin;\n\n /* Works on Chrome, Edge, and Safari */\n *::-webkit-scrollbar {\n width: 12px;\n }\n}\n\n.headline {\n font-size: 17pt;\n height: 40px;\n cursor: pointer;\n}\n\n.headerButton {\n background-color: transparent;\n border: none;\n}\n\n.spacer {\n flex: 1 1 auto;\n}\n\n.mr-1 {\n margin-right: 8px !important;\n}\n\n.mr-10 {\n margin-right: 10px !important;\n}\n\n.materialIconButton {\n font-size: 24px !important;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 9px;\n}\n\n.toolbar {\n height: 65px;\n}\n\napp-root {\n display: block;\n height: 100%;\n}\n\na {\n color: map-get($egon-accent, 900);\n}\n\n/* Material Design */\n\nmat-dialog-actions.mdc-dialog__actions {\n padding: 0 24px 20px 24px;\n justify-content: end;\n}\n\n/* Snackbar */\n\n.mat-mdc-snack-bar-container {\n &.snackbar_success {\n --mdc-snackbar-container-color: darkgreen;\n --mat-mdc-snack-bar-button-color: #fff;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n &.snackbar_warning {\n --mdc-snackbar-container-color: darkorange;\n --mat-mdc-snack-bar-button-color: black;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n &.snackbar_error {\n --mdc-snackbar-container-color: #d04437;\n --mat-mdc-snack-bar-button-color: #fff;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n &.snackbar_info {\n --mdc-snackbar-container-color: #42aebb;\n --mat-mdc-snack-bar-button-color: black;\n --mat-snack-bar-button-color: #000000;\n --mdc-snackbar-supporting-text-color: #fff;\n }\n}\n\n/* BPMN elements */\n\n.djs-overlay-context-pad {\n min-width: 7.5rem;\n height: auto;\n}\n\n.djs-context-pad.open {\n border: solid 1px #80808054;\n}\n\n.djs-context-pad.open > .group {\n border: solid 1px #80808054;\n padding: 1px;\n background-color: white;\n}\n\n/**\n * from bpmn.io\n */\n\n/**\n * palette\n */\n\n.djs-palette {\n position: absolute;\n left: 20px;\n top: 20px;\n\n box-sizing: border-box;\n width: 32px;\n}\n\n.djs-palette .separator {\n margin: 0 2px;\n padding-top: 0;\n\n border: none;\n border-bottom: solid 1px #ddd;\n\n clear: both;\n}\n\n.djs-palette .entry:before {\n vertical-align: middle;\n}\n\n.djs-palette .djs-palette-toggle {\n cursor: pointer;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n color: #333;\n font-size: 26px;\n\n text-align: center;\n}\n\n.djs-palette .entry {\n float: left;\n}\n\n.djs-palette .entry img {\n max-width: 100%;\n}\n\n.djs-palette .djs-palette-entries:after {\n content: \"\";\n display: table;\n clear: both;\n}\n\n.djs-palette .djs-palette-toggle:hover {\n background: #666;\n}\n\n.djs-palette .entry:hover {\n fill: #42aebb;\n}\n\n.djs-palette .highlighted-entry {\n color: #42aebb !important;\n}\n\n.djs-palette .entry,\n.djs-palette .djs-palette-toggle {\n width: 30px;\n height: 30px;\n line-height: 30px;\n cursor: default;\n}\n\n/**\n * Palette open / two-column layout is controlled via\n * classes on the palette. Events to hook into palette\n * changed life-cycle are available in addition.\n */\n.djs-palette.two-column.open {\n width: 64px;\n}\n\n.djs-palette:not(.open) .djs-palette-entries {\n display: none;\n}\n\n.djs-palette:not(.open) {\n overflow: hidden;\n}\n\n.djs-palette.open .djs-palette-toggle {\n display: none;\n}\n\n/**\n * outline styles\n */\n\n.djs-outline {\n fill: none;\n visibility: hidden;\n}\n\n.djs-element.hover .djs-outline,\n.djs-element.selected .djs-outline {\n visibility: visible;\n shape-rendering: crispEdges;\n stroke-dasharray: 3, 3;\n}\n\n.djs-element.selected .djs-outline {\n stroke: #8888ff;\n stroke-width: 1px;\n}\n\n.djs-element.hover .djs-outline {\n stroke: #42aebb;\n}\n\n.djs-element.attach-ok .djs-visual > :nth-child(1) {\n stroke: #42aebb !important;\n}\n\n/**\n* Selection box style\n*\n*/\n.djs-lasso-overlay {\n stroke: #42aebb;\n}\n\n/**\n * Resize styles\n */\n.djs-resize-overlay {\n stroke: #42aebb;\n}\n\n/**\n * drag styles\n */\n.djs-dragger .djs-visual circle,\n.djs-dragger .djs-visual path,\n.djs-dragger .djs-visual polygon,\n.djs-dragger .djs-visual polyline,\n.djs-dragger .djs-visual rect,\n.djs-dragger .djs-visual text {\n fill: none !important;\n stroke: #42aebb !important;\n}\n\n/**\n * snapping\n */\n.djs-snap-line {\n stroke: #42aebb;\n stroke: rgba(255, 195, 66, 0.5);\n}\n\n.djs-palette .entry:hover {\n color: #42aebb;\n}\n\n.djs-palette .highlighted-entry {\n color: #42aebb !important;\n}\n\n.djs-context-pad .entry:hover {\n background: #42aebb;\n}\n\n.djs-popup .djs-popup-header .entry.active {\n color: #42aebb;\n border: solid 1px #42aebb;\n background-color: #f6f6f6;\n}\n\n.djs-popup-body .entry {\n width: auto !important;\n}\n\n.djs-segment-dragger:hover .djs-visual,\n.djs-segment-dragger.djs-dragging .djs-visual,\n.djs-bendpoint:hover .djs-visual,\n.djs-bendpoint.floating .djs-visual {\n fill: #42aebb;\n stroke-opacity: 0.5;\n stroke: black;\n}\n\n.djs-segment-dragger.djs-dragging .djs-visual,\n.djs-bendpoint.djs-dragging .djs-visual {\n fill: #42aebb;\n}\n\n.djs-tooltip-error > * {\n color: #42aebb;\n border-left: solid 5px #42aebb;\n}\n\n.djs-search-input input:focus {\n outline: none;\n border-color: #52b415;\n}\n\n.djs-search-result:hover {\n background: #fdffd6;\n}\n\n.djs-search-result-selected {\n background: #42aebb;\n}\n\n.djs-search-result-selected:hover {\n background: #42aebb;\n}\n\n.djs-search-overlay {\n background: #42aebb;\n}\n\n.autocomplete-items {\n border: 1px solid #a9a9a9;\n background-color: #f0f0f0;\n}\n\n.autocomplete-active {\n background-color: DodgerBlue !important;\n color: #ffffff;\n}\n","@use 'sass:list';\n@use 'sass:map';\n@use 'sass:string';\n@use 'typography-utils';\n@use '../theming/inspection';\n@use './versioning';\n\n// Definition and versioning functions live in their own files to avoid circular dependencies, but\n// we re-export them here so that historical imports from this file continue to work without needing\n// to be updated.\n@forward './definition';\n@forward './versioning';\n\n@mixin typography-hierarchy($theme, $selector: '.mat-typography', $back-compat: false) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _m3-typography-hierarchy($theme, $selector, $back-compat);\n }\n @else {\n @include _m2-typography-hierarchy($theme, $selector);\n }\n}\n\n@function _get-selector($selectors, $prefix) {\n $result: ();\n @each $selector in $selectors {\n // Don't add \"naked\" tag selectors, and don't nest prefix selector.\n @if string.index($selector, '.') == 1 {\n $result: list.append($result, $selector, $separator: comma);\n }\n // Don't nest the prefix selector in itself.\n @if $selector != $prefix {\n $result: list.append($result, '#{$prefix} #{$selector}', $separator: comma);\n }\n }\n @return $result;\n}\n\n@mixin _m3-typography-level($theme, $selector-prefix, $level, $selectors, $margin: null) {\n #{_get-selector($selectors, $selector-prefix)} {\n // TODO(mmalerba): When we expose system tokens as CSS vars, we should change this to emit token\n // slots.\n font: inspection.get-theme-typography($theme, $level, font);\n letter-spacing: inspection.get-theme-typography($theme, $level, letter-spacing);\n @if $margin != null {\n margin: 0 0 $margin;\n }\n }\n}\n\n@mixin _m3-typography-hierarchy($theme, $selector-prefix, $add-m2-selectors) {\n $levels: (\n display-large: (\n selectors: ('.mat-display-large', 'h1'),\n m2-selectors: ('.mat-h1', '.mat-headline-1'),\n margin: 0.5em\n ),\n display-medium: (\n selectors: ('.mat-display-medium', 'h2'),\n m2-selectors: ('.mat-h2', '.mat-headline-2'),\n margin: 0.5em\n ),\n display-small: (\n selectors: ('.mat-display-small', 'h3'),\n m2-selectors: ('.mat-h3', '.mat-headline-3'),\n margin: 0.5em\n ),\n headline-large: (\n selectors: ('.mat-headline-large', 'h4'),\n m2-selectors: ('.mat-h4', '.mat-headline-4'),\n margin: 0.5em\n ),\n headline-medium: (\n selectors: ('.mat-headline-medium', 'h5'),\n m2-selectors: ('.mat-h5', '.mat-headline-5'),\n margin: 0.5em\n ),\n headline-small: (\n selectors: ('.mat-headline-small', 'h6'),\n m2-selectors: ('.mat-h6', '.mat-headline-6'),\n margin: 0.5em\n ),\n title-large: (\n selectors: ('.mat-title-large'),\n m2-selectors: ('.mat-subtitle-1'),\n ),\n title-medium: (\n selectors: ('.mat-title-medium'),\n m2-selectors: ('.mat-subtitle-2'),\n ),\n title-small: (\n selectors: ('.mat-title-small')\n ),\n body-large: (\n selectors: ('.mat-body-large', $selector-prefix),\n m2-selectors: ('.mat-body', '.mat-body-strong', '.mat-body-2'),\n ),\n body-medium: (\n selectors: ('.mat-body-medium')\n ),\n body-small: (\n selectors: ('.mat-body-small')\n ),\n label-large: (\n selectors: ('.mat-label-large')\n ),\n label-medium: (\n selectors: ('.mat-label-medium')\n ),\n label-small: (\n selectors: ('.mat-label-small'),\n m2-selectors: ('.mat-small', '.mat-caption')\n ),\n );\n\n @each $level, $options in $levels {\n @if $add-m2-selectors {\n $options: map.set($options, selectors,\n list.join(map.get($options, selectors), map.get($options, m2-selectors) or ()));\n }\n $options: map.remove($options, m2-selectors);\n\n // Apply styles for the level.\n @include _m3-typography-level($theme, $selector-prefix, $level, $options...);\n\n // Also style

inside body-large.\n @if $level == body-large {\n #{_get-selector(map.get($options, selectors), $selector-prefix)} {\n p {\n margin: 0 0 0.75em;\n }\n }\n }\n }\n}\n\n/// Emits baseline typographic styles based on a given config.\n/// @param {Map} $config-or-theme A typography config for an entire theme.\n/// @param {String} $selector Ancestor selector under which native elements, such as h1, will\n/// be styled.\n@mixin _m2-typography-hierarchy($theme, $selector) {\n // Note that it seems redundant to prefix the class rules with the `$selector`, however it's\n // necessary if we want to allow people to overwrite the tag selectors. This is due to\n // selectors like `#{$selector} h1` being more specific than ones like `.mat-title`.\n .mat-h1,\n .mat-headline-5,\n #{$selector} .mat-h1,\n #{$selector} .mat-headline-5,\n #{$selector} h1 {\n font: inspection.get-theme-typography($theme, headline-5, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-5, letter-spacing);\n margin: 0 0 16px;\n }\n\n .mat-h2,\n .mat-headline-6,\n #{$selector} .mat-h2,\n #{$selector} .mat-headline-6,\n #{$selector} h2 {\n font: inspection.get-theme-typography($theme, headline-6, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-6, letter-spacing);\n margin: 0 0 16px;\n }\n\n .mat-h3,\n .mat-subtitle-1,\n #{$selector} .mat-h3,\n #{$selector} .mat-subtitle-1,\n #{$selector} h3 {\n font: inspection.get-theme-typography($theme, subtitle-1, font);\n letter-spacing: inspection.get-theme-typography($theme, subtitle-1, letter-spacing);\n margin: 0 0 16px;\n }\n\n .mat-h4,\n .mat-body-1,\n #{$selector} .mat-h4,\n #{$selector} .mat-body-1,\n #{$selector} h4 {\n font: inspection.get-theme-typography($theme, body-1, font);\n letter-spacing: inspection.get-theme-typography($theme, body-1, letter-spacing);\n margin: 0 0 16px;\n }\n\n // Note: the spec doesn't have anything that would correspond to h5 and h6, but we add these for\n // consistency. The font sizes come from the Chrome user agent styles which have h5 at 0.83em\n // and h6 at 0.67em.\n .mat-h5,\n #{$selector} .mat-h5,\n #{$selector} h5 {\n @include typography-utils.font-shorthand(\n // calc is used here to support css variables\n calc(#{inspection.get-theme-typography($theme, body-2, font-size)} * 0.83),\n inspection.get-theme-typography($theme, body-2, font-weight),\n inspection.get-theme-typography($theme, body-2, line-height),\n inspection.get-theme-typography($theme, body-2, font-family)\n );\n\n margin: 0 0 12px;\n }\n\n .mat-h6,\n #{$selector} .mat-h6,\n #{$selector} h6 {\n @include typography-utils.font-shorthand(\n // calc is used here to support css variables\n calc(#{inspection.get-theme-typography($theme, body-2, font-size)} * 0.67),\n inspection.get-theme-typography($theme, body-2, font-weight),\n inspection.get-theme-typography($theme, body-2, line-height),\n inspection.get-theme-typography($theme, body-2, font-family)\n );\n\n margin: 0 0 12px;\n }\n\n .mat-body-strong,\n .mat-subtitle-2,\n #{$selector} .mat-body-strong,\n #{$selector} .mat-subtitle-2 {\n font: inspection.get-theme-typography($theme, subtitle-2, font);\n letter-spacing: inspection.get-theme-typography($theme, subtitle-2, letter-spacing);\n }\n\n .mat-body,\n .mat-body-2,\n #{$selector} .mat-body,\n #{$selector} .mat-body-2,\n #{$selector} {\n font: inspection.get-theme-typography($theme, body-2, font);\n letter-spacing: inspection.get-theme-typography($theme, body-2, letter-spacing);\n\n p {\n margin: 0 0 12px;\n }\n }\n\n .mat-small,\n .mat-caption,\n #{$selector} .mat-small,\n #{$selector} .mat-caption {\n font: inspection.get-theme-typography($theme, caption, font);\n letter-spacing: inspection.get-theme-typography($theme, caption, letter-spacing);\n }\n\n .mat-headline-1,\n #{$selector} .mat-headline-1 {\n font: inspection.get-theme-typography($theme, headline-1, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-1, letter-spacing);\n margin: 0 0 56px;\n }\n\n .mat-headline-2,\n #{$selector} .mat-headline-2 {\n font: inspection.get-theme-typography($theme, headline-2, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-2, letter-spacing);\n margin: 0 0 64px;\n }\n\n .mat-headline-3,\n #{$selector} .mat-headline-3 {\n font: inspection.get-theme-typography($theme, headline-3, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-3, letter-spacing);\n margin: 0 0 64px;\n }\n\n .mat-headline-4,\n #{$selector} .mat-headline-4 {\n font: inspection.get-theme-typography($theme, headline-4, font);\n letter-spacing: inspection.get-theme-typography($theme, headline-4, letter-spacing);\n margin: 0 0 64px;\n }\n}\n","@use 'sass:list';\n@use 'sass:math';\n@use './property-getters';\n\n// Property getters live in their own file to avoid circular dependencies, but we re-export them\n// here so that historical imports from this file continue to work without needing to be updated.\n@forward './property-getters';\n\n/// Outputs the shorthand `font` CSS property, based on a set of typography values. Falls back to\n/// the individual properties if a value that isn't allowed in the shorthand is passed in.\n/// @param {String} $font-size The font-size value.\n/// @param {String | Number} $font-weight The font-weight value.\n/// @param {String | Number} $line-height The line-height value.\n/// @param {String} $font-family The font-family value.\n/// @returns {String} The `font` shorthand value combining the given parts.\n@mixin font-shorthand($font-size, $font-weight, $line-height, $font-family) {\n // If any of the values are set to `inherit`, we can't use the shorthand\n // so we fall back to passing in the individual properties.\n @if ($font-size == inherit or\n $font-weight == inherit or\n $line-height == inherit or\n $font-family == inherit or\n $font-size == null or\n $font-weight == null or\n $line-height == null or\n $font-family == null) {\n\n font-size: $font-size;\n font-weight: $font-weight;\n line-height: $line-height;\n font-family: $font-family;\n }\n @else {\n // Otherwise use the shorthand `font`, because it's the least amount of bytes.\n font: $font-weight list.slash($font-size, $line-height) $font-family;\n }\n}\n\n/// Emits CSS styles for the given typography level.\n/// @param {Map} $config A typography config.\n/// @param {Map} $level A typography level.\n@mixin typography-level($config, $level) {\n // we deliberately do not use the font shorthand here because it overrides\n // certain font properties that can't be configured in the current typography\n // config, e.g. the font-variant-caps or font-feature-settings property\n font-size: property-getters.font-size($config, $level);\n font-weight: property-getters.font-weight($config, $level);\n line-height: property-getters.line-height($config, $level);\n font-family: property-getters.font-family($config, $level);\n letter-spacing: property-getters.letter-spacing($config, $level);\n}\n\n/// Coerce a value to `em` if it is a unitless number, otherwise returns\n/// the value provided.\n@function private-coerce-unitless-to-em($value) {\n @return if(math.is-unitless($value), 1em * $value, $value);\n}\n","@use 'sass:color';\n@use '@material/chips/chip-theme' as mdc-chip-theme;\n@use '../core/tokens/m2/mdc/chip' as tokens-mdc-chip;\n@use '../core/tokens/m2/mat/chip' as tokens-mat-chip;\n@use '../core/tokens/token-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-chips.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n .mat-mdc-standard-chip {\n @include mdc-chip-theme.theme(tokens-mdc-chip.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected chip: primary, secondary, tertiary,\n/// or error (If not specified, default secondary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-standard-chip {\n $default-color-tokens: tokens-mdc-chip.get-color-tokens($theme);\n @include mdc-chip-theme.theme($default-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme));\n\n &.mat-mdc-chip-selected,\n &.mat-mdc-chip-highlighted {\n &.mat-primary {\n $primary-color-tokens: tokens-mdc-chip.get-color-tokens($theme, primary);\n @include mdc-chip-theme.theme($primary-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme, primary));\n }\n\n &.mat-accent {\n $accent-color-tokens: tokens-mdc-chip.get-color-tokens($theme, accent);\n @include mdc-chip-theme.theme($accent-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme, accent));\n }\n\n &.mat-warn {\n $warn-color-tokens: tokens-mdc-chip.get-color-tokens($theme, warn);\n @include mdc-chip-theme.theme($warn-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-color-tokens($theme, warn));\n }\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n $typography-tokens: tokens-mdc-chip.get-typography-tokens($theme);\n\n .mat-mdc-standard-chip {\n @include mdc-chip-theme.theme($typography-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $density-tokens: tokens-mdc-chip.get-density-tokens($theme);\n\n .mat-mdc-chip.mat-mdc-standard-chip {\n @include mdc-chip-theme.theme($density-tokens);\n @include token-utils.create-token-values(\n tokens-mat-chip.$prefix, tokens-mat-chip.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-chips.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected chip: primary, secondary, tertiary,\n/// or error (If not specified, default secondary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-chips') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-chip-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-chip.$prefix, $options...);\n $mat-chip-tokens: token-utils.get-tokens-for($tokens, tokens-mat-chip.$prefix, $options...);\n @include mdc-chip-theme.theme($mdc-chip-tokens);\n @include token-utils.create-token-values(tokens-mat-chip.$prefix, $mat-chip-tokens);\n}\n","@use '@material/switch/switch-theme' as mdc-switch-theme;\n@use '@material/form-field/form-field-theme' as mdc-form-field-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/form-field' as tokens-mdc-form-field;\n@use '../core/tokens/m2/mat/switch' as tokens-mat-switch;\n@use '../core/tokens/m2/mdc/switch' as tokens-mdc-switch;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-switch.get-unthemable-tokens();\n $mdc-tokens: tokens-mdc-switch.get-unthemable-tokens();\n @include mdc-switch-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-tokens);\n }\n }\n}\n\n/// Outputs color theme styles for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slide-toggle: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n $is-dark: inspection.get-theme-type($theme) == dark;\n $mat-tokens: tokens-mat-switch.get-color-tokens($theme);\n $mdc-tokens: tokens-mdc-switch.get-color-tokens($theme);\n\n // Add values for MDC slide toggles tokens\n @include sass-utils.current-selector-or-root() {\n @include mdc-switch-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-tokens);\n\n // TODO(wagnermaciel): Use our token system to define this css variable.\n --mdc-switch-disabled-label-text-color: #{inspection.get-theme-color(\n $theme,\n foreground,\n disabled-text\n )};\n\n .mat-mdc-slide-toggle {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-color-tokens($theme));\n\n // Change the color palette related tokens to accent or warn if applicable\n &.mat-accent {\n @include mdc-switch-theme.theme(\n tokens-mdc-switch.private-get-color-palette-color-tokens($theme, accent));\n }\n\n &.mat-warn {\n @include mdc-switch-theme.theme(\n tokens-mdc-switch.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n $mat-tokens: tokens-mat-switch.get-typography-tokens($theme);\n $mdc-tokens: tokens-mdc-switch.get-typography-tokens($theme);\n\n // Add values for MDC slide toggle tokens\n @include sass-utils.current-selector-or-root() {\n @include mdc-switch-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-tokens);\n\n .mat-mdc-slide-toggle {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-typography-tokens($theme));\n }\n }\n }\n}\n\n/// Outputs density theme styles for the mat-slide-toggle.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-switch.get-density-tokens($theme);\n $mdc-tokens: tokens-mdc-switch.get-density-tokens($theme);\n @include mdc-switch-theme.theme(tokens-mdc-switch.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slide-toggle: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-slide-toggle') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n // Don't pass $options here, since the mdc-form-field doesn't support color options,\n // only the mdc-switch does.\n $mdc-form-field-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-form-field.$prefix);\n $mat-switch-tokens: token-utils.get-tokens-for($tokens, tokens-mat-switch.$prefix);\n $mdc-switch-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-switch.$prefix, $options...);\n\n @include mdc-form-field-theme.theme($mdc-form-field-tokens);\n @include mdc-switch-theme.theme($mdc-switch-tokens);\n @include token-utils.create-token-values(tokens-mat-switch.$prefix, $mat-switch-tokens);\n}\n","@use '@material/radio/radio-theme' as mdc-radio-theme;\n@use '@material/form-field/form-field-theme' as mdc-form-field-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/form-field' as tokens-mdc-form-field;\n@use '../core/tokens/m2/mdc/radio' as tokens-mdc-radio;\n@use '../core/tokens/m2/mat/radio' as tokens-mat-radio;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-radio.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-radio.$prefix, tokens-mat-radio.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the radio button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-radio-button {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-color-tokens($theme));\n\n &.mat-primary {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, primary));\n @include token-utils.create-token-values(tokens-mat-radio.$prefix,\n tokens-mat-radio.get-color-tokens($theme, primary));\n }\n\n &.mat-accent {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-radio.$prefix,\n tokens-mat-radio.get-color-tokens($theme));\n }\n\n &.mat-warn {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, warn));\n @include token-utils.create-token-values(tokens-mat-radio.$prefix,\n tokens-mat-radio.get-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-typography-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-radio.$prefix, tokens-mat-radio.get-typography-tokens($theme));\n }\n\n .mat-mdc-radio-button {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $density-scale: inspection.get-theme-density($theme);\n\n @include sass-utils.current-selector-or-root() {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-density-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-radio.$prefix, tokens-mat-radio.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-radio.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the radio button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-radio') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-radio-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-radio.$prefix, $options...);\n $mat-radio-tokens: token-utils.get-tokens-for($tokens, tokens-mat-radio.$prefix, $options...);\n // Don't pass $options here, since the mdc-form-field doesn't support color options,\n // only the mdc-radio and mat-radio do.\n $mdc-form-field-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-form-field.$prefix);\n @include mdc-radio-theme.theme($mdc-radio-tokens);\n @include mdc-form-field-theme.theme($mdc-form-field-tokens);\n @include token-utils.create-token-values(tokens-mat-radio.$prefix, $mat-radio-tokens);\n}\n","@use 'sass:map';\n@use '@material/list/evolution-mixins';\n@use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme;\n@use '@material/radio/radio-theme' as mdc-radio-theme;\n@use '@material/list/list-theme' as mdc-list-theme;\n\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/m2/mat/list' as tokens-mat-list;\n@use '../core/tokens/m2/mdc/checkbox' as tokens-mdc-checkbox;\n@use '../core/tokens/m2/mdc/radio' as tokens-mdc-radio;\n@use '../core/tokens/m2/mdc/list' as tokens-mdc-list;\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n\n@mixin base($theme) {\n // Add default values for tokens not related to color, typography, or density.\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme(tokens-mdc-list.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-unthemable-tokens());\n }\n }\n}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n $mdc-list-color-tokens: tokens-mdc-list.get-color-tokens($theme);\n\n // Add values for MDC list tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme($mdc-list-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-color-tokens($theme));\n }\n\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, primary));\n }\n\n .mat-accent {\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, accent));\n }\n }\n\n .mat-warn {\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-color-tokens($theme, warn));\n }\n }\n\n .mat-mdc-list-option {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, primary));\n }\n .mat-mdc-list-option.mat-accent {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, accent));\n }\n .mat-mdc-list-option.mat-warn {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, warn));\n }\n\n // There is no token for activated color on nav list.\n // TODO(mmalerba): Add a token to MDC or make a custom one.\n .mat-mdc-list-base.mat-mdc-list-base {\n @include evolution-mixins.list-selected-ink-color(\n inspection.get-theme-color($theme, primary));\n }\n\n // TODO(mmalerba): Leaking styles from the old MDC list mixins used in other components can\n // cause opacity issues, so we need this override for now. We can remove it when all\n // Angular Material components stop using the old MDC mixins.\n .mat-mdc-list-base .mdc-list-item--disabled {\n .mdc-list-item__start,\n .mdc-list-item__content,\n .mdc-list-item__end {\n opacity: 1;\n }\n }\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $density-scale: inspection.get-theme-density($theme);\n $mdc-list-density-tokens: tokens-mdc-list.get-density-tokens($theme);\n\n // Add values for MDC list tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme($mdc-list-density-tokens);\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-density-tokens($theme));\n }\n\n .mdc-list-item__start,\n .mdc-list-item__end {\n @include mdc-radio-theme.theme(tokens-mdc-radio.get-density-tokens($theme));\n }\n\n // TODO(mmalerba): This is added to maintain the same style MDC used prior to the token-based\n // API, to avoid screenshot diffs. We should remove it in favor of following MDC's current\n // style, or add custom tokens for it.\n .mat-mdc-list-item {\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-icon {\n &.mdc-list-item--with-one-line {\n height: map.get((\n 0: 56px,\n -1: 52px,\n -2: 48px,\n -3: 44px,\n -4: 40px,\n -5: 40px,\n ), $density-scale);\n }\n\n &.mdc-list-item--with-two-lines {\n height: map.get((\n 0: 72px,\n -1: 68px,\n -2: 64px,\n -3: 60px,\n -4: 56px,\n -5: 56px,\n ), $density-scale);\n }\n }\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n $mdc-list-typography-tokens: tokens-mdc-list.get-typography-tokens($theme);\n\n // Add values for MDC list tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-list-theme.theme($mdc-list-typography-tokens);\n @include token-utils.create-token-values(\n tokens-mat-list.$prefix, tokens-mat-list.get-typography-tokens($theme));\n }\n\n // MDC does not have tokens for the subheader.\n // TODO(mmalerba): Discuss with MDC about adding them, or create custom tokens.\n .mdc-list-group__subheader {\n font: inspection.get-theme-typography($theme, subtitle-1, font);\n letter-spacing: inspection.get-theme-typography($theme, subtitle-1, letter-spacing);\n }\n }\n}\n\n@mixin theme($theme) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-list') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme));\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @include mdc-list-theme.theme(token-utils.get-tokens-for($tokens, tokens-mdc-list.$prefix));\n\n $mat-list-tokens: token-utils.get-tokens-for($tokens, tokens-mat-list.$prefix);\n @include token-utils.create-token-values(tokens-mat-list.$prefix, $mat-list-tokens);\n}\n","@use '@material/tab-indicator/tab-indicator-theme' as mdc-tab-indicator-theme;\n@use '@material/tab/tab-theme' as mdc-tab-theme;\n@use '../core/style/sass-utils';\n@use '../core/tokens/m2/mdc/tab' as tokens-mdc-tab;\n@use '../core/tokens/m2/mdc/tab-indicator' as tokens-mdc-tab-indicator;\n@use '../core/tokens/m2/mat/tab-header' as tokens-mat-tab-header;\n@use '../core/tokens/m2/mat/tab-header-with-background' as tokens-mat-tab-header-with-background;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/tokens/token-utils';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-tab.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-tab-indicator-theme.theme(tokens-mdc-tab-indicator.get-unthemable-tokens());\n @include mdc-tab-theme.secondary-navigation-tab-theme(tokens-mdc-tab.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-tab-header.$prefix, tokens-mat-tab-header.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-unthemable-tokens()\n );\n }\n }\n}\n\n/// Outputs color theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the tab indicator: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-tab-group, .mat-mdc-tab-nav-bar {\n @include _palette-styles($theme, primary);\n\n &.mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($theme, warn);\n }\n\n &.mat-background-primary {\n @include _background-styles($theme, primary);\n }\n\n &.mat-background-accent {\n @include _background-styles($theme, accent);\n }\n\n &.mat-background-warn {\n @include _background-styles($theme, warn);\n }\n }\n }\n}\n\n@mixin _background-styles($theme, $palette-name) {\n @include token-utils.create-token-values(tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-color-tokens($theme, $palette-name));\n}\n\n@mixin _palette-styles($theme, $palette-name) {\n @include mdc-tab-theme.secondary-navigation-tab-theme(\n tokens-mdc-tab.get-color-tokens($theme, $palette-name));\n @include mdc-tab-indicator-theme.theme(\n tokens-mdc-tab-indicator.get-color-tokens($theme, $palette-name));\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix,\n tokens-mat-tab-header.get-color-tokens($theme, $palette-name));\n}\n\n/// Outputs typography theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n .mat-mdc-tab-header {\n @include mdc-tab-theme.secondary-navigation-tab-theme(\n tokens-mdc-tab.get-typography-tokens($theme));\n @include mdc-tab-indicator-theme.theme(\n tokens-mdc-tab-indicator.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix,\n tokens-mat-tab-header.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n .mat-mdc-tab-header {\n @include mdc-tab-theme.secondary-navigation-tab-theme(\n tokens-mdc-tab.get-density-tokens($theme));\n @include mdc-tab-indicator-theme.theme(\n tokens-mdc-tab-indicator.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix,\n tokens-mat-tab-header.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-tab-header-with-background.$prefix,\n tokens-mat-tab-header-with-background.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-tab.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the tab indicator: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-tabs') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-tab-indicator-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mdc-tab-indicator.$prefix, $options...);\n $mat-tab-header-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mat-tab-header.$prefix, $options...);\n // Don't pass $options here, because the mdc-tab doesn't have color variants,\n // only the mdc-tab-indicator and mat-tab-header do.\n $mdc-tab-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-tab.$prefix);\n @include mdc-tab-theme.secondary-navigation-tab-theme($mdc-tab-tokens);\n @include mdc-tab-indicator-theme.theme($mdc-tab-indicator-tokens);\n @include token-utils.create-token-values(tokens-mat-tab-header.$prefix, $mat-tab-header-tokens);\n}\n","@use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme;\n@use '@material/form-field/form-field-theme' as mdc-form-field-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/checkbox' as tokens-mdc-checkbox;\n@use '../core/tokens/m2/mdc/form-field' as tokens-mdc-form-field;\n@use '../core/tokens/m2/mat/checkbox' as tokens-mat-checkbox;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-checkbox.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the checkbox: primary, secondary, tertiary, or\n/// error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-color-tokens($theme));\n }\n\n .mat-mdc-checkbox {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-color-tokens($theme));\n\n &.mat-primary {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, primary));\n }\n\n &.mat-warn {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-typography-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-typography-tokens($theme));\n }\n\n .mat-mdc-checkbox {\n @include mdc-form-field-theme.theme(tokens-mdc-form-field.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n $density-scale: inspection.get-theme-density($theme);\n\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-checkbox-theme.theme(tokens-mdc-checkbox.get-density-tokens($theme));\n @include token-utils.create-token-values(\n tokens-mat-checkbox.$prefix, tokens-mat-checkbox.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the checkbox: primary, secondary, tertiary, or\n/// error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-checkbox') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-checkbox-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mdc-checkbox.$prefix, $options...);\n // Don't pass $options here, since the mdc-form-field doesn't support color options,\n // only the mdc-checkbox does.\n $mdc-form-field-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-form-field.$prefix);\n $mat-checkbox-tokens: token-utils.get-tokens-for($tokens, tokens-mat-checkbox.$prefix);\n @include mdc-checkbox-theme.theme($mdc-checkbox-tokens);\n @include mdc-form-field-theme.theme($mdc-form-field-tokens);\n @include token-utils.create-token-values(tokens-mat-checkbox.$prefix, $mat-checkbox-tokens);\n}\n","@use '@angular/cdk';\n@use '../tokens/m2/mat/ripple' as tokens-mat-ripple;\n@use '../tokens/token-utils';\n\n@mixin ripple() {\n // The host element of an mat-ripple directive should always have a position of \"absolute\" or\n // \"relative\" so that the ripples inside are correctly positioned relatively to the container.\n .mat-ripple {\n overflow: hidden;\n\n // By default, every ripple container should have position: relative in favor of creating an\n // easy API for developers using the MatRipple directive.\n position: relative;\n\n // Promote containers that have ripples to a new layer. We want to target `:not(:empty)`,\n // because we don't want all ripple containers to have their own layer since they're used in a\n // lot of places and the layer is only relevant while animating. Note that ideally we'd use\n // the `contain` property here (see #13175), because `:empty` can be broken by having extra\n // text inside the element, but it isn't very well supported yet.\n &:not(:empty) {\n transform: translateZ(0);\n }\n }\n\n .mat-ripple.mat-ripple-unbounded {\n overflow: visible;\n }\n\n .mat-ripple-element {\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\n\n // We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n transform: scale3d(0, 0, 0);\n\n @include token-utils.use-tokens(\n tokens-mat-ripple.$prefix, tokens-mat-ripple.get-token-slots()) {\n // We have to emit a fallback value here, because some internal builds depend on it.\n background-color: var(#{token-utils.get-token-variable(color)}, rgba(#000, 0.1));\n }\n\n // In high contrast mode the ripple is opaque, causing it to obstruct the content.\n @include cdk.high-contrast(active, off) {\n display: none;\n }\n }\n}\n","/// Emits a CSS class, `.cdk-visually-hidden`. This class can be applied to an element\n/// to make that element visually hidden while remaining available to assistive technology.\n@mixin a11y-visually-hidden() {\n .cdk-visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n\n // This works around a Chrome bug that can cause the tab to crash when large amounts of\n // non-English text get wrapped: https://bugs.chromium.org/p/chromium/issues/detail?id=1201444\n white-space: nowrap;\n\n // Avoid browsers rendering the focus ring in some cases.\n outline: 0;\n\n // Avoid some cases where the browser will still render the native controls (see #9049).\n -webkit-appearance: none;\n -moz-appearance: none;\n\n // We need at least one of top/bottom/left/right in order to prevent cases where the\n // absolute-positioned element is pushed down and can affect scrolling (see #24597).\n // `left` was chosen here, because it's the least likely to break overrides where the\n // element might have been positioned (e.g. `mat-checkbox`).\n left: 0;\n\n [dir='rtl'] & {\n left: auto;\n right: 0;\n }\n }\n}\n\n/// @deprecated Use `a11y-visually-hidden`.\n@mixin a11y() {\n @include a11y-visually-hidden;\n}\n\n/// Emits the mixin's content nested under `$selector-context` if `$selector-context`\n/// is non-empty.\n/// @param {String} selector-context The selector under which to nest the mixin's content.\n@mixin _optionally-nest-content($selector-context) {\n @if ($selector-context == '') {\n @content;\n }\n @else {\n #{$selector-context} {\n @content;\n }\n }\n}\n\n/// Applies styles for users in high contrast mode. Note that this only applies\n/// to Microsoft browsers. Chrome can be included by checking for the `html[hc]`\n/// attribute, however Chrome handles high contrast differently.\n///\n/// @param {String} target Type of high contrast setting to target. Defaults to `active`, can be\n/// `white-on-black` or `black-on-white`.\n/// @param {String} encapsulation Whether to emit styles for view encapsulation. Values are:\n/// * `on` - works for `Emulated`, `Native`, and `ShadowDom`\n/// * `off` - works for `None`\n/// * `any` - works for all encapsulation modes by emitting the CSS twice (default).\n@mixin high-contrast($target: active, $encapsulation: 'any') {\n @if ($target != 'active' and $target != 'black-on-white' and $target != 'white-on-black') {\n @error 'Unknown cdk-high-contrast value \"#{$target}\" provided. ' +\n 'Allowed values are \"active\", \"black-on-white\", and \"white-on-black\"';\n }\n\n @if ($encapsulation != 'on' and $encapsulation != 'off' and $encapsulation != 'any') {\n @error 'Unknown cdk-high-contrast encapsulation \"#{$encapsulation}\" provided. ' +\n 'Allowed values are \"on\", \"off\", and \"any\"';\n }\n\n // If the selector context has multiple parts, such as `.section, .region`, just doing\n // `.cdk-high-contrast-xxx #{&}` will only apply the parent selector to the first part of the\n // context. We address this by nesting the selector context under .cdk-high-contrast.\n @at-root {\n $selector-context: #{&};\n\n @if ($encapsulation != 'on') {\n // Note that if this selector is updated, the same change has to be made inside\n // `_overlay.scss` which can't depend on this mixin due to some infrastructure limitations.\n .cdk-high-contrast-#{$target} {\n @include _optionally-nest-content($selector-context) {\n @content;\n }\n }\n }\n\n @if ($encapsulation != 'off') {\n .cdk-high-contrast-#{$target} :host {\n @include _optionally-nest-content($selector-context) {\n @content;\n }\n }\n }\n }\n}\n","// We want overlays to always appear over user content, so set a baseline\n// very high z-index for the overlay container, which is where we create the new\n// stacking context for all overlays.\n$overlay-container-z-index: 1000 !default;\n$overlay-z-index: 1000 !default;\n$overlay-backdrop-z-index: 1000 !default;\n\n// Background color for all of the backdrops\n$overlay-backdrop-color: rgba(0, 0, 0, 0.32) !default;\n\n// Default backdrop animation is based on the Material Design swift-ease-out.\n$backdrop-animation-duration: 400ms !default;\n$backdrop-animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;\n\n/// Emits structural styles required for cdk/overlay to function.\n@mixin overlay() {\n .cdk-overlay-container, .cdk-global-overlay-wrapper {\n // Disable events from being captured on the overlay container.\n pointer-events: none;\n\n // The container should be the size of the viewport.\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n }\n\n // The overlay-container is an invisible element which contains all individual overlays.\n .cdk-overlay-container {\n position: fixed;\n z-index: $overlay-container-z-index;\n\n &:empty {\n // Hide the element when it doesn't have any child nodes. This doesn't\n // include overlays that have been detached, rather than disposed.\n display: none;\n }\n }\n\n // We use an extra wrapper element in order to use make the overlay itself a flex item.\n // This makes centering the overlay easy without running into the subpixel rendering\n // problems tied to using `transform` and without interfering with the other position\n // strategies.\n .cdk-global-overlay-wrapper {\n display: flex;\n position: absolute;\n z-index: $overlay-z-index;\n }\n\n // A single overlay pane.\n .cdk-overlay-pane {\n // Note: it's important for this one to start off `absolute`,\n // in order for us to be able to measure it correctly.\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n z-index: $overlay-z-index;\n\n // For connected-position overlays, we set `display: flex` in\n // order to force `max-width` and `max-height` to take effect.\n display: flex;\n max-width: 100%;\n max-height: 100%;\n }\n\n .cdk-overlay-backdrop {\n // TODO(jelbourn): reuse sidenav fullscreen mixin.\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n\n z-index: $overlay-backdrop-z-index;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n transition: opacity $backdrop-animation-duration $backdrop-animation-timing-function;\n opacity: 0;\n\n &.cdk-overlay-backdrop-showing {\n opacity: 1;\n\n // Note that we can't import and use the `high-contrast` mixin from `_a11y.scss`, because\n // this file will be copied to the top-level `cdk` package when putting together the files\n // for npm. Any relative import paths we use here will become invalid once the file is copied.\n .cdk-high-contrast-active & {\n // In high contrast mode the rgba background will become solid\n // so we need to fall back to making it opaque using `opacity`.\n opacity: 0.6;\n }\n }\n }\n\n .cdk-overlay-dark-backdrop {\n background: $overlay-backdrop-color;\n }\n\n .cdk-overlay-transparent-backdrop {\n // Define a transition on the visibility so that the `transitionend` event can fire immediately.\n transition: visibility 1ms linear, opacity 1ms linear;\n visibility: hidden;\n opacity: 1;\n\n // Note: as of Firefox 57, having the backdrop be `background: none` will prevent it from\n // capturing the user's mouse scroll events. Since we also can't use something like\n // `rgba(0, 0, 0, 0)`, we work around the inconsistency by not setting the background at\n // all and using `opacity` to make the element transparent.\n &.cdk-overlay-backdrop-showing {\n opacity: 0;\n visibility: visible;\n }\n }\n\n .cdk-overlay-backdrop-noop-animation {\n transition: none;\n }\n\n // Overlay parent element used with the connected position strategy. Used to constrain the\n // overlay element's size to fit within the viewport.\n .cdk-overlay-connected-position-bounding-box {\n position: absolute;\n z-index: $overlay-z-index;\n\n // We use `display: flex` on this element exclusively for centering connected overlays.\n // When *not* centering, a top/left/bottom/right will be set which overrides the normal\n // flex layout.\n display: flex;\n\n // We use the `column` direction here to avoid some flexbox issues in Edge\n // when using the \"grow after open\" options.\n flex-direction: column;\n\n // Add some dimensions so the element has an `innerText` which some people depend on in tests.\n min-width: 1px;\n min-height: 1px;\n }\n\n // Used when disabling global scrolling.\n .cdk-global-scrollblock {\n position: fixed;\n\n // Necessary for the content not to lose its width. Note that we're using 100%, instead of\n // 100vw, because 100vw includes the width plus the scrollbar, whereas 100% is the width\n // that the element had before we made it `fixed`.\n width: 100%;\n\n // Note: this will always add a scrollbar to whatever element it is on, which can\n // potentially result in double scrollbars. It shouldn't be an issue, because we won't\n // block scrolling on a page that doesn't have a scrollbar in the first place.\n overflow-y: scroll;\n }\n}\n","// Structural styles for the autosize text fields.\n@mixin text-field-autosize() {\n // Remove the resize handle on autosizing textareas, because whatever height\n // the user resized to will be overwritten once they start typing again.\n textarea.cdk-textarea-autosize {\n resize: none;\n }\n\n // This class is temporarily applied to the textarea when it is being measured. It is immediately\n // removed when measuring is complete. We use `!important` rules here to make sure user-specified\n // rules do not interfere with the measurement.\n textarea.cdk-textarea-autosize-measuring {\n @include _autosize-measuring-base;\n height: auto !important;\n overflow: hidden !important;\n }\n\n // Similar to the `cdk-textarea-autosize-measuring` class, but only applied on Firefox. We need\n // to use this class, because Firefox has a bug where changing the `overflow` breaks the user's\n // ability to undo/redo what they were typing (see #16629). This class is only scoped to Firefox,\n // because the measurements there don't seem to be affected by the `height: 0`, whereas on other\n // browsers they are, e.g. Chrome detects longer text and IE does't resize back to normal.\n // Identical issue report: https://bugzilla.mozilla.org/show_bug.cgi?id=448784\n textarea.cdk-textarea-autosize-measuring-firefox {\n @include _autosize-measuring-base;\n height: 0 !important;\n }\n}\n\n// Core styles that enable monitoring autofill state of text fields.\n@mixin text-field-autofill() {\n // Keyframes that apply no styles, but allow us to monitor when an text field becomes autofilled\n // by watching for the animation events that are fired when they start. Note: the /*!*/ comment is\n // needed to prevent LibSass from stripping the keyframes out.\n // Based on: https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n @keyframes cdk-text-field-autofill-start {/*!*/}\n @keyframes cdk-text-field-autofill-end {/*!*/}\n\n .cdk-text-field-autofill-monitored:-webkit-autofill {\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\n animation: cdk-text-field-autofill-start 0s 1ms;\n }\n\n .cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\n // Since Chrome 80 we need a 1ms delay, or the animationstart event won't fire.\n animation: cdk-text-field-autofill-end 0s 1ms;\n }\n}\n\n@mixin _autosize-measuring-base {\n // Having 2px top and bottom padding seems to fix a bug where Chrome gets an incorrect\n // measurement. We just have to account for it later and subtract it off the final result.\n padding: 2px 0 !important;\n box-sizing: content-box !important;\n}\n\n// Used to generate UIDs for keyframes used to change the text field autofill styles.\n$autofill-color-frame-count: 0;\n\n// Mixin used to apply custom background and foreground colors to an autofilled text field.\n// Based on: https://stackoverflow.com/questions/2781549/\n// removing-input-background-colour-for-chrome-autocomplete#answer-37432260\n@mixin text-field-autofill-color($background, $foreground:'') {\n @keyframes cdk-text-field-autofill-color-#{$autofill-color-frame-count} {\n to {\n background: $background;\n @if $foreground != '' { color: $foreground; }\n }\n }\n\n &:-webkit-autofill {\n animation: cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\n }\n\n &.cdk-text-field-autofill-monitored:-webkit-autofill {\n // Since Chrome 80 we need a 1ms delay for cdk-text-field-autofill-start, or the animationstart\n // event won't fire.\n animation: cdk-text-field-autofill-start 0s 1ms,\n cdk-text-field-autofill-color-#{$autofill-color-frame-count} both;\n }\n\n $autofill-color-frame-count: $autofill-color-frame-count + 1 !global;\n}\n\n// @deprecated Use `autosize` and `autofill` instead.\n@mixin text-field {\n @include text-field-autosize();\n @include text-field-autofill();\n}\n","@use 'sass:map';\n@use 'sass:meta';\n@use '@angular/cdk';\n@use '../style/layout-common';\n@use '../theming/theming';\n@use '../theming/inspection';\n\n// Private sass variables that will be used as reference throughout component stylesheets.\n$default-border-width: 3px;\n$default-border-style: solid;\n$default-border-color: transparent;\n$default-border-radius: 4px;\n\n// Mixin that renders the focus indicator structural styles.\n@mixin structural-styling($prefix) {\n .#{$prefix}-focus-indicator {\n position: relative;\n\n &::before {\n @include layout-common.fill();\n box-sizing: border-box;\n pointer-events: none;\n display: var(--#{$prefix}-focus-indicator-display, none); // Hide the indicator by default.\n border: var(\n --#{$prefix}-focus-indicator-border-width,\n #{$default-border-width}\n )\n var(\n --#{$prefix}-focus-indicator-border-style,\n #{$default-border-style}\n )\n var(\n --#{$prefix}-focus-indicator-border-color,\n #{$default-border-color}\n );\n border-radius: var(\n --#{$prefix}-focus-indicator-border-radius,\n #{$default-border-radius}\n );\n }\n\n // By default, render the focus indicator when the focus indicator host element takes focus.\n // Defining a pseudo element's content will cause it to render.\n &:focus::before {\n content: '';\n }\n }\n\n // Enable the indicator in high contrast mode.\n @include cdk.high-contrast(active, off) {\n @include customize-focus-indicators((display: block), $prefix);\n }\n}\n\n// Generates CSS variable declarations from a map.\n@mixin _output-variables($map) {\n @each $key, $value in $map {\n @if ($value) {\n --#{$key}: #{$value};\n }\n }\n}\n\n// Mixin that dedups CSS variables for the strong-focus-indicators mixin.\n@mixin customize-focus-indicators($config, $prefix) {\n $border-style: map.get($config, border-style);\n $border-width: map.get($config, border-width);\n $border-radius: map.get($config, border-radius);\n $border-color: map.get($config, border-color);\n $display: map.get($config, display);\n $map: (\n '#{$prefix}-focus-indicator-border-style': $border-style,\n '#{$prefix}-focus-indicator-border-width': $border-width,\n '#{$prefix}-focus-indicator-border-radius': $border-radius,\n '#{$prefix}-focus-indicator-border-color': $border-color,\n '#{$prefix}-focus-indicator-display': $display,\n );\n\n @if (&) {\n @include _output-variables($map);\n }\n @else {\n // We use `html` here instead of `:root`, because the\n // latter causes some issues with internal tooling.\n html {\n @include _output-variables($map);\n }\n }\n}\n\n@mixin strong-focus-indicators($config: ()) {\n // Default focus indicator config.\n $default-config: (\n border-color: black,\n display: block,\n );\n\n // Merge default config with user config.\n $config: map.merge($default-config, $config);\n\n @include customize-focus-indicators($config, 'mat');\n}\n\n@mixin mdc-strong-focus-indicators($config: ()) {\n // Default focus indicator config.\n $default-config: (\n border-color: black,\n display: block,\n );\n\n // Merge default config with user config.\n $config: map.merge($default-config, $config);\n\n @include customize-focus-indicators($config, 'mat-mdc');\n}\n\n@mixin strong-focus-indicators-color($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat');\n }\n @else {\n $border-color: inspection.get-theme-color($theme-or-color, primary);\n @include customize-focus-indicators((\n border-color: $border-color\n ), 'mat');\n }\n}\n\n@mixin strong-focus-indicators-theme($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat');\n }\n @else {\n @include theming.private-check-duplicate-theme-styles($theme-or-color, 'mat-focus-indicators') {\n @if inspection.theme-has($theme-or-color, color) {\n @include strong-focus-indicators-color($theme-or-color);\n }\n }\n }\n}\n\n@mixin mdc-strong-focus-indicators-color($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat-mdc');\n }\n @else {\n $border-color: inspection.get-theme-color($theme-or-color, primary);\n @include customize-focus-indicators((\n border-color: $border-color\n ), 'mat-mdc');\n }\n}\n\n@mixin mdc-strong-focus-indicators-theme($theme-or-color) {\n @if meta.type-of($theme-or-color) == 'color' {\n @include customize-focus-indicators((\n border-color: $theme-or-color\n ), 'mat-mdc');\n }\n @else {\n @include theming.private-check-duplicate-theme-styles(\n $theme-or-color, 'mat-mdc-focus-indicators') {\n @if inspection.theme-has($theme-or-color, color) {\n @include mdc-strong-focus-indicators-color($theme-or-color);\n }\n }\n }\n}\n","// This mixin ensures an element spans to fill the nearest ancestor with defined positioning.\n@mixin fill {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n}\n","@use '@angular/cdk';\n@use './tokens/m2/mat/app' as tokens-mat-app;\n@use './tokens/token-utils';\n@use './ripple/ripple';\n@use './focus-indicators/private';\n@use './mdc-helpers/mdc-helpers';\n\n// Mixin that renders all of the core styles that are not theme-dependent.\n@mixin core() {\n @include ripple.ripple();\n @include cdk.a11y-visually-hidden();\n @include cdk.overlay();\n @include cdk.text-field-autosize();\n @include cdk.text-field-autofill();\n @include private.structural-styling('mat');\n @include private.structural-styling('mat-mdc');\n\n // Wrapper element that provides the theme background when the\n // user's content isn't inside of a `mat-sidenav-container`.\n @at-root {\n .mat-app-background {\n @include mdc-helpers.disable-mdc-fallback-declarations {\n @include token-utils.use-tokens(tokens-mat-app.$prefix, tokens-mat-app.get-token-slots()) {\n // Note: we need to emit fallback values here to avoid errors in internal builds.\n @include token-utils.create-token-slot(background-color, background-color, transparent);\n @include token-utils.create-token-slot(color, text-color, inherit);\n }\n }\n }\n }\n}\n","@use '../tokens/m2/mat/option' as tokens-mat-option;\n@use '../tokens/token-utils';\n@use '../style/sass-utils';\n@use '../theming/theming';\n@use '../theming/inspection';\n@use '../theming/validation';\n@use '../typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-option.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {}\n}\n\n/// Outputs color theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected option: primary, secondary,\n/// tertiary, or error (If not specified, default secondary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($theme));\n }\n\n .mat-accent {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($theme, accent));\n }\n\n .mat-warn {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-color-tokens($theme, warn));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-option.$prefix,\n tokens-mat-option.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {}\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the selected option: primary, secondary,\n/// tertiary, or error (If not specified, default secondary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-option') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-option-tokens: token-utils.get-tokens-for($tokens, tokens-mat-option.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-option.$prefix, $mat-option-tokens);\n}\n","@use '../../theming/theming';\n@use '../../theming/inspection';\n@use '../../theming/validation';\n@use '../../style/sass-utils';\n@use '../../tokens/token-utils';\n@use '../../tokens/m2/mat/full-pseudo-checkbox' as tokens-mat-full-pseudo-checkbox;\n@use '../../tokens/m2/mat/minimal-pseudo-checkbox' as tokens-mat-minimal-pseudo-checkbox;\n\n@mixin _palette-styles($theme, $palette-name) {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-full-pseudo-checkbox.$prefix,\n tokens-mat-full-pseudo-checkbox.get-color-tokens($theme, $palette-name));\n @include token-utils.create-token-values(tokens-mat-minimal-pseudo-checkbox.$prefix,\n tokens-mat-minimal-pseudo-checkbox.get-color-tokens($theme, $palette-name));\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-full-pseudo-checkbox-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-full-pseudo-checkbox.$prefix, $options...);\n $mat-minimal-pseudo-checkbox-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-minimal-pseudo-checkbox.$prefix, $options...);\n @include token-utils.create-token-values(\n tokens-mat-full-pseudo-checkbox.$prefix, $mat-full-pseudo-checkbox-tokens);\n @include token-utils.create-token-values(\n tokens-mat-minimal-pseudo-checkbox.$prefix, $mat-minimal-pseudo-checkbox-tokens);\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {}\n\n/// Outputs color theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the pseudo-checkbox: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-primary {\n @include _palette-styles($theme, primary);\n }\n\n // Default to the accent color. Note that the pseudo checkboxes are meant to inherit the\n // theme from their parent, rather than implementing their own theming, which is why we\n // don't attach to the `mat-*` classes. Also note that this needs to be below `.mat-primary`\n // in order to allow for the color to be overwritten if the checkbox is inside a parent that\n // has `mat-accent` and is placed inside another parent that has `mat-primary`.\n @include _palette-styles($theme, accent);\n .mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n .mat-warn {\n @include _palette-styles($theme, warn);\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n}\n\n/// Outputs density theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-pseudo-checkbox.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the pseudo-checkbox: primary, secondary,\n/// tertiary, or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-pseudo-checkbox') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n","@use './theming/theming';\n@use './theming/inspection';\n@use './theming/validation';\n@use './style/private';\n@use './ripple/ripple-theme';\n@use './option/option-theme';\n@use './option/optgroup-theme';\n@use './selection/pseudo-checkbox/pseudo-checkbox-theme';\n@use './style/elevation';\n@use './style/sass-utils';\n@use './typography/typography';\n@use './tokens/token-utils';\n@use './tokens/m2/mat/app' as tokens-mat-app;\n@use './tokens/m2/mat/ripple' as tokens-mat-ripple;\n@use './tokens/m2/mat/option' as tokens-mat-option;\n@use './tokens/m2/mat/full-pseudo-checkbox' as tokens-mat-full-pseudo-checkbox;\n@use './tokens/m2/mat/minimal-pseudo-checkbox' as tokens-mat-minimal-pseudo-checkbox;\n\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include ripple-theme.base($theme);\n @include option-theme.base($theme);\n @include optgroup-theme.base($theme);\n @include pseudo-checkbox-theme.base($theme);\n }\n}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n @include ripple-theme.color($theme);\n @include option-theme.color($theme);\n @include optgroup-theme.color($theme);\n @include pseudo-checkbox-theme.color($theme);\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-app.$prefix,\n tokens-mat-app.get-color-tokens($theme));\n }\n\n // Provides external CSS classes for each elevation value. Each CSS class is formatted as\n // `mat-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the element is\n // elevated.\n @for $zValue from 0 through 24 {\n $selector: elevation.$prefix + $zValue;\n // We need the `mat-mdc-elevation-specific`, because some MDC mixins\n // come with elevation baked in and we don't have a way of removing it.\n .#{$selector}, .mat-mdc-elevation-specific.#{$selector} {\n @include private.private-theme-elevation($zValue, $theme);\n }\n }\n }\n\n // TODO(crisbeto): move this into the base.\n // Marker that is used to determine whether the user has added a theme to their page.\n @at-root {\n .mat-theme-loaded-marker {\n display: none;\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include option-theme.typography($theme);\n @include optgroup-theme.typography($theme);\n @include pseudo-checkbox-theme.typography($theme);\n @include ripple-theme.typography($theme);\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include option-theme.density($theme);\n @include optgroup-theme.density($theme);\n @include pseudo-checkbox-theme.density($theme);\n @include ripple-theme.density($theme);\n }\n}\n\n// Mixin that renders all of the core styles that depend on the theme.\n@mixin theme($theme, $options...) {\n // Wrap the sub-theme includes in the duplicate theme styles mixin. This ensures that\n // there won't be multiple warnings. e.g. if `mat-core-theme` reports a warning, then\n // the imported themes (such as `mat-ripple-theme`) should not report again.\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-core') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-app-tokens: token-utils.get-tokens-for($tokens, tokens-mat-app.$prefix, $options...);\n $mat-ripple-tokens: token-utils.get-tokens-for($tokens, tokens-mat-ripple.$prefix, $options...);\n $mat-option-tokens: token-utils.get-tokens-for($tokens, tokens-mat-option.$prefix, $options...);\n $mat-full-pseudo-checkbox-tokens: token-utils.get-tokens-for($tokens,\n tokens-mat-full-pseudo-checkbox.$prefix, $options...);\n $mat-minimal-pseudo-checkbox-tokens: token-utils.get-tokens-for($tokens,\n tokens-mat-minimal-pseudo-checkbox.$prefix, $options...);\n\n @include token-utils.create-token-values(tokens-mat-app.$prefix, $mat-app-tokens);\n @include token-utils.create-token-values(tokens-mat-ripple.$prefix, $mat-ripple-tokens);\n @include token-utils.create-token-values(tokens-mat-option.$prefix, $mat-option-tokens);\n @include token-utils.create-token-values(tokens-mat-full-pseudo-checkbox.$prefix,\n $mat-full-pseudo-checkbox-tokens);\n @include token-utils.create-token-values(tokens-mat-minimal-pseudo-checkbox.$prefix,\n $mat-minimal-pseudo-checkbox-tokens);\n}\n","@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mdc/linear-progress' as tokens-mdc-linear-progress;\n@use '@material/linear-progress/linear-progress-theme' as mdc-linear-progress-theme;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-linear-progress-theme.theme(tokens-mdc-linear-progress.get-unthemable-tokens());\n }\n }\n}\n\n@mixin _palette-styles($theme, $palette-name) {\n @include mdc-linear-progress-theme.theme(\n tokens-mdc-linear-progress.get-color-tokens($theme, $palette-name));\n}\n\n/// Outputs color theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the progress bar: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n .mat-mdc-progress-bar {\n @include _palette-styles($theme, primary);\n\n &.mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($theme, warn);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {}\n\n\n/// Outputs density theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-progress-bar.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the progress bar: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-bar') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-linear-progress-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-linear-progress.$prefix, $options...);\n @include mdc-linear-progress-theme.theme($mdc-linear-progress-tokens);\n}\n","@use '@material/textfield/filled-text-field-theme' as mdc-filled-text-field-theme;\n@use '@material/textfield/outlined-text-field-theme' as mdc-outlined-text-field-theme;\n@use '../core/tokens/m2/mdc/filled-text-field' as tokens-mdc-filled-text-field;\n@use '../core/tokens/m2/mdc/outlined-text-field' as tokens-mdc-outlined-text-field;\n@use '../core/tokens/m2/mat/form-field' as tokens-mat-form-field;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-form-field.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(\n tokens-mdc-filled-text-field.$prefix,\n tokens-mdc-filled-text-field.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mdc-outlined-text-field.$prefix,\n tokens-mdc-outlined-text-field.get-unthemable-tokens());\n @include token-utils.create-token-values(\n tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the form field: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.get-color-tokens($theme));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.get-color-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-color-tokens($theme));\n }\n\n .mat-mdc-form-field.mat-accent {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.private-get-color-palette-color-tokens($theme, accent));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.private-get-color-palette-color-tokens($theme, accent));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-mdc-form-field.mat-warn {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.private-get-color-palette-color-tokens($theme, warn));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.private-get-color-palette-color-tokens($theme, warn));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-filled-text-field-theme.theme(\n tokens-mdc-filled-text-field.get-typography-tokens($theme));\n @include mdc-outlined-text-field-theme.theme(\n tokens-mdc-outlined-text-field.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix,\n tokens-mat-form-field.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-form-field.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the form field: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-form-field') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-filled-text-field-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-filled-text-field.$prefix, $options...);\n $mdc-outlined-text-field-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-outlined-text-field.$prefix, $options...);\n $mat-form-field-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-form-field.$prefix, $options...);\n @include mdc-filled-text-field-theme.theme($mdc-filled-text-field-tokens);\n @include mdc-outlined-text-field-theme.theme($mdc-outlined-text-field-tokens);\n @include token-utils.create-token-values(tokens-mat-form-field.$prefix, $mat-form-field-tokens);\n}\n","@use '../core/tokens/m2/mat/select' as tokens-mat-select;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-select.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-select.get-unthemable-tokens();\n @include token-utils.create-token-values(tokens-mat-select.$prefix, $mat-tokens);\n }\n }\n}\n\n/// Outputs color theme styles for the mat-select.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the select arrow: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-color-tokens($theme));\n\n .mat-mdc-form-field.mat-accent {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-color-tokens($theme, accent));\n }\n\n .mat-mdc-form-field.mat-warn {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-select.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-select.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-select.$prefix,\n tokens-mat-select.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the select arrow: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-select') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-select-tokens: token-utils.get-tokens-for($tokens, tokens-mat-select.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-select.$prefix, $mat-select-tokens);\n}\n","@use '@material/slider/slider-theme' as mdc-slider-theme;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mat/slider' as tokens-mat-slider;\n@use '../core/tokens/m2/mdc/slider' as tokens-mdc-slider;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-slider.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n $mat-tokens: tokens-mat-slider.get-unthemable-tokens();\n @include token-utils.create-token-values(tokens-mat-slider.$prefix, $mat-tokens);\n @include mdc-slider-theme.theme(tokens-mdc-slider.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-slider.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slider: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n $is-dark: inspection.get-theme-type($theme) == dark;\n\n $mdc-color-tokens: token-utils.resolve-elevation(\n tokens-mdc-slider.get-color-tokens($theme),\n handle-elevation,\n handle-shadow-color\n );\n\n $mat-slider-color-tokens: tokens-mat-slider.get-color-tokens($theme);\n\n // Add values for MDC slider tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-slider-theme.theme($mdc-color-tokens);\n @include token-utils.create-token-values(\n tokens-mat-slider.$prefix,\n $mat-slider-color-tokens\n );\n\n .mat-accent {\n @include token-utils.create-token-values(\n tokens-mat-slider.$prefix,\n tokens-mat-slider.private-get-color-palette-color-tokens($theme, accent),\n );\n @include mdc-slider-theme.theme(\n tokens-mdc-slider.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-warn {\n @include token-utils.create-token-values(\n tokens-mat-slider.$prefix,\n tokens-mat-slider.private-get-color-palette-color-tokens($theme, warn),\n );\n @include mdc-slider-theme.theme(\n tokens-mdc-slider.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n }\n}\n\n\n/// Outputs typography theme styles for the mat-slider.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n // Add values for MDC slider tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-slider-theme.theme(tokens-mdc-slider.get-typography-tokens($theme));\n }\n }\n}\n\n\n/// Outputs density theme styles for the mat-slider.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n // Add values for MDC slider tokens.\n @include sass-utils.current-selector-or-root() {\n @include mdc-slider-theme.theme(tokens-mdc-slider.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-option.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the slider: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-slider') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-slider-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-slider.$prefix, $options...);\n $mat-slider-tokens: token-utils.get-tokens-for($tokens, tokens-mat-slider.$prefix, $options...);\n @include mdc-slider-theme.theme($mdc-slider-tokens);\n @include token-utils.create-token-values(tokens-mat-slider.$prefix, $mat-slider-tokens);\n}\n","//\n// Copyright 2022 Google Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n//\n\n// stylelint-disable selector-class-pattern --\n// Internal stylesheet for material list component. Selector '.mdc-*' should\n// only be used in this project.\n\n@use '@material/density/functions' as density-functions;\n@use '@material/dom/mixins' as dom-mixins;\n@use '@material/feature-targeting/feature-targeting';\n@use '@material/ripple/ripple-theme';\n@use '@material/ripple/ripple';\n@use '@material/rtl/rtl';\n@use '@material/shape/mixins' as shape-mixins;\n@use '@material/theme/theme-color';\n@use '@material/theme/theme';\n@use '@material/typography/typography';\n@use './evolution-variables' as variables;\n@use 'sass:list';\n@use 'sass:map';\n@use 'sass:math';\n\n$ripple-target: variables.$ripple-target;\n\n@mixin static-styles($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include _high-contrast-mode($query: $query);\n .mdc-list {\n @include _static-list-base($query: $query);\n }\n\n .mdc-list-item__wrapper {\n @include feature-targeting.targets($feat-structure) {\n display: block;\n }\n }\n\n .mdc-list-item {\n @include item-base($query: $query);\n @include _list-item-baseline-height($query: $query);\n @include one-line-item-start-alignment(center, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n @include three-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n\n @include one-line-item-end-alignment(center, $query: $query);\n @include two-line-item-end-alignment(center, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n\n @include feature-targeting.targets($feat-structure) {\n align-items: stretch;\n cursor: pointer;\n }\n\n // Reset mouse cursor for disabled and non-interactive items.\n &.mdc-list-item--disabled,\n &.mdc-list-item--non-interactive {\n @include feature-targeting.targets($feat-structure) {\n cursor: auto;\n }\n }\n\n // TODO(b/254711887): Likely need to update this to adhere to a HCM focus\n // ring spec.\n // For components using aria-activedescendant, the focus pseudoclass is\n // never applied and use `.mdc-ripple-upgraded--background-focused` instead.\n &:not(.mdc-list-item--selected):focus::before,\n &.mdc-ripple-upgraded--background-focused::before {\n @include dom-mixins.transparent-border($query: $query);\n }\n\n &.mdc-list-item--selected::before {\n @include dom-mixins.transparent-border(\n $border-width: 3px,\n $border-style: double,\n $query: $query\n );\n }\n\n &.mdc-list-item--selected:focus::before {\n @include dom-mixins.transparent-border(\n $border-width: 3px,\n $query: $query\n );\n }\n }\n\n // stylelint-disable selector-max-type --\n // Override anchor tag styles for the use-case of a list being used for navigation\n a.mdc-list-item {\n @include feature-targeting.targets($feat-structure) {\n color: inherit;\n text-decoration: none;\n }\n }\n // stylelint-enable selector-max-type\n\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n fill: currentColor;\n flex-shrink: 0;\n pointer-events: none;\n }\n }\n\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n flex-shrink: 0;\n pointer-events: none;\n }\n }\n\n .mdc-list-item__content {\n @include typography.overflow-ellipsis($query);\n @include feature-targeting.targets($feat-structure) {\n align-self: center;\n flex: 1;\n pointer-events: none;\n }\n\n .mdc-list-item--with-two-lines &,\n .mdc-list-item--with-three-lines & {\n @include feature-targeting.targets($feat-structure) {\n align-self: stretch;\n }\n }\n\n // Disable interaction on label elements that may automatically\n // toggle corresponding checkbox / radio input.\n &[for] {\n @include feature-targeting.targets($feat-structure) {\n pointer-events: none;\n }\n }\n }\n\n .mdc-list-item__primary-text {\n @include typography.overflow-ellipsis($query);\n\n .mdc-list-item--with-two-lines &,\n .mdc-list-item--with-three-lines & {\n @include typography.text-baseline(\n $top: 28px,\n $bottom: 20px,\n $query: $query\n );\n }\n }\n\n .mdc-list-item__secondary-text {\n @include typography.overflow-ellipsis($query);\n @include typography.text-baseline(\n $top: 20px,\n $display: block,\n $query: $query\n );\n\n .mdc-list-item--with-three-lines & {\n @include feature-targeting.targets($feat-structure) {\n white-space: normal;\n line-height: 20px;\n }\n }\n\n .mdc-list-item--with-overline & {\n @include feature-targeting.targets($feat-structure) {\n white-space: nowrap;\n line-height: auto;\n }\n }\n }\n\n .mdc-list-item__overline-text {\n @include typography.overflow-ellipsis($query);\n\n .mdc-list-item--with-two-lines & {\n @include typography.text-baseline(\n $top: 24px,\n $bottom: 20px,\n $query: $query\n );\n }\n\n .mdc-list-item--with-three-lines & {\n @include typography.text-baseline(\n $top: 28px,\n $bottom: 20px,\n $query: $query\n );\n }\n }\n\n .mdc-list-item--with-leading-avatar {\n @include item-start-spacing(16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n border-radius: 50%;\n }\n }\n }\n\n .mdc-list-item--with-leading-icon {\n @include item-start-spacing(\n $leading: 16px,\n $trailing: 32px,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-thumbnail {\n @include item-start-spacing(16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-image {\n @include item-start-spacing(16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _one-line-item-taller-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n @include _two-line-item-tall-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n }\n\n .mdc-list-item--with-leading-video {\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 8px,\n $query: $query\n );\n @include item-start-spacing($leading: 0, $trailing: 16px, $query: $query);\n @include _two-line-item-text-baseline($query: $query);\n @include _one-line-item-taller-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n @include _two-line-item-tall-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n }\n\n .mdc-list-item--with-leading-checkbox {\n $leading: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-start-spacing($leading, $trailing, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-radio {\n $leading: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-start-spacing($leading, $trailing, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-leading-switch {\n @include item-start-spacing(16px, $query: $query);\n @include two-line-item-start-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n @include _two-line-item-text-baseline($query: $query);\n @include _tall-list-item-baseline-height($query: $query);\n }\n\n .mdc-list-item--with-trailing-icon {\n @include item-end-spacing(16px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-meta {\n @include two-line-item-end-alignment(flex-start, $query: $query);\n @include three-line-item-end-alignment(flex-start, $query: $query);\n @include item-end-spacing($leading: 28px, $trailing: 16px, $query: $query);\n @include _multi-line-item-end-text-baseline($query: $query);\n\n .mdc-list-item__end {\n @include typography.typography(caption, $query);\n }\n }\n\n .mdc-list-item--with-trailing-checkbox {\n $leading: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-end-spacing($leading, $trailing, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n }\n\n .mdc-list-item--with-trailing-radio {\n $leading: absorb-overflow(32px, $actual: 40px, $available: 24px);\n $trailing: absorb-overflow(16px, $actual: 40px, $available: 24px);\n $top: absorb-overflow(16px, $actual: 40px, $available: 24px);\n\n @include item-end-spacing($leading, $trailing, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: $top,\n $query: $query\n );\n }\n\n .mdc-list-item--with-trailing-switch {\n @include item-end-spacing(16px, $query: $query);\n @include three-line-item-end-alignment(\n $alignment: flex-start,\n $offset: 16px,\n $query: $query\n );\n }\n\n .mdc-list-item--with-overline {\n @include _two-line-item-primary-text-baseline(20px, 0px, $query: $query);\n @include _three-line-item-primary-baseline(20px, 0px, $query: $query);\n }\n\n // This must be specified last to ensure that RTL padding takes priority over\n // LTR padding in the cascade.\n .mdc-list-item {\n @include item-spacing(16px, $query: $query);\n }\n\n //\n // Grouping\n //\n .mdc-list-group {\n @include feature-targeting.targets($feat-structure) {\n // Cancel top/bottom padding on individual lists within group\n .mdc-deprecated-list {\n padding: 0;\n }\n }\n }\n .mdc-list-group__subheader {\n @include _list-group-subheader-margin($query: $query);\n }\n\n //\n // Dividers\n //\n\n .mdc-list-divider {\n @include feature-targeting.targets($feat-structure) {\n padding: 0;\n\n // Allows the use of padding to specify leading and trailing insets\n // independently.\n background-clip: content-box;\n }\n }\n\n // The base inset variant corresponds to the item's padding.\n .mdc-list-divider,\n .mdc-list-divider--with-leading-text,\n .mdc-list-divider--with-leading-icon,\n .mdc-list-divider--with-leading-image,\n .mdc-list-divider--with-leading-thumbnail,\n .mdc-list-divider--with-leading-avatar,\n .mdc-list-divider--with-leading-checkbox,\n .mdc-list-divider--with-leading-switch,\n .mdc-list-divider--with-leading-radio {\n @include divider-leading-inset(16px, $query: $query);\n @include divider-trailing-inset(16px, $query: $query);\n }\n\n .mdc-list-divider--with-leading-video {\n @include divider-leading-inset(0px, $query: $query);\n }\n\n // This is needed to ensure that default padding isn't applied in RTL locales.\n .mdc-list-divider {\n @include feature-targeting.targets($feat-structure) {\n @include rtl.rtl {\n padding: 0;\n }\n }\n }\n}\n\n@mixin core-styles($query: feature-targeting.all()) {\n @include without-ripple($query);\n @include with-ripple($query);\n}\n\n@mixin without-ripple($query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n $feat-structure: feature-targeting.create-target($query, structure);\n $feat-typography: feature-targeting.create-target($query, typography);\n\n //\n // Items\n //\n\n @include list-primary-text-ink-color(text-primary-on-background, $query);\n @include list-secondary-text-ink-color(text-secondary-on-background, $query);\n @include list-overline-text-ink-color(text-hint-on-background, $query);\n @include list-icon-fill-color(transparent, $query);\n @include list-icon-ink-color(text-icon-on-background, $query);\n @include list-meta-text-ink-color(text-hint-on-background, $query);\n @include list-disabled-opacity(variables.$content-disabled-opacity, $query);\n @include list-disabled-ink-color(variables.$content-disabled-color, $query);\n @include list-selected-ink-color(variables.$content-selected-color, $query);\n\n @include group-subheader-ink-color(text-primary-on-background, $query);\n\n @include _high-contrast-mode-border-color($query);\n\n .mdc-list {\n @include _typography-list-base($query: $query);\n }\n\n .mdc-list-item__primary-text {\n @include typography.typography(subtitle1, $query);\n }\n\n .mdc-list-item__secondary-text {\n @include typography.typography(body2, $query);\n }\n\n .mdc-list-item__overline-text {\n @include typography.typography(overline, $query);\n }\n\n .mdc-list-item--with-leading-avatar {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-icon {\n @include item-start-size(24px, $query: $query);\n }\n\n .mdc-list-item--with-leading-thumbnail {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-image {\n @include item-start-size(56px, $query: $query);\n }\n\n .mdc-list-item--with-leading-video {\n @include item-start-size($width: 100px, $height: 56px, $query: $query);\n }\n\n .mdc-list-item--with-leading-checkbox {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-radio {\n @include item-start-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-leading-switch {\n @include item-start-size($width: 36px, $height: 20px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-icon {\n @include item-end-size(24px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-meta {\n .mdc-list-item__end {\n @include typography.typography(caption, $query);\n }\n }\n\n .mdc-list-item--with-trailing-checkbox {\n @include item-end-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-radio {\n @include item-end-size(40px, $query: $query);\n }\n\n .mdc-list-item--with-trailing-switch {\n @include item-end-size($width: 36px, $height: 20px, $query: $query);\n }\n\n .mdc-list-group__subheader {\n @include typography.typography(subtitle1, $query);\n }\n\n //\n // Dividers\n //\n\n $divider-color: if(\n theme-color.tone(theme-color.$background) == 'dark',\n variables.$divider-color-on-dark-bg,\n variables.$divider-color-on-light-bg\n );\n\n @include divider-color($divider-color, $query: $query);\n @include divider-height(1px, $query: $query);\n @include static-styles($query: $query);\n} // end of without-ripple\n\n@mixin with-ripple($query: feature-targeting.all()) {\n @include ripple.common($query); // COPYBARA_COMMENT_THIS_LINE\n\n :not(.mdc-list-item--disabled).mdc-list-item {\n @include _item-interactive-ripple($query);\n }\n}\n\n///\n/// Adjusts an offset (i.e., margin) to accomodate contents that are larger than\n/// the space allocated by the specification.\n///\n/// For instance, the specification provides 24x24dp for a checkbox with a 16dp\n/// margin. However, checkboxes are actually 40x40dp. To ensure that the\n/// checkbox is positioned correctly, the margin is reduced by 8dp to reflect\n/// that the margin is already \"baked into\" the checkbox.\n///\n/// Concretely, 40dp - 24dp = 16dp. Assuming that the control is symmetrical,\n/// half of the overflow (8dp) is on the leading side and half on the trailing\n/// side. Therefore, the leading and trailing margins are reduced by 8dp.\n///\n/// Note: this might be more useful if it's added into the leading/trailing\n/// margin mixins as a parameter.\n///\n@function absorb-overflow($offset, $actual, $available, $symmetric: true) {\n @if $actual <= $available {\n @return $offset;\n }\n $overflow: $actual - $available;\n @return $offset - math.div($overflow, if($symmetric, 2, 1));\n}\n\n@mixin one-line-item-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-one-line {\n @include feature-targeting.targets($feat-structure) {\n height: $height;\n }\n }\n}\n\n@mixin two-line-item-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-two-lines {\n @include feature-targeting.targets($feat-structure) {\n height: $height;\n }\n }\n}\n@mixin three-line-item-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-three-lines {\n @include feature-targeting.targets($feat-structure) {\n height: $height;\n }\n }\n}\n\n@mixin list-item-height($height) {\n &.mdc-list-item--with-one-line,\n &.mdc-list-item--with-two-lines,\n &.mdc-list-item--with-three-lines {\n @include theme.property(height, $height);\n }\n}\n\n@mixin item-spacing(\n $leading,\n $trailing: $leading,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n @include rtl.reflexive-property(padding, $leading, $trailing);\n }\n}\n\n@mixin one-line-item-start-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-one-line {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin two-line-item-start-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin three-line-item-start-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin one-line-item-end-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-one-line {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin two-line-item-end-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin three-line-item-end-alignment(\n $alignment,\n $offset: 0,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-structure) {\n align-self: $alignment;\n margin-top: $offset;\n }\n }\n }\n}\n\n@mixin item-start-spacing(\n $leading,\n $trailing: $leading,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n // Extra specificity needed to override default customizations.\n &.mdc-list-item {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, 0, auto);\n }\n\n .mdc-list-item__start {\n @include rtl.reflexive-property(margin, $leading, $trailing);\n }\n }\n}\n\n@mixin item-end-spacing(\n $leading,\n $trailing: $leading,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n // Extra specificity needed to override default customizations.\n &.mdc-list-item {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, auto, 0);\n }\n\n .mdc-list-item__end {\n @include rtl.reflexive-property(margin, $leading, $trailing);\n }\n }\n}\n\n@mixin item-start-size(\n $width,\n $height: $width,\n $query: feature-targeting.all()\n) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n .mdc-list-item__start {\n @include theme.property(width, $width);\n @include theme.property(height, $height);\n }\n }\n}\n\n@mixin item-end-size($width, $height: $width, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n .mdc-list-item__end {\n @include theme.property(width, $width);\n @include theme.property(height, $height);\n }\n }\n}\n\n@mixin list-item-selected-container-color($color) {\n &.mdc-list-item.mdc-list-item--selected {\n @include theme.property(background-color, $color);\n }\n}\n\n@mixin list-primary-text-typography($typography-theme) {\n .mdc-list-item__primary-text {\n @include typography.theme-styles($typography-theme);\n }\n}\n\n@mixin list-primary-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__primary-text {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-secondary-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__secondary-text {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-secondary-text-typography($typography-theme) {\n .mdc-list-item__secondary-text {\n @include typography.theme-styles($typography-theme);\n }\n}\n\n@mixin list-overline-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__overline-text {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-meta-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-icon-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--with-leading-icon .mdc-list-item__start,\n .mdc-list-item--with-trailing-icon .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n@mixin list-icon-fill-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--with-leading-icon .mdc-list-item__start,\n .mdc-list-item--with-trailing-icon .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(background-color, $color);\n }\n }\n}\n\n@mixin list-selected-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--selected,\n .mdc-list-item--activated {\n @include list-primary-text-ink-color($color, $query);\n @include _item-icon-ink-color($color, $leading-only: true, $query: $query);\n }\n}\n\n@mixin list-selected-meta-text-ink-color(\n $color,\n $query: feature-targeting.all()\n) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--selected,\n .mdc-list-item--activated {\n @include list-meta-text-ink-color($color, $query);\n }\n}\n\n@mixin list-disabled-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--disabled {\n @include list-primary-text-ink-color($color, $query);\n @include list-secondary-text-ink-color($color, $query);\n @include list-overline-text-ink-color($color, $query);\n @include _item-icon-ink-color($color, $query: $query);\n @include item-meta-text-ink-color($color, $query);\n }\n}\n\n@mixin list-disabled-opacity($opacity, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-item--disabled {\n .mdc-list-item__start,\n .mdc-list-item__content,\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(opacity, $opacity);\n }\n }\n }\n}\n\n@mixin group-subheader-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-deprecated-list-group__subheader {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n}\n\n///\n/// Sets shape radius (rounded) to single line list variant.\n///\n/// @param {Number | List} $radius Radius size in `px` or percentage. It can be 4 value corner or single radius.\n/// Set to `50%` for rounded shape.\n/// @param {Boolean} $rtl-reflexive Set to true to flip border radius in RTL context. Defaults to `false`.\n/// @param {Number} $density-scale Density scale of single line list. Set this only when custom density is applied.\n/// Defaults to `$mdc-deprecated-list-single-line-density-scale`.\n///\n/// @access public\n///\n@mixin one-line-list-radius(\n $radius,\n $rtl-reflexive: false,\n $density-scale: variables.$one-line-item-density-scale,\n $query: feature-targeting.all()\n) {\n .mdc-list-item--with-one-line {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$one-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$one-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$one-line-item-taller-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n }\n}\n\n@mixin two-line-list-radius(\n $radius,\n $rtl-reflexive: false,\n $density-scale: variables.$two-line-item-density-scale,\n $query: feature-targeting.all()\n) {\n .mdc-list-item--with-two-lines {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$two-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch,\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$two-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n }\n}\n\n@mixin three-line-list-radius(\n $radius,\n $rtl-reflexive: false,\n $density-scale: variables.$three-line-item-density-scale,\n $query: feature-targeting.all()\n) {\n .mdc-list-item--with-three-lines {\n @include shape-mixins.radius(\n $radius,\n $rtl-reflexive,\n $component-height:\n density-functions.prop-value(\n $density-config: variables.$three-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height\n ),\n $query: $query\n );\n }\n}\n\n@mixin divider-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n .mdc-list-divider {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(background-color, $color);\n }\n }\n}\n\n@mixin divider-height($height, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n .mdc-list-divider {\n @include feature-targeting.targets($feat-structure) {\n @include theme.property(height, $height);\n }\n }\n}\n\n@mixin divider-leading-inset($inset, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-divider--with-leading-inset {\n @include feature-targeting.targets($feat-structure) {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, $inset, auto);\n }\n }\n}\n\n@mixin divider-trailing-inset($inset, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n &.mdc-list-divider--with-trailing-inset {\n @include feature-targeting.targets($feat-structure) {\n // We rely on auto to avoid clobbering the opposite padding.\n @include rtl.reflexive-property(padding, auto, $inset);\n }\n }\n}\n\n// The public density mixins apply the appropriate density styles regardless of\n// the item's start contents.\n@mixin one-line-item-density(\n $density-scale,\n $exclude-variants: false,\n $query: feature-targeting.all()\n) {\n @include _one-line-item-density($density-scale, $query: $query);\n\n @if not $exclude-variants {\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch {\n @include _one-line-item-tall-density($density-scale, $query: $query);\n }\n\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include _one-line-item-taller-density($density-scale, $query: $query);\n }\n }\n}\n\n@mixin two-line-item-density($density-scale, $query: feature-targeting.all()) {\n @include _two-line-item-density($density-scale, $query: $query);\n\n &.mdc-list-item--with-leading-avatar,\n &.mdc-list-item--with-leading-icon,\n &.mdc-list-item--with-leading-thumbnail,\n &.mdc-list-item--with-leading-checkbox,\n &.mdc-list-item--with-leading-radio,\n &.mdc-list-item--with-leading-switch,\n &.mdc-list-item--with-leading-image,\n &.mdc-list-item--with-leading-video {\n @include _two-line-item-tall-density($density-scale, $query: $query);\n }\n}\n\n@mixin three-line-item-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n @include _three-line-item-density($density-scale, $query: $query);\n}\n\n//\n// Private\n//\n\n// Mixins that apply baseline height for one-, two-, and three- line item\n// container heights. This mixin calls the density mixins so that the styles\n// can be overwritten by future density mixin calls.\n@mixin _list-item-baseline-height($query: feature-targeting.all()) {\n @include _one-line-item-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n\n @include _two-line-item-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n\n @include _three-line-item-density(\n variables.$three-line-item-density-scale,\n $query: $query\n );\n}\n\n@mixin _tall-list-item-baseline-height($query: feature-targeting.all()) {\n @include _one-line-item-tall-density(\n variables.$one-line-item-density-scale,\n $query: $query\n );\n @include _two-line-item-tall-density(\n variables.$two-line-item-density-scale,\n $query: $query\n );\n}\n\n// The private density mixins allow density properties to be overridden\n// individually to avoid increasing specificity.\n\n@mixin _one-line-item-density($density-scale, $query: feature-targeting.all()) {\n $height: density-functions.prop-value(\n $density-config: variables.$one-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include one-line-item-height($height, $query: $query);\n}\n\n@mixin _one-line-item-tall-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$one-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include one-line-item-height($height, $query: $query);\n}\n\n@mixin _one-line-item-taller-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$one-line-item-taller-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include one-line-item-height($height, $query: $query);\n}\n\n@mixin _two-line-item-density($density-scale, $query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n $height: density-functions.prop-value(\n $density-config: variables.$two-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include two-line-item-height($height, $query: $query);\n\n @if ($density-scale and $density-scale != 0) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .mdc-list-item__primary-text,\n .mdc-list-item__secondary-text {\n margin-top: 0px;\n margin-bottom: 0px;\n line-height: 1.4;\n &::before,\n &::after {\n display: none;\n }\n }\n }\n }\n}\n\n@mixin _two-line-item-tall-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$two-line-item-tall-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include two-line-item-height($height, $query: $query);\n}\n\n@mixin _three-line-item-density(\n $density-scale,\n $query: feature-targeting.all()\n) {\n $height: density-functions.prop-value(\n $density-config: variables.$three-line-item-density-config,\n $density-scale: $density-scale,\n $property-name: height,\n );\n\n @include three-line-item-height($height, $query: $query);\n}\n\n// Split the list-base mixin into two sub-mixins, one holding the\n// structural/static styles (static-list-base) and the other holding styles\n// that are themable (typography-list-base). However, the existing list-base\n// mixin need to be preserved as Angular calls this mixin for autocomplete\n// base styling.\n@mixin _typography-list-base($query: feature-targeting.all()) {\n $feat-typography: feature-targeting.create-target($query, typography);\n @include typography.typography(subtitle1, $query);\n @include feature-targeting.targets($feat-typography) {\n // According to the mocks and stickersheet, the line-height is\n // adjusted to 24px for text content, same as for body1.\n /* @alternate */\n line-height: map.get(map.get(typography.$styles, body1), line-height);\n }\n}\n\n@mixin _static-list-base($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include feature-targeting.targets($feat-structure) {\n margin: 0;\n padding: 8px 0;\n list-style-type: none;\n\n &:focus // lint-disable-focus-psuedo-selector\n {\n outline: none;\n }\n }\n}\n\n@mixin list-base($query: feature-targeting.all()) {\n @include _typography-list-base($query: $query);\n @include _static-list-base($query: $query);\n}\n\n@mixin item-base($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n @include feature-targeting.targets($feat-structure) {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: flex-start;\n overflow: hidden;\n padding: 0;\n\n &:focus // lint-disable-focus-psuedo-selector\n {\n outline: none;\n }\n }\n}\n\n@mixin _item-interactive-ripple($query: feature-targeting.all()) {\n @include ripple.surface(\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple.radius-bounded(\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple-theme.states(\n theme-color.prop-value(on-surface),\n false,\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple-theme.states-activated(\n primary,\n false,\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n @include ripple-theme.states-selected(\n primary,\n false,\n $ripple-target: variables.$ripple-target,\n $query: $query\n );\n\n #{variables.$ripple-target} {\n @include ripple.surface-styles($query: $query);\n @include ripple.target-common($query: $query);\n }\n}\n\n@mixin _two-line-item-text-baseline($query: feature-targeting.all()) {\n @include _two-line-item-primary-text-baseline(32px, 20px, $query: $query);\n @include _two-line-item-overline-text-baseline(28px, 20px, $query: $query);\n @include _two-line-item-meta-text-baseline($top: 32px, $query: $query);\n}\n\n@mixin _two-line-item-primary-text-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__primary-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _three-line-item-primary-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__primary-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _two-line-item-overline-text-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__overline-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _three-line-item-overline-baseline(\n $top,\n $bottom,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__overline-text {\n @include typography.text-baseline(\n $top: $top,\n $bottom: $bottom,\n $query: $query\n );\n }\n }\n}\n\n@mixin _multi-line-item-end-text-baseline($query: feature-targeting.all()) {\n &.mdc-list-item--with-two-lines {\n .mdc-list-item__end {\n @include typography.text-baseline(\n $display: block,\n $top: 28px,\n $query: $query\n );\n }\n }\n\n &.mdc-list-item--with-three-lines {\n .mdc-list-item__end {\n @include typography.text-baseline(\n $display: block,\n $top: 28px,\n $query: $query\n );\n }\n }\n}\n\n@mixin _two-line-item-meta-text-baseline(\n $top,\n $query: feature-targeting.all()\n) {\n &.mdc-list-item--with-two-lines {\n &.mdc-list-item--with-trailing-meta {\n .mdc-list-item__end {\n @include typography.text-baseline(\n $display: block,\n $top: $top,\n $query: $query\n );\n }\n }\n }\n}\n\n@mixin item-meta-text-ink-color($color, $query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n\n &.mdc-list-item--with-trailing-meta {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n }\n}\n\n@mixin _item-icon-ink-color(\n $color,\n $leading-only: false,\n $query: feature-targeting.all()\n) {\n $feat-color: feature-targeting.create-target($query, color);\n\n &.mdc-list-item--with-leading-icon {\n .mdc-list-item__start {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n }\n\n @if (not $leading-only) {\n &.mdc-list-item--with-trailing-icon {\n .mdc-list-item__end {\n @include feature-targeting.targets($feat-color) {\n @include theme.property(color, $color);\n }\n }\n }\n }\n}\n\n@mixin _high-contrast-mode-border-color($query: feature-targeting.all()) {\n $feat-color: feature-targeting.create-target($query, color);\n .mdc-list-divider::after {\n @include feature-targeting.targets($feat-color) {\n // Color ensures border is shown, but will be overridden by the browser.\n @include theme.property(border-bottom-color, white);\n }\n }\n}\n\n@mixin _high-contrast-mode($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n @include dom-mixins.forced-colors-mode {\n .mdc-list-divider::after {\n @include feature-targeting.targets($feat-structure) {\n content: '';\n display: block;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n }\n }\n }\n}\n\n@mixin _list-group-subheader-margin($query: feature-targeting.all()) {\n $feat-structure: feature-targeting.create-target($query, structure);\n\n $mdc-list-subheader-virtual-height: 3rem;\n $mdc-list-subheader-leading: map.get(\n map.get(typography.$styles, body1),\n line-height\n );\n $mdc-list-subheader-margin: calc(\n (#{$mdc-list-subheader-virtual-height} - #{$mdc-list-subheader-leading}) / 2\n );\n\n @include feature-targeting.targets($feat-structure) {\n margin: $mdc-list-subheader-margin variables.$side-padding;\n }\n}\n","@use '@material/button/button-text-theme' as mdc-button-text-theme;\n@use '@material/button/button-filled-theme' as mdc-button-filled-theme;\n@use '@material/button/button-protected-theme' as mdc-button-protected-theme;\n@use '@material/button/button-outlined-theme' as mdc-button-outlined-theme;\n\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mdc/filled-button' as tokens-mdc-filled-button;\n@use '../core/tokens/m2/mat/filled-button' as tokens-mat-filled-button;\n@use '../core/tokens/m2/mdc/outlined-button' as tokens-mdc-outlined-button;\n@use '../core/tokens/m2/mat/outlined-button' as tokens-mat-outlined-button;\n@use '../core/tokens/m2/mdc/protected-button' as tokens-mdc-protected-button;\n@use '../core/tokens/m2/mat/protected-button' as tokens-mat-protected-button;\n@use '../core/tokens/m2/mdc/text-button' as tokens-mdc-text-button;\n@use '../core/tokens/m2/mat/text-button' as tokens-mat-text-button;\n@use '../core/style/sass-utils';\n\n@mixin _text-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-text-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-text-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-text-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-text-button.get-color-tokens($theme)\n );\n\n @include mdc-button-text-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix, $mat-tokens);\n}\n\n@mixin _filled-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-filled-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-filled-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-filled-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-filled-button.get-color-tokens($theme)\n );\n\n @include mdc-button-filled-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix, $mat-tokens);\n}\n\n@mixin _protected-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-protected-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-protected-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-protected-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-protected-button.get-color-tokens($theme)\n );\n\n @include mdc-button-protected-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix, $mat-tokens);\n}\n\n@mixin _outlined-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-outlined-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-outlined-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-outlined-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-outlined-button.get-color-tokens($theme)\n );\n\n @include mdc-button-outlined-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix, $mat-tokens);\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-text-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-text-button.$prefix, $options...);\n $mdc-protected-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-protected-button.$prefix, $options...);\n $mdc-filled-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-filled-button.$prefix, $options...);\n $mdc-outlined-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-outlined-button.$prefix, $options...);\n $mat-text-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-text-button.$prefix, $options...);\n $mat-protected-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-protected-button.$prefix, $options...);\n $mat-filled-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-filled-button.$prefix, $options...);\n $mat-outlined-button-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-outlined-button.$prefix, $options...);\n @include mdc-button-text-theme.theme($mdc-text-button-tokens);\n @include mdc-button-protected-theme.theme($mdc-protected-button-tokens);\n @include mdc-button-filled-theme.theme($mdc-filled-button-tokens);\n @include mdc-button-outlined-theme.theme($mdc-outlined-button-tokens);\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix, $mat-text-button-tokens);\n @include token-utils.create-token-values(\n tokens-mat-protected-button.$prefix, $mat-protected-button-tokens);\n @include token-utils.create-token-values(\n tokens-mat-filled-button.$prefix, $mat-filled-button-tokens);\n @include token-utils.create-token-values(\n tokens-mat-outlined-button.$prefix, $mat-outlined-button-tokens);\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-button.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-button-text-theme.theme(\n tokens-mdc-text-button.get-unthemable-tokens());\n @include mdc-button-filled-theme.theme(\n tokens-mdc-filled-button.get-unthemable-tokens());\n @include mdc-button-protected-theme.theme(\n tokens-mdc-protected-button.get-unthemable-tokens());\n @include mdc-button-outlined-theme.theme(\n tokens-mdc-outlined-button.get-unthemable-tokens());\n\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix,\n tokens-mat-text-button.get-unthemable-tokens());\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix,\n tokens-mat-filled-button.get-unthemable-tokens());\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix,\n tokens-mat-protected-button.get-unthemable-tokens());\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix,\n tokens-mat-outlined-button.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include _text-button-variant($theme, null);\n @include _filled-button-variant($theme, null);\n @include _protected-button-variant($theme, null);\n @include _outlined-button-variant($theme, null);\n }\n\n .mat-mdc-button {\n &.mat-primary {\n @include _text-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _text-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _text-button-variant($theme, warn);\n }\n }\n\n .mat-mdc-unelevated-button {\n &.mat-primary {\n @include _filled-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _filled-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _filled-button-variant($theme, warn);\n }\n }\n\n .mat-mdc-raised-button {\n &.mat-primary {\n @include _protected-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _protected-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _protected-button-variant($theme, warn);\n }\n }\n\n .mat-mdc-outlined-button {\n &.mat-primary {\n @include _outlined-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _outlined-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _outlined-button-variant($theme, warn);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-button-text-theme.theme(\n tokens-mdc-text-button.get-typography-tokens($theme));\n @include mdc-button-filled-theme.theme(\n tokens-mdc-filled-button.get-typography-tokens($theme));\n @include mdc-button-outlined-theme.theme(\n tokens-mdc-outlined-button.get-typography-tokens($theme));\n @include mdc-button-protected-theme.theme(\n tokens-mdc-protected-button.get-typography-tokens($theme));\n\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix,\n tokens-mat-text-button.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix,\n tokens-mat-filled-button.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix,\n tokens-mat-protected-button.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix,\n tokens-mat-outlined-button.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-button-text-theme.theme(\n tokens-mdc-text-button.get-density-tokens($theme));\n @include mdc-button-filled-theme.theme(\n tokens-mdc-filled-button.get-density-tokens($theme));\n @include mdc-button-outlined-theme.theme(\n tokens-mdc-outlined-button.get-density-tokens($theme));\n @include mdc-button-protected-theme.theme(\n tokens-mdc-protected-button.get-density-tokens($theme));\n\n @include token-utils.create-token-values(tokens-mat-text-button.$prefix,\n tokens-mat-text-button.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-filled-button.$prefix,\n tokens-mat-filled-button.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-protected-button.$prefix,\n tokens-mat-protected-button.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix,\n tokens-mat-outlined-button.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-button.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the button: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-button') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n","@use 'sass:map';\n@use 'sass:math';\n@use '@material/density/functions' as mdc-density-functions;\n@use '@material/icon-button/icon-button-theme' as mdc-icon-button-theme;\n@use '../core/tokens/m2/mdc/icon-button' as tokens-mdc-icon-button;\n@use '../core/tokens/m2/mat/icon-button' as tokens-mat-icon-button;\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n\n\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-icon-button-theme.theme(tokens-mdc-icon-button.get-unthemable-tokens());\n }\n }\n}\n\n@mixin _icon-button-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-icon-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-icon-button.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-icon-button.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-icon-button.get-color-tokens($theme)\n );\n\n @include mdc-icon-button-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-icon-button.$prefix, $mat-tokens);\n}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include _icon-button-variant($theme, null);\n\n .mat-mdc-icon-button {\n &.mat-primary {\n @include _icon-button-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _icon-button-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _icon-button-variant($theme, warn);\n }\n }\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-icon-button.$prefix,\n tokens-mat-icon-button.get-typography-tokens($theme));\n }\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n $icon-size: 24px;\n $density-scale: inspection.get-theme-density($theme);\n // Manually apply the expected density theming, and include the padding\n // as it was applied before\n $calculated-size: mdc-density-functions.prop-value(\n $density-config: (\n size: (\n default: 48px,\n maximum: 48px,\n minimum: 28px,\n ),\n ),\n $density-scale: $density-scale,\n $property-name: size,\n );\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-icon-button.$prefix,\n tokens-mat-icon-button.get-density-tokens($theme));\n }\n\n // Use `mat-mdc-button-base` to increase the specificity over the button's structural styles.\n .mat-mdc-icon-button.mat-mdc-button-base {\n // Match the styles that used to be present. This is necessary for backwards\n // compat to match the previous implementations selector count (two classes).\n @include mdc-icon-button-theme.theme((\n state-layer-size: $calculated-size,\n ));\n\n // TODO: Switch calculated-size to \"var(--mdc-icon-button-state-layer-size)\"\n // Currently fails validation because the variable is \"undefined\"\n // in the sass stack.\n // TODO: Switch icon-size to \"var(--mdc-icon-button-icon-size)\". Currently\n // fails validation because the variable is \"undefined\" in the sass stack.\n width: var(--mdc-icon-button-state-layer-size);\n height: var(--mdc-icon-button-state-layer-size);\n padding: math.div($calculated-size - $icon-size, 2);\n }\n }\n}\n\n@mixin theme($theme) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-icon-button') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme));\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @if ($tokens != ()) {\n @include mdc-icon-button-theme.theme(map.get($tokens, tokens-mdc-icon-button.$prefix));\n @include token-utils.create-token-values(\n tokens-mat-icon-button.$prefix, map.get($tokens, tokens-mat-icon-button.$prefix));\n }\n}\n","@use '@material/fab/fab-theme' as mdc-fab-theme;\n@use '@material/fab/fab-small-theme' as mdc-fab-small-theme;\n@use '@material/fab/extended-fab-theme' as mdc-extended-fab-theme;\n@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/m2/mdc/fab' as tokens-mdc-fab;\n@use '../core/tokens/m2/mdc/fab-small' as tokens-mdc-fab-small;\n@use '../core/tokens/m2/mdc/extended-fab' as tokens-mdc-extended-fab;\n@use '../core/tokens/m2/mat/fab' as tokens-mat-fab;\n@use '../core/tokens/m2/mat/fab-small' as tokens-mat-fab-small;\n@use '../core/tokens/token-utils';\n@use '../core/typography/typography';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-fab.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-fab-theme.theme(tokens-mdc-fab.get-unthemable-tokens());\n @include mdc-fab-small-theme.theme(tokens-mdc-fab-small.get-unthemable-tokens());\n @include mdc-extended-fab-theme.theme(\n tokens-mdc-extended-fab.get-unthemable-tokens()\n );\n }\n }\n}\n\n@mixin _fab-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-fab.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-fab.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-fab.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-fab.get-color-tokens($theme)\n );\n\n @include mdc-fab-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-fab.$prefix, $mat-tokens);\n}\n\n@mixin _fab-small-variant($theme, $palette) {\n $mdc-tokens: if($palette,\n tokens-mdc-fab-small.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mdc-fab-small.get-color-tokens($theme)\n );\n\n $mat-tokens: if($palette,\n tokens-mat-fab-small.private-get-color-palette-color-tokens($theme, $palette),\n tokens-mat-fab-small.get-color-tokens($theme)\n );\n\n @include mdc-fab-small-theme.theme($mdc-tokens);\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix, $mat-tokens);\n}\n\n/// Outputs color theme styles for the mat-fab.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the fab: primary, secondary, or tertiary\n/// (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include _fab-variant($theme, null);\n @include _fab-small-variant($theme, null);\n @include mdc-extended-fab-theme.theme(tokens-mdc-extended-fab.get-color-tokens($theme));\n\n .mat-mdc-fab {\n &.mat-primary {\n @include _fab-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _fab-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _fab-variant($theme, warn);\n }\n }\n\n .mat-mdc-mini-fab {\n &.mat-primary {\n @include _fab-small-variant($theme, primary);\n }\n\n &.mat-accent {\n @include _fab-small-variant($theme, accent);\n }\n\n &.mat-warn {\n @include _fab-small-variant($theme, warn);\n }\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-fab.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include mdc-extended-fab-theme.theme(tokens-mdc-extended-fab.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-fab.$prefix,\n tokens-mat-fab.get-typography-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix,\n tokens-mat-fab-small.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-fab.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-fab.$prefix,\n tokens-mat-fab.get-density-tokens($theme));\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix,\n tokens-mat-fab-small.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-checkbox.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the fab: primary, secondary, or tertiary\n/// (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-fab') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-extended-fab-tokens: token-utils.get-tokens-for(\n $tokens, tokens-mdc-extended-fab.$prefix, $options...);\n $mdc-fab-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-fab.$prefix, $options...);\n $mdc-fab-small-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-fab-small.$prefix,\n $options...);\n $mat-fab-tokens: token-utils.get-tokens-for($tokens, tokens-mat-fab.$prefix, $options...);\n $mat-fab-small-tokens: token-utils.get-tokens-for($tokens, tokens-mat-fab-small.$prefix,\n $options...);\n @include mdc-extended-fab-theme.theme($mdc-extended-fab-tokens);\n @include mdc-fab-theme.theme($mdc-fab-tokens);\n @include mdc-fab-small-theme.theme($mdc-fab-small-tokens);\n @include token-utils.create-token-values(tokens-mat-fab.$prefix, $mat-fab-tokens);\n @include token-utils.create-token-values(tokens-mat-fab-small.$prefix, $mat-fab-small-tokens);\n}\n","@use '../core/style/sass-utils';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mdc/circular-progress' as tokens-mdc-circular-progress;\n@use '@material/circular-progress/circular-progress-theme' as mdc-circular-progress-theme;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n // Add default values for tokens not related to color, typography, or density.\n @include sass-utils.current-selector-or-root() {\n @include mdc-circular-progress-theme.theme(\n tokens-mdc-circular-progress.get-unthemable-tokens()\n );\n }\n }\n}\n\n/// Outputs color theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the spinner: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n $mdc-circular-progress-color-tokens: tokens-mdc-circular-progress.get-color-tokens($theme);\n\n @include sass-utils.current-selector-or-root() {\n @include mdc-circular-progress-theme.theme($mdc-circular-progress-color-tokens);\n\n .mat-accent {\n $color: inspection.get-theme-color($theme, accent);\n @include mdc-circular-progress-theme.theme((active-indicator-color: $color));\n }\n\n .mat-warn {\n $color: inspection.get-theme-color($theme, warn);\n @include mdc-circular-progress-theme.theme((active-indicator-color: $color));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n}\n\n/// Outputs density theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-progress-spinner.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the spinner: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-progress-spinner') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mdc-circular-progress-tokens:\n token-utils.get-tokens-for($tokens, tokens-mdc-circular-progress.$prefix, $options...);\n @include mdc-circular-progress-theme.theme($mdc-circular-progress-tokens);\n}\n","@use 'sass:color';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mat/badge' as tokens-mat-badge;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-badge.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the badge: primary, secondary, tertiary,\n/// or error (If not specified, default error color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.get-color-tokens($theme));\n }\n\n .mat-badge-accent {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-badge-warn {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-badge.$prefix,\n tokens-mat-badge.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {}\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-badge.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the badge: primary, secondary, tertiary,\n/// or error (If not specified, default error color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-badge') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-badge-tokens: token-utils.get-tokens-for($tokens, tokens-mat-badge.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-badge.$prefix, $mat-badge-tokens);\n}\n","@use 'sass:color';\n@use 'sass:map';\n@use '../core/tokens/m2/mat/datepicker' as tokens-mat-datepicker;\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n@use '../core/typography/typography';\n@use '../button/icon-button-theme';\n\n// TODO(crisbeto): these variables aren't used anymore and should be removed.\n$selected-today-box-shadow-width: 1px;\n$selected-fade-amount: 0.6;\n$range-fade-amount: 0.2;\n$today-fade-amount: 0.2;\n$calendar-body-font-size: 13px !default;\n$calendar-weekday-table-font-size: 11px !default;\n\n@mixin _calendar-color($theme, $palette-name) {\n $palette-color: inspection.get-theme-color($theme, $palette-name);\n $range-color: tokens-mat-datepicker.private-get-range-background-color($palette-color);\n $range-tokens: tokens-mat-datepicker.get-range-color-tokens($range-color);\n $calendar-tokens:\n tokens-mat-datepicker.private-get-calendar-color-palette-color-tokens($theme, $palette-name);\n\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n map.merge($calendar-tokens, $range-tokens));\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-datepicker.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n tokens-mat-datepicker.get-unthemable-tokens());\n }\n }\n}\n\n/// Outputs color theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the main selection: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n tokens-mat-datepicker.get-color-tokens($theme));\n }\n\n .mat-datepicker-content {\n &.mat-accent {\n @include _calendar-color($theme, accent);\n }\n\n &.mat-warn {\n @include _calendar-color($theme, warn);\n }\n }\n\n .mat-datepicker-toggle-active {\n &.mat-accent {\n $accent-tokens:\n tokens-mat-datepicker.private-get-toggle-color-palette-color-tokens($theme, accent);\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $accent-tokens);\n }\n\n &.mat-warn {\n $warn-tokens:\n tokens-mat-datepicker.private-get-toggle-color-palette-color-tokens($theme, warn);\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $warn-tokens);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix,\n tokens-mat-datepicker.get-typography-tokens($theme));\n }\n }\n}\n\n@mixin date-range-colors(\n $range-color,\n $comparison-color: tokens-mat-datepicker.$private-default-comparison-color,\n $overlap-color: tokens-mat-datepicker.$private-default-overlap-color,\n $overlap-selected-color:\n tokens-mat-datepicker.private-get-default-overlap-selected-color($overlap-color)) {\n $tokens: tokens-mat-datepicker.get-range-color-tokens(\n $range-color: $range-color,\n $comparison-color: $comparison-color,\n $overlap-color: $overlap-color,\n $overlap-selected-color: $overlap-selected-color,\n );\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $tokens);\n }\n}\n\n/// Outputs density theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n // TODO(crisbeto): move this into the structural styles\n // once the icon button density is switched to tokens.\n\n // Regardless of the user-passed density, we want the calendar\n // previous/next buttons to remain at density -2\n .mat-calendar-controls {\n @include icon-button-theme.density(-2);\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-datepicker.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the main selection: primary, secondary, tertiary,\n/// or error (If not specified, default primary color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-datepicker') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-datepicker-tokens:\n token-utils.get-tokens-for($tokens, tokens-mat-datepicker.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-datepicker.$prefix, $mat-datepicker-tokens);\n}\n","@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/tokens/m2/mat/icon' as tokens-mat-icon;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n@mixin _palette-colors($theme, $palette-name) {\n $color: inspection.get-theme-color($theme, $palette-name, text);\n $tokens: tokens-mat-icon.private-get-icon-color-tokens($color);\n @include token-utils.create-token-values(tokens-mat-icon.$prefix, $tokens);\n}\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for the mat-icon.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {}\n}\n\n/// Outputs color theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the icon: primary, secondary, tertiary, or error\n/// (If not specified, default neutral color will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-icon.$prefix,\n tokens-mat-icon.get-color-tokens($theme));\n }\n\n .mat-icon {\n &.mat-primary {\n @include _palette-colors($theme, primary);\n }\n\n &.mat-accent {\n @include _palette-colors($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-colors($theme, warn);\n }\n }\n }\n}\n\n/// Outputs typography theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {}\n}\n\n/// Outputs density theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {}\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for the mat-icon.\n/// @param {Map} $theme The theme to generate styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the icon: surface, primary, secondary, tertiary,\n/// or error (If not specified, default surface color will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-icon') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n $mat-icon-tokens: token-utils.get-tokens-for($tokens, tokens-mat-icon.$prefix, $options...);\n @include token-utils.create-token-values(tokens-mat-icon.$prefix, $mat-icon-tokens);\n}\n","@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/style/sass-utils';\n@use '../core/tokens/token-utils';\n@use '../core/tokens/m2/mat/stepper' as tokens-mat-stepper;\n\n/// Outputs base theme styles (styles not dependent on the color, typography, or density settings)\n/// for mat-stepper.\n/// @param {Map} $theme The theme to generate base styles for.\n@mixin base($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, base));\n }\n @else {}\n}\n\n/// Outputs color theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the stepper: primary, secondary,\n/// tertiary, or error (If not specified, primary color values will be used).\n@mixin color($theme, $options...) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.get-color-tokens($theme));\n\n .mat-step-header.mat-accent {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.private-get-color-palette-color-tokens($theme, accent));\n }\n\n .mat-step-header.mat-warn {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.private-get-color-palette-color-tokens($theme, warn));\n }\n }\n }\n}\n\n/// Outputs typography theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate typography styles for.\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.get-typography-tokens($theme));\n }\n }\n}\n\n/// Outputs density theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate density styles for.\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-stepper.$prefix,\n tokens-mat-stepper.get-density-tokens($theme));\n }\n }\n}\n\n/// Outputs all (base, color, typography, and density) theme styles for mat-stepper.\n/// @param {Map} $theme The theme to generate color styles for.\n/// @param {ArgList} Additional optional arguments (only supported for M3 themes):\n/// $color-variant: The color variant to use for the stepper: primary, secondary,\n/// tertiary, or error (If not specified, primary color values will be used).\n@mixin theme($theme, $options...) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-stepper') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens, $options...) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @if ($tokens != ()) {\n $mat-stepper-tokens: token-utils.get-tokens-for(\n $tokens,\n tokens-mat-stepper.$prefix,\n $options...\n );\n @include token-utils.create-token-values(\n tokens-mat-stepper.$prefix, $mat-stepper-tokens);\n }\n}\n","@use 'sass:map';\n@use '../core/theming/theming';\n@use '../core/theming/inspection';\n@use '../core/theming/validation';\n@use '../core/typography/typography';\n@use '../core/tokens/m2/mat/toolbar' as tokens-mat-toolbar;\n@use '../core/tokens/token-utils';\n@use '../core/style/sass-utils';\n\n@mixin _palette-styles($theme, $palette-name) {\n @include token-utils.create-token-values(\n tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.private-get-color-palette-color-tokens(\n $background-color: inspection.get-theme-color($theme, $palette-name),\n $text-color: inspection.get-theme-color($theme, $palette-name, default-contrast)\n )\n );\n}\n\n@mixin base($theme) {}\n\n@mixin color($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.get-color-tokens($theme));\n }\n\n .mat-toolbar {\n &.mat-primary {\n @include _palette-styles($theme, primary);\n }\n\n &.mat-accent {\n @include _palette-styles($theme, accent);\n }\n\n &.mat-warn {\n @include _palette-styles($theme, warn);\n }\n }\n }\n}\n\n@mixin typography($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, typography));\n }\n @else {\n // TODO(mmalerba): Stop calling this and resolve resulting screen diffs.\n $theme: inspection.private-get-typography-back-compat-theme($theme);\n\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.get-typography-tokens($theme));\n }\n }\n}\n\n@mixin density($theme) {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme, density));\n }\n @else {\n @include sass-utils.current-selector-or-root() {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n tokens-mat-toolbar.get-density-tokens($theme));\n }\n }\n}\n\n@mixin theme($theme) {\n @include theming.private-check-duplicate-theme-styles($theme, 'mat-toolbar') {\n @if inspection.get-theme-version($theme) == 1 {\n @include _theme-from-tokens(inspection.get-theme-tokens($theme));\n }\n @else {\n @include base($theme);\n @if inspection.theme-has($theme, color) {\n @include color($theme);\n }\n @if inspection.theme-has($theme, density) {\n @include density($theme);\n }\n @if inspection.theme-has($theme, typography) {\n @include typography($theme);\n }\n }\n }\n}\n\n@mixin _theme-from-tokens($tokens) {\n @include validation.selector-defined(\n 'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');\n @if ($tokens != ()) {\n @include token-utils.create-token-values(tokens-mat-toolbar.$prefix,\n map.get($tokens, tokens-mat-toolbar.$prefix));\n }\n}\n"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]} \ No newline at end of file