@valtimo/process 12.40.0 → 12.42.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.
@@ -14,4 +14,4 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvbGliL21vZGVscy9wcm9jZXNzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzU3RhcnQge1xuICBrZXk6IHN0cmluZztcbiAgYnVzaW5lc3NLZXk6IHN0cmluZztcbiAgdmFyaWFibGVzOiBBcnJheTxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZW5kVGltZTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgc3RhcnRVc2VySWQ6IHN0cmluZztcbiAgZGVsZXRlUmVhc29uOiBzdHJpbmc7XG4gIHN0YXJ0VXNlcjogc3RyaW5nO1xuICBwcm9jZXNzU3RhcnRlZDogc3RyaW5nO1xuICBwcm9jZXNzRW5kZWQ6IHN0cmluZztcbiAgYWN0aXZlOiBib29sZWFuO1xuICB2YXJpYWJsZXM6IFByb2Nlc3NJbnN0YW5jZVZhcmlhYmxlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0RlZmluaXRpb24ge1xuICB2aXNpYmxlSW5NZW51OiBhbnk7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGRlcGxveW1lbnRJZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkaWFncmFtOiBzdHJpbmc7XG4gIGhpc3RvcnlUaW1lVG9MaXZlOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIHN0YXJ0YWJsZUluVGFza2xpc3Q6IGJvb2xlYW47XG4gIHN1c3BlbmRlZDogZmFsc2U7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmVyc2lvblRhZzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NEZWZpbml0aW9uU3RhcnRGb3JtIHtcbiAgZm9ybUZpZWxkczogQXJyYXk8YW55PjtcbiAgZm9ybUxvY2F0aW9uOiBzdHJpbmc7XG4gIGdlbmVyaWNGb3JtOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTdGFydFByb2Nlc3NMaW5rVHlwZSA9XG4gIHwgJ2Zvcm0nXG4gIHwgJ2Zvcm0tZmxvdydcbiAgfCAnZm9ybS12aWV3LW1vZGVsJ1xuICB8ICd1cmwnXG4gIHwgJ3VpLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rIHtcbiAgcHJvY2Vzc0xpbmtJZDogc3RyaW5nO1xuICB0eXBlOiBTdGFydFByb2Nlc3NMaW5rVHlwZTtcbiAgcHJvcGVydGllczoge1xuICAgIGZvcm1GbG93SW5zdGFuY2VJZD86IHN0cmluZztcbiAgICBmb3JtRGVmaW5pdGlvbklkPzogc3RyaW5nO1xuICAgIHByZWZpbGxlZEZvcm0/OiBhbnk7XG4gICAgZm9ybU5hbWU/OiBzdHJpbmc7XG4gICAgZm9ybURlZmluaXRpb24/OiBvYmplY3Q7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIGNvbXBvbmVudEtleT86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSW5zdGFuY2Uge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZW5kVGltZTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgc3RhcnRVc2VySWQ6IHN0cmluZztcbiAgZGVsZXRlUmVhc29uOiBzdHJpbmc7XG4gIHZhcmlhYmxlczogUHJvY2Vzc0luc3RhbmNlVmFyaWFibGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSW5zdGFuY2VWYXJpYWJsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0VmFsdWU/OiBzdHJpbmc7XG4gIGxvbmdWYWx1ZT86IG51bWJlcjtcbiAgbG9jYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luc3RhbmNlVGFzayB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXNzaWduZWU6IHN0cmluZztcbiAgY3JlYXRlZDogc3RyaW5nO1xuICBjcmVhdGVkVW5peDogbnVtYmVyO1xuICBkdWU/OiBzdHJpbmc7XG4gIGR1ZVVuaXg/OiBudW1iZXI7XG4gIGZvbGxvd1VwOiBzdHJpbmc7XG4gIGRlbGVnYXRpb25TdGF0ZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICBwYXJlbnRUYXNrSWQ6IHN0cmluZztcbiAgcHJpb3JpdHk6IG51bWJlcjtcbiAgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nO1xuICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICB0YXNrRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBjYXNlRXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgY2FzZUluc3RhbmNlSWQ6IHN0cmluZztcbiAgY2FzZURlZmluaXRpb25JZDogc3RyaW5nO1xuICBzdXNwZW5kZWQ6IGJvb2xlYW47XG4gIGZvcm1LZXk6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgaWRlbnRpdHlMaW5rczogSWRlbnRpdHlMaW5rW107XG4gIGlzTG9ja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5TGluayB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBncm91cElkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvbGliL21vZGVscy9wcm9jZXNzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzU3RhcnQge1xuICBrZXk6IHN0cmluZztcbiAgYnVzaW5lc3NLZXk6IHN0cmluZztcbiAgdmFyaWFibGVzOiBBcnJheTxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZW5kVGltZTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgc3RhcnRVc2VySWQ6IHN0cmluZztcbiAgZGVsZXRlUmVhc29uOiBzdHJpbmc7XG4gIHN0YXJ0VXNlcjogc3RyaW5nO1xuICBwcm9jZXNzU3RhcnRlZDogc3RyaW5nO1xuICBwcm9jZXNzRW5kZWQ6IHN0cmluZztcbiAgYWN0aXZlOiBib29sZWFuO1xuICB2YXJpYWJsZXM6IFByb2Nlc3NJbnN0YW5jZVZhcmlhYmxlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0RlZmluaXRpb24ge1xuICB2aXNpYmxlSW5NZW51OiBhbnk7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGRlcGxveW1lbnRJZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkaWFncmFtOiBzdHJpbmc7XG4gIGhpc3RvcnlUaW1lVG9MaXZlOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIHN0YXJ0YWJsZUluVGFza2xpc3Q6IGJvb2xlYW47XG4gIHN1c3BlbmRlZDogZmFsc2U7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmVyc2lvblRhZzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NEZWZpbml0aW9uU3RhcnRGb3JtIHtcbiAgZm9ybUZpZWxkczogQXJyYXk8YW55PjtcbiAgZm9ybUxvY2F0aW9uOiBzdHJpbmc7XG4gIGdlbmVyaWNGb3JtOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBTdGFydFByb2Nlc3NMaW5rVHlwZSA9XG4gIHwgJ2Zvcm0nXG4gIHwgJ2Zvcm0tZmxvdydcbiAgfCAnZm9ybS12aWV3LW1vZGVsJ1xuICB8ICd1cmwnXG4gIHwgJ3VpLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rIHtcbiAgcHJvY2Vzc0xpbmtJZDogc3RyaW5nO1xuICB0eXBlOiBTdGFydFByb2Nlc3NMaW5rVHlwZTtcbiAgcHJvcGVydGllczoge1xuICAgIGZvcm1GbG93SW5zdGFuY2VJZD86IHN0cmluZztcbiAgICBmb3JtRGVmaW5pdGlvbklkPzogc3RyaW5nO1xuICAgIHByZWZpbGxlZEZvcm0/OiBhbnk7XG4gICAgZm9ybU5hbWU/OiBzdHJpbmc7XG4gICAgZm9ybURlZmluaXRpb24/OiBvYmplY3Q7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIGNvbXBvbmVudEtleT86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSW5zdGFuY2Uge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZW5kVGltZTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgc3RhcnRVc2VySWQ6IHN0cmluZztcbiAgZGVsZXRlUmVhc29uOiBzdHJpbmc7XG4gIHZhcmlhYmxlczogUHJvY2Vzc0luc3RhbmNlVmFyaWFibGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSW5zdGFuY2VWYXJpYWJsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0VmFsdWU/OiBzdHJpbmc7XG4gIGxvbmdWYWx1ZT86IG51bWJlcjtcbiAgbG9jYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luc3RhbmNlVGFzayB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgYXNzaWduZWU6IHN0cmluZztcbiAgY3JlYXRlZDogc3RyaW5nO1xuICBjcmVhdGVkVW5peDogbnVtYmVyO1xuICBkdWU/OiBzdHJpbmc7XG4gIGR1ZVVuaXg/OiBudW1iZXI7XG4gIGZvbGxvd1VwOiBzdHJpbmc7XG4gIGRlbGVnYXRpb25TdGF0ZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICBwYXJlbnRUYXNrSWQ6IHN0cmluZztcbiAgcHJpb3JpdHk6IG51bWJlcjtcbiAgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nO1xuICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICB0YXNrRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICBjYXNlRXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgY2FzZUluc3RhbmNlSWQ6IHN0cmluZztcbiAgY2FzZURlZmluaXRpb25JZDogc3RyaW5nO1xuICBzdXNwZW5kZWQ6IGJvb2xlYW47XG4gIGZvcm1LZXk6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgaWRlbnRpdHlMaW5rczogSWRlbnRpdHlMaW5rW107XG4gIGlzTG9ja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5TGluayB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBncm91cElkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTa2lwcGFibGVUaW1lciB7XG4gIGpvYklkOiBzdHJpbmc7XG4gIGFjdGl2aXR5SWQ6IHN0cmluZyB8IG51bGw7XG59XG4iXX0=
@@ -22,7 +22,13 @@ import * as i2 from "@angular/common";
22
22
  export class ProcessDiagramComponent {
23
23
  constructor(processService) {
24
24
  this.processService = processService;
25
+ this._imported = false;
26
+ this._skipOverlayIds = [];
25
27
  this.importDone = new EventEmitter();
28
+ this.skipTimerEvent = new EventEmitter();
29
+ this.skippableTimers = [];
30
+ this.canSkipTimer = false;
31
+ this.skipTimerLabel = 'Skip timer';
26
32
  this.enumHeatmapOptions = ['count', 'duration'];
27
33
  }
28
34
  ngOnInit() {
@@ -45,6 +51,8 @@ export class ProcessDiagramComponent {
45
51
  }
46
52
  });
47
53
  }
54
+ this._imported = true;
55
+ this.renderSkipTimerOverlays();
48
56
  canvas.zoom('fit-viewport', 'auto');
49
57
  if (this.processDefinitionVersions) {
50
58
  eventBus.on('canvas.init', () => {
@@ -65,13 +73,21 @@ export class ProcessDiagramComponent {
65
73
  }
66
74
  });
67
75
  }
68
- ngOnChanges() {
69
- if (this.processDefinitionKey) {
76
+ ngOnChanges(changes) {
77
+ if (changes['processDefinitionKey'] && this.processDefinitionKey) {
70
78
  this.loadProcessDefinitionFromKey(this.processDefinitionKey);
71
79
  }
72
- else if (this.processInstanceId) {
80
+ else if (changes['processInstanceId'] && this.processInstanceId) {
81
+ this.loadProcessInstanceXml(this.processInstanceId);
82
+ }
83
+ else if (changes['reloadToken'] &&
84
+ !changes['reloadToken'].firstChange &&
85
+ this.processInstanceId) {
73
86
  this.loadProcessInstanceXml(this.processInstanceId);
74
87
  }
88
+ if (changes['skippableTimers'] || changes['canSkipTimer']) {
89
+ this.renderSkipTimerOverlays();
90
+ }
75
91
  }
76
92
  ngOnDestroy() {
77
93
  if (this.bpmnJS) {
@@ -102,12 +118,59 @@ export class ProcessDiagramComponent {
102
118
  });
103
119
  }
104
120
  loadProcessInstanceXml(processInstanceId) {
121
+ this._imported = false;
105
122
  this.processService.getProcessXml(processInstanceId).subscribe(response => {
106
123
  this.processDiagram = response;
107
124
  this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
108
125
  this.bpmnJS.attachTo(this.el.nativeElement);
109
126
  });
110
127
  }
128
+ renderSkipTimerOverlays() {
129
+ if (!this.bpmnJS || !this._imported) {
130
+ return;
131
+ }
132
+ const overlays = this.bpmnJS.get('overlays');
133
+ this._skipOverlayIds.forEach(overlayId => {
134
+ try {
135
+ overlays.remove(overlayId);
136
+ }
137
+ catch {
138
+ // overlay already gone (e.g. after a diagram re-import); ignore
139
+ }
140
+ });
141
+ this._skipOverlayIds = [];
142
+ if (!this.canSkipTimer || !this.skippableTimers?.length) {
143
+ return;
144
+ }
145
+ this.skippableTimers.forEach(timer => {
146
+ if (!timer.activityId) {
147
+ return;
148
+ }
149
+ const button = document.createElement('button');
150
+ button.type = 'button';
151
+ button.className = 'valtimo-skip-timer-overlay';
152
+ button.title = this.skipTimerLabel;
153
+ button.setAttribute('aria-label', this.skipTimerLabel);
154
+ button.innerHTML =
155
+ '<svg width="16" height="16" viewBox="0 0 32 32" aria-hidden="true" focusable="false">' +
156
+ '<path fill="currentColor" d="M8 26V6l14 10L8 26z M24 6h2v20h-2z"/></svg>';
157
+ button.addEventListener('click', (event) => {
158
+ event.stopPropagation();
159
+ this.skipTimerEvent.emit(timer);
160
+ });
161
+ try {
162
+ const overlayId = overlays.add(timer.activityId, {
163
+ position: { top: -14, right: 14 },
164
+ show: { minZoom: 0, maxZoom: 5.0 },
165
+ html: button,
166
+ });
167
+ this._skipOverlayIds.push(overlayId);
168
+ }
169
+ catch {
170
+ // activity not present in the rendered diagram; nothing to attach to
171
+ }
172
+ });
173
+ }
111
174
  loadProcessDefinitionHeatmapCount(processDefinition) {
112
175
  this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {
113
176
  this.inputData = response;
@@ -241,19 +304,29 @@ export class ProcessDiagramComponent {
241
304
  });
242
305
  }
243
306
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, deps: [{ token: i1.ProcessService }], target: i0.ɵɵFactoryTarget.Component }); }
244
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId" }, outputs: { importDone: "importDone" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
307
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId", skippableTimers: "skippableTimers", canSkipTimer: "canSkipTimer", skipTimerLabel: "skipTimerLabel", reloadToken: "reloadToken" }, outputs: { importDone: "importDone", skipTimerEvent: "skipTimerEvent" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
245
308
  }
246
309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, decorators: [{
247
310
  type: Component,
248
- args: [{ selector: 'valtimo-process-diagram', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
311
+ args: [{ selector: 'valtimo-process-diagram', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
249
312
  }], ctorParameters: () => [{ type: i1.ProcessService }], propDecorators: { el: [{
250
313
  type: ViewChild,
251
314
  args: ['ref', { static: true }]
252
315
  }], importDone: [{
253
316
  type: Output
317
+ }], skipTimerEvent: [{
318
+ type: Output
254
319
  }], processDefinitionKey: [{
255
320
  type: Input
256
321
  }], processInstanceId: [{
257
322
  type: Input
323
+ }], skippableTimers: [{
324
+ type: Input
325
+ }], canSkipTimer: [{
326
+ type: Input
327
+ }], skipTimerLabel: [{
328
+ type: Input
329
+ }], reloadToken: [{
330
+ type: Input
258
331
  }] } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvbGliL3Byb2Nlc3MtZGlhZ3JhbS9wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzL3NyYy9saWIvcHJvY2Vzcy1kaWFncmFtL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLE1BQU0sTUFBTSxzREFBc0QsQ0FBQztBQUMxRSxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVF4RCxNQUFNLE9BQU8sdUJBQXVCO0lBeUJsQyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFwQmpDLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVc3RCx1QkFBa0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQVNHLENBQUM7SUFFdEQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1B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RSxJQUFJLENBQUMsR0FBRyxDQUNULENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLHdCQUF3QixDQUFDLEdBQVEsRUFBRSxTQUFjO1FBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2hCLFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQ1Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLEdBQUc7YUFDYjtZQUNELElBQUksRUFBRSxnREFBZ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssU0FBUztTQUNwRixDQUFDLENBQUM7SUFDTCxDQUFDOytHQTlRVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixzVUN2Q3BDLG1yR0FxRkE7OzRGRDlDYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJO21GQU1JLEVBQUU7c0JBQTFDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDZixVQUFVO3NCQUExQixNQUFNO2dCQUNTLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi9wcm9jZXNzLnNlcnZpY2UnO1xuXG5pbXBvcnQgQnBtbkpTIGZyb20gJ2JwbW4tanMvZGlzdC9icG1uLW5hdmlnYXRlZC12aWV3ZXIucHJvZHVjdGlvbi5taW4uanMnO1xuaW1wb3J0IGhlYXRtYXAgZnJvbSAnaGVhdG1hcC5qcy1maXhlZC9idWlsZC9oZWF0bWFwLmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1wcm9jZXNzLWRpYWdyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NEaWFncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgYnBtbkpTOiBCcG1uSlM7XG4gIHByaXZhdGUgaGVhdE1hcEluc3RhbmNlOiBhbnk7XG5cbiAgQFZpZXdDaGlsZCgncmVmJywge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBlbDogRWxlbWVudFJlZjtcbiAgQE91dHB1dCgpIHB1YmxpYyBpbXBvcnREb25lOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uS2V5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcHJvY2Vzc0luc3RhbmNlSWQ/OiBzdHJpbmc7XG5cbiAgcHVibGljIHByb2Nlc3NEaWFncmFtOiBhbnk7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbjogYW55O1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uczogYW55O1xuICBwdWJsaWMgaGVhdG1hcENvdW50OiBhbnk7XG4gIHB1YmxpYyBoZWF0bWFwRHVyYXRpb246IGFueTtcbiAgcHVibGljIHRhc2tzQ291bnQ6IGFueTtcbiAgcHVibGljIHNob3dIZWF0bWFwOiBib29sZWFuO1xuICBwdWJsaWMgZW51bUhlYXRtYXBPcHRpb25zID0gWydjb3VudCcsICdkdXJhdGlvbiddO1xuICBwdWJsaWMgaGVhdG1hcE9wdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgdmVyc2lvbjogYW55O1xuICBwdWJsaWMgaGVhdFBvaW50czogYW55O1xuICBwdWJsaWMgbWluOiBudW1iZXI7XG4gIHB1YmxpYyBtYXg6IG51bWJlcjtcbiAgcHVibGljIGlucHV0RGF0YTogYW55O1xuICBwdWJsaWMgdmFsdWVLZXk6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25Gcm9tS2V5KHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0luc3RhbmNlWG1sKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgIH1cbiAgICB0aGlzLmJwbW5KUyA9IG5ldyBCcG1uSlMoKTtcbiAgICB0aGlzLmJwbW5KUy5vbignaW1wb3J0LmRvbmUnLCAoe2Vycm9yfSkgPT4ge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICBjb25zdCBjYW52YXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCBldmVudEJ1cyA9IHRoaXMuYnBtbkpTLmdldCgnZXZlbnRCdXMnKTtcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc0RpYWdyYW0uaGlzdG9yaWNBY3Rpdml0eUluc3RhbmNlcykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RpYWdyYW0uaGlzdG9yaWNBY3Rpdml0eUluc3RhbmNlcy5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgICAgICAgIC8vIGV4Y2x1ZGUgbXVsdGlJbnN0YW5jZUJvZHlcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5hY3Rpdml0eVR5cGUgIT09ICdtdWx0aUluc3RhbmNlQm9keScpIHtcbiAgICAgICAgICAgICAgY2FudmFzLmFkZE1hcmtlcihcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5hY3Rpdml0eUlkLFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmVuZFRpbWUgPyAnaGlnaGxpZ2h0LW92ZXJsYXktcGFzdCcgOiAnaGlnaGxpZ2h0LW92ZXJsYXktY3VycmVudCdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbnZhcy56b29tKCdmaXQtdmlld3BvcnQnLCAnYXV0bycpO1xuICAgICAgICBpZiAodGhpcy5wcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKSB7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy5pbml0JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZEhlYXRtYXBEYXRhKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy52aWV3Ym94LmNoYW5naW5nJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLnZpZXdib3guY2hhbmdlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYXRtYXBEYXRhKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzSW5zdGFuY2VYbWwodGhpcy5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYnBtbkpTKSB7XG4gICAgICB0aGlzLmJwbW5KUy5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvbihwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmhlYXRtYXBPcHRpb24gPSB0aGlzLmVudW1IZWF0bWFwT3B0aW9uc1swXTtcbiAgICAgIHRoaXMudmVyc2lvbiA9IHJlc3BvbnNlLnZlcnNpb247XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblhtbChyZXNwb25zZS5pZCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMgPSByZXNwb25zZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25Gcm9tS2V5KHByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkKSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMucHJvY2Vzc0RpYWdyYW0uYnBtbjIwWG1sKTtcbiAgICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQcm9jZXNzSW5zdGFuY2VYbWwocHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NYbWwocHJvY2Vzc0luc3RhbmNlSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEaWFncmFtID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLmJwbW5KUy5pbXBvcnRYTUwodGhpcy5wcm9jZXNzRGlhZ3JhbS5icG1uMjBYbWwpO1xuICAgICAgdGhpcy5icG1uSlMuYXR0YWNoVG8odGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICd0b3RhbENvdW50JztcbiAgICAgIHRoaXMuaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICB0aGlzLm1heCA9IDA7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXREYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1Db250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcihgZ1tkYXRhLWVsZW1lbnQtaWQ9JHtrZXl9XWApXG4gICAgICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnNldE1heChrZXkpO1xuICAgICAgICB0aGlzLmhlYXRQb2ludHMuZGF0YS5wdXNoKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueCAtIGRpYWdyYW1Db250YWluZXIueCArIGRpYWdyYW1FbG0ud2lkdGggLyAyKSxcbiAgICAgICAgICB5OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueSAtIGRpYWdyYW1Db250YWluZXIueSArIGRpYWdyYW1FbG0uaGVpZ2h0IC8gMiksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuaW5wdXREYXRhW2tleV1bdGhpcy52YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQ291bnRlckFjdGl2ZU92ZXJsYXlzKGtleSwgdGhpcy5pbnB1dERhdGEpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCkge1xuICAgIGNvbnN0IG9sZENhbnZhcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXNbY2xhc3M9aGVhdG1hcC1jYW52YXNdJyk7XG4gICAgaWYgKG9sZENhbnZhcykge1xuICAgICAgb2xkQ2FudmFzLnJlbW92ZSgpO1xuICAgICAgdGhpcy5oZWF0TWFwSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICdhdmVyYWdlRHVyYXRpb25Jbk1pbGxpc2Vjb25kcyc7XG4gICAgICB0aGlzLmhlYXRQb2ludHMgPSB7ZGF0YTogW119O1xuICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgdGhpcy5tYXggPSAwO1xuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaWFncmFtRWxtID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYGdbZGF0YS1lbGVtZW50LWlkPSR7a2V5fV1gKVxuICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmlucHV0RGF0YVtrZXldW3RoaXMudmFsdWVLZXldLFxuICAgICAgICAgIHJhZGl1czogZGlhZ3JhbUVsbS53aWR0aCAvIDIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIHRoaXMuaW5wdXREYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgIHRoaXMubG9hZEhlYXRtYXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9jZXNzRGVmaW5pdGlvbktleShwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb24pIHtcbiAgICB0aGlzLnZlcnNpb24gPSArdmVyc2lvbjtcbiAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYXRtYXBPcHRpb24oaGVhdG1hcE9wdGlvbikge1xuICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IGhlYXRtYXBPcHRpb247XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaG93SGVhdG1hcCgpIHtcbiAgICB0aGlzLnNob3dIZWF0bWFwID0gIXRoaXMuc2hvd0hlYXRtYXA7XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcCgpIHtcbiAgICBpZiAoIXRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZSA9IGhlYXRtYXAuY3JlYXRlKHtcbiAgICAgICAgcmFkaXVzOiA1NCxcbiAgICAgICAgYmx1cjogMC43LFxuICAgICAgICBtYXhPcGFjaXR5OiAwLjQsXG4gICAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlLnNldERhdGEoe1xuICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICBkYXRhOiB0aGlzLmhlYXRQb2ludHMuZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhlYXRtYXAoKSB7XG4gICAgaWYgKHRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtkYXRhOiBbXX0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcERhdGEoKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbiA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucy5maW5kKFxuICAgICAgZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLnZlcnNpb24gPT09IHRoaXMudmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAodGhpcy5oZWF0bWFwT3B0aW9uID09PSAnY291bnQnKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkhlYXRtYXBDb3VudCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhdG1hcE9wdGlvbiA9PT0gJ2R1cmF0aW9uJykge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24odGhpcy5wcm9jZXNzRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE1heChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmhlYXRtYXBEdXJhdGlvbikge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heCh0aGlzLmhlYXRtYXBEdXJhdGlvbltrZXldLmF2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzLCB0aGlzLm1heCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYXRtYXBDb3VudCkge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heChcbiAgICAgICAgdGhpcy5oZWF0bWFwQ291bnRba2V5XS50b3RhbENvdW50ICsgdGhpcy5oZWF0bWFwQ291bnRba2V5XS5jb3VudCxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXk6IGFueSwgaW5wdXREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBvdmVybGF5cyA9IHRoaXMuYnBtbkpTLmdldCgnb3ZlcmxheXMnKTtcbiAgICBvdmVybGF5cy5hZGQoa2V5LCB7XG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBib3R0b206IDEzLFxuICAgICAgICBsZWZ0OiAtMTIsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdiBjbGFzcz1cInByb2Nlc3MtZGlhZ3JhbS1jb250YWluZXJcIj5cbiAgPGRpdiAqbmdJZj1cInByb2Nlc3NEZWZpbml0aW9uS2V5XCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lci1zd2l0Y2gtaG9sZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTQgYmctbGlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+VmVyc2lvbjwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKCRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24gb2YgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvblwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvbiA9PT0gdmVyc2lvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgIDxsYWJlbD48c3Ryb25nPkhlYXRtYXAgdHlwZTwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0SGVhdG1hcE9wdGlvbigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVudW1IZWF0bWFwT3B0aW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uID09PSBoZWF0bWFwT3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+U2hvdyBoZWF0bWFwPC9zdHJvbmc+PC9sYWJlbFxuICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IHN3aXRjaC1idXR0b24gc3dpdGNoLWJ1dHRvbi1zbSBzd2l0Y2gtYnV0dG9uLXN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBpZD1cInRvZ2dsZUhlYXRtYXBcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzaG93SGVhdG1hcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93SGVhdG1hcCgpXCJcbiAgICAgICAgICAgIC8+PHNwYW4+IDxsYWJlbCBmb3I9XCJ0b2dnbGVIZWF0bWFwXCI+PC9sYWJlbD48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI3JlZiAod2luZG93OnJlc2l6ZSk9XCJvbldpbmRvd1Jlc2l6ZSgpXCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lclwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzSW5zdGFuY2VJZFwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48ZGl2IGNsYXNzPVwibGVnZW5kYSBoaWdobGlnaHQtb3ZlcmxheS1wYXN0XCI+PC9kaXY+XG4gICAgICBFeGVjdXRlZCB0YXNrczwvc3BhblxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cIm1sLTNcIlxuICAgICAgPjxkaXYgY2xhc3M9XCJsZWdlbmRhIGhpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnRcIj48L2Rpdj5cbiAgICAgIEN1cnJlbnQgdGFza3M8L3NwYW5cbiAgICA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzRGVmaW5pdGlvbktleVwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPk48L3NwYW4+Jm5ic3A7Jm5ic3A7QW1vdW50IG9mIGN1cnJlbnRseSBhY3RpdmVcbiAgICAgIGluc3RhbmNlcyBvZiB0aGlzIHRhc2suPC9zcGFuXG4gICAgPlxuICAgIDxzcGFuXG4gICAgICA+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwO1JlZC95ZWxsb3cvZ3JlZW4gb3JiczogVGhlIGFtb3VudCBvZiB0aW1lcyB0aGUgdGFzayBpcyBleGVjdXRlZCBpblxuICAgICAgY29tcGFyaXNvbiB0byB0aGUgb3RoZXIgdGFza3MuPC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvbGliL3Byb2Nlc3MtZGlhZ3JhbS9wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzL3NyYy9saWIvcHJvY2Vzcy1kaWFncmFtL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLE1BQU0sTUFBTSxzREFBc0QsQ0FBQztBQUMxRSxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVF4RCxNQUFNLE9BQU8sdUJBQXVCO0lBZ0NsQyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE3QjFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFHdEIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1CQUFjLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbkUsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBVXZDLHVCQUFrQixHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBU0csQ0FBQztJQUV0RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsNEJBQTRCLENBQUMs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QUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtTa2lwcGFibGVUaW1lcn0gZnJvbSAnLi4vbW9kZWxzJztcblxuaW1wb3J0IEJwbW5KUyBmcm9tICdicG1uLWpzL2Rpc3QvYnBtbi1uYXZpZ2F0ZWQtdmlld2VyLnByb2R1Y3Rpb24ubWluLmpzJztcbmltcG9ydCBoZWF0bWFwIGZyb20gJ2hlYXRtYXAuanMtZml4ZWQvYnVpbGQvaGVhdG1hcC5qcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tcHJvY2Vzcy1kaWFncmFtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGJwbW5KUzogQnBtbkpTO1xuICBwcml2YXRlIGhlYXRNYXBJbnN0YW5jZTogYW55O1xuICBwcml2YXRlIF9pbXBvcnRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9za2lwT3ZlcmxheUlkczogc3RyaW5nW10gPSBbXTtcblxuICBAVmlld0NoaWxkKCdyZWYnLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIGVsOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgcHVibGljIGltcG9ydERvbmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHNraXBUaW1lckV2ZW50OiBFdmVudEVtaXR0ZXI8U2tpcHBhYmxlVGltZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25LZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcm9jZXNzSW5zdGFuY2VJZD86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNraXBwYWJsZVRpbWVyczogU2tpcHBhYmxlVGltZXJbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY2FuU2tpcFRpbWVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBza2lwVGltZXJMYWJlbCA9ICdTa2lwIHRpbWVyJztcbiAgQElucHV0KCkgcHVibGljIHJlbG9hZFRva2VuPzogbnVtYmVyO1xuXG4gIHB1YmxpYyBwcm9jZXNzRGlhZ3JhbTogYW55O1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb246IGFueTtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnM6IGFueTtcbiAgcHVibGljIGhlYXRtYXBDb3VudDogYW55O1xuICBwdWJsaWMgaGVhdG1hcER1cmF0aW9uOiBhbnk7XG4gIHB1YmxpYyB0YXNrc0NvdW50OiBhbnk7XG4gIHB1YmxpYyBzaG93SGVhdG1hcDogYm9vbGVhbjtcbiAgcHVibGljIGVudW1IZWF0bWFwT3B0aW9ucyA9IFsnY291bnQnLCAnZHVyYXRpb24nXTtcbiAgcHVibGljIGhlYXRtYXBPcHRpb246IHN0cmluZztcbiAgcHVibGljIHZlcnNpb246IGFueTtcbiAgcHVibGljIGhlYXRQb2ludHM6IGFueTtcbiAgcHVibGljIG1pbjogbnVtYmVyO1xuICBwdWJsaWMgbWF4OiBudW1iZXI7XG4gIHB1YmxpYyBpbnB1dERhdGE6IGFueTtcbiAgcHVibGljIHZhbHVlS2V5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NJbnN0YW5jZVhtbCh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICB9XG4gICAgdGhpcy5icG1uSlMgPSBuZXcgQnBtbkpTKCk7XG4gICAgdGhpcy5icG1uSlMub24oJ2ltcG9ydC5kb25lJywgKHtlcnJvcn0pID0+IHtcbiAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5icG1uSlMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2V2ZW50QnVzJyk7XG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NEaWFncmFtLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEaWFncmFtLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAgICAgICAvLyBleGNsdWRlIG11bHRpSW5zdGFuY2VCb2R5XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UuYWN0aXZpdHlUeXBlICE9PSAnbXVsdGlJbnN0YW5jZUJvZHknKSB7XG4gICAgICAgICAgICAgIGNhbnZhcy5hZGRNYXJrZXIoXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWN0aXZpdHlJZCxcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lbmRUaW1lID8gJ2hpZ2hsaWdodC1vdmVybGF5LXBhc3QnIDogJ2hpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnQnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbXBvcnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVuZGVyU2tpcFRpbWVyT3ZlcmxheXMoKTtcblxuICAgICAgICBjYW52YXMuem9vbSgnZml0LXZpZXdwb3J0JywgJ2F1dG8nKTtcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucykge1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMuaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMudmlld2JveC5jaGFuZ2luZycsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy52aWV3Ym94LmNoYW5nZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9jZXNzRGVmaW5pdGlvbktleSddICYmIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ10gJiYgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0luc3RhbmNlWG1sKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjaGFuZ2VzWydyZWxvYWRUb2tlbiddICYmXG4gICAgICAhY2hhbmdlc1sncmVsb2FkVG9rZW4nXS5maXJzdENoYW5nZSAmJlxuICAgICAgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZFxuICAgICkge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0luc3RhbmNlWG1sKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydza2lwcGFibGVUaW1lcnMnXSB8fCBjaGFuZ2VzWydjYW5Ta2lwVGltZXInXSkge1xuICAgICAgdGhpcy5yZW5kZXJTa2lwVGltZXJPdmVybGF5cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5icG1uSlMpIHtcbiAgICAgIHRoaXMuYnBtbkpTLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvbihwcm9jZXNzRGVmaW5pdGlvbktleSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IHRoaXMuZW51bUhlYXRtYXBPcHRpb25zWzBdO1xuICAgICAgdGhpcy52ZXJzaW9uID0gcmVzcG9uc2UudmVyc2lvbjtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uWG1sKHJlc3BvbnNlLmlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyA9IHJlc3BvbnNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkocHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKHByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbihwcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uSWQpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEaWFncmFtID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLmJwbW5KUy5pbXBvcnRYTUwodGhpcy5wcm9jZXNzRGlhZ3JhbS5icG1uMjBYbWwpO1xuICAgICAgdGhpcy5icG1uSlMuYXR0YWNoVG8odGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2Nlc3NJbnN0YW5jZVhtbChwcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgIHRoaXMuX2ltcG9ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzWG1sKHByb2Nlc3NJbnN0YW5jZUlkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMucHJvY2Vzc0RpYWdyYW0uYnBtbjIwWG1sKTtcbiAgICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNraXBUaW1lck92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5icG1uSlMgfHwgIXRoaXMuX2ltcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLmJwbW5KUy5nZXQoJ292ZXJsYXlzJykgYXMgYW55O1xuICAgIHRoaXMuX3NraXBPdmVybGF5SWRzLmZvckVhY2gob3ZlcmxheUlkID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG92ZXJsYXlzLnJlbW92ZShvdmVybGF5SWQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIG92ZXJsYXkgYWxyZWFkeSBnb25lIChlLmcuIGFmdGVyIGEgZGlhZ3JhbSByZS1pbXBvcnQpOyBpZ25vcmVcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9za2lwT3ZlcmxheUlkcyA9IFtdO1xuXG4gICAgaWYgKCF0aGlzLmNhblNraXBUaW1lciB8fCAhdGhpcy5za2lwcGFibGVUaW1lcnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2tpcHBhYmxlVGltZXJzLmZvckVhY2godGltZXIgPT4ge1xuICAgICAgaWYgKCF0aW1lci5hY3Rpdml0eUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICBidXR0b24udHlwZSA9ICdidXR0b24nO1xuICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICd2YWx0aW1vLXNraXAtdGltZXItb3ZlcmxheSc7XG4gICAgICBidXR0b24udGl0bGUgPSB0aGlzLnNraXBUaW1lckxhYmVsO1xuICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuc2tpcFRpbWVyTGFiZWwpO1xuICAgICAgYnV0dG9uLmlubmVySFRNTCA9XG4gICAgICAgICc8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPicgK1xuICAgICAgICAnPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNOCAyNlY2bDE0IDEwTDggMjZ6IE0yNCA2aDJ2MjBoLTJ6XCIvPjwvc3ZnPic7XG4gICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2tpcFRpbWVyRXZlbnQuZW1pdCh0aW1lcik7XG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUlkID0gb3ZlcmxheXMuYWRkKHRpbWVyLmFjdGl2aXR5SWQsIHtcbiAgICAgICAgICBwb3NpdGlvbjoge3RvcDogLTE0LCByaWdodDogMTR9LFxuICAgICAgICAgIHNob3c6IHttaW5ab29tOiAwLCBtYXhab29tOiA1LjB9LFxuICAgICAgICAgIGh0bWw6IGJ1dHRvbixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NraXBPdmVybGF5SWRzLnB1c2gob3ZlcmxheUlkKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBhY3Rpdml0eSBub3QgcHJlc2VudCBpbiB0aGUgcmVuZGVyZWQgZGlhZ3JhbTsgbm90aGluZyB0byBhdHRhY2ggdG9cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICd0b3RhbENvdW50JztcbiAgICAgIHRoaXMuaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICB0aGlzLm1heCA9IDA7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXREYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1Db250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcihgZ1tkYXRhLWVsZW1lbnQtaWQ9JHtrZXl9XWApXG4gICAgICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnNldE1heChrZXkpO1xuICAgICAgICB0aGlzLmhlYXRQb2ludHMuZGF0YS5wdXNoKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueCAtIGRpYWdyYW1Db250YWluZXIueCArIGRpYWdyYW1FbG0ud2lkdGggLyAyKSxcbiAgICAgICAgICB5OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueSAtIGRpYWdyYW1Db250YWluZXIueSArIGRpYWdyYW1FbG0uaGVpZ2h0IC8gMiksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuaW5wdXREYXRhW2tleV1bdGhpcy52YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQ291bnRlckFjdGl2ZU92ZXJsYXlzKGtleSwgdGhpcy5pbnB1dERhdGEpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCkge1xuICAgIGNvbnN0IG9sZENhbnZhcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXNbY2xhc3M9aGVhdG1hcC1jYW52YXNdJyk7XG4gICAgaWYgKG9sZENhbnZhcykge1xuICAgICAgb2xkQ2FudmFzLnJlbW92ZSgpO1xuICAgICAgdGhpcy5oZWF0TWFwSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICdhdmVyYWdlRHVyYXRpb25Jbk1pbGxpc2Vjb25kcyc7XG4gICAgICB0aGlzLmhlYXRQb2ludHMgPSB7ZGF0YTogW119O1xuICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgdGhpcy5tYXggPSAwO1xuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaWFncmFtRWxtID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYGdbZGF0YS1lbGVtZW50LWlkPSR7a2V5fV1gKVxuICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmlucHV0RGF0YVtrZXldW3RoaXMudmFsdWVLZXldLFxuICAgICAgICAgIHJhZGl1czogZGlhZ3JhbUVsbS53aWR0aCAvIDIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIHRoaXMuaW5wdXREYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgIHRoaXMubG9hZEhlYXRtYXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9jZXNzRGVmaW5pdGlvbktleShwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb24pIHtcbiAgICB0aGlzLnZlcnNpb24gPSArdmVyc2lvbjtcbiAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYXRtYXBPcHRpb24oaGVhdG1hcE9wdGlvbikge1xuICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IGhlYXRtYXBPcHRpb247XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaG93SGVhdG1hcCgpIHtcbiAgICB0aGlzLnNob3dIZWF0bWFwID0gIXRoaXMuc2hvd0hlYXRtYXA7XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcCgpIHtcbiAgICBpZiAoIXRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZSA9IGhlYXRtYXAuY3JlYXRlKHtcbiAgICAgICAgcmFkaXVzOiA1NCxcbiAgICAgICAgYmx1cjogMC43LFxuICAgICAgICBtYXhPcGFjaXR5OiAwLjQsXG4gICAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlLnNldERhdGEoe1xuICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICBkYXRhOiB0aGlzLmhlYXRQb2ludHMuZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhlYXRtYXAoKSB7XG4gICAgaWYgKHRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtkYXRhOiBbXX0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcERhdGEoKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbiA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucy5maW5kKFxuICAgICAgZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLnZlcnNpb24gPT09IHRoaXMudmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAodGhpcy5oZWF0bWFwT3B0aW9uID09PSAnY291bnQnKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkhlYXRtYXBDb3VudCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhdG1hcE9wdGlvbiA9PT0gJ2R1cmF0aW9uJykge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24odGhpcy5wcm9jZXNzRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE1heChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmhlYXRtYXBEdXJhdGlvbikge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heCh0aGlzLmhlYXRtYXBEdXJhdGlvbltrZXldLmF2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzLCB0aGlzLm1heCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYXRtYXBDb3VudCkge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heChcbiAgICAgICAgdGhpcy5oZWF0bWFwQ291bnRba2V5XS50b3RhbENvdW50ICsgdGhpcy5oZWF0bWFwQ291bnRba2V5XS5jb3VudCxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXk6IGFueSwgaW5wdXREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBvdmVybGF5cyA9IHRoaXMuYnBtbkpTLmdldCgnb3ZlcmxheXMnKTtcbiAgICBvdmVybGF5cy5hZGQoa2V5LCB7XG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBib3R0b206IDEzLFxuICAgICAgICBsZWZ0OiAtMTIsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdiBjbGFzcz1cInByb2Nlc3MtZGlhZ3JhbS1jb250YWluZXJcIj5cbiAgPGRpdiAqbmdJZj1cInByb2Nlc3NEZWZpbml0aW9uS2V5XCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lci1zd2l0Y2gtaG9sZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTQgYmctbGlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+VmVyc2lvbjwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKCRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24gb2YgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvblwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvbiA9PT0gdmVyc2lvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgIDxsYWJlbD48c3Ryb25nPkhlYXRtYXAgdHlwZTwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0SGVhdG1hcE9wdGlvbigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVudW1IZWF0bWFwT3B0aW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uID09PSBoZWF0bWFwT3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+U2hvdyBoZWF0bWFwPC9zdHJvbmc+PC9sYWJlbFxuICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IHN3aXRjaC1idXR0b24gc3dpdGNoLWJ1dHRvbi1zbSBzd2l0Y2gtYnV0dG9uLXN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBpZD1cInRvZ2dsZUhlYXRtYXBcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzaG93SGVhdG1hcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93SGVhdG1hcCgpXCJcbiAgICAgICAgICAgIC8+PHNwYW4+IDxsYWJlbCBmb3I9XCJ0b2dnbGVIZWF0bWFwXCI+PC9sYWJlbD48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI3JlZiAod2luZG93OnJlc2l6ZSk9XCJvbldpbmRvd1Jlc2l6ZSgpXCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lclwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzSW5zdGFuY2VJZFwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48ZGl2IGNsYXNzPVwibGVnZW5kYSBoaWdobGlnaHQtb3ZlcmxheS1wYXN0XCI+PC9kaXY+XG4gICAgICBFeGVjdXRlZCB0YXNrczwvc3BhblxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cIm1sLTNcIlxuICAgICAgPjxkaXYgY2xhc3M9XCJsZWdlbmRhIGhpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnRcIj48L2Rpdj5cbiAgICAgIEN1cnJlbnQgdGFza3M8L3NwYW5cbiAgICA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzRGVmaW5pdGlvbktleVwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPk48L3NwYW4+Jm5ic3A7Jm5ic3A7QW1vdW50IG9mIGN1cnJlbnRseSBhY3RpdmVcbiAgICAgIGluc3RhbmNlcyBvZiB0aGlzIHRhc2suPC9zcGFuXG4gICAgPlxuICAgIDxzcGFuXG4gICAgICA+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwO1JlZC95ZWxsb3cvZ3JlZW4gb3JiczogVGhlIGFtb3VudCBvZiB0aW1lcyB0aGUgdGFzayBpcyBleGVjdXRlZCBpblxuICAgICAgY29tcGFyaXNvbiB0byB0aGUgb3RoZXIgdGFza3MuPC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -194,7 +194,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
194
194
  class ProcessDiagramComponent {
195
195
  constructor(processService) {
196
196
  this.processService = processService;
197
+ this._imported = false;
198
+ this._skipOverlayIds = [];
197
199
  this.importDone = new EventEmitter();
200
+ this.skipTimerEvent = new EventEmitter();
201
+ this.skippableTimers = [];
202
+ this.canSkipTimer = false;
203
+ this.skipTimerLabel = 'Skip timer';
198
204
  this.enumHeatmapOptions = ['count', 'duration'];
199
205
  }
200
206
  ngOnInit() {
@@ -217,6 +223,8 @@ class ProcessDiagramComponent {
217
223
  }
218
224
  });
219
225
  }
226
+ this._imported = true;
227
+ this.renderSkipTimerOverlays();
220
228
  canvas.zoom('fit-viewport', 'auto');
221
229
  if (this.processDefinitionVersions) {
222
230
  eventBus.on('canvas.init', () => {
@@ -237,13 +245,21 @@ class ProcessDiagramComponent {
237
245
  }
238
246
  });
239
247
  }
240
- ngOnChanges() {
241
- if (this.processDefinitionKey) {
248
+ ngOnChanges(changes) {
249
+ if (changes['processDefinitionKey'] && this.processDefinitionKey) {
242
250
  this.loadProcessDefinitionFromKey(this.processDefinitionKey);
243
251
  }
244
- else if (this.processInstanceId) {
252
+ else if (changes['processInstanceId'] && this.processInstanceId) {
253
+ this.loadProcessInstanceXml(this.processInstanceId);
254
+ }
255
+ else if (changes['reloadToken'] &&
256
+ !changes['reloadToken'].firstChange &&
257
+ this.processInstanceId) {
245
258
  this.loadProcessInstanceXml(this.processInstanceId);
246
259
  }
260
+ if (changes['skippableTimers'] || changes['canSkipTimer']) {
261
+ this.renderSkipTimerOverlays();
262
+ }
247
263
  }
248
264
  ngOnDestroy() {
249
265
  if (this.bpmnJS) {
@@ -274,12 +290,59 @@ class ProcessDiagramComponent {
274
290
  });
275
291
  }
276
292
  loadProcessInstanceXml(processInstanceId) {
293
+ this._imported = false;
277
294
  this.processService.getProcessXml(processInstanceId).subscribe(response => {
278
295
  this.processDiagram = response;
279
296
  this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
280
297
  this.bpmnJS.attachTo(this.el.nativeElement);
281
298
  });
282
299
  }
300
+ renderSkipTimerOverlays() {
301
+ if (!this.bpmnJS || !this._imported) {
302
+ return;
303
+ }
304
+ const overlays = this.bpmnJS.get('overlays');
305
+ this._skipOverlayIds.forEach(overlayId => {
306
+ try {
307
+ overlays.remove(overlayId);
308
+ }
309
+ catch {
310
+ // overlay already gone (e.g. after a diagram re-import); ignore
311
+ }
312
+ });
313
+ this._skipOverlayIds = [];
314
+ if (!this.canSkipTimer || !this.skippableTimers?.length) {
315
+ return;
316
+ }
317
+ this.skippableTimers.forEach(timer => {
318
+ if (!timer.activityId) {
319
+ return;
320
+ }
321
+ const button = document.createElement('button');
322
+ button.type = 'button';
323
+ button.className = 'valtimo-skip-timer-overlay';
324
+ button.title = this.skipTimerLabel;
325
+ button.setAttribute('aria-label', this.skipTimerLabel);
326
+ button.innerHTML =
327
+ '<svg width="16" height="16" viewBox="0 0 32 32" aria-hidden="true" focusable="false">' +
328
+ '<path fill="currentColor" d="M8 26V6l14 10L8 26z M24 6h2v20h-2z"/></svg>';
329
+ button.addEventListener('click', (event) => {
330
+ event.stopPropagation();
331
+ this.skipTimerEvent.emit(timer);
332
+ });
333
+ try {
334
+ const overlayId = overlays.add(timer.activityId, {
335
+ position: { top: -14, right: 14 },
336
+ show: { minZoom: 0, maxZoom: 5.0 },
337
+ html: button,
338
+ });
339
+ this._skipOverlayIds.push(overlayId);
340
+ }
341
+ catch {
342
+ // activity not present in the rendered diagram; nothing to attach to
343
+ }
344
+ });
345
+ }
283
346
  loadProcessDefinitionHeatmapCount(processDefinition) {
284
347
  this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {
285
348
  this.inputData = response;
@@ -413,20 +476,30 @@ class ProcessDiagramComponent {
413
476
  });
414
477
  }
415
478
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, deps: [{ token: ProcessService }], target: i0.ɵɵFactoryTarget.Component }); }
416
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId" }, outputs: { importDone: "importDone" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
479
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId", skippableTimers: "skippableTimers", canSkipTimer: "canSkipTimer", skipTimerLabel: "skipTimerLabel", reloadToken: "reloadToken" }, outputs: { importDone: "importDone", skipTimerEvent: "skipTimerEvent" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
417
480
  }
418
481
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, decorators: [{
419
482
  type: Component,
420
- args: [{ selector: 'valtimo-process-diagram', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
483
+ args: [{ selector: 'valtimo-process-diagram', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
421
484
  }], ctorParameters: () => [{ type: ProcessService }], propDecorators: { el: [{
422
485
  type: ViewChild,
423
486
  args: ['ref', { static: true }]
424
487
  }], importDone: [{
425
488
  type: Output
489
+ }], skipTimerEvent: [{
490
+ type: Output
426
491
  }], processDefinitionKey: [{
427
492
  type: Input
428
493
  }], processInstanceId: [{
429
494
  type: Input
495
+ }], skippableTimers: [{
496
+ type: Input
497
+ }], canSkipTimer: [{
498
+ type: Input
499
+ }], skipTimerLabel: [{
500
+ type: Input
501
+ }], reloadToken: [{
502
+ type: Input
430
503
  }] } });
431
504
 
432
505
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-process.mjs","sources":["../../../../projects/valtimo/process/src/lib/models/process.model.ts","../../../../projects/valtimo/process/src/lib/models/index.ts","../../../../projects/valtimo/process/src/lib/process.service.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.html","../../../../projects/valtimo/process/src/lib/process.module.ts","../../../../projects/valtimo/process/src/public_api.ts","../../../../projects/valtimo/process/src/valtimo-process.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProcessStart {\n key: string;\n businessKey: string;\n variables: Array<any>;\n}\n\nexport interface Process {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n startUser: string;\n processStarted: string;\n processEnded: string;\n active: boolean;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessDefinition {\n visibleInMenu: any;\n category: string;\n deploymentId: string;\n description: string;\n diagram: string;\n historyTimeToLive: string;\n id: string;\n key: string;\n name: string;\n resource: string;\n startableInTasklist: boolean;\n suspended: false;\n tenantId: string;\n version: number;\n versionTag: string;\n}\n\nexport interface ProcessDefinitionStartForm {\n formFields: Array<any>;\n formLocation: string;\n genericForm: boolean;\n}\n\nexport type StartProcessLinkType =\n | 'form'\n | 'form-flow'\n | 'form-view-model'\n | 'url'\n | 'ui-component';\n\nexport interface ProcessDefinitionStartProcessLink {\n processLinkId: string;\n type: StartProcessLinkType;\n properties: {\n formFlowInstanceId?: string;\n formDefinitionId?: string;\n prefilledForm?: any;\n formName?: string;\n formDefinition?: object;\n url?: string;\n componentKey?: string;\n };\n}\n\nexport interface ProcessInstance {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessInstanceVariable {\n id: string;\n type: string;\n name: string;\n textValue?: string;\n longValue?: number;\n local: boolean;\n}\n\nexport interface ProcessInstanceTask {\n id: string;\n name: string;\n assignee: string;\n created: string;\n createdUnix: number;\n due?: string;\n dueUnix?: number;\n followUp: string;\n delegationState: string;\n description: string;\n executionId: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n taskDefinitionKey: string;\n caseExecutionId: string;\n caseInstanceId: string;\n caseDefinitionId: string;\n suspended: boolean;\n formKey: string;\n tenantId: string;\n identityLinks: IdentityLink[];\n isLocked: boolean;\n}\n\nexport interface IdentityLink {\n userId: string;\n groupId: string;\n type: string;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './process.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {map, Observable} from 'rxjs';\nimport {\n ProcessDefinition,\n ProcessDefinitionStartForm,\n ProcessDefinitionStartProcessLink,\n ProcessInstance,\n ProcessInstanceTask,\n ProcessStart,\n} from './models';\nimport {ConfigService, Page} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessService {\n private valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n getProcessDefinitions(): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(`${this.valtimoEndpointUri}v1/process/definition`);\n }\n\n getProcessDefinitionVersions(key: string): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/versions`\n );\n }\n\n getProcessDefinition(key: string): Observable<ProcessDefinition> {\n return this.http.get<ProcessDefinition>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}`\n );\n }\n\n getProcessDefinitionStartFormData(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionStartForm> {\n return this.http.get<ProcessDefinitionStartForm>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionKey}/start-form`\n );\n }\n\n getProcessDefinitionStartProcessLink(\n processDefinitionId: string,\n documentId: string,\n documentDefinitionName: string\n ): Observable<ProcessDefinitionStartProcessLink> {\n const params = {};\n if (documentId != null) {\n params['documentId'] = documentId;\n }\n if (documentDefinitionName != null) {\n params['documentDefinitionName'] = documentDefinitionName;\n }\n\n return this.http.get<ProcessDefinitionStartProcessLink>(\n `${this.valtimoEndpointUri}v1/process-definition/${processDefinitionId}/start-form`,\n {\n params,\n }\n );\n }\n\n startProcesInstance(\n key: string,\n businessKey: string,\n variables: Map<string, any>\n ): Observable<any> {\n return this.http.post<ProcessStart>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/${businessKey}/start`,\n variables\n );\n }\n\n getProcessDefinitionXml(processDefinitionId: string): Observable<any> {\n return this.http.get(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionId}/xml`\n );\n }\n\n getProcessXml(id: string): Observable<any> {\n return this.http.get(`${this.valtimoEndpointUri}v1/process/${id}/xml`);\n }\n\n getProcessCount(id: string): Observable<any> {\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/${id}/count`, {\n key: id,\n processVariables: [{'@type': 'boolean', name: 'active', value: true}],\n });\n }\n\n getProcessHeatmapCount(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/count?version=${processDefinition.version}`\n );\n }\n\n getProcessHeatmapDuration(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`\n );\n }\n\n getProcessInstances(key: string, page: number, size: number, sort: string): Observable<any> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('sort', sort);\n\n return this.http.post<Page<ProcessInstance>>(\n `${this.valtimoEndpointUri}v2/process/${key}/search`,\n {},\n {params}\n );\n }\n\n getProcessInstance(processInstanceId: string): Observable<ProcessInstance> {\n return this.http.get<ProcessInstance>(\n `${this.valtimoEndpointUri}v1/process/${processInstanceId}`,\n {}\n );\n }\n\n getProcessInstanceTasks(id: string): Observable<ProcessInstanceTask[]> {\n return this.http\n .get<ProcessInstanceTask[]>(`${this.valtimoEndpointUri}v1/process/${id}/tasks`, {})\n .pipe(map(res => res || []));\n }\n\n getProcessInstanceVariables(id: string, variableNames: Array<any>): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process-instance/${id}/variables`,\n variableNames\n );\n }\n\n addProcessInstancesDefaultVariablesValues(processInstances: Array<any>) {\n processInstances.forEach(processInstance => this.addDefaultVariablesValues(processInstance));\n return processInstances;\n }\n\n addDefaultVariablesValues(processInstance: any) {\n if (!processInstance['startUser']) {\n processInstance.startUser = processInstance.startUserId;\n }\n if (!processInstance['processStarted']) {\n processInstance.processStarted = processInstance.startTime;\n }\n if (!processInstance['processEnded']) {\n processInstance.processEnded = processInstance.endTime;\n }\n if (!processInstance['active']) {\n processInstance.active = processInstance.endTime == null;\n }\n return processInstance;\n }\n\n getInstancesStatistics(fromDate?: string, toDate?: string, processFilter?: string) {\n const params = new HttpParams();\n params.set('fromDate', fromDate);\n params.set('toDate', toDate);\n params.set('processFilter', processFilter);\n return this.http.get<any[]>(`${this.valtimoEndpointUri}v1/reporting/instancesstatistics`, {\n params,\n });\n }\n\n deployProcess(processXml: string) {\n const formData = new FormData();\n formData.append('file', new File([processXml], 'process.bpmn'));\n formData.append('deployment-name', 'valtimoConsoleApp');\n formData.append('deployment-source', 'process application');\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/deployment`, formData);\n }\n\n migrateProcess(\n processDefinition1Id: string,\n processDefinition2Id: string,\n params: any\n ): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition1Id}/${processDefinition2Id}/migrate`,\n params\n );\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ProcessService} from '../process.service';\n\nimport BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-process-diagram',\n templateUrl: './process-diagram.component.html',\n styleUrls: ['./process-diagram.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProcessDiagramComponent implements OnInit, OnDestroy, OnChanges {\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n\n @ViewChild('ref', {static: true}) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Input() public processDefinitionKey?: string;\n @Input() public processInstanceId?: string;\n\n public processDiagram: any;\n public processDefinition: any;\n public processDefinitionVersions: any;\n public heatmapCount: any;\n public heatmapDuration: any;\n public tasksCount: any;\n public showHeatmap: boolean;\n public enumHeatmapOptions = ['count', 'duration'];\n public heatmapOption: string;\n public version: any;\n public heatPoints: any;\n public min: number;\n public max: number;\n public inputData: any;\n public valueKey: any;\n\n constructor(private processService: ProcessService) {}\n\n ngOnInit() {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas');\n const eventBus = this.bpmnJS.get('eventBus');\n if (this.processDiagram.historicActivityInstances) {\n this.processDiagram.historicActivityInstances.forEach(instance => {\n // exclude multiInstanceBody\n if (instance.activityType !== 'multiInstanceBody') {\n canvas.addMarker(\n instance.activityId,\n instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current'\n );\n }\n });\n }\n\n canvas.zoom('fit-viewport', 'auto');\n if (this.processDefinitionVersions) {\n eventBus.on('canvas.init', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n this.loadHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.loadHeatmapData();\n });\n }\n }\n });\n }\n\n ngOnChanges(): void {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n } else if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n }\n\n ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n public loadProcessDefinition(processDefinitionKey) {\n this.processService.getProcessDefinition(processDefinitionKey).subscribe(response => {\n this.heatmapOption = this.enumHeatmapOptions[0];\n this.version = response.version;\n this.loadProcessDefinitionXml(response.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey) {\n this.processService.getProcessDefinitionVersions(processDefinitionKey).subscribe(response => {\n this.processDefinitionVersions = response;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey) {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId) {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private loadProcessInstanceXml(processInstanceId) {\n this.processService.getProcessXml(processInstanceId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n public loadProcessDefinitionHeatmapCount(processDefinition) {\n this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'totalCount';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public onWindowResize() {\n const oldCanvas = this.el.nativeElement.querySelector('canvas[class=heatmap-canvas]');\n if (oldCanvas) {\n oldCanvas.remove();\n this.heatMapInstance = null;\n }\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n }\n\n public loadProcessDefinitionHeatmapDuration(processDefinition) {\n this.processService.getProcessHeatmapDuration(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'averageDurationInMilliseconds';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey) {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version) {\n this.version = +version;\n this.loadHeatmapData();\n }\n\n public setHeatmapOption(heatmapOption) {\n this.heatmapOption = heatmapOption;\n this.loadHeatmapData();\n }\n\n public toggleShowHeatmap() {\n this.showHeatmap = !this.showHeatmap;\n this.loadHeatmapData();\n }\n\n public loadHeatmap() {\n if (!this.heatMapInstance) {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: 0.7,\n maxOpacity: 0.4,\n minOpacity: 0,\n container: this.el.nativeElement,\n });\n }\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data,\n });\n }\n\n public clearHeatmap() {\n if (this.heatMapInstance) {\n this.heatMapInstance.setData({data: []});\n }\n }\n\n public loadHeatmapData() {\n this.processDefinition = this.processDefinitionVersions.find(\n definition => definition.version === this.version\n );\n\n if (this.heatmapOption === 'count') {\n this.loadProcessDefinitionHeatmapCount(this.processDefinition);\n }\n if (this.heatmapOption === 'duration') {\n this.loadProcessDefinitionHeatmapDuration(this.processDefinition);\n }\n }\n\n public setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(\n this.heatmapCount[key].totalCount + this.heatmapCount[key].count,\n this.max\n );\n }\n }\n\n public addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: 13,\n left: -12,\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0,\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n BpmnJsDiagramModule,\n CamundaFormModule,\n ListModule,\n TimelineModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ToastrModule} from 'ngx-toastr';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProcessDiagramComponent} from './process-diagram/process-diagram.component';\n\n@NgModule({\n declarations: [ProcessDiagramComponent],\n imports: [\n CommonModule,\n ListModule,\n WidgetModule,\n TimelineModule,\n BpmnJsDiagramModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n ],\n exports: [ProcessDiagramComponent],\n})\nexport class ProcessModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of process\n */\n\nexport * from './lib/models';\nexport * from './lib/process.service';\nexport * from './lib/process.module';\nexport * from './lib/process-diagram/process-diagram.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ProcessService","i2"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-process.mjs","sources":["../../../../projects/valtimo/process/src/lib/models/process.model.ts","../../../../projects/valtimo/process/src/lib/models/index.ts","../../../../projects/valtimo/process/src/lib/process.service.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.html","../../../../projects/valtimo/process/src/lib/process.module.ts","../../../../projects/valtimo/process/src/public_api.ts","../../../../projects/valtimo/process/src/valtimo-process.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProcessStart {\n key: string;\n businessKey: string;\n variables: Array<any>;\n}\n\nexport interface Process {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n startUser: string;\n processStarted: string;\n processEnded: string;\n active: boolean;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessDefinition {\n visibleInMenu: any;\n category: string;\n deploymentId: string;\n description: string;\n diagram: string;\n historyTimeToLive: string;\n id: string;\n key: string;\n name: string;\n resource: string;\n startableInTasklist: boolean;\n suspended: false;\n tenantId: string;\n version: number;\n versionTag: string;\n}\n\nexport interface ProcessDefinitionStartForm {\n formFields: Array<any>;\n formLocation: string;\n genericForm: boolean;\n}\n\nexport type StartProcessLinkType =\n | 'form'\n | 'form-flow'\n | 'form-view-model'\n | 'url'\n | 'ui-component';\n\nexport interface ProcessDefinitionStartProcessLink {\n processLinkId: string;\n type: StartProcessLinkType;\n properties: {\n formFlowInstanceId?: string;\n formDefinitionId?: string;\n prefilledForm?: any;\n formName?: string;\n formDefinition?: object;\n url?: string;\n componentKey?: string;\n };\n}\n\nexport interface ProcessInstance {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessInstanceVariable {\n id: string;\n type: string;\n name: string;\n textValue?: string;\n longValue?: number;\n local: boolean;\n}\n\nexport interface ProcessInstanceTask {\n id: string;\n name: string;\n assignee: string;\n created: string;\n createdUnix: number;\n due?: string;\n dueUnix?: number;\n followUp: string;\n delegationState: string;\n description: string;\n executionId: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n taskDefinitionKey: string;\n caseExecutionId: string;\n caseInstanceId: string;\n caseDefinitionId: string;\n suspended: boolean;\n formKey: string;\n tenantId: string;\n identityLinks: IdentityLink[];\n isLocked: boolean;\n}\n\nexport interface IdentityLink {\n userId: string;\n groupId: string;\n type: string;\n}\n\nexport interface SkippableTimer {\n jobId: string;\n activityId: string | null;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './process.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {map, Observable} from 'rxjs';\nimport {\n ProcessDefinition,\n ProcessDefinitionStartForm,\n ProcessDefinitionStartProcessLink,\n ProcessInstance,\n ProcessInstanceTask,\n ProcessStart,\n} from './models';\nimport {ConfigService, Page} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessService {\n private valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n getProcessDefinitions(): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(`${this.valtimoEndpointUri}v1/process/definition`);\n }\n\n getProcessDefinitionVersions(key: string): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/versions`\n );\n }\n\n getProcessDefinition(key: string): Observable<ProcessDefinition> {\n return this.http.get<ProcessDefinition>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}`\n );\n }\n\n getProcessDefinitionStartFormData(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionStartForm> {\n return this.http.get<ProcessDefinitionStartForm>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionKey}/start-form`\n );\n }\n\n getProcessDefinitionStartProcessLink(\n processDefinitionId: string,\n documentId: string,\n documentDefinitionName: string\n ): Observable<ProcessDefinitionStartProcessLink> {\n const params = {};\n if (documentId != null) {\n params['documentId'] = documentId;\n }\n if (documentDefinitionName != null) {\n params['documentDefinitionName'] = documentDefinitionName;\n }\n\n return this.http.get<ProcessDefinitionStartProcessLink>(\n `${this.valtimoEndpointUri}v1/process-definition/${processDefinitionId}/start-form`,\n {\n params,\n }\n );\n }\n\n startProcesInstance(\n key: string,\n businessKey: string,\n variables: Map<string, any>\n ): Observable<any> {\n return this.http.post<ProcessStart>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/${businessKey}/start`,\n variables\n );\n }\n\n getProcessDefinitionXml(processDefinitionId: string): Observable<any> {\n return this.http.get(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionId}/xml`\n );\n }\n\n getProcessXml(id: string): Observable<any> {\n return this.http.get(`${this.valtimoEndpointUri}v1/process/${id}/xml`);\n }\n\n getProcessCount(id: string): Observable<any> {\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/${id}/count`, {\n key: id,\n processVariables: [{'@type': 'boolean', name: 'active', value: true}],\n });\n }\n\n getProcessHeatmapCount(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/count?version=${processDefinition.version}`\n );\n }\n\n getProcessHeatmapDuration(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`\n );\n }\n\n getProcessInstances(key: string, page: number, size: number, sort: string): Observable<any> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('sort', sort);\n\n return this.http.post<Page<ProcessInstance>>(\n `${this.valtimoEndpointUri}v2/process/${key}/search`,\n {},\n {params}\n );\n }\n\n getProcessInstance(processInstanceId: string): Observable<ProcessInstance> {\n return this.http.get<ProcessInstance>(\n `${this.valtimoEndpointUri}v1/process/${processInstanceId}`,\n {}\n );\n }\n\n getProcessInstanceTasks(id: string): Observable<ProcessInstanceTask[]> {\n return this.http\n .get<ProcessInstanceTask[]>(`${this.valtimoEndpointUri}v1/process/${id}/tasks`, {})\n .pipe(map(res => res || []));\n }\n\n getProcessInstanceVariables(id: string, variableNames: Array<any>): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process-instance/${id}/variables`,\n variableNames\n );\n }\n\n addProcessInstancesDefaultVariablesValues(processInstances: Array<any>) {\n processInstances.forEach(processInstance => this.addDefaultVariablesValues(processInstance));\n return processInstances;\n }\n\n addDefaultVariablesValues(processInstance: any) {\n if (!processInstance['startUser']) {\n processInstance.startUser = processInstance.startUserId;\n }\n if (!processInstance['processStarted']) {\n processInstance.processStarted = processInstance.startTime;\n }\n if (!processInstance['processEnded']) {\n processInstance.processEnded = processInstance.endTime;\n }\n if (!processInstance['active']) {\n processInstance.active = processInstance.endTime == null;\n }\n return processInstance;\n }\n\n getInstancesStatistics(fromDate?: string, toDate?: string, processFilter?: string) {\n const params = new HttpParams();\n params.set('fromDate', fromDate);\n params.set('toDate', toDate);\n params.set('processFilter', processFilter);\n return this.http.get<any[]>(`${this.valtimoEndpointUri}v1/reporting/instancesstatistics`, {\n params,\n });\n }\n\n deployProcess(processXml: string) {\n const formData = new FormData();\n formData.append('file', new File([processXml], 'process.bpmn'));\n formData.append('deployment-name', 'valtimoConsoleApp');\n formData.append('deployment-source', 'process application');\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/deployment`, formData);\n }\n\n migrateProcess(\n processDefinition1Id: string,\n processDefinition2Id: string,\n params: any\n ): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition1Id}/${processDefinition2Id}/migrate`,\n params\n );\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ProcessService} from '../process.service';\nimport {SkippableTimer} from '../models';\n\nimport BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-process-diagram',\n templateUrl: './process-diagram.component.html',\n styleUrls: ['./process-diagram.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProcessDiagramComponent implements OnInit, OnDestroy, OnChanges {\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n private _imported = false;\n private _skipOverlayIds: string[] = [];\n\n @ViewChild('ref', {static: true}) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Output() public skipTimerEvent: EventEmitter<SkippableTimer> = new EventEmitter();\n @Input() public processDefinitionKey?: string;\n @Input() public processInstanceId?: string;\n @Input() public skippableTimers: SkippableTimer[] = [];\n @Input() public canSkipTimer = false;\n @Input() public skipTimerLabel = 'Skip timer';\n @Input() public reloadToken?: number;\n\n public processDiagram: any;\n public processDefinition: any;\n public processDefinitionVersions: any;\n public heatmapCount: any;\n public heatmapDuration: any;\n public tasksCount: any;\n public showHeatmap: boolean;\n public enumHeatmapOptions = ['count', 'duration'];\n public heatmapOption: string;\n public version: any;\n public heatPoints: any;\n public min: number;\n public max: number;\n public inputData: any;\n public valueKey: any;\n\n constructor(private processService: ProcessService) {}\n\n ngOnInit() {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas');\n const eventBus = this.bpmnJS.get('eventBus');\n if (this.processDiagram.historicActivityInstances) {\n this.processDiagram.historicActivityInstances.forEach(instance => {\n // exclude multiInstanceBody\n if (instance.activityType !== 'multiInstanceBody') {\n canvas.addMarker(\n instance.activityId,\n instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current'\n );\n }\n });\n }\n\n this._imported = true;\n this.renderSkipTimerOverlays();\n\n canvas.zoom('fit-viewport', 'auto');\n if (this.processDefinitionVersions) {\n eventBus.on('canvas.init', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n this.loadHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.loadHeatmapData();\n });\n }\n }\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['processDefinitionKey'] && this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n } else if (changes['processInstanceId'] && this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n } else if (\n changes['reloadToken'] &&\n !changes['reloadToken'].firstChange &&\n this.processInstanceId\n ) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n\n if (changes['skippableTimers'] || changes['canSkipTimer']) {\n this.renderSkipTimerOverlays();\n }\n }\n\n public ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n public loadProcessDefinition(processDefinitionKey) {\n this.processService.getProcessDefinition(processDefinitionKey).subscribe(response => {\n this.heatmapOption = this.enumHeatmapOptions[0];\n this.version = response.version;\n this.loadProcessDefinitionXml(response.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey) {\n this.processService.getProcessDefinitionVersions(processDefinitionKey).subscribe(response => {\n this.processDefinitionVersions = response;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey) {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId) {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private loadProcessInstanceXml(processInstanceId) {\n this._imported = false;\n this.processService.getProcessXml(processInstanceId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private renderSkipTimerOverlays(): void {\n if (!this.bpmnJS || !this._imported) {\n return;\n }\n\n const overlays = this.bpmnJS.get('overlays') as any;\n this._skipOverlayIds.forEach(overlayId => {\n try {\n overlays.remove(overlayId);\n } catch {\n // overlay already gone (e.g. after a diagram re-import); ignore\n }\n });\n this._skipOverlayIds = [];\n\n if (!this.canSkipTimer || !this.skippableTimers?.length) {\n return;\n }\n\n this.skippableTimers.forEach(timer => {\n if (!timer.activityId) {\n return;\n }\n\n const button = document.createElement('button');\n button.type = 'button';\n button.className = 'valtimo-skip-timer-overlay';\n button.title = this.skipTimerLabel;\n button.setAttribute('aria-label', this.skipTimerLabel);\n button.innerHTML =\n '<svg width=\"16\" height=\"16\" viewBox=\"0 0 32 32\" aria-hidden=\"true\" focusable=\"false\">' +\n '<path fill=\"currentColor\" d=\"M8 26V6l14 10L8 26z M24 6h2v20h-2z\"/></svg>';\n button.addEventListener('click', (event: MouseEvent) => {\n event.stopPropagation();\n this.skipTimerEvent.emit(timer);\n });\n\n try {\n const overlayId = overlays.add(timer.activityId, {\n position: {top: -14, right: 14},\n show: {minZoom: 0, maxZoom: 5.0},\n html: button,\n });\n this._skipOverlayIds.push(overlayId);\n } catch {\n // activity not present in the rendered diagram; nothing to attach to\n }\n });\n }\n\n public loadProcessDefinitionHeatmapCount(processDefinition) {\n this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'totalCount';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public onWindowResize() {\n const oldCanvas = this.el.nativeElement.querySelector('canvas[class=heatmap-canvas]');\n if (oldCanvas) {\n oldCanvas.remove();\n this.heatMapInstance = null;\n }\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n }\n\n public loadProcessDefinitionHeatmapDuration(processDefinition) {\n this.processService.getProcessHeatmapDuration(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'averageDurationInMilliseconds';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey) {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version) {\n this.version = +version;\n this.loadHeatmapData();\n }\n\n public setHeatmapOption(heatmapOption) {\n this.heatmapOption = heatmapOption;\n this.loadHeatmapData();\n }\n\n public toggleShowHeatmap() {\n this.showHeatmap = !this.showHeatmap;\n this.loadHeatmapData();\n }\n\n public loadHeatmap() {\n if (!this.heatMapInstance) {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: 0.7,\n maxOpacity: 0.4,\n minOpacity: 0,\n container: this.el.nativeElement,\n });\n }\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data,\n });\n }\n\n public clearHeatmap() {\n if (this.heatMapInstance) {\n this.heatMapInstance.setData({data: []});\n }\n }\n\n public loadHeatmapData() {\n this.processDefinition = this.processDefinitionVersions.find(\n definition => definition.version === this.version\n );\n\n if (this.heatmapOption === 'count') {\n this.loadProcessDefinitionHeatmapCount(this.processDefinition);\n }\n if (this.heatmapOption === 'duration') {\n this.loadProcessDefinitionHeatmapDuration(this.processDefinition);\n }\n }\n\n public setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(\n this.heatmapCount[key].totalCount + this.heatmapCount[key].count,\n this.max\n );\n }\n }\n\n public addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: 13,\n left: -12,\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0,\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n BpmnJsDiagramModule,\n CamundaFormModule,\n ListModule,\n TimelineModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ToastrModule} from 'ngx-toastr';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProcessDiagramComponent} from './process-diagram/process-diagram.component';\n\n@NgModule({\n declarations: [ProcessDiagramComponent],\n imports: [\n CommonModule,\n ListModule,\n WidgetModule,\n TimelineModule,\n BpmnJsDiagramModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n ],\n exports: [ProcessDiagramComponent],\n})\nexport class ProcessModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of process\n */\n\nexport * from './lib/models';\nexport * from './lib/process.service';\nexport * from './lib/process.module';\nexport * from './lib/process-diagram/process-diagram.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ProcessService","i2"],"mappings":"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"}
@@ -105,4 +105,8 @@ export interface IdentityLink {
105
105
  groupId: string;
106
106
  type: string;
107
107
  }
108
+ export interface SkippableTimer {
109
+ jobId: string;
110
+ activityId: string | null;
111
+ }
108
112
  //# sourceMappingURL=process.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.model.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/process/src/lib/models/process.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.model.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/process/src/lib/models/process.model.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,22 @@
1
- import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { ProcessService } from '../process.service';
3
+ import { SkippableTimer } from '../models';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class ProcessDiagramComponent implements OnInit, OnDestroy, OnChanges {
5
6
  private processService;
6
7
  private bpmnJS;
7
8
  private heatMapInstance;
9
+ private _imported;
10
+ private _skipOverlayIds;
8
11
  el: ElementRef;
9
12
  importDone: EventEmitter<any>;
13
+ skipTimerEvent: EventEmitter<SkippableTimer>;
10
14
  processDefinitionKey?: string;
11
15
  processInstanceId?: string;
16
+ skippableTimers: SkippableTimer[];
17
+ canSkipTimer: boolean;
18
+ skipTimerLabel: string;
19
+ reloadToken?: number;
12
20
  processDiagram: any;
13
21
  processDefinition: any;
14
22
  processDefinitionVersions: any;
@@ -26,13 +34,14 @@ export declare class ProcessDiagramComponent implements OnInit, OnDestroy, OnCha
26
34
  valueKey: any;
27
35
  constructor(processService: ProcessService);
28
36
  ngOnInit(): void;
29
- ngOnChanges(): void;
37
+ ngOnChanges(changes: SimpleChanges): void;
30
38
  ngOnDestroy(): void;
31
39
  loadProcessDefinition(processDefinitionKey: any): void;
32
40
  loadProcessDefinitionVersions(processDefinitionKey: any): void;
33
41
  loadProcessDefinitionFromKey(processDefinitionKey: any): void;
34
42
  loadProcessDefinitionXml(processDefinitionId: any): void;
35
43
  private loadProcessInstanceXml;
44
+ private renderSkipTimerOverlays;
36
45
  loadProcessDefinitionHeatmapCount(processDefinition: any): void;
37
46
  onWindowResize(): void;
38
47
  loadProcessDefinitionHeatmapDuration(processDefinition: any): void;
@@ -46,6 +55,6 @@ export declare class ProcessDiagramComponent implements OnInit, OnDestroy, OnCha
46
55
  setMax(key: any): void;
47
56
  addCounterActiveOverlays(key: any, inputData: any): void;
48
57
  static ɵfac: i0.ɵɵFactoryDeclaration<ProcessDiagramComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<ProcessDiagramComponent, "valtimo-process-diagram", never, { "processDefinitionKey": { "alias": "processDefinitionKey"; "required": false; }; "processInstanceId": { "alias": "processInstanceId"; "required": false; }; }, { "importDone": "importDone"; }, never, never, false, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProcessDiagramComponent, "valtimo-process-diagram", never, { "processDefinitionKey": { "alias": "processDefinitionKey"; "required": false; }; "processInstanceId": { "alias": "processInstanceId"; "required": false; }; "skippableTimers": { "alias": "skippableTimers"; "required": false; }; "canSkipTimer": { "alias": "canSkipTimer"; "required": false; }; "skipTimerLabel": { "alias": "skipTimerLabel"; "required": false; }; "reloadToken": { "alias": "reloadToken"; "required": false; }; }, { "importDone": "importDone"; "skipTimerEvent": "skipTimerEvent"; }, never, never, false, never>;
50
59
  }
51
60
  //# sourceMappingURL=process-diagram.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-diagram.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAIP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;;AAKlD,qBAMa,uBAAwB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAyB9D,OAAO,CAAC,cAAc;IAxBlC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAM;IAEY,EAAE,EAAE,UAAU,CAAC;IACvC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAsB;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC,cAAc,EAAE,GAAG,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,yBAAyB,EAAE,GAAG,CAAC;IAC/B,YAAY,EAAE,GAAG,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,WAAyB;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;gBAED,cAAc,EAAE,cAAc;IAElD,QAAQ;IA6CR,WAAW,IAAI,IAAI;IAQnB,WAAW;IAMJ,qBAAqB,CAAC,oBAAoB,KAAA;IAQ1C,6BAA6B,CAAC,oBAAoB,KAAA;IAMlD,4BAA4B,CAAC,oBAAoB,KAAA;IAKjD,wBAAwB,CAAC,mBAAmB,KAAA;IAQnD,OAAO,CAAC,sBAAsB;IAQvB,iCAAiC,CAAC,iBAAiB,KAAA;IA6BnD,cAAc;IAWd,oCAAoC,CAAC,iBAAiB,KAAA;IA6BtD,uBAAuB,CAAC,oBAAoB,KAAA;IAK5C,2BAA2B,CAAC,OAAO,KAAA;IAKnC,gBAAgB,CAAC,aAAa,KAAA;IAK9B,iBAAiB;IAKjB,WAAW;IAiBX,YAAY;IAMZ,eAAe;IAaf,MAAM,CAAC,GAAG,EAAE,GAAG;IAWf,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;yCAjQ7C,uBAAuB;2CAAvB,uBAAuB;CA+QnC"}
1
+ {"version":3,"file":"process-diagram.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAGd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;;AAKzC,qBAMa,uBAAwB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAgC9D,OAAO,CAAC,cAAc;IA/BlC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAgB;IAEE,EAAE,EAAE,UAAU,CAAC;IACvC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAsB;IACnD,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,CAAsB;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,cAAc,EAAE,CAAM;IACvC,YAAY,UAAS;IACrB,cAAc,SAAgB;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,cAAc,EAAE,GAAG,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,yBAAyB,EAAE,GAAG,CAAC;IAC/B,YAAY,EAAE,GAAG,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,WAAyB;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;gBAED,cAAc,EAAE,cAAc;IAElD,QAAQ;IAgDD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAkBzC,WAAW;IAMX,qBAAqB,CAAC,oBAAoB,KAAA;IAQ1C,6BAA6B,CAAC,oBAAoB,KAAA;IAMlD,4BAA4B,CAAC,oBAAoB,KAAA;IAKjD,wBAAwB,CAAC,mBAAmB,KAAA;IAQnD,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,uBAAuB;IAkDxB,iCAAiC,CAAC,iBAAiB,KAAA;IA6BnD,cAAc;IAWd,oCAAoC,CAAC,iBAAiB,KAAA;IA6BtD,uBAAuB,CAAC,oBAAoB,KAAA;IAK5C,2BAA2B,CAAC,OAAO,KAAA;IAKnC,gBAAgB,CAAC,aAAa,KAAA;IAK9B,iBAAiB;IAKjB,WAAW;IAiBX,YAAY;IAMZ,eAAe;IAaf,MAAM,CAAC,GAAG,EAAE,GAAG;IAWf,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;yCAxU7C,uBAAuB;2CAAvB,uBAAuB;CAsVnC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@valtimo/process",
3
3
  "license": "EUPL-1.2",
4
- "version": "12.40.0",
4
+ "version": "12.42.0",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "17.3.12",
7
7
  "@angular/core": "17.3.12"