@bptlab/openbpt-modeler-typed-pn-variants 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +25 -0
- package/assets/icons/pn-fire-transition.svg +6 -0
- package/assets/icons/pn-inhibitor-arc.svg +30 -0
- package/assets/icons/pn-place.svg +62 -0
- package/assets/icons/pn-transition.svg +46 -0
- package/assets/icons/pn-unfire-transition.svg +6 -0
- package/assets/icons/reset.svg +1 -0
- package/assets/icons/toggle-off.svg +1 -0
- package/assets/icons/toggle-on.svg +1 -0
- package/assets/simulation.css +265 -0
- package/assets/tpn-js.css +101 -0
- package/dist/lib/BaseViewer.js +181 -0
- package/dist/lib/BaseViewer.js.map +1 -0
- package/dist/lib/CustomModeler.js +100 -0
- package/dist/lib/CustomModeler.js.map +1 -0
- package/dist/lib/NavigatedViewer.js +14 -0
- package/dist/lib/NavigatedViewer.js.map +1 -0
- package/dist/lib/Viewer.js +53 -0
- package/dist/lib/Viewer.js.map +1 -0
- package/dist/lib/auto-place/CustomAutoPlace.js +10 -0
- package/dist/lib/auto-place/CustomAutoPlace.js.map +1 -0
- package/dist/lib/auto-place/CustomAutoPlaceUtil.js +51 -0
- package/dist/lib/auto-place/CustomAutoPlaceUtil.js.map +1 -0
- package/dist/lib/auto-place/index.js +9 -0
- package/dist/lib/auto-place/index.js.map +1 -0
- package/dist/lib/common/copy-paste/CommonCopyPaste.js +58 -0
- package/dist/lib/common/copy-paste/CommonCopyPaste.js.map +1 -0
- package/dist/lib/common/copy-paste/ModdleCopy.js +168 -0
- package/dist/lib/common/copy-paste/ModdleCopy.js.map +1 -0
- package/dist/lib/common/copy-paste/index.js +10 -0
- package/dist/lib/common/copy-paste/index.js.map +1 -0
- package/dist/lib/common/editor-actions/EditorActions.js +110 -0
- package/dist/lib/common/editor-actions/EditorActions.js.map +1 -0
- package/dist/lib/common/editor-actions/index.js +7 -0
- package/dist/lib/common/editor-actions/index.js.map +1 -0
- package/dist/lib/common/keyboard/KeyboardBindings.js +101 -0
- package/dist/lib/common/keyboard/KeyboardBindings.js.map +1 -0
- package/dist/lib/common/keyboard/index.js +8 -0
- package/dist/lib/common/keyboard/index.js.map +1 -0
- package/dist/lib/common/search/CommonSearchProvider.js +72 -0
- package/dist/lib/common/search/CommonSearchProvider.js.map +1 -0
- package/dist/lib/common/search/index.js +9 -0
- package/dist/lib/common/search/index.js.map +1 -0
- package/dist/lib/core/index.js +6 -0
- package/dist/lib/core/index.js.map +1 -0
- package/dist/lib/declarations-panel/Util.js +32 -0
- package/dist/lib/declarations-panel/Util.js.map +1 -0
- package/dist/lib/declarations-panel/cmd/IdentifierCommitHandler.js +34 -0
- package/dist/lib/declarations-panel/cmd/IdentifierCommitHandler.js.map +1 -0
- package/dist/lib/declarations-panel/cmd/MultiCommandHandler.js +24 -0
- package/dist/lib/declarations-panel/cmd/MultiCommandHandler.js.map +1 -0
- package/dist/lib/declarations-panel/cmd/index.js +19 -0
- package/dist/lib/declarations-panel/cmd/index.js.map +1 -0
- package/dist/lib/declarations-panel/context/DeclarationsPanelContext.js +10 -0
- package/dist/lib/declarations-panel/context/DeclarationsPanelContext.js.map +1 -0
- package/dist/lib/declarations-panel/context/index.js +2 -0
- package/dist/lib/declarations-panel/context/index.js.map +1 -0
- package/dist/lib/declarations-panel/hooks/index.js +2 -0
- package/dist/lib/declarations-panel/hooks/index.js.map +1 -0
- package/dist/lib/declarations-panel/hooks/useService.js +7 -0
- package/dist/lib/declarations-panel/hooks/useService.js.map +1 -0
- package/dist/lib/declarations-panel/provider/DeclarationsProvider.js +107 -0
- package/dist/lib/declarations-panel/provider/DeclarationsProvider.js.map +1 -0
- package/dist/lib/declarations-panel/provider/IdentifierService.js +107 -0
- package/dist/lib/declarations-panel/provider/IdentifierService.js.map +1 -0
- package/dist/lib/declarations-panel/provider/SimulationModeService.js +14 -0
- package/dist/lib/declarations-panel/provider/SimulationModeService.js.map +1 -0
- package/dist/lib/declarations-panel/provider/index.js +14 -0
- package/dist/lib/declarations-panel/provider/index.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/ArcProps.js +123 -0
- package/dist/lib/declarations-panel/provider/properties/ArcProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/IdProps.js +47 -0
- package/dist/lib/declarations-panel/provider/properties/IdProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/ModelDeclarations.js +193 -0
- package/dist/lib/declarations-panel/provider/properties/ModelDeclarations.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/NameProps.js +43 -0
- package/dist/lib/declarations-panel/provider/properties/NameProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/PlaceProps.js +135 -0
- package/dist/lib/declarations-panel/provider/properties/PlaceProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/ReferenceSelect.js +21 -0
- package/dist/lib/declarations-panel/provider/properties/ReferenceSelect.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/TokenProps.js +116 -0
- package/dist/lib/declarations-panel/provider/properties/TokenProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/Util.js +112 -0
- package/dist/lib/declarations-panel/provider/properties/Util.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/VariableArcProps.js +107 -0
- package/dist/lib/declarations-panel/provider/properties/VariableArcProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/index.js +8 -0
- package/dist/lib/declarations-panel/provider/properties/index.js.map +1 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanel.js +197 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanel.js.map +1 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanelRenderer.js +154 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanelRenderer.js.map +1 -0
- package/dist/lib/declarations-panel/render/PanelHeaderProvider.js +55 -0
- package/dist/lib/declarations-panel/render/PanelHeaderProvider.js.map +1 -0
- package/dist/lib/declarations-panel/render/PanelPlaceholderProvider.js +17 -0
- package/dist/lib/declarations-panel/render/PanelPlaceholderProvider.js.map +1 -0
- package/dist/lib/declarations-panel/render/index.js +9 -0
- package/dist/lib/declarations-panel/render/index.js.map +1 -0
- package/dist/lib/draw/CustomRenderer.js +361 -0
- package/dist/lib/draw/CustomRenderer.js.map +1 -0
- package/dist/lib/draw/TextRenderer.js +52 -0
- package/dist/lib/draw/TextRenderer.js.map +1 -0
- package/dist/lib/draw/index.js +8 -0
- package/dist/lib/draw/index.js.map +1 -0
- package/dist/lib/import/CustomImporter.js +177 -0
- package/dist/lib/import/CustomImporter.js.map +1 -0
- package/dist/lib/import/CustomTreeWalker.js +178 -0
- package/dist/lib/import/CustomTreeWalker.js.map +1 -0
- package/dist/lib/import/Importer.js +47 -0
- package/dist/lib/import/Importer.js.map +1 -0
- package/dist/lib/import/index.js +7 -0
- package/dist/lib/import/index.js.map +1 -0
- package/dist/lib/moddle/CustomModdle.js +86 -0
- package/dist/lib/moddle/CustomModdle.js.map +1 -0
- package/dist/lib/moddle/index.js +15 -0
- package/dist/lib/moddle/index.js.map +1 -0
- package/dist/lib/moddle/resources/dc.json +99 -0
- package/dist/lib/moddle/resources/diagramSchema.js +210 -0
- package/dist/lib/moddle/resources/diagramSchema.js.map +1 -0
- package/dist/lib/moddle/resources/modelSchema.js +254 -0
- package/dist/lib/moddle/resources/modelSchema.js.map +1 -0
- package/dist/lib/modeling/CustomElementFactory.js +66 -0
- package/dist/lib/modeling/CustomElementFactory.js.map +1 -0
- package/dist/lib/modeling/CustomLabelEditing.js +177 -0
- package/dist/lib/modeling/CustomLabelEditing.js.map +1 -0
- package/dist/lib/modeling/CustomModeling.js +40 -0
- package/dist/lib/modeling/CustomModeling.js.map +1 -0
- package/dist/lib/modeling/CustomUpdater.js +291 -0
- package/dist/lib/modeling/CustomUpdater.js.map +1 -0
- package/dist/lib/modeling/CustomVerification.js +111 -0
- package/dist/lib/modeling/CustomVerification.js.map +1 -0
- package/dist/lib/modeling/ElementFactory.js +56 -0
- package/dist/lib/modeling/ElementFactory.js.map +1 -0
- package/dist/lib/modeling/LabelUtil.js +151 -0
- package/dist/lib/modeling/LabelUtil.js.map +1 -0
- package/dist/lib/modeling/UpdateLabelHandler.js +86 -0
- package/dist/lib/modeling/UpdateLabelHandler.js.map +1 -0
- package/dist/lib/modeling/UpdateModdlePropertiesHandler.js +88 -0
- package/dist/lib/modeling/UpdateModdlePropertiesHandler.js.map +1 -0
- package/dist/lib/modeling/UpdatePropertiesHandler.js +136 -0
- package/dist/lib/modeling/UpdatePropertiesHandler.js.map +1 -0
- package/dist/lib/modeling/behavior/AdaptiveLabelPositioningBehavior.js +169 -0
- package/dist/lib/modeling/behavior/AdaptiveLabelPositioningBehavior.js.map +1 -0
- package/dist/lib/modeling/behavior/LabelBehavior.js +255 -0
- package/dist/lib/modeling/behavior/LabelBehavior.js.map +1 -0
- package/dist/lib/modeling/behavior/index.js +8 -0
- package/dist/lib/modeling/behavior/index.js.map +1 -0
- package/dist/lib/modeling/behavior/util/GeometricUtil.js +99 -0
- package/dist/lib/modeling/behavior/util/GeometricUtil.js.map +1 -0
- package/dist/lib/modeling/behavior/util/LabelLayoutUtil.js +178 -0
- package/dist/lib/modeling/behavior/util/LabelLayoutUtil.js.map +1 -0
- package/dist/lib/modeling/behavior/util/LineAttachmentUtil.js +175 -0
- package/dist/lib/modeling/behavior/util/LineAttachmentUtil.js.map +1 -0
- package/dist/lib/modeling/index.js +36 -0
- package/dist/lib/modeling/index.js.map +1 -0
- package/dist/lib/palette/CustomContextPadProvider.js +182 -0
- package/dist/lib/palette/CustomContextPadProvider.js.map +1 -0
- package/dist/lib/palette/CustomPaletteProvider.js +93 -0
- package/dist/lib/palette/CustomPaletteProvider.js.map +1 -0
- package/dist/lib/palette/TokenModals.js +105 -0
- package/dist/lib/palette/TokenModals.js.map +1 -0
- package/dist/lib/palette/index.js +28 -0
- package/dist/lib/palette/index.js.map +1 -0
- package/dist/lib/replace/ReplaceMenuProvider.js +84 -0
- package/dist/lib/replace/ReplaceMenuProvider.js.map +1 -0
- package/dist/lib/replace/index.js +9 -0
- package/dist/lib/replace/index.js.map +1 -0
- package/dist/lib/rules/CustomRuleProvider.js +107 -0
- package/dist/lib/rules/CustomRuleProvider.js.map +1 -0
- package/dist/lib/rules/index.js +8 -0
- package/dist/lib/rules/index.js.map +1 -0
- package/dist/lib/simulation/EventHelper.js +6 -0
- package/dist/lib/simulation/EventHelper.js.map +1 -0
- package/dist/lib/simulation/Utils.js +8 -0
- package/dist/lib/simulation/Utils.js.map +1 -0
- package/dist/lib/simulation/binding-utils/arcPlaceInfoLogic.js +157 -0
- package/dist/lib/simulation/binding-utils/arcPlaceInfoLogic.js.map +1 -0
- package/dist/lib/simulation/binding-utils/bindingUtils.js +64 -0
- package/dist/lib/simulation/binding-utils/bindingUtils.js.map +1 -0
- package/dist/lib/simulation/binding-utils/earlyReturnLogic.js +107 -0
- package/dist/lib/simulation/binding-utils/earlyReturnLogic.js.map +1 -0
- package/dist/lib/simulation/binding-utils/exactSynchro.js +102 -0
- package/dist/lib/simulation/binding-utils/exactSynchro.js.map +1 -0
- package/dist/lib/simulation/binding-utils/helpers.js +141 -0
- package/dist/lib/simulation/binding-utils/helpers.js.map +1 -0
- package/dist/lib/simulation/binding-utils/inhibitorLogic.js +166 -0
- package/dist/lib/simulation/binding-utils/inhibitorLogic.js.map +1 -0
- package/dist/lib/simulation/binding-utils/linkingLogic.js +384 -0
- package/dist/lib/simulation/binding-utils/linkingLogic.js.map +1 -0
- package/dist/lib/simulation/context-pads/ContextPads.js +141 -0
- package/dist/lib/simulation/context-pads/ContextPads.js.map +1 -0
- package/dist/lib/simulation/context-pads/FireTransitionHandler.js +481 -0
- package/dist/lib/simulation/context-pads/FireTransitionHandler.js.map +1 -0
- package/dist/lib/simulation/context-pads/FireTransitionUtils.js +169 -0
- package/dist/lib/simulation/context-pads/FireTransitionUtils.js.map +1 -0
- package/dist/lib/simulation/context-pads/FormJsAdapter.js +99 -0
- package/dist/lib/simulation/context-pads/FormJsAdapter.js.map +1 -0
- package/dist/lib/simulation/context-pads/index.js +8 -0
- package/dist/lib/simulation/context-pads/index.js.map +1 -0
- package/dist/lib/simulation/palette/Palette.js +36 -0
- package/dist/lib/simulation/palette/Palette.js.map +1 -0
- package/dist/lib/simulation/palette/index.js +6 -0
- package/dist/lib/simulation/palette/index.js.map +1 -0
- package/dist/lib/simulation/reset-simulation/ResetSimulation.js +36 -0
- package/dist/lib/simulation/reset-simulation/ResetSimulation.js.map +1 -0
- package/dist/lib/simulation/reset-simulation/index.js +6 -0
- package/dist/lib/simulation/reset-simulation/index.js.map +1 -0
- package/dist/lib/simulation/simulation-history/SimulationHistory.js +158 -0
- package/dist/lib/simulation/simulation-history/SimulationHistory.js.map +1 -0
- package/dist/lib/simulation/simulation-history/index.js +6 -0
- package/dist/lib/simulation/simulation-history/index.js.map +1 -0
- package/dist/lib/simulation/simulator/Simulator.js +131 -0
- package/dist/lib/simulation/simulator/Simulator.js.map +1 -0
- package/dist/lib/simulation/simulator/index.js +6 -0
- package/dist/lib/simulation/simulator/index.js.map +1 -0
- package/dist/lib/simulation/toggle-simulation-mode/DisableModeling.js +85 -0
- package/dist/lib/simulation/toggle-simulation-mode/DisableModeling.js.map +1 -0
- package/dist/lib/simulation/toggle-simulation-mode/ToggleSimulationMode.js +65 -0
- package/dist/lib/simulation/toggle-simulation-mode/ToggleSimulationMode.js.map +1 -0
- package/dist/lib/simulation/toggle-simulation-mode/index.js +8 -0
- package/dist/lib/simulation/toggle-simulation-mode/index.js.map +1 -0
- package/dist/lib/util/EventBusEvents.js +70 -0
- package/dist/lib/util/EventBusEvents.js.map +1 -0
- package/dist/lib/util/FileUtil.js +35 -0
- package/dist/lib/util/FileUtil.js.map +1 -0
- package/dist/lib/util/HtmlUtil.js +67 -0
- package/dist/lib/util/HtmlUtil.js.map +1 -0
- package/dist/lib/util/Util.js +60 -0
- package/dist/lib/util/Util.js.map +1 -0
- package/dist/lib/util/constants.js +6 -0
- package/dist/lib/util/constants.js.map +1 -0
- package/dist/lib/util/emptyDiagram.js +12 -0
- package/dist/lib/util/emptyDiagram.js.map +1 -0
- package/dist/lib/util/generated-icons.js +12 -0
- package/dist/lib/util/generated-icons.js.map +1 -0
- package/dist/scripts/build-icons.js +30 -0
- package/dist/scripts/build-icons.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.js +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import { createDataClassCombinationKeyFromDict, createDataClassCombinationKeyFromLink, getDataClassKey, getLinkPartFromDataClassKey, tokensOverlap, } from "./helpers";
|
|
2
|
+
/**
|
|
3
|
+
* Finds and returns the largest (non-overlapping and non-subset) links from the given arc-place information dictionary.
|
|
4
|
+
*
|
|
5
|
+
* This function performs the following steps:
|
|
6
|
+
* 1. Retrieves all links from the provided `arcPlaceInfoDict` and deduplicates them.
|
|
7
|
+
* 2. Iteratively merges overlapping links into single links, ensuring that each link is a union of overlapping elements.
|
|
8
|
+
* 3. Removes any links that are strict subsets of other links, leaving only the largest unique links.
|
|
9
|
+
*
|
|
10
|
+
* @param arcPlaceInfoDict - The dictionary containing arc-place information used to generate links.
|
|
11
|
+
* @returns A tuple containing:
|
|
12
|
+
* - An array of the largest links (after merging and subset removal).
|
|
13
|
+
* - An array of all deduplicated links before merging.
|
|
14
|
+
*/
|
|
15
|
+
export function getBiggestLinks(arcPlaceInfoDict) {
|
|
16
|
+
const allLinks = deduplicateLinks(getAllLinks(arcPlaceInfoDict));
|
|
17
|
+
let tempLinks = [...allLinks];
|
|
18
|
+
// Iteratively merge overlapping links
|
|
19
|
+
let merged = true;
|
|
20
|
+
while (merged) {
|
|
21
|
+
merged = false;
|
|
22
|
+
outer: for (let i = 0; i < tempLinks.length; i++) {
|
|
23
|
+
for (let j = i + 1; j < tempLinks.length; j++) {
|
|
24
|
+
if (linksOverlap(tempLinks[i], tempLinks[j])) {
|
|
25
|
+
const mergedLink = mergeLinks(tempLinks[i], tempLinks[j]);
|
|
26
|
+
// Remove the two links and add the merged one
|
|
27
|
+
tempLinks.splice(j, 1);
|
|
28
|
+
tempLinks.splice(i, 1, mergedLink);
|
|
29
|
+
merged = true;
|
|
30
|
+
break outer;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Remove subset links
|
|
36
|
+
const biggestLinks = tempLinks.filter((link, idx, arr) => !arr.some((other, otherIdx) => otherIdx !== idx &&
|
|
37
|
+
link.every((l) => other.some((ol) => ol.id === l.id &&
|
|
38
|
+
ol.alias === l.alias &&
|
|
39
|
+
ol.isVariable === l.isVariable)) &&
|
|
40
|
+
other.length > link.length));
|
|
41
|
+
return [biggestLinks, allLinks];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Retrieves all links from the provided `ArcPlaceInfoDict`.
|
|
45
|
+
*
|
|
46
|
+
* Iterates over each entry in the dictionary, and for those marked as linking places,
|
|
47
|
+
* constructs a `Link` array containing objects with `id`, `alias`, and `isVariable` properties
|
|
48
|
+
* for each data class in the place. Returns an array of all such links.
|
|
49
|
+
*
|
|
50
|
+
* @param arcPlaceInfoDict - A dictionary mapping place identifiers to their corresponding `ArcPlaceInfo` objects.
|
|
51
|
+
* @returns An array of `Link` arrays, each representing the data class links for a linking place.
|
|
52
|
+
*/
|
|
53
|
+
function getAllLinks(arcPlaceInfoDict) {
|
|
54
|
+
const allLinks = [];
|
|
55
|
+
for (const arcPlaceInfo of Object.values(arcPlaceInfoDict)) {
|
|
56
|
+
if (!arcPlaceInfo.isLinkingPlace)
|
|
57
|
+
continue;
|
|
58
|
+
const link = [];
|
|
59
|
+
for (const dataClassKey of Object.keys(arcPlaceInfo.dataClassInfoDict)) {
|
|
60
|
+
link.push(getLinkPartFromDataClassKey(dataClassKey));
|
|
61
|
+
}
|
|
62
|
+
allLinks.push(link);
|
|
63
|
+
}
|
|
64
|
+
return allLinks;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Removes duplicate links from an array, treating links as equal if they contain the same set of elements,
|
|
68
|
+
* regardless of order. Two links are considered duplicates if they have the same length and their elements,
|
|
69
|
+
* identified by a unique key generated from `id`, `alias`, and `isVariable`, form identical sets.
|
|
70
|
+
*
|
|
71
|
+
* @param links - An array of `Link` objects to deduplicate.
|
|
72
|
+
* @returns A new array containing only unique links, with duplicates removed.
|
|
73
|
+
*/
|
|
74
|
+
function deduplicateLinks(links) {
|
|
75
|
+
const uniqueLinks = [];
|
|
76
|
+
// Helper to compare two links for set equality (order-insensitive)
|
|
77
|
+
function linksAreEqual(linkA, linkB) {
|
|
78
|
+
if (linkA.length !== linkB.length)
|
|
79
|
+
return false;
|
|
80
|
+
const aSet = new Set(linkA.map((l) => getDataClassKey(l.id, l.alias, l.isVariable)));
|
|
81
|
+
const bSet = new Set(linkB.map((l) => getDataClassKey(l.id, l.alias, l.isVariable)));
|
|
82
|
+
if (aSet.size !== bSet.size)
|
|
83
|
+
return false;
|
|
84
|
+
for (const item of aSet) {
|
|
85
|
+
if (!bSet.has(item))
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
// Remove duplicates (order-insensitive)
|
|
91
|
+
for (const link of links) {
|
|
92
|
+
if (!uniqueLinks.some((existing) => linksAreEqual(existing, link))) {
|
|
93
|
+
uniqueLinks.push(link);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return uniqueLinks;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Determines whether two arrays of links have any overlapping elements based on their unique data class keys.
|
|
100
|
+
*
|
|
101
|
+
* @param linkA - The first array of `Link` objects to compare.
|
|
102
|
+
* @param linkB - The second array of `Link` objects to compare.
|
|
103
|
+
* @returns `true` if there is at least one link in `linkB` that shares the same data class key as a link in `linkA`; otherwise, `false`.
|
|
104
|
+
*/
|
|
105
|
+
function linksOverlap(linkA, linkB) {
|
|
106
|
+
const aSet = new Set(linkA.map((l) => getDataClassKey(l.id, l.alias, l.isVariable)));
|
|
107
|
+
return linkB.some((l) => aSet.has(getDataClassKey(l.id, l.alias, l.isVariable)));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Merges two arrays of `Link` objects into a single array, removing duplicates based on a unique key
|
|
111
|
+
* generated from each link's `id`, `alias`, and `isVariable` properties.
|
|
112
|
+
*
|
|
113
|
+
* If a duplicate is found between `linkA` and `linkB`, the link from `linkB` will overwrite the one from `linkA`.
|
|
114
|
+
*
|
|
115
|
+
* @param linkA - The first array of `Link` objects to merge.
|
|
116
|
+
* @param linkB - The second array of `Link` objects to merge.
|
|
117
|
+
* @returns A new array containing the merged `Link` objects with duplicates removed.
|
|
118
|
+
*/
|
|
119
|
+
function mergeLinks(linkA, linkB) {
|
|
120
|
+
const map = new Map();
|
|
121
|
+
for (const l of linkA) {
|
|
122
|
+
map.set(getDataClassKey(l.id, l.alias, l.isVariable), l);
|
|
123
|
+
}
|
|
124
|
+
for (const l of linkB) {
|
|
125
|
+
map.set(getDataClassKey(l.id, l.alias, l.isVariable), l);
|
|
126
|
+
}
|
|
127
|
+
return Array.from(map.values());
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Generates a mapping of tokens per link from the provided arc-place information dictionary.
|
|
131
|
+
*
|
|
132
|
+
* Iterates through each entry in the `arcPlaceInfoDict`, and for entries marked as linking places,
|
|
133
|
+
* creates a key based on the data class combination. It then collects all tokens associated with
|
|
134
|
+
* that linking place under the generated key.
|
|
135
|
+
*
|
|
136
|
+
* @param arcPlaceInfoDict - A dictionary containing information about arc places, keyed by their identifiers.
|
|
137
|
+
* @returns A `TokenPerLink` object mapping each data class combination key to an array of tokens associated with that link.
|
|
138
|
+
*/
|
|
139
|
+
export function getTokenPerLink(arcPlaceInfoDict) {
|
|
140
|
+
const tokenPerLink = {};
|
|
141
|
+
for (const arcPlaceInfo of Object.values(arcPlaceInfoDict)) {
|
|
142
|
+
if (!arcPlaceInfo.isLinkingPlace)
|
|
143
|
+
continue;
|
|
144
|
+
const key = createDataClassCombinationKeyFromDict(arcPlaceInfo.dataClassInfoDict);
|
|
145
|
+
tokenPerLink[key] = [];
|
|
146
|
+
for (const token of arcPlaceInfo.tokens) {
|
|
147
|
+
tokenPerLink[key].push(token);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return tokenPerLink;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Retrieves possible bindings for a given link by analyzing associated links, tokens, and non-linking arc constraints.
|
|
154
|
+
*
|
|
155
|
+
* This function performs the following steps:
|
|
156
|
+
* 1. Finds all links associated with the provided link.
|
|
157
|
+
* 2. Determines the largest set of tokens that cover all dataclasses in the link.
|
|
158
|
+
* 3. Groups tokens by unique combinations of non-variable dataclasses.
|
|
159
|
+
* 4. Constructs bindings for the link, filtering candidates based on non-linking arc constraints.
|
|
160
|
+
* 5. Returns only bindings where all dataclasses have at least one candidate value.
|
|
161
|
+
*
|
|
162
|
+
* @param link - The link for which to retrieve bindings.
|
|
163
|
+
* @param allLinks - All available links in the simulation.
|
|
164
|
+
* @param tokenPerLink - A mapping from link keys to their associated tokens.
|
|
165
|
+
* @param bindingPerDataClassFromNonLinkingArcs - Constraints from non-linking arcs, mapping dataclass keys to allowed values.
|
|
166
|
+
* @returns An array of bindings, each mapping dataclass keys to arrays of candidate values that satisfy all constraints.
|
|
167
|
+
*/
|
|
168
|
+
export function getBindingsForLink(link, allLinks, tokenPerLink, bindingPerDataClassFromNonLinkingArcs) {
|
|
169
|
+
// get all links associated with the current link
|
|
170
|
+
const associatedLinks = allLinks.filter((l) => l.some((le) => link.some((ce) => le.id === ce.id &&
|
|
171
|
+
le.alias === ce.alias &&
|
|
172
|
+
le.isVariable === ce.isVariable)));
|
|
173
|
+
// Step 1: get biggest link tokens (tokens that have values for all dataclasses in the link)
|
|
174
|
+
const biggestLinkTokens = [];
|
|
175
|
+
if (associatedLinks.length === 1) {
|
|
176
|
+
biggestLinkTokens.push(...tokenPerLink[createDataClassCombinationKeyFromLink(link)]);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
biggestLinkTokens.push(...getLinkToken(associatedLinks, tokenPerLink));
|
|
180
|
+
}
|
|
181
|
+
// group tokens by unique links of non variable dataclasses
|
|
182
|
+
const groupedTokens = groupTokensByNonVariableDataclasses(link, biggestLinkTokens);
|
|
183
|
+
// Step 2: create bindings for the link
|
|
184
|
+
const bindings = [];
|
|
185
|
+
for (const binding of Object.values(groupedTokens)) {
|
|
186
|
+
// filter binding to only include candidates from non-linking arcs
|
|
187
|
+
const filteredBinding = {};
|
|
188
|
+
for (const [dataClassKey, values] of Object.entries(binding)) {
|
|
189
|
+
filteredBinding[dataClassKey] = values.filter((v) => (bindingPerDataClassFromNonLinkingArcs[dataClassKey] &&
|
|
190
|
+
bindingPerDataClassFromNonLinkingArcs[dataClassKey].includes(v)) ||
|
|
191
|
+
!bindingPerDataClassFromNonLinkingArcs[dataClassKey]);
|
|
192
|
+
}
|
|
193
|
+
// If any dataClassKey has an empty array, skip this binding
|
|
194
|
+
if (Object.values(filteredBinding).some((arr) => arr.length === 0)) {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
bindings.push(filteredBinding);
|
|
198
|
+
}
|
|
199
|
+
return bindings;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Merges tokens associated with a list of links by iteratively combining them based on overlapping data class keys.
|
|
203
|
+
*
|
|
204
|
+
* @param associatedLinks - An array of `Link` objects to be merged. The function modifies this array by removing processed links.
|
|
205
|
+
* @param tokenPerLink - An object mapping data class combination keys (generated from links) to arrays of `Token` objects.
|
|
206
|
+
* @returns An array of `Token` objects representing the merged result of all associated links.
|
|
207
|
+
*
|
|
208
|
+
* @remarks
|
|
209
|
+
* - The function starts with the first link and its associated tokens, then repeatedly finds overlaps with remaining links,
|
|
210
|
+
* merges the links and their tokens, and removes processed links from the array.
|
|
211
|
+
* - The merging process relies on helper functions: `createDataClassCombinationKeyFromLink`, `getFirstOverlap`, `mergeLinks`, and `mergeLinkToken`.
|
|
212
|
+
* - If no overlap is found (`overlapIndex === -1`), the function currently does nothing for that iteration.
|
|
213
|
+
*/
|
|
214
|
+
function getLinkToken(associatedLinks, tokenPerLink) {
|
|
215
|
+
let mergedToken = [];
|
|
216
|
+
let mergedLink = [];
|
|
217
|
+
let overlapDataClassKeys = [];
|
|
218
|
+
let overlapIndex = null;
|
|
219
|
+
mergedLink = associatedLinks[0];
|
|
220
|
+
mergedToken = tokenPerLink[createDataClassCombinationKeyFromLink(mergedLink)];
|
|
221
|
+
associatedLinks.splice(0, 1);
|
|
222
|
+
while (associatedLinks.length > 0) {
|
|
223
|
+
[overlapIndex, overlapDataClassKeys] = getFirstOverlap(mergedLink, associatedLinks);
|
|
224
|
+
if (overlapIndex === -1) {
|
|
225
|
+
}
|
|
226
|
+
const linkToMerge = associatedLinks[overlapIndex];
|
|
227
|
+
mergedLink = mergeLinks(mergedLink, linkToMerge);
|
|
228
|
+
mergedToken = mergeLinkToken(mergedToken, tokenPerLink[createDataClassCombinationKeyFromLink(linkToMerge)], overlapDataClassKeys);
|
|
229
|
+
associatedLinks.splice(overlapIndex, 1);
|
|
230
|
+
}
|
|
231
|
+
return mergedToken;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Finds the first overlap between a given link and an array of links.
|
|
235
|
+
*
|
|
236
|
+
* Iterates through the provided `links` array and compares the set of data class keys
|
|
237
|
+
* generated from the input `link` and each link in the array. If any overlap is found,
|
|
238
|
+
* returns the index of the overlapping link and an array of the overlapping keys.
|
|
239
|
+
*
|
|
240
|
+
* @param link - The link to compare against the array of links.
|
|
241
|
+
* @param links - An array of links to check for overlaps.
|
|
242
|
+
* @returns A tuple containing the index of the first overlapping link and an array of overlapping keys.
|
|
243
|
+
* If no overlap is found, returns [-1, []].
|
|
244
|
+
*/
|
|
245
|
+
function getFirstOverlap(link, links) {
|
|
246
|
+
for (let i = 0; i < links.length; i++) {
|
|
247
|
+
const aKeys = new Set(link.map((l) => getDataClassKey(l.id, l.alias, l.isVariable)));
|
|
248
|
+
const bKeys = new Set(links[i].map((l) => getDataClassKey(l.id, l.alias, l.isVariable)));
|
|
249
|
+
const overlap = Array.from(aKeys).filter((key) => bKeys.has(key));
|
|
250
|
+
if (overlap.length > 0) {
|
|
251
|
+
return [i, overlap];
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return [-1, []];
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Merges two arrays of `Token` objects by combining tokens that overlap based on specified data class keys.
|
|
258
|
+
*
|
|
259
|
+
* For each pair of tokens from `linkTokensA` and `linkTokensB`, if they overlap according to the `tokensOverlap`
|
|
260
|
+
* function and the provided `overlapDataClassKeys`, a new token is created by merging all key-value pairs from both tokens.
|
|
261
|
+
* Keys from `tokenA` take precedence, and only non-overlapping keys from `tokenB` are added.
|
|
262
|
+
*
|
|
263
|
+
* @param linkTokensA - The first array of `Token` objects to merge.
|
|
264
|
+
* @param linkTokensB - The second array of `Token` objects to merge.
|
|
265
|
+
* @param overlapDataClassKeys - The list of keys used to determine if two tokens overlap.
|
|
266
|
+
* @returns An array of merged `Token` objects where overlaps were found.
|
|
267
|
+
*/
|
|
268
|
+
function mergeLinkToken(linkTokensA, linkTokensB, overlapDataClassKeys) {
|
|
269
|
+
const mergedLinkTokens = [];
|
|
270
|
+
for (const tokenA of linkTokensA) {
|
|
271
|
+
for (const tokenB of linkTokensB) {
|
|
272
|
+
if (tokensOverlap(tokenA, tokenB, overlapDataClassKeys)) {
|
|
273
|
+
// Merge tokens: combine all key-value pairs, starting with tokenA
|
|
274
|
+
const mergedToken = { ...tokenA };
|
|
275
|
+
// Add non-overlapping keys from tokenB
|
|
276
|
+
for (const key of Object.keys(tokenB)) {
|
|
277
|
+
if (!(key in mergedToken)) {
|
|
278
|
+
mergedToken[key] = tokenB[key];
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
mergedLinkTokens.push(mergedToken);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return mergedLinkTokens;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Groups tokens by combinations of non-variable dataclasses defined in the given link.
|
|
289
|
+
*
|
|
290
|
+
* For each token, constructs a group key based on the values of all non-variable link elements.
|
|
291
|
+
* Tokens sharing the same combination of non-variable dataclass values are grouped together.
|
|
292
|
+
* The resulting object maps each unique group key to a binding object, where each key is a dataclass key
|
|
293
|
+
* and the value is an array of token values for variable dataclasses, or a single-element array for non-variable dataclasses.
|
|
294
|
+
*
|
|
295
|
+
* @param link - An array of link elements describing the dataclasses and whether they are variables.
|
|
296
|
+
* @param tokens - An array of tokens to be grouped according to the non-variable dataclasses in the link.
|
|
297
|
+
* @returns An object mapping each unique combination of non-variable dataclass values (as a string key)
|
|
298
|
+
* to a binding object, which maps dataclass keys to arrays of token values.
|
|
299
|
+
*/
|
|
300
|
+
export function groupTokensByNonVariableDataclasses(link, tokens) {
|
|
301
|
+
const groupedTokens = {};
|
|
302
|
+
for (const token of tokens) {
|
|
303
|
+
let groupKey = "";
|
|
304
|
+
for (const linkElement of link) {
|
|
305
|
+
if (!linkElement.isVariable) {
|
|
306
|
+
const dataClassKey = getDataClassKey(linkElement.id, linkElement.alias, linkElement.isVariable);
|
|
307
|
+
groupKey += `${dataClassKey}:${token[dataClassKey]}::`;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
groupKey = groupKey.endsWith("::") ? groupKey.slice(0, -2) : groupKey;
|
|
311
|
+
if (!groupedTokens[groupKey]) {
|
|
312
|
+
groupedTokens[groupKey] = {};
|
|
313
|
+
for (const linkElement of link) {
|
|
314
|
+
const dataClassKey = getDataClassKey(linkElement.id, linkElement.alias, linkElement.isVariable);
|
|
315
|
+
groupedTokens[groupKey][dataClassKey] = linkElement.isVariable
|
|
316
|
+
? []
|
|
317
|
+
: [token[dataClassKey]];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
for (const linkElement of link) {
|
|
321
|
+
if (linkElement.isVariable) {
|
|
322
|
+
const dataClassKey = getDataClassKey(linkElement.id, linkElement.alias, linkElement.isVariable);
|
|
323
|
+
groupedTokens[groupKey][dataClassKey].push(token[dataClassKey]);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return groupedTokens;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Computes the cartesian product of arrays of binding candidates, merging each combination into a single binding object.
|
|
331
|
+
*
|
|
332
|
+
* @param bindingCandidatesPerLink - An array where each element is an array of `BindingPerDataClass` objects,
|
|
333
|
+
* representing possible bindings for each link.
|
|
334
|
+
* @returns An array of `BindingPerDataClass` objects, each representing a unique combination of bindings across all links.
|
|
335
|
+
*
|
|
336
|
+
* @remarks
|
|
337
|
+
* - If `bindingCandidatesPerLink` is empty, returns an empty array.
|
|
338
|
+
* - Each resulting binding is created by merging objects from each input array.
|
|
339
|
+
*/
|
|
340
|
+
export function cartesianProductBindings(bindingCandidatesPerLink) {
|
|
341
|
+
if (bindingCandidatesPerLink.length === 0)
|
|
342
|
+
return [];
|
|
343
|
+
return bindingCandidatesPerLink.reduce((acc, curr) => {
|
|
344
|
+
const result = [];
|
|
345
|
+
for (const a of acc) {
|
|
346
|
+
for (const b of curr) {
|
|
347
|
+
result.push({ ...a, ...b });
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return result;
|
|
351
|
+
}, [{}]);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Returns a set of data class keys from `bindingPerDataClassFromNonLinkingArcs` that are not present in any of the provided `biggestLinks`.
|
|
355
|
+
*
|
|
356
|
+
* Iterates over each data class key and checks if it is used in any link element within the `biggestLinks` array.
|
|
357
|
+
* If a data class key is not found in any link, it is added to the resulting set.
|
|
358
|
+
*
|
|
359
|
+
* @param bindingPerDataClassFromNonLinkingArcs - An object mapping data class keys to their bindings from non-linking arcs.
|
|
360
|
+
* @param biggestLinks - An array of links, where each link is an array of link elements.
|
|
361
|
+
* @returns A set of data class keys that are not present in any of the provided links.
|
|
362
|
+
*/
|
|
363
|
+
export function getDataClassesNotInLinks(bindingPerDataClassFromNonLinkingArcs, biggestLinks) {
|
|
364
|
+
const dataClassesNotInLinks = new Set();
|
|
365
|
+
for (const dataClassKey of Object.keys(bindingPerDataClassFromNonLinkingArcs)) {
|
|
366
|
+
let usedInLink = false;
|
|
367
|
+
for (const link of biggestLinks) {
|
|
368
|
+
for (const linkElement of link) {
|
|
369
|
+
const linkDataClassKey = getDataClassKey(linkElement.id, linkElement.alias, linkElement.isVariable);
|
|
370
|
+
if (dataClassKey === linkDataClassKey) {
|
|
371
|
+
usedInLink = true;
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
if (usedInLink)
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
if (!usedInLink) {
|
|
379
|
+
dataClassesNotInLinks.add(dataClassKey);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return dataClassesNotInLinks;
|
|
383
|
+
}
|
|
384
|
+
//# sourceMappingURL=linkingLogic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkingLogic.js","sourceRoot":"","sources":["../../../../lib/simulation/binding-utils/linkingLogic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { transitionIsEnabled } from "../Utils";
|
|
2
|
+
import { TOGGLE_MODE_EVENT, FIRE_TRANSITION_EVENT, RESET_SIMULATION_EVENT, TRANSITION_FIRED_EVENT, } from "../EventHelper";
|
|
3
|
+
import { event as domEvent, domify } from "min-dom";
|
|
4
|
+
import { MODELER_PREFIX } from "../../util/constants";
|
|
5
|
+
const LOW_PRIORITY = 500;
|
|
6
|
+
const OFFSET_TOP = -15;
|
|
7
|
+
const OFFSET_LEFT = -15;
|
|
8
|
+
export default function ContextPads(eventBus, elementRegistry, overlays) {
|
|
9
|
+
this._eventBus = eventBus;
|
|
10
|
+
this._elementRegistry = elementRegistry;
|
|
11
|
+
this._overlays = overlays;
|
|
12
|
+
this._overlayCache = new Map();
|
|
13
|
+
this._active = false;
|
|
14
|
+
eventBus.on(TOGGLE_MODE_EVENT, LOW_PRIORITY, (context) => {
|
|
15
|
+
const active = context.active;
|
|
16
|
+
this._active = !!active;
|
|
17
|
+
if (active) {
|
|
18
|
+
this.openContextPads();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.closeContextPads();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
eventBus.on([FIRE_TRANSITION_EVENT, RESET_SIMULATION_EVENT, TRANSITION_FIRED_EVENT], LOW_PRIORITY, (event) => {
|
|
25
|
+
this._elementRegistry.forEach((element) => {
|
|
26
|
+
this.updateElementContextPads(element);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
// refresh context pads on undo/redo while simulation mode is active
|
|
30
|
+
eventBus.on("commandStack.changed", LOW_PRIORITY, () => {
|
|
31
|
+
if (!this._active)
|
|
32
|
+
return;
|
|
33
|
+
this._elementRegistry.forEach((element) => {
|
|
34
|
+
this.updateElementContextPads(element);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
ContextPads.prototype.openContextPads = function () {
|
|
39
|
+
this._elementRegistry.forEach((element) => {
|
|
40
|
+
this.updateElementContextPads(element);
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
ContextPads.prototype._getOverlays = function (hash) {
|
|
44
|
+
return this._overlayCache.get(hash) || [];
|
|
45
|
+
};
|
|
46
|
+
ContextPads.prototype._addOverlay = function (element, options) {
|
|
47
|
+
const { handlerHash } = options;
|
|
48
|
+
if (!handlerHash) {
|
|
49
|
+
throw new Error("<handlerHash> required");
|
|
50
|
+
}
|
|
51
|
+
const overlayId = this._overlays.add(element, "bts-context-menu", {
|
|
52
|
+
...options,
|
|
53
|
+
position: {
|
|
54
|
+
top: OFFSET_TOP,
|
|
55
|
+
left: OFFSET_LEFT,
|
|
56
|
+
},
|
|
57
|
+
show: {
|
|
58
|
+
minZoom: 0.5,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
const overlay = this._overlays.get(overlayId);
|
|
62
|
+
const overlayCache = this._overlayCache;
|
|
63
|
+
if (!overlayCache.has(handlerHash)) {
|
|
64
|
+
overlayCache.set(handlerHash, []);
|
|
65
|
+
}
|
|
66
|
+
overlayCache.get(handlerHash).push(overlay);
|
|
67
|
+
};
|
|
68
|
+
ContextPads.prototype._removeOverlay = function (overlay) {
|
|
69
|
+
const { id, handlerHash } = overlay;
|
|
70
|
+
// remove overlay
|
|
71
|
+
this._overlays.remove(id);
|
|
72
|
+
// remove from overlay cache
|
|
73
|
+
const overlays = this._overlayCache.get(handlerHash) || [];
|
|
74
|
+
const idx = overlays.indexOf(overlay);
|
|
75
|
+
if (idx !== -1) {
|
|
76
|
+
overlays.splice(idx, 1);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
ContextPads.prototype.updateElementContextPads = function (element) {
|
|
80
|
+
if (element.type === `${MODELER_PREFIX}:Transition`) {
|
|
81
|
+
const handlerHash = element.id;
|
|
82
|
+
const hash = element.id;
|
|
83
|
+
const exisitingOverlay = this._getOverlays(handlerHash).find((o) => o.hash === hash);
|
|
84
|
+
if (exisitingOverlay !== undefined) {
|
|
85
|
+
this._removeOverlay(exisitingOverlay);
|
|
86
|
+
}
|
|
87
|
+
if (transitionIsEnabled(element, false)) {
|
|
88
|
+
this._updateElementContextPads(element);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
ContextPads.prototype._updateElementContextPads = function (element) {
|
|
93
|
+
const handlerHash = element.id;
|
|
94
|
+
const hash = element.id;
|
|
95
|
+
const html = domify(`
|
|
96
|
+
<div class="bts-context-menu-wrapper">
|
|
97
|
+
<div class="bts-context-pad" title="Fire">
|
|
98
|
+
<span class="pn-icon-fire-transition" title="Fire"></span>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="bts-context-pad" title="Fire random binding">
|
|
101
|
+
<span class="pn-icon-fast-fire" title="Fire random binding"></span>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
`);
|
|
105
|
+
// bind individual buttons: normal fire vs fast(random) fire
|
|
106
|
+
const fireBtn = html.querySelector(".pn-icon-fire-transition");
|
|
107
|
+
if (fireBtn) {
|
|
108
|
+
domEvent.bind(fireBtn, "click", (event) => {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
event.stopPropagation();
|
|
111
|
+
this._eventBus.fire(FIRE_TRANSITION_EVENT, { element });
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
const fastBtn = html.querySelector(".pn-icon-fast-fire");
|
|
115
|
+
if (fastBtn) {
|
|
116
|
+
domEvent.bind(fastBtn, "click", (event) => {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
event.stopPropagation();
|
|
119
|
+
// pass a random flag so the fire handler will immediately pick a random binding
|
|
120
|
+
this._eventBus.fire(FIRE_TRANSITION_EVENT, { element, random: true });
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
this._addOverlay(element, {
|
|
124
|
+
hash,
|
|
125
|
+
handlerHash,
|
|
126
|
+
html,
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
ContextPads.prototype.closeContextPads = function () {
|
|
130
|
+
for (const overlays of this._overlayCache.values()) {
|
|
131
|
+
for (const overlay of overlays) {
|
|
132
|
+
this._closeOverlay(overlay);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this._overlayCache.clear();
|
|
136
|
+
};
|
|
137
|
+
ContextPads.prototype._closeOverlay = function (overlay) {
|
|
138
|
+
this._overlays.remove(overlay.id);
|
|
139
|
+
};
|
|
140
|
+
ContextPads.$inject = ["eventBus", "elementRegistry", "overlays"];
|
|
141
|
+
//# sourceMappingURL=ContextPads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextPads.js","sourceRoot":"","sources":["../../../../lib/simulation/context-pads/ContextPads.js"],"names":[],"mappings":"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"}
|