@acorex/components 20.1.15 → 20.1.17

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.
Files changed (203) hide show
  1. package/data-table/index.d.ts +16 -2
  2. package/fesm2022/acorex-components-accordion.mjs +10 -10
  3. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  4. package/fesm2022/acorex-components-action-sheet.mjs +10 -10
  5. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  6. package/fesm2022/acorex-components-alert.mjs +7 -7
  7. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  8. package/fesm2022/acorex-components-audio-wave.mjs +7 -7
  9. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  10. package/fesm2022/acorex-components-autocomplete.mjs +7 -7
  11. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  12. package/fesm2022/acorex-components-avatar.mjs +10 -10
  13. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  14. package/fesm2022/acorex-components-badge.mjs +7 -7
  15. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  16. package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
  17. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  18. package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
  19. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  20. package/fesm2022/acorex-components-button-group.mjs +10 -10
  21. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  22. package/fesm2022/acorex-components-button.mjs +23 -20
  23. package/fesm2022/acorex-components-button.mjs.map +1 -1
  24. package/fesm2022/acorex-components-calendar.mjs +15 -16
  25. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  26. package/fesm2022/acorex-components-check-box.mjs +7 -7
  27. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  28. package/fesm2022/acorex-components-chips.mjs +7 -7
  29. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  30. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  31. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  32. package/fesm2022/acorex-components-collapse.mjs +10 -10
  33. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  34. package/fesm2022/acorex-components-color-box.mjs +7 -7
  35. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  36. package/fesm2022/acorex-components-color-palette.mjs +28 -28
  37. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  38. package/fesm2022/acorex-components-comment.mjs +28 -28
  39. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  40. package/fesm2022/acorex-components-conversation.mjs +49 -49
  41. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  42. package/fesm2022/acorex-components-cron-job.mjs +46 -46
  43. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  44. package/fesm2022/acorex-components-data-pager.mjs +66 -74
  45. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  46. package/fesm2022/acorex-components-data-table.mjs +65 -48
  47. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  48. package/fesm2022/acorex-components-datetime-box.mjs +7 -7
  49. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  50. package/fesm2022/acorex-components-datetime-input.mjs +7 -7
  51. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  52. package/fesm2022/acorex-components-datetime-picker.mjs +7 -7
  53. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  54. package/fesm2022/acorex-components-decorators.mjs +25 -25
  55. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  56. package/fesm2022/acorex-components-dialog.mjs +10 -10
  57. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  58. package/fesm2022/acorex-components-drawer-2.mjs +10 -10
  59. package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
  60. package/fesm2022/acorex-components-drawer.mjs +13 -13
  61. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  62. package/fesm2022/acorex-components-dropdown-button.mjs +7 -7
  63. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  64. package/fesm2022/acorex-components-dropdown.mjs +16 -16
  65. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  66. package/fesm2022/acorex-components-file-explorer.mjs +25 -25
  67. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  68. package/fesm2022/acorex-components-flow-chart.mjs +16 -16
  69. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  70. package/fesm2022/acorex-components-form.mjs +16 -16
  71. package/fesm2022/acorex-components-form.mjs.map +1 -1
  72. package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
  73. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  74. package/fesm2022/acorex-components-image-editor.mjs +34 -34
  75. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  76. package/fesm2022/acorex-components-image.mjs +7 -7
  77. package/fesm2022/acorex-components-image.mjs.map +1 -1
  78. package/fesm2022/acorex-components-json-viewer.mjs +7 -7
  79. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  80. package/fesm2022/acorex-components-kanban.mjs +3 -3
  81. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  82. package/fesm2022/acorex-components-kbd.mjs +10 -10
  83. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  84. package/fesm2022/acorex-components-label.mjs +7 -7
  85. package/fesm2022/acorex-components-label.mjs.map +1 -1
  86. package/fesm2022/acorex-components-list.mjs +7 -7
  87. package/fesm2022/acorex-components-list.mjs.map +1 -1
  88. package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
  89. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  90. package/fesm2022/acorex-components-loading.mjs +16 -16
  91. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  92. package/fesm2022/acorex-components-map.mjs +13 -13
  93. package/fesm2022/acorex-components-map.mjs.map +1 -1
  94. package/fesm2022/acorex-components-media-viewer.mjs +34 -34
  95. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  96. package/fesm2022/acorex-components-menu.mjs +84 -54
  97. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  98. package/fesm2022/{acorex-components-modal-acorex-components-modal-BSSuFZvQ.mjs → acorex-components-modal-acorex-components-modal-C4zx7OP6.mjs} +21 -21
  99. package/fesm2022/{acorex-components-modal-acorex-components-modal-BSSuFZvQ.mjs.map → acorex-components-modal-acorex-components-modal-C4zx7OP6.mjs.map} +1 -1
  100. package/fesm2022/{acorex-components-modal-modal-content.component-V7QnN7MC.mjs → acorex-components-modal-modal-content.component-DfhgA_WL.mjs} +5 -5
  101. package/fesm2022/{acorex-components-modal-modal-content.component-V7QnN7MC.mjs.map → acorex-components-modal-modal-content.component-DfhgA_WL.mjs.map} +1 -1
  102. package/fesm2022/acorex-components-modal.mjs +1 -1
  103. package/fesm2022/acorex-components-navbar.mjs +7 -7
  104. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  105. package/fesm2022/acorex-components-notification.mjs +10 -10
  106. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  107. package/fesm2022/acorex-components-number-box-2.mjs +5 -5
  108. package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
  109. package/fesm2022/acorex-components-number-box.mjs +7 -7
  110. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  111. package/fesm2022/acorex-components-otp.mjs +7 -7
  112. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  113. package/fesm2022/acorex-components-page.mjs +10 -10
  114. package/fesm2022/acorex-components-page.mjs.map +1 -1
  115. package/fesm2022/acorex-components-paint.mjs +25 -25
  116. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  117. package/fesm2022/acorex-components-password-box.mjs +10 -10
  118. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  119. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  120. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  121. package/fesm2022/acorex-components-phone-box.mjs +7 -7
  122. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  123. package/fesm2022/acorex-components-picker.mjs +13 -13
  124. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  125. package/fesm2022/acorex-components-popover.mjs +7 -7
  126. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  127. package/fesm2022/acorex-components-popup.mjs +10 -10
  128. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  129. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  130. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  131. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  132. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  133. package/fesm2022/acorex-components-query-builder.mjs +7 -7
  134. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  135. package/fesm2022/acorex-components-radio.mjs +7 -7
  136. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  137. package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
  138. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  139. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  140. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  141. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  142. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  143. package/fesm2022/acorex-components-rest-api-generator.mjs +22 -22
  144. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  145. package/fesm2022/acorex-components-result.mjs +7 -7
  146. package/fesm2022/acorex-components-result.mjs.map +1 -1
  147. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  148. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  149. package/fesm2022/acorex-components-scheduler.mjs +31 -31
  150. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  151. package/fesm2022/acorex-components-scss.mjs +4 -4
  152. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  153. package/fesm2022/acorex-components-search-box.mjs +7 -7
  154. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  155. package/fesm2022/acorex-components-select-box.mjs +22 -31
  156. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  157. package/fesm2022/acorex-components-selection-list-2.mjs +7 -7
  158. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  159. package/fesm2022/acorex-components-selection-list.mjs +7 -7
  160. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  161. package/fesm2022/acorex-components-side-menu.mjs +13 -13
  162. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  163. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  164. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  165. package/fesm2022/acorex-components-slider.mjs +7 -7
  166. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  167. package/fesm2022/acorex-components-sliding-item.mjs +13 -13
  168. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  169. package/fesm2022/acorex-components-step-wizard.mjs +13 -13
  170. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  171. package/fesm2022/acorex-components-switch.mjs +10 -10
  172. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  173. package/fesm2022/acorex-components-tabs.mjs +13 -13
  174. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  175. package/fesm2022/acorex-components-tag-box.mjs +7 -7
  176. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  177. package/fesm2022/acorex-components-tag.mjs +7 -7
  178. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  179. package/fesm2022/acorex-components-text-area.mjs +7 -7
  180. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  181. package/fesm2022/acorex-components-text-box.mjs +10 -10
  182. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  183. package/fesm2022/acorex-components-time-duration.mjs +7 -7
  184. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  185. package/fesm2022/acorex-components-time-line.mjs +10 -10
  186. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  187. package/fesm2022/acorex-components-toast.mjs +10 -10
  188. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  189. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  190. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  191. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  192. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  193. package/fesm2022/acorex-components-tree-view.mjs +10 -10
  194. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  195. package/fesm2022/acorex-components-uploader.mjs +22 -22
  196. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  197. package/fesm2022/acorex-components-video-player.mjs +7 -7
  198. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  199. package/fesm2022/acorex-components-wysiwyg.mjs +31 -31
  200. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  201. package/menu/index.d.ts +1 -1
  202. package/package.json +1 -1
  203. package/select-box/index.d.ts +3 -4
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-flow-chart.mjs","sources":["../tmp-esm2022/flow-chart/lib/flow-chart.service.js","../tmp-esm2022/flow-chart/lib/flow-chart-creator/flow-chart-creator.component.js","../tmp-esm2022/flow-chart/lib/flow-chart-renderer/flow-chart-renderer.component.js","../tmp-esm2022/flow-chart/lib/flow-chart.component.js","../tmp-esm2022/flow-chart/lib/flow-chart.module.js","../tmp-esm2022/flow-chart/acorex-components-flow-chart.js"],"sourcesContent":["import { effect, inject, Injectable, NgZone, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXFlowChartService {\n constructor() {\n this.zone = inject(NgZone);\n this.initialFlowChartEdge = signal([], ...(ngDevMode ? [{ debugName: \"initialFlowChartEdge\" }] : []));\n this.initialFlowChartNode = signal([], ...(ngDevMode ? [{ debugName: \"initialFlowChartNode\" }] : []));\n this.selectedNode = signal(null, ...(ngDevMode ? [{ debugName: \"selectedNode\" }] : []));\n this.selectedEdge = signal(null, ...(ngDevMode ? [{ debugName: \"selectedEdge\" }] : []));\n this.svgService = signal(null, ...(ngDevMode ? [{ debugName: \"svgService\" }] : []));\n this.canvasService = signal(null, ...(ngDevMode ? [{ debugName: \"canvasService\" }] : []));\n this.lineClick = new Subject();\n this.lineDbClick = new Subject();\n this.nodeClick = new Subject();\n this.nodeDbClick = new Subject();\n this.onEdgeUpdate = new Subject();\n this.onNodeUpdate = new Subject();\n this.nodesMap = new Map();\n this.eventListeners = new Map();\n this.anchorClickBuffer = null;\n this.currentConnection = null;\n this.draggingConnection = false;\n this.tempLine = null;\n this.#eff2 = effect(() => {\n if (this.initialFlowChartEdge()) {\n setTimeout(() => {\n this.drawEdges(this.initialFlowChartEdge());\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#eff2\" }] : []));\n this.#eff3 = effect(() => {\n if (this.initialFlowChartNode()) {\n this.createNode(this.initialFlowChartNode());\n }\n }, ...(ngDevMode ? [{ debugName: \"#eff3\" }] : []));\n }\n #eff2;\n #eff3;\n addEventListener(element, event, handler) {\n const elementId = element.dataset['id'] || 'global';\n if (!this.eventListeners.has(elementId)) {\n this.eventListeners.set(elementId, new Map());\n }\n const elementListeners = this.eventListeners.get(elementId);\n if (elementListeners) {\n const boundHandler = handler.bind(this);\n elementListeners.set(event, boundHandler);\n element.addEventListener(event, boundHandler);\n }\n }\n removeEventListeners(elementId) {\n const elementListeners = this.eventListeners.get(elementId);\n if (elementListeners) {\n elementListeners.forEach((handler, event) => {\n const element = this.nodesMap.get(elementId);\n if (element) {\n element.removeEventListener(event, handler);\n }\n });\n this.eventListeners.delete(elementId);\n }\n }\n setupNodeEventListeners(el, node) {\n this.addEventListener(el, 'click', (e) => {\n this.nodeClick.next({ target: el, event: e });\n this.selectedNode.set(node);\n el.classList.add('selected');\n this.nodesMap.forEach((existingNode) => {\n if (existingNode !== el) {\n existingNode.classList.remove('selected');\n }\n });\n });\n this.addEventListener(el, 'dblclick', (e) => {\n this.nodeDbClick.next({ target: el, event: e });\n });\n this.addEventListener(el, 'mouseenter', () => {\n el.classList.add('hover');\n });\n this.addEventListener(el, 'mouseleave', () => {\n el.classList.remove('hover');\n });\n }\n setupAnchorEventListeners(dot, el) {\n // start drag to connect\n this.addEventListener(dot, 'mousedown', (e) => {\n const mouseEvent = e;\n mouseEvent.stopPropagation();\n mouseEvent.preventDefault();\n const pos = this.getAnchorPoint(el, dot.dataset['anchor']);\n this.currentConnection = {\n source: {\n id: dot.dataset['nodeId'],\n anchor: dot.dataset['anchor'],\n },\n mouse: { x: mouseEvent.clientX, y: mouseEvent.clientY },\n };\n this.startTempLine(pos.x, pos.y);\n this.draggingConnection = true;\n });\n this.addEventListener(dot, 'click', (e) => {\n e.stopPropagation();\n if (dot.classList.contains('selected')) {\n dot.classList.remove('selected');\n }\n else {\n dot.classList.add('selected');\n }\n const clicked = {\n nodeId: dot.dataset['nodeId'],\n anchor: dot.dataset['anchor'],\n };\n console.log(clicked);\n if (!this.anchorClickBuffer) {\n this.anchorClickBuffer = clicked;\n }\n else {\n const source = this.anchorClickBuffer;\n const target = clicked;\n if (source.nodeId !== target.nodeId) {\n this.pushAndCreateEdgeData({ id: source.nodeId, anchor: source.anchor }, { id: target.nodeId, anchor: target.anchor });\n }\n this.anchorClickBuffer = null;\n }\n });\n this.addEventListener(dot, 'mouseenter', () => {\n dot.classList.add('hover');\n });\n this.addEventListener(dot, 'mouseleave', () => {\n dot.classList.remove('hover');\n });\n }\n addAnchors(el, type) {\n ['top', 'bottom', 'left', 'right'].forEach((anchor) => {\n const dot = document.createElement('div');\n dot.className = 'ax-flow-chart-anchor';\n dot.dataset['anchor'] = anchor;\n dot.dataset['nodeId'] = el.dataset['id'];\n this.positionAnchor(dot, anchor, type);\n el.appendChild(dot);\n this.setupAnchorEventListeners(dot, el);\n });\n }\n makeDraggable(el) {\n let offsetX = 0, offsetY = 0, isDragging = false;\n this.addEventListener(el, 'mousedown', (e) => {\n const mouseEvent = e;\n if (mouseEvent.target.classList.contains('ax-flow-chart-anchor'))\n return;\n isDragging = true;\n offsetX = mouseEvent.clientX - el.offsetLeft;\n offsetY = mouseEvent.clientY - el.offsetTop;\n mouseEvent.preventDefault();\n });\n const mousemoveHandler = (e) => {\n if (isDragging) {\n el.style.left = e.clientX - offsetX + 'px';\n el.style.top = e.clientY - offsetY + 'px';\n this.drawEdges(this.initialFlowChartEdge());\n this.initialFlowChartNode.update((value) => {\n const node = value.find((node) => node.id === el.dataset['id']);\n if (node) {\n node.x = e.clientX - offsetX;\n node.y = e.clientY - offsetY;\n }\n return value;\n });\n }\n const elementId = e.target.id;\n if (elementId === 'ax-flow-chart-renderer-connections' || elementId === 'ax-flow-chart-renderer-canvas') {\n if (this.draggingConnection && this.tempLine) {\n this.tempLine.setAttribute('x2', e.offsetX.toString());\n this.tempLine.setAttribute('y2', e.offsetY.toString());\n }\n }\n };\n const mouseupHandler = (e) => {\n isDragging = false;\n if (this.draggingConnection) {\n const target = e.target.closest('.ax-flow-chart-anchor');\n if (target && target.dataset['nodeId'] !== this.currentConnection?.source?.id) {\n this.currentConnection = {\n ...this.currentConnection,\n target: {\n id: target.dataset['nodeId'],\n anchor: target.dataset['anchor'],\n },\n };\n this.finishConnection();\n }\n this.clearTempLine();\n this.draggingConnection = false;\n }\n };\n // Add global event listeners\n this.zone.runOutsideAngular(() => {\n document.addEventListener('mousemove', mousemoveHandler);\n document.addEventListener('mouseup', mouseupHandler);\n });\n // Store global listeners\n const globalListeners = this.eventListeners.get('global');\n if (globalListeners) {\n globalListeners.set('mousemove', mousemoveHandler);\n globalListeners.set('mouseup', mouseupHandler);\n }\n }\n positionAnchor(dot, anchor, type) {\n if (type !== 'diamond') {\n switch (anchor) {\n case 'top':\n dot.style.top = '0%';\n dot.style.left = '50%';\n break;\n case 'bottom':\n dot.style.top = '100%';\n dot.style.left = '50%';\n break;\n case 'left':\n dot.style.top = '50%';\n dot.style.left = '0%';\n break;\n case 'right':\n dot.style.top = '50%';\n dot.style.left = '100%';\n break;\n }\n }\n else {\n switch (anchor) {\n case 'top':\n dot.style.top = '0%';\n dot.style.left = '0%';\n break;\n case 'bottom':\n dot.style.top = '100%';\n dot.style.left = '100%';\n break;\n case 'left':\n dot.style.top = '100%';\n dot.style.left = '0%';\n break;\n case 'right':\n dot.style.top = '0%';\n dot.style.left = '100%';\n break;\n }\n }\n }\n getAnchorPoint(el, anchor) {\n const rect = el.getBoundingClientRect();\n const centerX = el.offsetLeft + rect.width / 2;\n const centerY = el.offsetTop + rect.height / 2;\n switch (anchor) {\n case 'top':\n return { x: centerX, y: el.offsetTop };\n case 'bottom':\n return { x: centerX, y: el.offsetTop + rect.height };\n case 'left':\n return { x: el.offsetLeft, y: centerY };\n case 'right':\n return { x: el.offsetLeft + rect.width, y: centerY };\n default:\n return { x: centerX, y: centerY };\n }\n }\n startTempLine(x, y) {\n const svgElement = this.svgService()?.nativeElement;\n if (!svgElement)\n return;\n this.tempLine = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n this.tempLine.setAttribute('x1', x.toString());\n this.tempLine.setAttribute('y1', y.toString());\n this.tempLine.setAttribute('x2', x.toString());\n this.tempLine.setAttribute('y2', y.toString());\n this.tempLine.setAttribute('stroke', 'rgba(var(--ax-sys-color-on-lightest-surface),0.5)');\n this.tempLine.setAttribute('stroke-width', '2');\n this.tempLine.setAttribute('stroke-dasharray', '4');\n svgElement.appendChild(this.tempLine);\n }\n clearTempLine() {\n if (this.tempLine && this.tempLine.parentElement) {\n this.svgService()?.nativeElement.removeChild(this.tempLine);\n this.tempLine = null;\n }\n }\n pushAndCreateEdgeData(source, target) {\n const newEdge = {\n id: `edge-${Math.random().toString()}`,\n source,\n target,\n };\n this.onEdgeUpdate.next(newEdge);\n this.initialFlowChartEdge.update((value) => [...value, newEdge]);\n this.drawEdges();\n }\n drawEdges(edges) {\n const svg = this.svgService()?.nativeElement;\n if (!svg)\n return;\n // Clear existing edges\n svg.innerHTML = '';\n // Use provided edges or get from signal\n const edgesToDraw = edges || this.initialFlowChartEdge();\n edgesToDraw.forEach((edge) => {\n const sourceNode = this.nodesMap.get(edge.source.id);\n const targetNode = this.nodesMap.get(edge.target.id);\n if (sourceNode) {\n const sourceAnchor = sourceNode.querySelector(`[data-anchor=\"${edge.source.anchor}\"]`);\n if (sourceAnchor)\n sourceAnchor.classList.add('selected');\n }\n if (targetNode) {\n const targetAnchor = targetNode.querySelector(`[data-anchor=\"${edge.target.anchor}\"]`);\n if (targetAnchor)\n targetAnchor.classList.add('selected');\n }\n if (sourceNode && targetNode) {\n const sourcePoint = this.getAnchorPoint(sourceNode, edge.source.anchor);\n const targetPoint = this.getAnchorPoint(targetNode, edge.target.anchor);\n const line = this.createLine(sourcePoint, targetPoint, edge);\n line.classList.add('ax-flow-chart-line');\n // Add click event listener for line selection\n this.addEventListener(line, 'click', (e) => {\n e.stopPropagation();\n this.lineClick.next({ target: edge, event: e });\n this.selectedEdge.set(edge);\n this.selectedNode.set(null);\n // Remove selection from all other lines\n document.querySelectorAll('.ax-flow-chart-line').forEach((l) => {\n if (l !== line)\n l.classList.remove('selected');\n });\n // Add selection to clicked line\n line.classList.add('selected');\n // Remove selection from all nodes\n this.nodesMap.forEach((node) => node.classList.remove('selected'));\n });\n svg.appendChild(line);\n }\n });\n }\n createLine(from, to, edge) {\n const line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('x1', from.x.toString());\n line.setAttribute('y1', from.y.toString());\n line.setAttribute('x2', to.x.toString());\n line.setAttribute('y2', to.y.toString());\n line.setAttribute('stroke', 'rgba(var(--ax-sys-color-on-surface))');\n line.setAttribute('stroke-width', '3');\n line.classList.add('ax-flow-chart-line');\n line.addEventListener('click', (e) => {\n this.lineClick.next({ target: edge, event: e });\n this.selectedEdge.set(edge);\n });\n line.addEventListener('dblclick', (e) => {\n this.lineDbClick.next({ target: edge, event: e });\n });\n return line;\n }\n finishConnection() {\n if (this.currentConnection?.source && this.currentConnection?.target) {\n this.pushAndCreateEdgeData(this.currentConnection.source, this.currentConnection.target);\n }\n this.currentConnection = null;\n }\n removeEdge(edge) {\n this.initialFlowChartEdge.update((value) => value.filter((e) => e.id !== edge.id));\n // Remove selected class from connected anchors\n const sourceNode = this.nodesMap.get(edge.source.id);\n const targetNode = this.nodesMap.get(edge.target.id);\n if (sourceNode) {\n const sourceAnchor = sourceNode.querySelector(`[data-anchor=\"${edge.source.anchor}\"]`);\n if (sourceAnchor)\n sourceAnchor.classList.remove('selected');\n }\n if (targetNode) {\n const targetAnchor = targetNode.querySelector(`[data-anchor=\"${edge.target.anchor}\"]`);\n if (targetAnchor)\n targetAnchor.classList.remove('selected');\n }\n }\n createNode(nodes) {\n document.querySelectorAll('.ax-flow-chart-node')?.forEach((node) => node.remove());\n nodes.forEach((node) => {\n const el = document.createElement('div');\n const p = document.createElement('p');\n p.innerText = node.label;\n el.appendChild(p);\n el.className = 'ax-flow-chart-node';\n el.classList.add(`ax-${node.type}`);\n el.style.left = node.x + 'px';\n el.style.top = node.y + 'px';\n el.dataset['id'] = node.id;\n this.addAnchors(el, node.type);\n this.makeDraggable(el);\n this.setupNodeEventListeners(el, node);\n this.canvasService().nativeElement.appendChild(el);\n this.nodesMap.set(node.id, el);\n });\n }\n removeNode(nodeId) {\n this.initialFlowChartNode.update((value) => value.filter((e) => e.id !== nodeId));\n this.initialFlowChartEdge().forEach((edge) => {\n if (edge.source.id === nodeId || edge.target.id === nodeId) {\n this.removeEdge(edge);\n }\n });\n document.querySelector(`[data-id=\"${nodeId}\"]`)?.remove();\n this.anchorClickBuffer = null;\n }\n cleanup() {\n this.nodesMap.forEach((_, id) => this.removeEventListeners(id));\n this.nodesMap.clear();\n this.eventListeners.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9mbG93LWNoYXJ0L3NyYy9saWIvZmxvdy1jaGFydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBVS9CLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFVSxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxFQUFFLGdFQUFDLENBQUM7UUFDbEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLEVBQUUsZ0VBQUMsQ0FBQztRQUNsQyxpQkFBWSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSx3REFBQyxDQUFDO1FBQ3JELGlCQUFZLEdBQUcsTUFBTSxDQUEwQixJQUFJLHdEQUFDLENBQUM7UUFDNUMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLHNEQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSx5REFBQyxDQUFDO1FBRTdCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBQzlDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBQzlDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUFDL0MsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUVoRCxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFDckQsbUJB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LENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQTdkVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVmZmVjdCwgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVhGbG93Q2hhcnRFZGdlcyxcbiAgQVhGbG93Q2hhcnROb2RlcyxcbiAgQVhMaW5lQ2xpY2tFdmVudCxcbiAgQVhOb2RlQ2xpY2tFdmVudCxcbiAgSFRNTEVsZW1lbnRXaXRoRGF0YXNldCxcbn0gZnJvbSAnLi9mbG93LWNoYXJ0LnR5cGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGbG93Q2hhcnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgaW5pdGlhbEZsb3dDaGFydEVkZ2UgPSBzaWduYWwoW10pO1xuICBpbml0aWFsRmxvd0NoYXJ0Tm9kZSA9IHNpZ25hbChbXSk7XG4gIHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWEZsb3dDaGFydE5vZGVzIHwgbnVsbD4obnVsbCk7XG4gIHNlbGVjdGVkRWRnZSA9IHNpZ25hbDxBWEZsb3dDaGFydEVkZ2VzIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHN2Z1NlcnZpY2UgPSBzaWduYWwobnVsbCk7XG4gIHJlYWRvbmx5IGNhbnZhc1NlcnZpY2UgPSBzaWduYWwobnVsbCk7XG5cbiAgcmVhZG9ubHkgbGluZUNsaWNrID0gbmV3IFN1YmplY3Q8QVhMaW5lQ2xpY2tFdmVudD4oKTtcbiAgcmVhZG9ubHkgbGluZURiQ2xpY2sgPSBuZXcgU3ViamVjdDxBWExpbmVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBub2RlQ2xpY2sgPSBuZXcgU3ViamVjdDxBWE5vZGVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBub2RlRGJDbGljayA9IG5ldyBTdWJqZWN0PEFYTm9kZUNsaWNrRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG9uRWRnZVVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYRmxvd0NoYXJ0RWRnZXM+KCk7XG4gIHJlYWRvbmx5IG9uTm9kZVVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYRmxvd0NoYXJ0Tm9kZXM+KCk7XG5cbiAgcHJpdmF0ZSBub2Rlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBIVE1MRWxlbWVudFdpdGhEYXRhc2V0PigpO1xuICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEV2ZW50TGlzdGVuZXI+PigpO1xuICBwcml2YXRlIGFuY2hvckNsaWNrQnVmZmVyOiB7IG5vZGVJZDogc3RyaW5nOyBhbmNob3I6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjdXJyZW50Q29ubmVjdGlvbjoge1xuICAgIHNvdXJjZT86IHsgaWQ6IHN0cmluZzsgYW5jaG9yOiBzdHJpbmcgfTtcbiAgICB0YXJnZXQ/OiB7IGlkOiBzdHJpbmc7IGFuY2hvcjogc3RyaW5nIH07XG4gICAgbW91c2U/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG4gIH0gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBkcmFnZ2luZ0Nvbm5lY3Rpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB0ZW1wTGluZTogU1ZHTGluZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAjZWZmMiA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhd0VkZ2VzKHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gICNlZmYzID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsRmxvd0NoYXJ0Tm9kZSgpKSB7XG4gICAgICB0aGlzLmNyZWF0ZU5vZGUodGhpcy5pbml0aWFsRmxvd0NoYXJ0Tm9kZSgpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXZlbnQ6IHN0cmluZywgaGFuZGxlcjogRXZlbnRMaXN0ZW5lcikge1xuICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsZW1lbnQuZGF0YXNldFsnaWQnXSB8fCAnZ2xvYmFsJztcbiAgICBpZiAoIXRoaXMuZXZlbnRMaXN0ZW5lcnMuaGFzKGVsZW1lbnRJZCkpIHtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuc2V0KGVsZW1lbnRJZCwgbmV3IE1hcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50TGlzdGVuZXJzID0gdGhpcy5ldmVudExpc3RlbmVycy5nZXQoZWxlbWVudElkKTtcbiAgICBpZiAoZWxlbWVudExpc3RlbmVycykge1xuICAgICAgY29uc3QgYm91bmRIYW5kbGVyID0gaGFuZGxlci5iaW5kKHRoaXMpO1xuICAgICAgZWxlbWVudExpc3RlbmVycy5zZXQoZXZlbnQsIGJvdW5kSGFuZGxlcik7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGJvdW5kSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycyhlbGVtZW50SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGVsZW1lbnRMaXN0ZW5lcnMgPSB0aGlzLmV2ZW50TGlzdGVuZXJzLmdldChlbGVtZW50SWQpO1xuICAgIGlmIChlbGVtZW50TGlzdGVuZXJzKSB7XG4gICAgICBlbGVtZW50TGlzdGVuZXJzLmZvckVhY2goKGhhbmRsZXIsIGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm5vZGVzTWFwLmdldChlbGVtZW50SWQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5kZWxldGUoZWxlbWVudElkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwTm9kZUV2ZW50TGlzdGVuZXJzKFxuICAgIGVsOiBIVE1MRWxlbWVudFdpdGhEYXRhc2V0LFxuICAgIG5vZGU6IHsgaWQ6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuICApIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZWwsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5ub2RlQ2xpY2submV4dCh7IHRhcmdldDogZWwsIGV2ZW50OiBlIGFzIE1vdXNlRXZlbnQgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQobm9kZSk7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgdGhpcy5ub2Rlc01hcC5mb3JFYWNoKChleGlzdGluZ05vZGUpID0+IHtcbiAgICAgICAgaWYgKGV4aXN0aW5nTm9kZSAhPT0gZWwpIHtcbiAgICAgICAgICBleGlzdGluZ05vZGUuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZWwsICdkYmxjbGljaycsIChlOiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5ub2RlRGJDbGljay5uZXh0KHsgdGFyZ2V0OiBlbCwgZXZlbnQ6IGUgYXMgTW91c2VFdmVudCB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKCdob3ZlcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGVsLCAnbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hvdmVyJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQW5jaG9yRXZlbnRMaXN0ZW5lcnMoZG90OiBIVE1MRWxlbWVudFdpdGhEYXRhc2V0LCBlbDogSFRNTEVsZW1lbnRXaXRoRGF0YXNldCkge1xuICAgIC8vIHN0YXJ0IGRyYWcgdG8gY29ubmVjdFxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihkb3QsICdtb3VzZWRvd24nLCAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBlIGFzIE1vdXNlRXZlbnQ7XG4gICAgICBtb3VzZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgcG9zID0gdGhpcy5nZXRBbmNob3JQb2ludChlbCwgZG90LmRhdGFzZXRbJ2FuY2hvciddKTtcblxuICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IHtcbiAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgaWQ6IGRvdC5kYXRhc2V0Wydub2RlSWQnXSxcbiAgICAgICAgICBhbmNob3I6IGRvdC5kYXRhc2V0WydhbmNob3InXSxcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2U6IHsgeDogbW91c2VFdmVudC5jbGllbnRYLCB5OiBtb3VzZUV2ZW50LmNsaWVudFkgfSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc3RhcnRUZW1wTGluZShwb3MueCwgcG9zLnkpO1xuICAgICAgdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb24gPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGRvdCwgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAoZG90LmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0ZWQnKSkge1xuICAgICAgICBkb3QuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvdC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjbGlja2VkID0ge1xuICAgICAgICBub2RlSWQ6IGRvdC5kYXRhc2V0Wydub2RlSWQnXSxcbiAgICAgICAgYW5jaG9yOiBkb3QuZGF0YXNldFsnYW5jaG9yJ10sXG4gICAgICB9O1xuXG4gICAgICBjb25zb2xlLmxvZyhjbGlja2VkKTtcblxuICAgICAgaWYgKCF0aGlzLmFuY2hvckNsaWNrQnVmZmVyKSB7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tCdWZmZXIgPSBjbGlja2VkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5hbmNob3JDbGlja0J1ZmZlcjtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gY2xpY2tlZDtcblxuICAgICAgICBpZiAoc291cmNlLm5vZGVJZCAhPT0gdGFyZ2V0Lm5vZGVJZCkge1xuICAgICAgICAgIHRoaXMucHVzaEFuZENyZWF0ZUVkZ2VEYXRhKFxuICAgICAgICAgICAgeyBpZDogc291cmNlLm5vZGVJZCwgYW5jaG9yOiBzb3VyY2UuYW5jaG9yIH0sXG4gICAgICAgICAgICB7IGlkOiB0YXJnZXQubm9kZUlkLCBhbmNob3I6IHRhcmdldC5hbmNob3IgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmNob3JDbGlja0J1ZmZlciA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZG90LCAnbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgIGRvdC5jbGFzc0xpc3QuYWRkKCdob3ZlcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGRvdCwgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICBkb3QuY2xhc3NMaXN0LnJlbW92ZSgnaG92ZXInKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQW5jaG9ycyhlbDogSFRNTEVsZW1lbnRXaXRoRGF0YXNldCwgdHlwZTogc3RyaW5nKSB7XG4gICAgWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXS5mb3JFYWNoKChhbmNob3IpID0+IHtcbiAgICAgIGNvbnN0IGRvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIGFzIEhUTUxFbGVtZW50V2l0aERhdGFzZXQ7XG4gICAgICBkb3QuY2xhc3NOYW1lID0gJ2F4LWZsb3ctY2hhcnQtYW5jaG9yJztcbiAgICAgIGRvdC5kYXRhc2V0WydhbmNob3InXSA9IGFuY2hvcjtcbiAgICAgIGRvdC5kYXRhc2V0Wydub2RlSWQnXSA9IGVsLmRhdGFzZXRbJ2lkJ107XG5cbiAgICAgIHRoaXMucG9zaXRpb25BbmNob3IoZG90LCBhbmNob3IsIHR5cGUpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQoZG90KTtcblxuICAgICAgdGhpcy5zZXR1cEFuY2hvckV2ZW50TGlzdGVuZXJzKGRvdCwgZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYWtlRHJhZ2dhYmxlKGVsOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBvZmZzZXRYID0gMCxcbiAgICAgIG9mZnNldFkgPSAwLFxuICAgICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGVsLCAnbW91c2Vkb3duJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBtb3VzZUV2ZW50ID0gZSBhcyBNb3VzZUV2ZW50O1xuICAgICAgaWYgKChtb3VzZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdheC1mbG93LWNoYXJ0LWFuY2hvcicpKSByZXR1cm47XG4gICAgICBpc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIG9mZnNldFggPSBtb3VzZUV2ZW50LmNsaWVudFggLSBlbC5vZmZzZXRMZWZ0O1xuICAgICAgb2Zmc2V0WSA9IG1vdXNlRXZlbnQuY2xpZW50WSAtIGVsLm9mZnNldFRvcDtcbiAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG1vdXNlbW92ZUhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgZWwuc3R5bGUubGVmdCA9IGUuY2xpZW50WCAtIG9mZnNldFggKyAncHgnO1xuICAgICAgICBlbC5zdHlsZS50b3AgPSBlLmNsaWVudFkgLSBvZmZzZXRZICsgJ3B4JztcbiAgICAgICAgdGhpcy5kcmF3RWRnZXModGhpcy5pbml0aWFsRmxvd0NoYXJ0RWRnZSgpKTtcblxuICAgICAgICB0aGlzLmluaXRpYWxGbG93Q2hhcnROb2RlLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlID0gdmFsdWUuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gZWwuZGF0YXNldFsnaWQnXSk7XG4gICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUueCA9IGUuY2xpZW50WCAtIG9mZnNldFg7XG4gICAgICAgICAgICBub2RlLnkgPSBlLmNsaWVudFkgLSBvZmZzZXRZO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbGVtZW50SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlkO1xuICAgICAgaWYgKGVsZW1lbnRJZCA9PT0gJ2F4LWZsb3ctY2hhcnQtcmVuZGVyZXItY29ubmVjdGlvbnMnIHx8IGVsZW1lbnRJZCA9PT0gJ2F4LWZsb3ctY2hhcnQtcmVuZGVyZXItY2FudmFzJykge1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb24gJiYgdGhpcy50ZW1wTGluZSkge1xuICAgICAgICAgIHRoaXMudGVtcExpbmUuc2V0QXR0cmlidXRlKCd4MicsIGUub2Zmc2V0WC50b1N0cmluZygpKTtcbiAgICAgICAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgneTInLCBlLm9mZnNldFkudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgbW91c2V1cEhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LWZsb3ctY2hhcnQtYW5jaG9yJykgYXMgSFRNTEVsZW1lbnRXaXRoRGF0YXNldDtcbiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZGF0YXNldFsnbm9kZUlkJ10gIT09IHRoaXMuY3VycmVudENvbm5lY3Rpb24/LnNvdXJjZT8uaWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5jdXJyZW50Q29ubmVjdGlvbixcbiAgICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgICBpZDogdGFyZ2V0LmRhdGFzZXRbJ25vZGVJZCddLFxuICAgICAgICAgICAgICBhbmNob3I6IHRhcmdldC5kYXRhc2V0WydhbmNob3InXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmZpbmlzaENvbm5lY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyVGVtcExpbmUoKTtcbiAgICAgICAgdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQWRkIGdsb2JhbCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlSGFuZGxlcik7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2V1cEhhbmRsZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgZ2xvYmFsIGxpc3RlbmVyc1xuICAgIGNvbnN0IGdsb2JhbExpc3RlbmVycyA9IHRoaXMuZXZlbnRMaXN0ZW5lcnMuZ2V0KCdnbG9iYWwnKTtcbiAgICBpZiAoZ2xvYmFsTGlzdGVuZXJzKSB7XG4gICAgICBnbG9iYWxMaXN0ZW5lcnMuc2V0KCdtb3VzZW1vdmUnLCBtb3VzZW1vdmVIYW5kbGVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgICAgZ2xvYmFsTGlzdGVuZXJzLnNldCgnbW91c2V1cCcsIG1vdXNldXBIYW5kbGVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25BbmNob3IoZG90OiBIVE1MRWxlbWVudCwgYW5jaG9yOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlICE9PSAnZGlhbW9uZCcpIHtcbiAgICAgIHN3aXRjaCAoYW5jaG9yKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgZG90LnN0eWxlLnRvcCA9ICcwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnNTAlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBkb3Quc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIGRvdC5zdHlsZS5sZWZ0ID0gJzUwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGRvdC5zdHlsZS50b3AgPSAnNTAlJztcbiAgICAgICAgICBkb3Quc3R5bGUubGVmdCA9ICcwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBkb3Quc3R5bGUudG9wID0gJzUwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMTAwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYW5jaG9yKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgZG90LnN0eWxlLnRvcCA9ICcwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMCUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIGRvdC5zdHlsZS50b3AgPSAnMTAwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMTAwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGRvdC5zdHlsZS50b3AgPSAnMTAwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMCUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgZG90LnN0eWxlLnRvcCA9ICcwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMTAwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbmNob3JQb2ludChlbDogSFRNTEVsZW1lbnQsIGFuY2hvcjogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcbiAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY2VudGVyWCA9IGVsLm9mZnNldExlZnQgKyByZWN0LndpZHRoIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gZWwub2Zmc2V0VG9wICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgc3dpdGNoIChhbmNob3IpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiB7IHg6IGNlbnRlclgsIHk6IGVsLm9mZnNldFRvcCB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHsgeDogY2VudGVyWCwgeTogZWwub2Zmc2V0VG9wICsgcmVjdC5oZWlnaHQgfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiBlbC5vZmZzZXRMZWZ0LCB5OiBjZW50ZXJZIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7IHg6IGVsLm9mZnNldExlZnQgKyByZWN0LndpZHRoLCB5OiBjZW50ZXJZIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyB4OiBjZW50ZXJYLCB5OiBjZW50ZXJZIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFRlbXBMaW5lKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgY29uc3Qgc3ZnRWxlbWVudCA9IHRoaXMuc3ZnU2VydmljZSgpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKCFzdmdFbGVtZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnRlbXBMaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdsaW5lJyk7XG4gICAgdGhpcy50ZW1wTGluZS5zZXRBdHRyaWJ1dGUoJ3gxJywgeC50b1N0cmluZygpKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgneTEnLCB5LnRvU3RyaW5nKCkpO1xuICAgIHRoaXMudGVtcExpbmUuc2V0QXR0cmlidXRlKCd4MicsIHgudG9TdHJpbmcoKSk7XG4gICAgdGhpcy50ZW1wTGluZS5zZXRBdHRyaWJ1dGUoJ3kyJywgeS50b1N0cmluZygpKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3JnYmEodmFyKC0tYXgtc3lzLWNvbG9yLW9uLWxpZ2h0ZXN0LXN1cmZhY2UpLDAuNSknKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzInKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsICc0Jyk7XG4gICAgc3ZnRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRlbXBMaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUZW1wTGluZSgpIHtcbiAgICBpZiAodGhpcy50ZW1wTGluZSAmJiB0aGlzLnRlbXBMaW5lLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc3ZnU2VydmljZSgpPy5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudGVtcExpbmUpO1xuICAgICAgdGhpcy50ZW1wTGluZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQW5kQ3JlYXRlRWRnZURhdGEoc291cmNlOiB7IGlkOiBzdHJpbmc7IGFuY2hvcjogc3RyaW5nIH0sIHRhcmdldDogeyBpZDogc3RyaW5nOyBhbmNob3I6IHN0cmluZyB9KSB7XG4gICAgY29uc3QgbmV3RWRnZSA9IHtcbiAgICAgIGlkOiBgZWRnZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoKX1gLFxuICAgICAgc291cmNlLFxuICAgICAgdGFyZ2V0LFxuICAgIH07XG5cbiAgICB0aGlzLm9uRWRnZVVwZGF0ZS5uZXh0KG5ld0VkZ2UpO1xuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBuZXdFZGdlXSk7XG4gICAgdGhpcy5kcmF3RWRnZXMoKTtcbiAgfVxuXG4gIGRyYXdFZGdlcyhlZGdlcz86IEFYRmxvd0NoYXJ0RWRnZXNbXSkge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnU2VydmljZSgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghc3ZnKSByZXR1cm47XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyBlZGdlc1xuICAgIHN2Zy5pbm5lckhUTUwgPSAnJztcblxuICAgIC8vIFVzZSBwcm92aWRlZCBlZGdlcyBvciBnZXQgZnJvbSBzaWduYWxcbiAgICBjb25zdCBlZGdlc1RvRHJhdyA9IGVkZ2VzIHx8IHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKTtcblxuICAgIGVkZ2VzVG9EcmF3LmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLm5vZGVzTWFwLmdldChlZGdlLnNvdXJjZS5pZCk7XG4gICAgICBjb25zdCB0YXJnZXROb2RlID0gdGhpcy5ub2Rlc01hcC5nZXQoZWRnZS50YXJnZXQuaWQpO1xuXG4gICAgICBpZiAoc291cmNlTm9kZSkge1xuICAgICAgICBjb25zdCBzb3VyY2VBbmNob3IgPSBzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFuY2hvcj1cIiR7ZWRnZS5zb3VyY2UuYW5jaG9yfVwiXWApO1xuICAgICAgICBpZiAoc291cmNlQW5jaG9yKSBzb3VyY2VBbmNob3IuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGUucXVlcnlTZWxlY3RvcihgW2RhdGEtYW5jaG9yPVwiJHtlZGdlLnRhcmdldC5hbmNob3J9XCJdYCk7XG4gICAgICAgIGlmICh0YXJnZXRBbmNob3IpIHRhcmdldEFuY2hvci5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlTm9kZSAmJiB0YXJnZXROb2RlKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gdGhpcy5nZXRBbmNob3JQb2ludChzb3VyY2VOb2RlLCBlZGdlLnNvdXJjZS5hbmNob3IpO1xuICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRoaXMuZ2V0QW5jaG9yUG9pbnQodGFyZ2V0Tm9kZSwgZWRnZS50YXJnZXQuYW5jaG9yKTtcblxuICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5jcmVhdGVMaW5lKHNvdXJjZVBvaW50LCB0YXJnZXRQb2ludCwgZWRnZSk7XG4gICAgICAgIGxpbmUuY2xhc3NMaXN0LmFkZCgnYXgtZmxvdy1jaGFydC1saW5lJyk7XG5cbiAgICAgICAgLy8gQWRkIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBsaW5lIHNlbGVjdGlvblxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIobGluZSBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50LCAnY2xpY2snLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMubGluZUNsaWNrLm5leHQoeyB0YXJnZXQ6IGVkZ2UsIGV2ZW50OiBlIGFzIE1vdXNlRXZlbnQgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVkZ2Uuc2V0KGVkZ2UpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChudWxsKTtcbiAgICAgICAgICAvLyBSZW1vdmUgc2VsZWN0aW9uIGZyb20gYWxsIG90aGVyIGxpbmVzXG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbGluZScpLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICAgIGlmIChsICE9PSBsaW5lKSBsLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gQWRkIHNlbGVjdGlvbiB0byBjbGlja2VkIGxpbmVcbiAgICAgICAgICBsaW5lLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgLy8gUmVtb3ZlIHNlbGVjdGlvbiBmcm9tIGFsbCBub2Rlc1xuICAgICAgICAgIHRoaXMubm9kZXNNYXAuZm9yRWFjaCgobm9kZSkgPT4gbm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3ZnLmFwcGVuZENoaWxkKGxpbmUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlTGluZShmcm9tOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sIHRvOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sIGVkZ2U6IEFYRmxvd0NoYXJ0RWRnZXMpIHtcbiAgICBjb25zdCBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdsaW5lJyk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3gxJywgZnJvbS54LnRvU3RyaW5nKCkpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCd5MScsIGZyb20ueS50b1N0cmluZygpKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgneDInLCB0by54LnRvU3RyaW5nKCkpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCd5MicsIHRvLnkudG9TdHJpbmcoKSk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICdyZ2JhKHZhcigtLWF4LXN5cy1jb2xvci1vbi1zdXJmYWNlKSknKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzMnKTtcbiAgICBsaW5lLmNsYXNzTGlzdC5hZGQoJ2F4LWZsb3ctY2hhcnQtbGluZScpO1xuICAgIGxpbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy5saW5lQ2xpY2submV4dCh7IHRhcmdldDogZWRnZSwgZXZlbnQ6IGUgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRWRnZS5zZXQoZWRnZSk7XG4gICAgfSk7XG4gICAgbGluZS5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmxpbmVEYkNsaWNrLm5leHQoeyB0YXJnZXQ6IGVkZ2UsIGV2ZW50OiBlIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBsaW5lO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5pc2hDb25uZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRDb25uZWN0aW9uPy5zb3VyY2UgJiYgdGhpcy5jdXJyZW50Q29ubmVjdGlvbj8udGFyZ2V0KSB7XG4gICAgICB0aGlzLnB1c2hBbmRDcmVhdGVFZGdlRGF0YSh0aGlzLmN1cnJlbnRDb25uZWN0aW9uLnNvdXJjZSwgdGhpcy5jdXJyZW50Q29ubmVjdGlvbi50YXJnZXQpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZUVkZ2UoZWRnZTogQVhGbG93Q2hhcnRFZGdlcykge1xuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUuZmlsdGVyKChlKSA9PiBlLmlkICE9PSBlZGdlLmlkKSk7XG5cbiAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgY2xhc3MgZnJvbSBjb25uZWN0ZWQgYW5jaG9yc1xuICAgIGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLm5vZGVzTWFwLmdldChlZGdlLnNvdXJjZS5pZCk7XG4gICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMubm9kZXNNYXAuZ2V0KGVkZ2UudGFyZ2V0LmlkKTtcblxuICAgIGlmIChzb3VyY2VOb2RlKSB7XG4gICAgICBjb25zdCBzb3VyY2VBbmNob3IgPSBzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFuY2hvcj1cIiR7ZWRnZS5zb3VyY2UuYW5jaG9yfVwiXWApO1xuICAgICAgaWYgKHNvdXJjZUFuY2hvcikgc291cmNlQW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldE5vZGUpIHtcbiAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGUucXVlcnlTZWxlY3RvcihgW2RhdGEtYW5jaG9yPVwiJHtlZGdlLnRhcmdldC5hbmNob3J9XCJdYCk7XG4gICAgICBpZiAodGFyZ2V0QW5jaG9yKSB0YXJnZXRBbmNob3IuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVOb2RlKG5vZGVzOiB7IGlkOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdKSB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbm9kZScpPy5mb3JFYWNoKChub2RlKSA9PiBub2RlLnJlbW92ZSgpKTtcblxuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgYXMgSFRNTEVsZW1lbnRXaXRoRGF0YXNldDtcbiAgICAgIGNvbnN0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykgYXMgSFRNTEVsZW1lbnRXaXRoRGF0YXNldDtcbiAgICAgIHAuaW5uZXJUZXh0ID0gbm9kZS5sYWJlbDtcbiAgICAgIGVsLmFwcGVuZENoaWxkKHApO1xuICAgICAgZWwuY2xhc3NOYW1lID0gJ2F4LWZsb3ctY2hhcnQtbm9kZSc7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKGBheC0ke25vZGUudHlwZX1gKTtcbiAgICAgIGVsLnN0eWxlLmxlZnQgPSBub2RlLnggKyAncHgnO1xuICAgICAgZWwuc3R5bGUudG9wID0gbm9kZS55ICsgJ3B4JztcbiAgICAgIGVsLmRhdGFzZXRbJ2lkJ10gPSBub2RlLmlkO1xuXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoZWwsIG5vZGUudHlwZSk7XG4gICAgICB0aGlzLm1ha2VEcmFnZ2FibGUoZWwpO1xuICAgICAgdGhpcy5zZXR1cE5vZGVFdmVudExpc3RlbmVycyhlbCwgbm9kZSk7XG5cbiAgICAgIHRoaXMuY2FudmFzU2VydmljZSgpLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgdGhpcy5ub2Rlc01hcC5zZXQobm9kZS5pZCwgZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlTm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydE5vZGUudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUuZmlsdGVyKChlKSA9PiBlLmlkICE9PSBub2RlSWQpKTtcblxuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKS5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICBpZiAoZWRnZS5zb3VyY2UuaWQgPT09IG5vZGVJZCB8fCBlZGdlLnRhcmdldC5pZCA9PT0gbm9kZUlkKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRWRnZShlZGdlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWlkPVwiJHtub2RlSWR9XCJdYCk/LnJlbW92ZSgpO1xuICAgIHRoaXMuYW5jaG9yQ2xpY2tCdWZmZXIgPSBudWxsO1xuICB9XG5cbiAgY2xlYW51cCgpIHtcbiAgICB0aGlzLm5vZGVzTWFwLmZvckVhY2goKF8sIGlkKSA9PiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKGlkKSk7XG4gICAgdGhpcy5ub2Rlc01hcC5jbGVhcigpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbiAgfVxufVxuIl19","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXFlowChartService } from '../flow-chart.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/text-box\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@angular/forms\";\nexport class AXFlowChartCreatorComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.service = inject(AXFlowChartService);\n this.selectedShape = signal('rectangle', ...(ngDevMode ? [{ debugName: \"selectedShape\" }] : []));\n this.label = 'Label';\n }\n selectShapeHandler(shape) {\n this.selectedShape.set(shape);\n }\n createShapeHandler() {\n const newNode = {\n id: Math.random().toString(),\n type: this.selectedShape(),\n label: this.label,\n x: 0,\n y: 0,\n };\n this.service.initialFlowChartNode.update((value) => [...value, newNode]);\n this.service.onNodeUpdate.next(newNode);\n }\n printChart() {\n const printWindow = window.open('', '_blank');\n if (!printWindow)\n return;\n const canvas = this.service.canvasService()?.nativeElement;\n if (!canvas)\n return;\n // Get all styles from the document and component\n const styles = Array.from(document.styleSheets)\n .map((sheet) => {\n try {\n return Array.from(sheet.cssRules)\n .map((rule) => rule.cssText)\n .join('\\n');\n }\n catch (e) {\n return '';\n }\n })\n .join('\\n');\n // Add print-specific styles for anchors\n const printStyles = `\n ${styles}\n .ax-flow-chart-anchor {\n opacity: 1 !important;\n }\n `;\n // Create the print content with proper styling\n const printContent = `\n <!DOCTYPE html>\n <html>\n <head>\n <title>Flow Chart Print</title>\n <style>\n ${printStyles}\n </style>\n </head>\n <body>\n <ax-flow-chart-renderer>\n ${canvas.outerHTML}\n </ax-flow-chart-renderer>\n </body>\n </html>\n `;\n printWindow.document.write(printContent);\n printWindow.document.close();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartCreatorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.2\", type: AXFlowChartCreatorComponent, isStandalone: true, selector: \"ax-flow-chart-creator\", providers: [{ provide: AXComponent, useExisting: AXFlowChartCreatorComponent }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-shape-container\\\">\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'rectangle' }\\\"\\n (click)=\\\"selectShapeHandler('rectangle')\\\"\\n class=\\\"ax-rectangle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'circle' }\\\"\\n (click)=\\\"selectShapeHandler('circle')\\\"\\n class=\\\"ax-circle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'diamond' }\\\"\\n (click)=\\\"selectShapeHandler('diamond')\\\"\\n class=\\\"ax-diamond\\\"\\n ></div>\\n</div>\\n<ax-text-box class=\\\"ax-sm\\\" [(ngModel)]=\\\"label\\\" placeholder=\\\"Label\\\"> </ax-text-box>\\n\\n<ax-button class=\\\"ax-sm\\\" (onClick)=\\\"createShapeHandler()\\\" color=\\\"primary\\\" text=\\\"Create\\\"></ax-button>\\n<ax-button color=\\\"primary\\\" text=\\\"Print\\\" class=\\\"ax-sm\\\" (click)=\\\"printChart()\\\"></ax-button>\\n\", styles: [\"ax-flow-chart-creator{display:flex;gap:1rem;align-items:center;padding:1rem}ax-flow-chart-creator .ax-shape-container{display:flex;gap:1rem}ax-flow-chart-creator .ax-shape-container .ax-shape-selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))!important}ax-flow-chart-creator .ax-shape-container .ax-rectangle,ax-flow-chart-creator .ax-shape-container .ax-circle,ax-flow-chart-creator .ax-shape-container .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:30px;height:30px;cursor:pointer}ax-flow-chart-creator .ax-shape-container .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-creator .ax-shape-container .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i1.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartCreatorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-flow-chart-creator', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXTextBoxModule, AXButtonModule, CommonModule, FormsModule], providers: [{ provide: AXComponent, useExisting: AXFlowChartCreatorComponent }], template: \"<div class=\\\"ax-shape-container\\\">\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'rectangle' }\\\"\\n (click)=\\\"selectShapeHandler('rectangle')\\\"\\n class=\\\"ax-rectangle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'circle' }\\\"\\n (click)=\\\"selectShapeHandler('circle')\\\"\\n class=\\\"ax-circle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'diamond' }\\\"\\n (click)=\\\"selectShapeHandler('diamond')\\\"\\n class=\\\"ax-diamond\\\"\\n ></div>\\n</div>\\n<ax-text-box class=\\\"ax-sm\\\" [(ngModel)]=\\\"label\\\" placeholder=\\\"Label\\\"> </ax-text-box>\\n\\n<ax-button class=\\\"ax-sm\\\" (onClick)=\\\"createShapeHandler()\\\" color=\\\"primary\\\" text=\\\"Create\\\"></ax-button>\\n<ax-button color=\\\"primary\\\" text=\\\"Print\\\" class=\\\"ax-sm\\\" (click)=\\\"printChart()\\\"></ax-button>\\n\", styles: [\"ax-flow-chart-creator{display:flex;gap:1rem;align-items:center;padding:1rem}ax-flow-chart-creator .ax-shape-container{display:flex;gap:1rem}ax-flow-chart-creator .ax-shape-container .ax-shape-selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))!important}ax-flow-chart-creator .ax-shape-container .ax-rectangle,ax-flow-chart-creator .ax-shape-container .ax-circle,ax-flow-chart-creator .ax-shape-container .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:30px;height:30px;cursor:pointer}ax-flow-chart-creator .ax-shape-container .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-creator .ax-shape-container .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmxvdy1jaGFydC9zcmMvbGliL2Zsb3ctY2hhcnQtY3JlYXRvci9mbG93LWNoYXJ0LWNyZWF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9mbG93LWNoYXJ0L3NyYy9saWIvZmxvdy1jaGFydC1jcmVhdG9yL2Zsb3ctY2hhcnQtY3JlYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQVczRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsV0FBVztJQVQ1RDs7UUFVRSxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQUMsV0FBVyx5REFBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxPQUFPLENBQUM7S0FtRTNCO0lBakVXLGtCQUFrQixDQUFDLEtBQXlDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsTUFBTSxPQUFPLEdBQUc7WUFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztTQUNMLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsVUFBVTtRQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFFekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLGlEQUFpRDtRQUNqRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDNUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7cUJBQzlCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztxQkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLHdDQUF3QztRQUN4QyxNQUFNLFdBQVcsR0FBRztRQUNoQixNQUFNOzs7O0tBSVQsQ0FBQztRQUVGLCtDQUErQztRQUMvQyxNQUFNLFlBQVksR0FBRzs7Ozs7O2NBTVgsV0FBVzs7Ozs7Y0FLWCxNQUFNLENBQUMsU0FBUzs7OztLQUl6QixDQUFDO1FBRUYsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDOzhHQXJFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixvRUFGM0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLENBQUMsaURDZmpGLGcxQkFxQkEsNDBCRFBZLGVBQWUscWJBQUUsY0FBYyw2WEFBRSxZQUFZLDRIQUFFLFdBQVc7OzJGQUd6RCwyQkFBMkI7a0JBVHZDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLGFBQzFELENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsNkJBQTZCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50LCBOWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhGbG93Q2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvdy1jaGFydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZmxvdy1jaGFydC1jcmVhdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY2hhcnQtY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zsb3ctY2hhcnQtY3JlYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYVGV4dEJveE1vZHVsZSwgQVhCdXR0b25Nb2R1bGUsIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRDcmVhdG9yQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWEZsb3dDaGFydENyZWF0b3JDb21wb25lbnQgZXh0ZW5kcyBOWENvbXBvbmVudCB7XG4gIHNlcnZpY2UgPSBpbmplY3QoQVhGbG93Q2hhcnRTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkU2hhcGUgPSBzaWduYWwoJ3JlY3RhbmdsZScpO1xuICBwcm90ZWN0ZWQgbGFiZWwgPSAnTGFiZWwnO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RTaGFwZUhhbmRsZXIoc2hhcGU6ICdyZWN0YW5nbGUnIHwgJ2NpcmNsZScgfCAnZGlhbW9uZCcpIHtcbiAgICB0aGlzLnNlbGVjdGVkU2hhcGUuc2V0KHNoYXBlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVTaGFwZUhhbmRsZXIoKSB7XG4gICAgY29uc3QgbmV3Tm9kZSA9IHtcbiAgICAgIGlkOiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksXG4gICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkU2hhcGUoKSxcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgfTtcbiAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEZsb3dDaGFydE5vZGUudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBuZXdOb2RlXSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9uTm9kZVVwZGF0ZS5uZXh0KG5ld05vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByaW50Q2hhcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcHJpbnRXaW5kb3cgPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycpO1xuICAgIGlmICghcHJpbnRXaW5kb3cpIHJldHVybjtcblxuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuc2VydmljZS5jYW52YXNTZXJ2aWNlKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFjYW52YXMpIHJldHVybjtcblxuICAgIC8vIEdldCBhbGwgc3R5bGVzIGZyb20gdGhlIGRvY3VtZW50IGFuZCBjb21wb25lbnRcbiAgICBjb25zdCBzdHlsZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKVxuICAgICAgLm1hcCgoc2hlZXQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzaGVldC5jc3NSdWxlcylcbiAgICAgICAgICAgIC5tYXAoKHJ1bGUpID0+IHJ1bGUuY3NzVGV4dClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIC8vIEFkZCBwcmludC1zcGVjaWZpYyBzdHlsZXMgZm9yIGFuY2hvcnNcbiAgICBjb25zdCBwcmludFN0eWxlcyA9IGBcbiAgICAgICR7c3R5bGVzfVxuICAgICAgLmF4LWZsb3ctY2hhcnQtYW5jaG9yIHtcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIGA7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHByaW50IGNvbnRlbnQgd2l0aCBwcm9wZXIgc3R5bGluZ1xuICAgIGNvbnN0IHByaW50Q29udGVudCA9IGBcbiAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgPGh0bWw+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgIDx0aXRsZT5GbG93IENoYXJ0IFByaW50PC90aXRsZT5cbiAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICAke3ByaW50U3R5bGVzfVxuICAgICAgICAgIDwvc3R5bGU+XG4gICAgICAgIDwvaGVhZD5cbiAgICAgICAgPGJvZHk+XG4gICAgICAgICAgPGF4LWZsb3ctY2hhcnQtcmVuZGVyZXI+XG4gICAgICAgICAgICAke2NhbnZhcy5vdXRlckhUTUx9XG4gICAgICAgICAgPC9heC1mbG93LWNoYXJ0LXJlbmRlcmVyPlxuICAgICAgICA8L2JvZHk+XG4gICAgICA8L2h0bWw+XG4gICAgYDtcblxuICAgIHByaW50V2luZG93LmRvY3VtZW50LndyaXRlKHByaW50Q29udGVudCk7XG4gICAgcHJpbnRXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LXNoYXBlLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwieyAnYXgtc2hhcGUtc2VsZWN0ZWQnOiBzZWxlY3RlZFNoYXBlKCkgPT09ICdyZWN0YW5nbGUnIH1cIlxuICAgIChjbGljayk9XCJzZWxlY3RTaGFwZUhhbmRsZXIoJ3JlY3RhbmdsZScpXCJcbiAgICBjbGFzcz1cImF4LXJlY3RhbmdsZVwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJ2F4LXNoYXBlLXNlbGVjdGVkJzogc2VsZWN0ZWRTaGFwZSgpID09PSAnY2lyY2xlJyB9XCJcbiAgICAoY2xpY2spPVwic2VsZWN0U2hhcGVIYW5kbGVyKCdjaXJjbGUnKVwiXG4gICAgY2xhc3M9XCJheC1jaXJjbGVcIlxuICA+PC9kaXY+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdheC1zaGFwZS1zZWxlY3RlZCc6IHNlbGVjdGVkU2hhcGUoKSA9PT0gJ2RpYW1vbmQnIH1cIlxuICAgIChjbGljayk9XCJzZWxlY3RTaGFwZUhhbmRsZXIoJ2RpYW1vbmQnKVwiXG4gICAgY2xhc3M9XCJheC1kaWFtb25kXCJcbiAgPjwvZGl2PlxuPC9kaXY+XG48YXgtdGV4dC1ib3ggY2xhc3M9XCJheC1zbVwiIFsobmdNb2RlbCldPVwibGFiZWxcIiBwbGFjZWhvbGRlcj1cIkxhYmVsXCI+IDwvYXgtdGV4dC1ib3g+XG5cbjxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cImNyZWF0ZVNoYXBlSGFuZGxlcigpXCIgY29sb3I9XCJwcmltYXJ5XCIgdGV4dD1cIkNyZWF0ZVwiPjwvYXgtYnV0dG9uPlxuPGF4LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0ZXh0PVwiUHJpbnRcIiBjbGFzcz1cImF4LXNtXCIgKGNsaWNrKT1cInByaW50Q2hhcnQoKVwiPjwvYXgtYnV0dG9uPlxuIl19","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, effect, inject, output, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXFlowChartService } from '../flow-chart.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFlowChartRendererComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.canvas = viewChild('canvas', ...(ngDevMode ? [{ debugName: \"canvas\" }] : []));\n this.svg = viewChild('connections', ...(ngDevMode ? [{ debugName: \"svg\" }] : []));\n this.service = inject(AXFlowChartService);\n this.onLineClick = output();\n this.onLineDbClick = output();\n this.onNodeClick = output();\n this.onNodeDbClick = output();\n this.onEdgeUpdate = output();\n this.onNodeUpdate = output();\n this.#init = afterNextRender(() => {\n this.setupEventListeners();\n });\n this.#eff = effect(() => {\n if (this.canvas() && this.svg()) {\n this.initializeServices();\n }\n }, ...(ngDevMode ? [{ debugName: \"#eff\" }] : []));\n }\n #init;\n #eff;\n setupEventListeners() {\n this.service.lineClick.subscribe((value) => {\n this.onLineClick.emit(value);\n });\n this.service.lineDbClick.subscribe((value) => {\n this.onLineDbClick.emit(value);\n });\n this.service.nodeClick.subscribe((value) => {\n this.onNodeClick.emit(value);\n });\n this.service.nodeDbClick.subscribe((value) => {\n this.onNodeDbClick.emit(value);\n });\n this.service.onEdgeUpdate.subscribe((newEdge) => {\n this.onEdgeUpdate.emit(newEdge);\n });\n this.service.onNodeUpdate.subscribe((newNode) => {\n this.onNodeUpdate.emit(newNode);\n });\n }\n initializeServices() {\n this.service.canvasService.set(this.canvas());\n this.service.svgService.set(this.svg());\n // Add click handlers for parent elements\n const canvas = this.canvas()?.nativeElement;\n const svg = this.svg()?.nativeElement;\n if (canvas) {\n canvas.addEventListener('click', (e) => {\n if (e.target === canvas) {\n this.service.selectedNode.set(null);\n this.service.selectedEdge.set(null);\n document.querySelectorAll('.ax-flow-chart-node').forEach((node) => node.classList.remove('selected'));\n document.querySelectorAll('.ax-flow-chart-line').forEach((line) => line.classList.remove('selected'));\n }\n });\n }\n if (svg) {\n svg.addEventListener('click', (e) => {\n if (e.target === svg) {\n this.service.selectedNode.set(null);\n this.service.selectedEdge.set(null);\n document.querySelectorAll('.ax-flow-chart-node').forEach((node) => node.classList.remove('selected'));\n document.querySelectorAll('.ax-flow-chart-line').forEach((line) => line.classList.remove('selected'));\n }\n });\n }\n }\n ngOnDestroy() {\n this.cleanup();\n }\n cleanup() {\n this.service.cleanup();\n this.service.lineClick.unsubscribe();\n this.service.lineDbClick.unsubscribe();\n this.service.nodeClick.unsubscribe();\n this.service.nodeDbClick.unsubscribe();\n this.service.onEdgeUpdate.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.1.2\", type: AXFlowChartRendererComponent, isStandalone: true, selector: \"ax-flow-chart-renderer\", outputs: { onLineClick: \"onLineClick\", onLineDbClick: \"onLineDbClick\", onNodeClick: \"onNodeClick\", onNodeDbClick: \"onNodeDbClick\", onEdgeUpdate: \"onEdgeUpdate\", onNodeUpdate: \"onNodeUpdate\" }, providers: [{ provide: AXComponent, useExisting: AXFlowChartRendererComponent }], viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true, isSignal: true }, { propertyName: \"svg\", first: true, predicate: [\"connections\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div id=\\\"ax-flow-chart-renderer-canvas\\\" #canvas>\\n <svg class=\\\"ax-flow-chart-renderer-svg\\\" id=\\\"ax-flow-chart-renderer-connections\\\" #connections></svg>\\n</div>\\n\", styles: [\"ax-flow-chart-renderer{overflow:hidden;width:var(--ax-comp-flow-chart-width, 100%);height:var(--ax-comp-flow-chart-height, 30rem);-webkit-print-color-adjust:exact;print-color-adjust:exact}ax-flow-chart-renderer #ax-flow-chart-renderer-canvas{position:relative;width:100%;height:100%}ax-flow-chart-renderer .ax-flow-chart-node{position:absolute;padding:1rem;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface));border:2px solid rgba(var(--ax-sys-color-border-surface));cursor:move;-webkit-user-select:none;user-select:none}ax-flow-chart-renderer .ax-flow-chart-node.selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))}ax-flow-chart-renderer .ax-flow-chart-node .ax-flow-chart-anchor{opacity:0;transition:opacity .5s ease}ax-flow-chart-renderer .ax-flow-chart-node:hover .ax-flow-chart-anchor,ax-flow-chart-renderer .ax-flow-chart-node.selected .ax-flow-chart-anchor{opacity:1}ax-flow-chart-renderer .ax-flow-chart-anchor{position:absolute;width:10px;height:10px;background-color:rgba(var(--ax-sys-color-on-lightest-surface));border-radius:50%;cursor:crosshair;transform:translate(-50%,-50%)}ax-flow-chart-renderer .ax-flow-chart-anchor.selected{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor.hover{transition:.3s all ease;scale:1.3;background-color:rgba(var(--ax-sys-color-danger-darkest-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor:before{content:\\\"\\\";position:absolute;top:-7px;left:-7px;right:-7px;bottom:-7px}ax-flow-chart-renderer .ax-flow-chart-renderer-svg{position:absolute;top:0;left:0;overflow:visible}ax-flow-chart-renderer .ax-flow-chart-line:hover{transition:.3s all ease;stroke:rgba(var(--ax-sys-color-danger-darker-surface));cursor:pointer}ax-flow-chart-renderer .ax-flow-chart-line.selected{stroke:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-rectangle,ax-flow-chart-renderer .ax-circle,ax-flow-chart-renderer .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:auto;height:auto}ax-flow-chart-renderer .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-renderer .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}ax-flow-chart-renderer .ax-diamond p{transform:rotate(-45deg) scale(1.25)}ax-flow-chart-renderer .ax-diamond .ax-flow-chart-anchor{width:14px;height:14px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-flow-chart-renderer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXFlowChartRendererComponent }], template: \"<div id=\\\"ax-flow-chart-renderer-canvas\\\" #canvas>\\n <svg class=\\\"ax-flow-chart-renderer-svg\\\" id=\\\"ax-flow-chart-renderer-connections\\\" #connections></svg>\\n</div>\\n\", styles: [\"ax-flow-chart-renderer{overflow:hidden;width:var(--ax-comp-flow-chart-width, 100%);height:var(--ax-comp-flow-chart-height, 30rem);-webkit-print-color-adjust:exact;print-color-adjust:exact}ax-flow-chart-renderer #ax-flow-chart-renderer-canvas{position:relative;width:100%;height:100%}ax-flow-chart-renderer .ax-flow-chart-node{position:absolute;padding:1rem;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface));border:2px solid rgba(var(--ax-sys-color-border-surface));cursor:move;-webkit-user-select:none;user-select:none}ax-flow-chart-renderer .ax-flow-chart-node.selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))}ax-flow-chart-renderer .ax-flow-chart-node .ax-flow-chart-anchor{opacity:0;transition:opacity .5s ease}ax-flow-chart-renderer .ax-flow-chart-node:hover .ax-flow-chart-anchor,ax-flow-chart-renderer .ax-flow-chart-node.selected .ax-flow-chart-anchor{opacity:1}ax-flow-chart-renderer .ax-flow-chart-anchor{position:absolute;width:10px;height:10px;background-color:rgba(var(--ax-sys-color-on-lightest-surface));border-radius:50%;cursor:crosshair;transform:translate(-50%,-50%)}ax-flow-chart-renderer .ax-flow-chart-anchor.selected{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor.hover{transition:.3s all ease;scale:1.3;background-color:rgba(var(--ax-sys-color-danger-darkest-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor:before{content:\\\"\\\";position:absolute;top:-7px;left:-7px;right:-7px;bottom:-7px}ax-flow-chart-renderer .ax-flow-chart-renderer-svg{position:absolute;top:0;left:0;overflow:visible}ax-flow-chart-renderer .ax-flow-chart-line:hover{transition:.3s all ease;stroke:rgba(var(--ax-sys-color-danger-darker-surface));cursor:pointer}ax-flow-chart-renderer .ax-flow-chart-line.selected{stroke:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-rectangle,ax-flow-chart-renderer .ax-circle,ax-flow-chart-renderer .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:auto;height:auto}ax-flow-chart-renderer .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-renderer .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}ax-flow-chart-renderer .ax-diamond p{transform:rotate(-45deg) scale(1.25)}ax-flow-chart-renderer .ax-diamond .ax-flow-chart-anchor{width:14px;height:14px}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Zsb3ctY2hhcnQvc3JjL2xpYi9mbG93LWNoYXJ0LXJlbmRlcmVyL2Zsb3ctY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9mbG93LWNoYXJ0L3NyYy9saWIvZmxvdy1jaGFydC1yZW5kZXJlci9mbG93LWNoYXJ0LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBVzNELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxXQUFXO0lBUjdEOztRQVNVLFdBQU0sR0FBRyxTQUFTLENBQWEsUUFBUSxrREFBQyxDQUFDO1FBQ3pDLFFBQUcsR0FBRyxTQUFTLENBQWEsYUFBYSwrQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwQyxnQkFBVyxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUMxQyxpQkFBWSxHQUFH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UyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7OEdBckZVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHNRQUY1QixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyx3UUN0QmxGLHlLQUdBOzsyRkRxQmEsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDhCQUE4QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCwgTlhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGbG93Q2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvdy1jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYRmxvd0NoYXJ0RWRnZXMsIEFYRmxvd0NoYXJ0Tm9kZXMsIEFYTGluZUNsaWNrRXZlbnQsIEFYTm9kZUNsaWNrRXZlbnQgfSBmcm9tICcuLi9mbG93LWNoYXJ0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1mbG93LWNoYXJ0LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG93LWNoYXJ0LXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRSZW5kZXJlckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhGbG93Q2hhcnRSZW5kZXJlckNvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBjYW52YXMgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NhbnZhcycpO1xuICBwcml2YXRlIHN2ZyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29ubmVjdGlvbnMnKTtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYRmxvd0NoYXJ0U2VydmljZSk7XG5cbiAgcmVhZG9ubHkgb25MaW5lQ2xpY2sgPSBvdXRwdXQ8QVhMaW5lQ2xpY2tFdmVudD4oKTtcbiAgcmVhZG9ubHkgb25MaW5lRGJDbGljayA9IG91dHB1dDxBWExpbmVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBvbk5vZGVDbGljayA9IG91dHB1dDxBWE5vZGVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBvbk5vZGVEYkNsaWNrID0gb3V0cHV0PEFYTm9kZUNsaWNrRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG9uRWRnZVVwZGF0ZSA9IG91dHB1dDxBWEZsb3dDaGFydEVkZ2VzPigpO1xuICByZWFkb25seSBvbk5vZGVVcGRhdGUgPSBvdXRwdXQ8QVhGbG93Q2hhcnROb2Rlcz4oKTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gIH0pO1xuXG4gICNlZmYgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLmNhbnZhcygpICYmIHRoaXMuc3ZnKCkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlcnZpY2VzKCk7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmxpbmVDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTGluZUNsaWNrLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5saW5lRGJDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTGluZURiQ2xpY2suZW1pdCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm5vZGVDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTm9kZUNsaWNrLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5ub2RlRGJDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTm9kZURiQ2xpY2suZW1pdCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9uRWRnZVVwZGF0ZS5zdWJzY3JpYmUoKG5ld0VkZ2UpID0+IHtcbiAgICAgIHRoaXMub25FZGdlVXBkYXRlLmVtaXQobmV3RWRnZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9uTm9kZVVwZGF0ZS5zdWJzY3JpYmUoKG5ld05vZGUpID0+IHtcbiAgICAgIHRoaXMub25Ob2RlVXBkYXRlLmVtaXQobmV3Tm9kZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTZXJ2aWNlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuY2FudmFzU2VydmljZS5zZXQodGhpcy5jYW52YXMoKSk7XG4gICAgdGhpcy5zZXJ2aWNlLnN2Z1NlcnZpY2Uuc2V0KHRoaXMuc3ZnKCkpO1xuXG4gICAgLy8gQWRkIGNsaWNrIGhhbmRsZXJzIGZvciBwYXJlbnQgZWxlbWVudHNcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhcygpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoY2FudmFzKSB7XG4gICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBjYW52YXMpIHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWROb2RlLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWRFZGdlLnNldChudWxsKTtcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYXgtZmxvdy1jaGFydC1ub2RlJykuZm9yRWFjaCgobm9kZSkgPT4gbm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTtcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYXgtZmxvdy1jaGFydC1saW5lJykuZm9yRWFjaCgobGluZSkgPT4gbGluZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHN2Zykge1xuICAgICAgc3ZnLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gc3ZnKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZS5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkRWRnZS5zZXQobnVsbCk7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbm9kZScpLmZvckVhY2goKG5vZGUpID0+IG5vZGUuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbGluZScpLmZvckVhY2goKGxpbmUpID0+IGxpbmUuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5zZXJ2aWNlLmxpbmVDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VydmljZS5saW5lRGJDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VydmljZS5ub2RlQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlcnZpY2Uubm9kZURiQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlcnZpY2Uub25FZGdlVXBkYXRlLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJheC1mbG93LWNoYXJ0LXJlbmRlcmVyLWNhbnZhc1wiICNjYW52YXM+XG4gIDxzdmcgY2xhc3M9XCJheC1mbG93LWNoYXJ0LXJlbmRlcmVyLXN2Z1wiIGlkPVwiYXgtZmxvdy1jaGFydC1yZW5kZXJlci1jb25uZWN0aW9uc1wiICNjb25uZWN0aW9ucz48L3N2Zz5cbjwvZGl2PlxuIl19","import { AXComponent, AXFocusableComponent, AXValuableComponent, NXComponent } from '@acorex/cdk/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, HostListener, inject, input, ViewEncapsulation, } from '@angular/core';\nimport { AXFlowChartService } from './flow-chart.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFlowChartComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.flowChartService = inject(AXFlowChartService);\n this.initialFlowChartNode = input.required(...(ngDevMode ? [{ debugName: \"initialFlowChartNode\" }] : []));\n this.initialFlowChartEdge = input.required(...(ngDevMode ? [{ debugName: \"initialFlowChartEdge\" }] : []));\n this.selectedNode = computed(() => this.flowChartService.selectedNode(), ...(ngDevMode ? [{ debugName: \"selectedNode\" }] : []));\n this.selectedEdge = computed(() => this.flowChartService.selectedEdge(), ...(ngDevMode ? [{ debugName: \"selectedEdge\" }] : []));\n this.#init = afterNextRender(() => {\n this.flowChartService.initialFlowChartNode.set(this.initialFlowChartNode());\n this.flowChartService.initialFlowChartEdge.set(this.initialFlowChartEdge());\n });\n }\n #init;\n handleKeyboardEvent(event) {\n if (event.key === 'Delete') {\n const selectedNode = this.selectedNode();\n const selectedEdge = this.selectedEdge();\n if (selectedNode) {\n this.removeNode(selectedNode.id);\n }\n else if (selectedEdge) {\n this.removeEdge(selectedEdge);\n }\n }\n }\n drawEdges(edges) {\n this.flowChartService.drawEdges(edges);\n }\n removeEdge(edge) {\n this.flowChartService.removeEdge(edge);\n }\n createNode(nodes) {\n this.flowChartService.createNode(nodes);\n }\n removeNode(nodeId) {\n this.flowChartService.removeNode(nodeId);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.1.2\", type: AXFlowChartComponent, isStandalone: true, selector: \"ax-flow-chart\", inputs: { initialFlowChartNode: { classPropertyName: \"initialFlowChartNode\", publicName: \"initialFlowChartNode\", isSignal: true, isRequired: true, transformFunction: null }, initialFlowChartEdge: { classPropertyName: \"initialFlowChartEdge\", publicName: \"initialFlowChartEdge\", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { \"document:keydown\": \"handleKeyboardEvent($event)\" } }, providers: [\n AXFlowChartService,\n { provide: AXComponent, useExisting: AXFlowChartComponent },\n { provide: AXValuableComponent, useExisting: AXFlowChartComponent },\n { provide: AXFocusableComponent, useExisting: AXFlowChartComponent },\n ], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<ng-content select=\\\"ax-flow-chart-renderer\\\"></ng-content>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-flow-chart{display:flex;flex-direction:column;width:100%;height:100%;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface));border-radius:var(--ax-sys-border-radius)}ax-flow-chart ax-header{border-bottom:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-flow-chart ax-footer{border-top:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-flow-chart', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXFlowChartService,\n { provide: AXComponent, useExisting: AXFlowChartComponent },\n { provide: AXValuableComponent, useExisting: AXFlowChartComponent },\n { provide: AXFocusableComponent, useExisting: AXFlowChartComponent },\n ], template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<ng-content select=\\\"ax-flow-chart-renderer\\\"></ng-content>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-flow-chart{display:flex;flex-direction:column;width:100%;height:100%;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface));border-radius:var(--ax-sys-border-radius)}ax-flow-chart ax-header{border-bottom:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-flow-chart ax-footer{border-top:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}\\n\"] }]\n }], propDecorators: { handleKeyboardEvent: [{\n type: HostListener,\n args: ['document:keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Zsb3ctY2hhcnQvc3JjL2xpYi9mbG93LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmxvdy1jaGFydC9zcmMvbGliL2Zsb3ctY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RyxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFnQjFELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxXQUFXO0lBYnJEOztRQWNVLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRELHlCQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLCtEQUFzQixDQUFDO1FBQzVELHlCQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLCtEQUFzQixDQUFDO1FBQzVELGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsd0RBQUMsQ0FBQztRQUNwRSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLHdEQUFDLENBQUM7UUFFcEUsVUFBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztLQStCSjtJQWxDQyxLQUFLLENBR0Y7SUFHSCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV6QyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFzQjtRQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBMEU7UUFDbkYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQXpDVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw0ZEFQcEI7WUFDVCxrQkFBa0I7WUFDbEIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtZQUMzRCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUU7WUFDbkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO1NBQ3JFLGlEQ3pCSCwrSkFHQTs7MkZEd0JhLG9CQUFvQjtrQkFiaEMsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Qsa0JBQWtCO3dCQUNsQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxzQkFBc0IsRUFBRTt3QkFDM0QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxzQkFBc0IsRUFBRTt3QkFDbkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxzQkFBc0IsRUFBRTtxQkFDckU7OEJBZ0JELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50LCBBWEZvY3VzYWJsZUNvbXBvbmVudCwgQVhWYWx1YWJsZUNvbXBvbmVudCwgTlhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZsb3dDaGFydFNlcnZpY2UgfSBmcm9tICcuL2Zsb3ctY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBWEZsb3dDaGFydEVkZ2VzLCBBWEZsb3dDaGFydE5vZGVzIH0gZnJvbSAnLi9mbG93LWNoYXJ0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1mbG93LWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG93LWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWEZsb3dDaGFydFNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRmxvd0NoYXJ0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhGbG93Q2hhcnRDb21wb25lbnQgZXh0ZW5kcyBOWENvbXBvbmVudCB7XG4gIHByaXZhdGUgZmxvd0NoYXJ0U2VydmljZSA9IGluamVjdChBWEZsb3dDaGFydFNlcnZpY2UpO1xuXG4gIGluaXRpYWxGbG93Q2hhcnROb2RlID0gaW5wdXQucmVxdWlyZWQ8QVhGbG93Q2hhcnROb2Rlc1tdPigpO1xuICBpbml0aWFsRmxvd0NoYXJ0RWRnZSA9IGlucHV0LnJlcXVpcmVkPEFYRmxvd0NoYXJ0RWRnZXNbXT4oKTtcbiAgc2VsZWN0ZWROb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLnNlbGVjdGVkTm9kZSgpKTtcbiAgc2VsZWN0ZWRFZGdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLnNlbGVjdGVkRWRnZSgpKTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLmluaXRpYWxGbG93Q2hhcnROb2RlLnNldCh0aGlzLmluaXRpYWxGbG93Q2hhcnROb2RlKCkpO1xuICAgIHRoaXMuZmxvd0NoYXJ0U2VydmljZS5pbml0aWFsRmxvd0NoYXJ0RWRnZS5zZXQodGhpcy5pbml0aWFsRmxvd0NoYXJ0RWRnZSgpKTtcbiAgfSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5zZWxlY3RlZE5vZGUoKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRnZSA9IHRoaXMuc2VsZWN0ZWRFZGdlKCk7XG5cbiAgICAgIGlmIChzZWxlY3RlZE5vZGUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb2RlKHNlbGVjdGVkTm9kZS5pZCk7XG4gICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkRWRnZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUVkZ2Uoc2VsZWN0ZWRFZGdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkcmF3RWRnZXMoZWRnZXM6IEFYRmxvd0NoYXJ0RWRnZXNbXSkge1xuICAgIHRoaXMuZmxvd0NoYXJ0U2VydmljZS5kcmF3RWRnZXMoZWRnZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZShlZGdlOiBBWEZsb3dDaGFydEVkZ2VzKSB7XG4gICAgdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLnJlbW92ZUVkZ2UoZWRnZSk7XG4gIH1cblxuICBjcmVhdGVOb2RlKG5vZGVzOiB7IGlkOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdKSB7XG4gICAgdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLmNyZWF0ZU5vZGUobm9kZXMpO1xuICB9XG5cbiAgcmVtb3ZlTm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuZmxvd0NoYXJ0U2VydmljZS5yZW1vdmVOb2RlKG5vZGVJZCk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPjwvbmctY29udGVudD5cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZsb3ctY2hhcnQtcmVuZGVyZXJcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFlowChartCreatorComponent } from './flow-chart-creator/flow-chart-creator.component';\nimport { AXFlowChartRendererComponent } from './flow-chart-renderer/flow-chart-renderer.component';\nimport { AXFlowChartComponent } from './flow-chart.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXFlowChartRendererComponent, AXFlowChartCreatorComponent, AXFlowChartComponent];\nconst MODULES = [CommonModule];\nexport class AXFlowChartModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartModule, imports: [CommonModule, AXFlowChartRendererComponent, AXFlowChartCreatorComponent, AXFlowChartComponent], exports: [AXFlowChartRendererComponent, AXFlowChartCreatorComponent, AXFlowChartComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartModule, imports: [MODULES, AXFlowChartCreatorComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.2\", ngImport: i0, type: AXFlowChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Zsb3ctY2hhcnQvc3JjL2xpYi9mbG93LWNoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFOUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BHLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUFPL0IsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsWUFQYixZQUFZLEVBRFYsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsb0JBQW9CLGFBQS9FLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQjsrR0FRckYsaUJBQWlCLFlBSmYsT0FBTyxFQUoyQiwyQkFBMkI7OzJGQVEvRCxpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGbG93Q2hhcnRDcmVhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9mbG93LWNoYXJ0LWNyZWF0b3IvZmxvdy1jaGFydC1jcmVhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEZsb3dDaGFydFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9mbG93LWNoYXJ0LXJlbmRlcmVyL2Zsb3ctY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYRmxvd0NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9mbG93LWNoYXJ0LmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtBWEZsb3dDaGFydFJlbmRlcmVyQ29tcG9uZW50LCBBWEZsb3dDaGFydENyZWF0b3JDb21wb25lbnQsIEFYRmxvd0NoYXJ0Q29tcG9uZW50XTtcbmNvbnN0IE1PRFVMRVMgPSBbQ29tbW9uTW9kdWxlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLk1PRFVMRVMsIC4uLkNPTVBPTkVOVF0sXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWEZsb3dDaGFydE1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZmxvdy1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmxvdy1jaGFydC9zcmMvYWNvcmV4LWNvbXBvbmVudHMtZmxvdy1jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-flow-chart.mjs","sources":["../tmp-esm2022/flow-chart/lib/flow-chart.service.js","../tmp-esm2022/flow-chart/lib/flow-chart-creator/flow-chart-creator.component.js","../tmp-esm2022/flow-chart/lib/flow-chart-renderer/flow-chart-renderer.component.js","../tmp-esm2022/flow-chart/lib/flow-chart.component.js","../tmp-esm2022/flow-chart/lib/flow-chart.module.js","../tmp-esm2022/flow-chart/acorex-components-flow-chart.js"],"sourcesContent":["import { effect, inject, Injectable, NgZone, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXFlowChartService {\n constructor() {\n this.zone = inject(NgZone);\n this.initialFlowChartEdge = signal([], ...(ngDevMode ? [{ debugName: \"initialFlowChartEdge\" }] : []));\n this.initialFlowChartNode = signal([], ...(ngDevMode ? [{ debugName: \"initialFlowChartNode\" }] : []));\n this.selectedNode = signal(null, ...(ngDevMode ? [{ debugName: \"selectedNode\" }] : []));\n this.selectedEdge = signal(null, ...(ngDevMode ? [{ debugName: \"selectedEdge\" }] : []));\n this.svgService = signal(null, ...(ngDevMode ? [{ debugName: \"svgService\" }] : []));\n this.canvasService = signal(null, ...(ngDevMode ? [{ debugName: \"canvasService\" }] : []));\n this.lineClick = new Subject();\n this.lineDbClick = new Subject();\n this.nodeClick = new Subject();\n this.nodeDbClick = new Subject();\n this.onEdgeUpdate = new Subject();\n this.onNodeUpdate = new Subject();\n this.nodesMap = new Map();\n this.eventListeners = new Map();\n this.anchorClickBuffer = null;\n this.currentConnection = null;\n this.draggingConnection = false;\n this.tempLine = null;\n this.#eff2 = effect(() => {\n if (this.initialFlowChartEdge()) {\n setTimeout(() => {\n this.drawEdges(this.initialFlowChartEdge());\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#eff2\" }] : []));\n this.#eff3 = effect(() => {\n if (this.initialFlowChartNode()) {\n this.createNode(this.initialFlowChartNode());\n }\n }, ...(ngDevMode ? [{ debugName: \"#eff3\" }] : []));\n }\n #eff2;\n #eff3;\n addEventListener(element, event, handler) {\n const elementId = element.dataset['id'] || 'global';\n if (!this.eventListeners.has(elementId)) {\n this.eventListeners.set(elementId, new Map());\n }\n const elementListeners = this.eventListeners.get(elementId);\n if (elementListeners) {\n const boundHandler = handler.bind(this);\n elementListeners.set(event, boundHandler);\n element.addEventListener(event, boundHandler);\n }\n }\n removeEventListeners(elementId) {\n const elementListeners = this.eventListeners.get(elementId);\n if (elementListeners) {\n elementListeners.forEach((handler, event) => {\n const element = this.nodesMap.get(elementId);\n if (element) {\n element.removeEventListener(event, handler);\n }\n });\n this.eventListeners.delete(elementId);\n }\n }\n setupNodeEventListeners(el, node) {\n this.addEventListener(el, 'click', (e) => {\n this.nodeClick.next({ target: el, event: e });\n this.selectedNode.set(node);\n el.classList.add('selected');\n this.nodesMap.forEach((existingNode) => {\n if (existingNode !== el) {\n existingNode.classList.remove('selected');\n }\n });\n });\n this.addEventListener(el, 'dblclick', (e) => {\n this.nodeDbClick.next({ target: el, event: e });\n });\n this.addEventListener(el, 'mouseenter', () => {\n el.classList.add('hover');\n });\n this.addEventListener(el, 'mouseleave', () => {\n el.classList.remove('hover');\n });\n }\n setupAnchorEventListeners(dot, el) {\n // start drag to connect\n this.addEventListener(dot, 'mousedown', (e) => {\n const mouseEvent = e;\n mouseEvent.stopPropagation();\n mouseEvent.preventDefault();\n const pos = this.getAnchorPoint(el, dot.dataset['anchor']);\n this.currentConnection = {\n source: {\n id: dot.dataset['nodeId'],\n anchor: dot.dataset['anchor'],\n },\n mouse: { x: mouseEvent.clientX, y: mouseEvent.clientY },\n };\n this.startTempLine(pos.x, pos.y);\n this.draggingConnection = true;\n });\n this.addEventListener(dot, 'click', (e) => {\n e.stopPropagation();\n if (dot.classList.contains('selected')) {\n dot.classList.remove('selected');\n }\n else {\n dot.classList.add('selected');\n }\n const clicked = {\n nodeId: dot.dataset['nodeId'],\n anchor: dot.dataset['anchor'],\n };\n console.log(clicked);\n if (!this.anchorClickBuffer) {\n this.anchorClickBuffer = clicked;\n }\n else {\n const source = this.anchorClickBuffer;\n const target = clicked;\n if (source.nodeId !== target.nodeId) {\n this.pushAndCreateEdgeData({ id: source.nodeId, anchor: source.anchor }, { id: target.nodeId, anchor: target.anchor });\n }\n this.anchorClickBuffer = null;\n }\n });\n this.addEventListener(dot, 'mouseenter', () => {\n dot.classList.add('hover');\n });\n this.addEventListener(dot, 'mouseleave', () => {\n dot.classList.remove('hover');\n });\n }\n addAnchors(el, type) {\n ['top', 'bottom', 'left', 'right'].forEach((anchor) => {\n const dot = document.createElement('div');\n dot.className = 'ax-flow-chart-anchor';\n dot.dataset['anchor'] = anchor;\n dot.dataset['nodeId'] = el.dataset['id'];\n this.positionAnchor(dot, anchor, type);\n el.appendChild(dot);\n this.setupAnchorEventListeners(dot, el);\n });\n }\n makeDraggable(el) {\n let offsetX = 0, offsetY = 0, isDragging = false;\n this.addEventListener(el, 'mousedown', (e) => {\n const mouseEvent = e;\n if (mouseEvent.target.classList.contains('ax-flow-chart-anchor'))\n return;\n isDragging = true;\n offsetX = mouseEvent.clientX - el.offsetLeft;\n offsetY = mouseEvent.clientY - el.offsetTop;\n mouseEvent.preventDefault();\n });\n const mousemoveHandler = (e) => {\n if (isDragging) {\n el.style.left = e.clientX - offsetX + 'px';\n el.style.top = e.clientY - offsetY + 'px';\n this.drawEdges(this.initialFlowChartEdge());\n this.initialFlowChartNode.update((value) => {\n const node = value.find((node) => node.id === el.dataset['id']);\n if (node) {\n node.x = e.clientX - offsetX;\n node.y = e.clientY - offsetY;\n }\n return value;\n });\n }\n const elementId = e.target.id;\n if (elementId === 'ax-flow-chart-renderer-connections' || elementId === 'ax-flow-chart-renderer-canvas') {\n if (this.draggingConnection && this.tempLine) {\n this.tempLine.setAttribute('x2', e.offsetX.toString());\n this.tempLine.setAttribute('y2', e.offsetY.toString());\n }\n }\n };\n const mouseupHandler = (e) => {\n isDragging = false;\n if (this.draggingConnection) {\n const target = e.target.closest('.ax-flow-chart-anchor');\n if (target && target.dataset['nodeId'] !== this.currentConnection?.source?.id) {\n this.currentConnection = {\n ...this.currentConnection,\n target: {\n id: target.dataset['nodeId'],\n anchor: target.dataset['anchor'],\n },\n };\n this.finishConnection();\n }\n this.clearTempLine();\n this.draggingConnection = false;\n }\n };\n // Add global event listeners\n this.zone.runOutsideAngular(() => {\n document.addEventListener('mousemove', mousemoveHandler);\n document.addEventListener('mouseup', mouseupHandler);\n });\n // Store global listeners\n const globalListeners = this.eventListeners.get('global');\n if (globalListeners) {\n globalListeners.set('mousemove', mousemoveHandler);\n globalListeners.set('mouseup', mouseupHandler);\n }\n }\n positionAnchor(dot, anchor, type) {\n if (type !== 'diamond') {\n switch (anchor) {\n case 'top':\n dot.style.top = '0%';\n dot.style.left = '50%';\n break;\n case 'bottom':\n dot.style.top = '100%';\n dot.style.left = '50%';\n break;\n case 'left':\n dot.style.top = '50%';\n dot.style.left = '0%';\n break;\n case 'right':\n dot.style.top = '50%';\n dot.style.left = '100%';\n break;\n }\n }\n else {\n switch (anchor) {\n case 'top':\n dot.style.top = '0%';\n dot.style.left = '0%';\n break;\n case 'bottom':\n dot.style.top = '100%';\n dot.style.left = '100%';\n break;\n case 'left':\n dot.style.top = '100%';\n dot.style.left = '0%';\n break;\n case 'right':\n dot.style.top = '0%';\n dot.style.left = '100%';\n break;\n }\n }\n }\n getAnchorPoint(el, anchor) {\n const rect = el.getBoundingClientRect();\n const centerX = el.offsetLeft + rect.width / 2;\n const centerY = el.offsetTop + rect.height / 2;\n switch (anchor) {\n case 'top':\n return { x: centerX, y: el.offsetTop };\n case 'bottom':\n return { x: centerX, y: el.offsetTop + rect.height };\n case 'left':\n return { x: el.offsetLeft, y: centerY };\n case 'right':\n return { x: el.offsetLeft + rect.width, y: centerY };\n default:\n return { x: centerX, y: centerY };\n }\n }\n startTempLine(x, y) {\n const svgElement = this.svgService()?.nativeElement;\n if (!svgElement)\n return;\n this.tempLine = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n this.tempLine.setAttribute('x1', x.toString());\n this.tempLine.setAttribute('y1', y.toString());\n this.tempLine.setAttribute('x2', x.toString());\n this.tempLine.setAttribute('y2', y.toString());\n this.tempLine.setAttribute('stroke', 'rgba(var(--ax-sys-color-on-lightest-surface),0.5)');\n this.tempLine.setAttribute('stroke-width', '2');\n this.tempLine.setAttribute('stroke-dasharray', '4');\n svgElement.appendChild(this.tempLine);\n }\n clearTempLine() {\n if (this.tempLine && this.tempLine.parentElement) {\n this.svgService()?.nativeElement.removeChild(this.tempLine);\n this.tempLine = null;\n }\n }\n pushAndCreateEdgeData(source, target) {\n const newEdge = {\n id: `edge-${Math.random().toString()}`,\n source,\n target,\n };\n this.onEdgeUpdate.next(newEdge);\n this.initialFlowChartEdge.update((value) => [...value, newEdge]);\n this.drawEdges();\n }\n drawEdges(edges) {\n const svg = this.svgService()?.nativeElement;\n if (!svg)\n return;\n // Clear existing edges\n svg.innerHTML = '';\n // Use provided edges or get from signal\n const edgesToDraw = edges || this.initialFlowChartEdge();\n edgesToDraw.forEach((edge) => {\n const sourceNode = this.nodesMap.get(edge.source.id);\n const targetNode = this.nodesMap.get(edge.target.id);\n if (sourceNode) {\n const sourceAnchor = sourceNode.querySelector(`[data-anchor=\"${edge.source.anchor}\"]`);\n if (sourceAnchor)\n sourceAnchor.classList.add('selected');\n }\n if (targetNode) {\n const targetAnchor = targetNode.querySelector(`[data-anchor=\"${edge.target.anchor}\"]`);\n if (targetAnchor)\n targetAnchor.classList.add('selected');\n }\n if (sourceNode && targetNode) {\n const sourcePoint = this.getAnchorPoint(sourceNode, edge.source.anchor);\n const targetPoint = this.getAnchorPoint(targetNode, edge.target.anchor);\n const line = this.createLine(sourcePoint, targetPoint, edge);\n line.classList.add('ax-flow-chart-line');\n // Add click event listener for line selection\n this.addEventListener(line, 'click', (e) => {\n e.stopPropagation();\n this.lineClick.next({ target: edge, event: e });\n this.selectedEdge.set(edge);\n this.selectedNode.set(null);\n // Remove selection from all other lines\n document.querySelectorAll('.ax-flow-chart-line').forEach((l) => {\n if (l !== line)\n l.classList.remove('selected');\n });\n // Add selection to clicked line\n line.classList.add('selected');\n // Remove selection from all nodes\n this.nodesMap.forEach((node) => node.classList.remove('selected'));\n });\n svg.appendChild(line);\n }\n });\n }\n createLine(from, to, edge) {\n const line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n line.setAttribute('x1', from.x.toString());\n line.setAttribute('y1', from.y.toString());\n line.setAttribute('x2', to.x.toString());\n line.setAttribute('y2', to.y.toString());\n line.setAttribute('stroke', 'rgba(var(--ax-sys-color-on-surface))');\n line.setAttribute('stroke-width', '3');\n line.classList.add('ax-flow-chart-line');\n line.addEventListener('click', (e) => {\n this.lineClick.next({ target: edge, event: e });\n this.selectedEdge.set(edge);\n });\n line.addEventListener('dblclick', (e) => {\n this.lineDbClick.next({ target: edge, event: e });\n });\n return line;\n }\n finishConnection() {\n if (this.currentConnection?.source && this.currentConnection?.target) {\n this.pushAndCreateEdgeData(this.currentConnection.source, this.currentConnection.target);\n }\n this.currentConnection = null;\n }\n removeEdge(edge) {\n this.initialFlowChartEdge.update((value) => value.filter((e) => e.id !== edge.id));\n // Remove selected class from connected anchors\n const sourceNode = this.nodesMap.get(edge.source.id);\n const targetNode = this.nodesMap.get(edge.target.id);\n if (sourceNode) {\n const sourceAnchor = sourceNode.querySelector(`[data-anchor=\"${edge.source.anchor}\"]`);\n if (sourceAnchor)\n sourceAnchor.classList.remove('selected');\n }\n if (targetNode) {\n const targetAnchor = targetNode.querySelector(`[data-anchor=\"${edge.target.anchor}\"]`);\n if (targetAnchor)\n targetAnchor.classList.remove('selected');\n }\n }\n createNode(nodes) {\n document.querySelectorAll('.ax-flow-chart-node')?.forEach((node) => node.remove());\n nodes.forEach((node) => {\n const el = document.createElement('div');\n const p = document.createElement('p');\n p.innerText = node.label;\n el.appendChild(p);\n el.className = 'ax-flow-chart-node';\n el.classList.add(`ax-${node.type}`);\n el.style.left = node.x + 'px';\n el.style.top = node.y + 'px';\n el.dataset['id'] = node.id;\n this.addAnchors(el, node.type);\n this.makeDraggable(el);\n this.setupNodeEventListeners(el, node);\n this.canvasService().nativeElement.appendChild(el);\n this.nodesMap.set(node.id, el);\n });\n }\n removeNode(nodeId) {\n this.initialFlowChartNode.update((value) => value.filter((e) => e.id !== nodeId));\n this.initialFlowChartEdge().forEach((edge) => {\n if (edge.source.id === nodeId || edge.target.id === nodeId) {\n this.removeEdge(edge);\n }\n });\n document.querySelector(`[data-id=\"${nodeId}\"]`)?.remove();\n this.anchorClickBuffer = null;\n }\n cleanup() {\n this.nodesMap.forEach((_, id) => this.removeEventListeners(id));\n this.nodesMap.clear();\n this.eventListeners.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9mbG93LWNoYXJ0L3NyYy9saWIvZmxvdy1jaGFydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBVS9CLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFVSxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxFQUFFLGdFQUFDLENBQUM7UUFDbEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLEVBQUUsZ0VBQUMsQ0FBQztRQUNsQyxpQkFBWSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSx3REFBQyxDQUFDO1FBQ3JELGlCQUFZLEdBQUcsTUFBTSxDQUEwQixJQUFJLHdEQUFDLENBQUM7UUFDNUMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLHNEQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSx5REFBQyxDQUFDO1FBRTdCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBQzlDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBQzlDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUFDL0MsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUVoRCxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFDckQsbUJB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LENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQTdkVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVmZmVjdCwgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVhGbG93Q2hhcnRFZGdlcyxcbiAgQVhGbG93Q2hhcnROb2RlcyxcbiAgQVhMaW5lQ2xpY2tFdmVudCxcbiAgQVhOb2RlQ2xpY2tFdmVudCxcbiAgSFRNTEVsZW1lbnRXaXRoRGF0YXNldCxcbn0gZnJvbSAnLi9mbG93LWNoYXJ0LnR5cGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGbG93Q2hhcnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgaW5pdGlhbEZsb3dDaGFydEVkZ2UgPSBzaWduYWwoW10pO1xuICBpbml0aWFsRmxvd0NoYXJ0Tm9kZSA9IHNpZ25hbChbXSk7XG4gIHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWEZsb3dDaGFydE5vZGVzIHwgbnVsbD4obnVsbCk7XG4gIHNlbGVjdGVkRWRnZSA9IHNpZ25hbDxBWEZsb3dDaGFydEVkZ2VzIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHN2Z1NlcnZpY2UgPSBzaWduYWwobnVsbCk7XG4gIHJlYWRvbmx5IGNhbnZhc1NlcnZpY2UgPSBzaWduYWwobnVsbCk7XG5cbiAgcmVhZG9ubHkgbGluZUNsaWNrID0gbmV3IFN1YmplY3Q8QVhMaW5lQ2xpY2tFdmVudD4oKTtcbiAgcmVhZG9ubHkgbGluZURiQ2xpY2sgPSBuZXcgU3ViamVjdDxBWExpbmVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBub2RlQ2xpY2sgPSBuZXcgU3ViamVjdDxBWE5vZGVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBub2RlRGJDbGljayA9IG5ldyBTdWJqZWN0PEFYTm9kZUNsaWNrRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG9uRWRnZVVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYRmxvd0NoYXJ0RWRnZXM+KCk7XG4gIHJlYWRvbmx5IG9uTm9kZVVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYRmxvd0NoYXJ0Tm9kZXM+KCk7XG5cbiAgcHJpdmF0ZSBub2Rlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBIVE1MRWxlbWVudFdpdGhEYXRhc2V0PigpO1xuICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEV2ZW50TGlzdGVuZXI+PigpO1xuICBwcml2YXRlIGFuY2hvckNsaWNrQnVmZmVyOiB7IG5vZGVJZDogc3RyaW5nOyBhbmNob3I6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjdXJyZW50Q29ubmVjdGlvbjoge1xuICAgIHNvdXJjZT86IHsgaWQ6IHN0cmluZzsgYW5jaG9yOiBzdHJpbmcgfTtcbiAgICB0YXJnZXQ/OiB7IGlkOiBzdHJpbmc7IGFuY2hvcjogc3RyaW5nIH07XG4gICAgbW91c2U/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG4gIH0gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBkcmFnZ2luZ0Nvbm5lY3Rpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB0ZW1wTGluZTogU1ZHTGluZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAjZWZmMiA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhd0VkZ2VzKHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gICNlZmYzID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsRmxvd0NoYXJ0Tm9kZSgpKSB7XG4gICAgICB0aGlzLmNyZWF0ZU5vZGUodGhpcy5pbml0aWFsRmxvd0NoYXJ0Tm9kZSgpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXZlbnQ6IHN0cmluZywgaGFuZGxlcjogRXZlbnRMaXN0ZW5lcikge1xuICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsZW1lbnQuZGF0YXNldFsnaWQnXSB8fCAnZ2xvYmFsJztcbiAgICBpZiAoIXRoaXMuZXZlbnRMaXN0ZW5lcnMuaGFzKGVsZW1lbnRJZCkpIHtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuc2V0KGVsZW1lbnRJZCwgbmV3IE1hcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50TGlzdGVuZXJzID0gdGhpcy5ldmVudExpc3RlbmVycy5nZXQoZWxlbWVudElkKTtcbiAgICBpZiAoZWxlbWVudExpc3RlbmVycykge1xuICAgICAgY29uc3QgYm91bmRIYW5kbGVyID0gaGFuZGxlci5iaW5kKHRoaXMpO1xuICAgICAgZWxlbWVudExpc3RlbmVycy5zZXQoZXZlbnQsIGJvdW5kSGFuZGxlcik7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGJvdW5kSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycyhlbGVtZW50SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGVsZW1lbnRMaXN0ZW5lcnMgPSB0aGlzLmV2ZW50TGlzdGVuZXJzLmdldChlbGVtZW50SWQpO1xuICAgIGlmIChlbGVtZW50TGlzdGVuZXJzKSB7XG4gICAgICBlbGVtZW50TGlzdGVuZXJzLmZvckVhY2goKGhhbmRsZXIsIGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm5vZGVzTWFwLmdldChlbGVtZW50SWQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5kZWxldGUoZWxlbWVudElkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwTm9kZUV2ZW50TGlzdGVuZXJzKFxuICAgIGVsOiBIVE1MRWxlbWVudFdpdGhEYXRhc2V0LFxuICAgIG5vZGU6IHsgaWQ6IHN0cmluZzsgdHlwZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuICApIHtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZWwsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5ub2RlQ2xpY2submV4dCh7IHRhcmdldDogZWwsIGV2ZW50OiBlIGFzIE1vdXNlRXZlbnQgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQobm9kZSk7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgdGhpcy5ub2Rlc01hcC5mb3JFYWNoKChleGlzdGluZ05vZGUpID0+IHtcbiAgICAgICAgaWYgKGV4aXN0aW5nTm9kZSAhPT0gZWwpIHtcbiAgICAgICAgICBleGlzdGluZ05vZGUuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZWwsICdkYmxjbGljaycsIChlOiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5ub2RlRGJDbGljay5uZXh0KHsgdGFyZ2V0OiBlbCwgZXZlbnQ6IGUgYXMgTW91c2VFdmVudCB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKCdob3ZlcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGVsLCAnbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hvdmVyJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQW5jaG9yRXZlbnRMaXN0ZW5lcnMoZG90OiBIVE1MRWxlbWVudFdpdGhEYXRhc2V0LCBlbDogSFRNTEVsZW1lbnRXaXRoRGF0YXNldCkge1xuICAgIC8vIHN0YXJ0IGRyYWcgdG8gY29ubmVjdFxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihkb3QsICdtb3VzZWRvd24nLCAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBlIGFzIE1vdXNlRXZlbnQ7XG4gICAgICBtb3VzZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgcG9zID0gdGhpcy5nZXRBbmNob3JQb2ludChlbCwgZG90LmRhdGFzZXRbJ2FuY2hvciddKTtcblxuICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IHtcbiAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgaWQ6IGRvdC5kYXRhc2V0Wydub2RlSWQnXSxcbiAgICAgICAgICBhbmNob3I6IGRvdC5kYXRhc2V0WydhbmNob3InXSxcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2U6IHsgeDogbW91c2VFdmVudC5jbGllbnRYLCB5OiBtb3VzZUV2ZW50LmNsaWVudFkgfSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc3RhcnRUZW1wTGluZShwb3MueCwgcG9zLnkpO1xuICAgICAgdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb24gPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGRvdCwgJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAoZG90LmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0ZWQnKSkge1xuICAgICAgICBkb3QuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvdC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjbGlja2VkID0ge1xuICAgICAgICBub2RlSWQ6IGRvdC5kYXRhc2V0Wydub2RlSWQnXSxcbiAgICAgICAgYW5jaG9yOiBkb3QuZGF0YXNldFsnYW5jaG9yJ10sXG4gICAgICB9O1xuXG4gICAgICBjb25zb2xlLmxvZyhjbGlja2VkKTtcblxuICAgICAgaWYgKCF0aGlzLmFuY2hvckNsaWNrQnVmZmVyKSB7XG4gICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tCdWZmZXIgPSBjbGlja2VkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5hbmNob3JDbGlja0J1ZmZlcjtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gY2xpY2tlZDtcblxuICAgICAgICBpZiAoc291cmNlLm5vZGVJZCAhPT0gdGFyZ2V0Lm5vZGVJZCkge1xuICAgICAgICAgIHRoaXMucHVzaEFuZENyZWF0ZUVkZ2VEYXRhKFxuICAgICAgICAgICAgeyBpZDogc291cmNlLm5vZGVJZCwgYW5jaG9yOiBzb3VyY2UuYW5jaG9yIH0sXG4gICAgICAgICAgICB7IGlkOiB0YXJnZXQubm9kZUlkLCBhbmNob3I6IHRhcmdldC5hbmNob3IgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmNob3JDbGlja0J1ZmZlciA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZG90LCAnbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgIGRvdC5jbGFzc0xpc3QuYWRkKCdob3ZlcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGRvdCwgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICBkb3QuY2xhc3NMaXN0LnJlbW92ZSgnaG92ZXInKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQW5jaG9ycyhlbDogSFRNTEVsZW1lbnRXaXRoRGF0YXNldCwgdHlwZTogc3RyaW5nKSB7XG4gICAgWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXS5mb3JFYWNoKChhbmNob3IpID0+IHtcbiAgICAgIGNvbnN0IGRvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIGFzIEhUTUxFbGVtZW50V2l0aERhdGFzZXQ7XG4gICAgICBkb3QuY2xhc3NOYW1lID0gJ2F4LWZsb3ctY2hhcnQtYW5jaG9yJztcbiAgICAgIGRvdC5kYXRhc2V0WydhbmNob3InXSA9IGFuY2hvcjtcbiAgICAgIGRvdC5kYXRhc2V0Wydub2RlSWQnXSA9IGVsLmRhdGFzZXRbJ2lkJ107XG5cbiAgICAgIHRoaXMucG9zaXRpb25BbmNob3IoZG90LCBhbmNob3IsIHR5cGUpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQoZG90KTtcblxuICAgICAgdGhpcy5zZXR1cEFuY2hvckV2ZW50TGlzdGVuZXJzKGRvdCwgZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYWtlRHJhZ2dhYmxlKGVsOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBvZmZzZXRYID0gMCxcbiAgICAgIG9mZnNldFkgPSAwLFxuICAgICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGVsLCAnbW91c2Vkb3duJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBtb3VzZUV2ZW50ID0gZSBhcyBNb3VzZUV2ZW50O1xuICAgICAgaWYgKChtb3VzZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdheC1mbG93LWNoYXJ0LWFuY2hvcicpKSByZXR1cm47XG4gICAgICBpc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIG9mZnNldFggPSBtb3VzZUV2ZW50LmNsaWVudFggLSBlbC5vZmZzZXRMZWZ0O1xuICAgICAgb2Zmc2V0WSA9IG1vdXNlRXZlbnQuY2xpZW50WSAtIGVsLm9mZnNldFRvcDtcbiAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG1vdXNlbW92ZUhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgZWwuc3R5bGUubGVmdCA9IGUuY2xpZW50WCAtIG9mZnNldFggKyAncHgnO1xuICAgICAgICBlbC5zdHlsZS50b3AgPSBlLmNsaWVudFkgLSBvZmZzZXRZICsgJ3B4JztcbiAgICAgICAgdGhpcy5kcmF3RWRnZXModGhpcy5pbml0aWFsRmxvd0NoYXJ0RWRnZSgpKTtcblxuICAgICAgICB0aGlzLmluaXRpYWxGbG93Q2hhcnROb2RlLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlID0gdmFsdWUuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gZWwuZGF0YXNldFsnaWQnXSk7XG4gICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUueCA9IGUuY2xpZW50WCAtIG9mZnNldFg7XG4gICAgICAgICAgICBub2RlLnkgPSBlLmNsaWVudFkgLSBvZmZzZXRZO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbGVtZW50SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlkO1xuICAgICAgaWYgKGVsZW1lbnRJZCA9PT0gJ2F4LWZsb3ctY2hhcnQtcmVuZGVyZXItY29ubmVjdGlvbnMnIHx8IGVsZW1lbnRJZCA9PT0gJ2F4LWZsb3ctY2hhcnQtcmVuZGVyZXItY2FudmFzJykge1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb24gJiYgdGhpcy50ZW1wTGluZSkge1xuICAgICAgICAgIHRoaXMudGVtcExpbmUuc2V0QXR0cmlidXRlKCd4MicsIGUub2Zmc2V0WC50b1N0cmluZygpKTtcbiAgICAgICAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgneTInLCBlLm9mZnNldFkudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgbW91c2V1cEhhbmRsZXIgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LWZsb3ctY2hhcnQtYW5jaG9yJykgYXMgSFRNTEVsZW1lbnRXaXRoRGF0YXNldDtcbiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZGF0YXNldFsnbm9kZUlkJ10gIT09IHRoaXMuY3VycmVudENvbm5lY3Rpb24/LnNvdXJjZT8uaWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5jdXJyZW50Q29ubmVjdGlvbixcbiAgICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgICBpZDogdGFyZ2V0LmRhdGFzZXRbJ25vZGVJZCddLFxuICAgICAgICAgICAgICBhbmNob3I6IHRhcmdldC5kYXRhc2V0WydhbmNob3InXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmZpbmlzaENvbm5lY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyVGVtcExpbmUoKTtcbiAgICAgICAgdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQWRkIGdsb2JhbCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlSGFuZGxlcik7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2V1cEhhbmRsZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgZ2xvYmFsIGxpc3RlbmVyc1xuICAgIGNvbnN0IGdsb2JhbExpc3RlbmVycyA9IHRoaXMuZXZlbnRMaXN0ZW5lcnMuZ2V0KCdnbG9iYWwnKTtcbiAgICBpZiAoZ2xvYmFsTGlzdGVuZXJzKSB7XG4gICAgICBnbG9iYWxMaXN0ZW5lcnMuc2V0KCdtb3VzZW1vdmUnLCBtb3VzZW1vdmVIYW5kbGVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgICAgZ2xvYmFsTGlzdGVuZXJzLnNldCgnbW91c2V1cCcsIG1vdXNldXBIYW5kbGVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25BbmNob3IoZG90OiBIVE1MRWxlbWVudCwgYW5jaG9yOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlICE9PSAnZGlhbW9uZCcpIHtcbiAgICAgIHN3aXRjaCAoYW5jaG9yKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgZG90LnN0eWxlLnRvcCA9ICcwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnNTAlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBkb3Quc3R5bGUudG9wID0gJzEwMCUnO1xuICAgICAgICAgIGRvdC5zdHlsZS5sZWZ0ID0gJzUwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGRvdC5zdHlsZS50b3AgPSAnNTAlJztcbiAgICAgICAgICBkb3Quc3R5bGUubGVmdCA9ICcwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBkb3Quc3R5bGUudG9wID0gJzUwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMTAwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYW5jaG9yKSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgZG90LnN0eWxlLnRvcCA9ICcwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMCUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIGRvdC5zdHlsZS50b3AgPSAnMTAwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMTAwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGRvdC5zdHlsZS50b3AgPSAnMTAwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMCUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgZG90LnN0eWxlLnRvcCA9ICcwJSc7XG4gICAgICAgICAgZG90LnN0eWxlLmxlZnQgPSAnMTAwJSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbmNob3JQb2ludChlbDogSFRNTEVsZW1lbnQsIGFuY2hvcjogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcbiAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY2VudGVyWCA9IGVsLm9mZnNldExlZnQgKyByZWN0LndpZHRoIC8gMjtcbiAgICBjb25zdCBjZW50ZXJZID0gZWwub2Zmc2V0VG9wICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgc3dpdGNoIChhbmNob3IpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiB7IHg6IGNlbnRlclgsIHk6IGVsLm9mZnNldFRvcCB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHsgeDogY2VudGVyWCwgeTogZWwub2Zmc2V0VG9wICsgcmVjdC5oZWlnaHQgfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiBlbC5vZmZzZXRMZWZ0LCB5OiBjZW50ZXJZIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7IHg6IGVsLm9mZnNldExlZnQgKyByZWN0LndpZHRoLCB5OiBjZW50ZXJZIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyB4OiBjZW50ZXJYLCB5OiBjZW50ZXJZIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFRlbXBMaW5lKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgY29uc3Qgc3ZnRWxlbWVudCA9IHRoaXMuc3ZnU2VydmljZSgpPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKCFzdmdFbGVtZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnRlbXBMaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdsaW5lJyk7XG4gICAgdGhpcy50ZW1wTGluZS5zZXRBdHRyaWJ1dGUoJ3gxJywgeC50b1N0cmluZygpKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgneTEnLCB5LnRvU3RyaW5nKCkpO1xuICAgIHRoaXMudGVtcExpbmUuc2V0QXR0cmlidXRlKCd4MicsIHgudG9TdHJpbmcoKSk7XG4gICAgdGhpcy50ZW1wTGluZS5zZXRBdHRyaWJ1dGUoJ3kyJywgeS50b1N0cmluZygpKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3JnYmEodmFyKC0tYXgtc3lzLWNvbG9yLW9uLWxpZ2h0ZXN0LXN1cmZhY2UpLDAuNSknKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzInKTtcbiAgICB0aGlzLnRlbXBMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsICc0Jyk7XG4gICAgc3ZnRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRlbXBMaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJUZW1wTGluZSgpIHtcbiAgICBpZiAodGhpcy50ZW1wTGluZSAmJiB0aGlzLnRlbXBMaW5lLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc3ZnU2VydmljZSgpPy5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudGVtcExpbmUpO1xuICAgICAgdGhpcy50ZW1wTGluZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQW5kQ3JlYXRlRWRnZURhdGEoc291cmNlOiB7IGlkOiBzdHJpbmc7IGFuY2hvcjogc3RyaW5nIH0sIHRhcmdldDogeyBpZDogc3RyaW5nOyBhbmNob3I6IHN0cmluZyB9KSB7XG4gICAgY29uc3QgbmV3RWRnZSA9IHtcbiAgICAgIGlkOiBgZWRnZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoKX1gLFxuICAgICAgc291cmNlLFxuICAgICAgdGFyZ2V0LFxuICAgIH07XG5cbiAgICB0aGlzLm9uRWRnZVVwZGF0ZS5uZXh0KG5ld0VkZ2UpO1xuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBuZXdFZGdlXSk7XG4gICAgdGhpcy5kcmF3RWRnZXMoKTtcbiAgfVxuXG4gIGRyYXdFZGdlcyhlZGdlcz86IEFYRmxvd0NoYXJ0RWRnZXNbXSkge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnU2VydmljZSgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghc3ZnKSByZXR1cm47XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyBlZGdlc1xuICAgIHN2Zy5pbm5lckhUTUwgPSAnJztcblxuICAgIC8vIFVzZSBwcm92aWRlZCBlZGdlcyBvciBnZXQgZnJvbSBzaWduYWxcbiAgICBjb25zdCBlZGdlc1RvRHJhdyA9IGVkZ2VzIHx8IHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKTtcblxuICAgIGVkZ2VzVG9EcmF3LmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLm5vZGVzTWFwLmdldChlZGdlLnNvdXJjZS5pZCk7XG4gICAgICBjb25zdCB0YXJnZXROb2RlID0gdGhpcy5ub2Rlc01hcC5nZXQoZWRnZS50YXJnZXQuaWQpO1xuXG4gICAgICBpZiAoc291cmNlTm9kZSkge1xuICAgICAgICBjb25zdCBzb3VyY2VBbmNob3IgPSBzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFuY2hvcj1cIiR7ZWRnZS5zb3VyY2UuYW5jaG9yfVwiXWApO1xuICAgICAgICBpZiAoc291cmNlQW5jaG9yKSBzb3VyY2VBbmNob3IuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGUucXVlcnlTZWxlY3RvcihgW2RhdGEtYW5jaG9yPVwiJHtlZGdlLnRhcmdldC5hbmNob3J9XCJdYCk7XG4gICAgICAgIGlmICh0YXJnZXRBbmNob3IpIHRhcmdldEFuY2hvci5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlTm9kZSAmJiB0YXJnZXROb2RlKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gdGhpcy5nZXRBbmNob3JQb2ludChzb3VyY2VOb2RlLCBlZGdlLnNvdXJjZS5hbmNob3IpO1xuICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRoaXMuZ2V0QW5jaG9yUG9pbnQodGFyZ2V0Tm9kZSwgZWRnZS50YXJnZXQuYW5jaG9yKTtcblxuICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5jcmVhdGVMaW5lKHNvdXJjZVBvaW50LCB0YXJnZXRQb2ludCwgZWRnZSk7XG4gICAgICAgIGxpbmUuY2xhc3NMaXN0LmFkZCgnYXgtZmxvdy1jaGFydC1saW5lJyk7XG5cbiAgICAgICAgLy8gQWRkIGNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBsaW5lIHNlbGVjdGlvblxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIobGluZSBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50LCAnY2xpY2snLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMubGluZUNsaWNrLm5leHQoeyB0YXJnZXQ6IGVkZ2UsIGV2ZW50OiBlIGFzIE1vdXNlRXZlbnQgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVkZ2Uuc2V0KGVkZ2UpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChudWxsKTtcbiAgICAgICAgICAvLyBSZW1vdmUgc2VsZWN0aW9uIGZyb20gYWxsIG90aGVyIGxpbmVzXG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbGluZScpLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICAgIGlmIChsICE9PSBsaW5lKSBsLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gQWRkIHNlbGVjdGlvbiB0byBjbGlja2VkIGxpbmVcbiAgICAgICAgICBsaW5lLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgLy8gUmVtb3ZlIHNlbGVjdGlvbiBmcm9tIGFsbCBub2Rlc1xuICAgICAgICAgIHRoaXMubm9kZXNNYXAuZm9yRWFjaCgobm9kZSkgPT4gbm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3ZnLmFwcGVuZENoaWxkKGxpbmUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlTGluZShmcm9tOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sIHRvOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sIGVkZ2U6IEFYRmxvd0NoYXJ0RWRnZXMpIHtcbiAgICBjb25zdCBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdsaW5lJyk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3gxJywgZnJvbS54LnRvU3RyaW5nKCkpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCd5MScsIGZyb20ueS50b1N0cmluZygpKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgneDInLCB0by54LnRvU3RyaW5nKCkpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCd5MicsIHRvLnkudG9TdHJpbmcoKSk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICdyZ2JhKHZhcigtLWF4LXN5cy1jb2xvci1vbi1zdXJmYWNlKSknKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzMnKTtcbiAgICBsaW5lLmNsYXNzTGlzdC5hZGQoJ2F4LWZsb3ctY2hhcnQtbGluZScpO1xuICAgIGxpbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy5saW5lQ2xpY2submV4dCh7IHRhcmdldDogZWRnZSwgZXZlbnQ6IGUgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRWRnZS5zZXQoZWRnZSk7XG4gICAgfSk7XG4gICAgbGluZS5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmxpbmVEYkNsaWNrLm5leHQoeyB0YXJnZXQ6IGVkZ2UsIGV2ZW50OiBlIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBsaW5lO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5pc2hDb25uZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRDb25uZWN0aW9uPy5zb3VyY2UgJiYgdGhpcy5jdXJyZW50Q29ubmVjdGlvbj8udGFyZ2V0KSB7XG4gICAgICB0aGlzLnB1c2hBbmRDcmVhdGVFZGdlRGF0YSh0aGlzLmN1cnJlbnRDb25uZWN0aW9uLnNvdXJjZSwgdGhpcy5jdXJyZW50Q29ubmVjdGlvbi50YXJnZXQpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZUVkZ2UoZWRnZTogQVhGbG93Q2hhcnRFZGdlcykge1xuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUuZmlsdGVyKChlKSA9PiBlLmlkICE9PSBlZGdlLmlkKSk7XG5cbiAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgY2xhc3MgZnJvbSBjb25uZWN0ZWQgYW5jaG9yc1xuICAgIGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLm5vZGVzTWFwLmdldChlZGdlLnNvdXJjZS5pZCk7XG4gICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMubm9kZXNNYXAuZ2V0KGVkZ2UudGFyZ2V0LmlkKTtcblxuICAgIGlmIChzb3VyY2VOb2RlKSB7XG4gICAgICBjb25zdCBzb3VyY2VBbmNob3IgPSBzb3VyY2VOb2RlLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFuY2hvcj1cIiR7ZWRnZS5zb3VyY2UuYW5jaG9yfVwiXWApO1xuICAgICAgaWYgKHNvdXJjZUFuY2hvcikgc291cmNlQW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldE5vZGUpIHtcbiAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGUucXVlcnlTZWxlY3RvcihgW2RhdGEtYW5jaG9yPVwiJHtlZGdlLnRhcmdldC5hbmNob3J9XCJdYCk7XG4gICAgICBpZiAodGFyZ2V0QW5jaG9yKSB0YXJnZXRBbmNob3IuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVOb2RlKG5vZGVzOiB7IGlkOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdKSB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbm9kZScpPy5mb3JFYWNoKChub2RlKSA9PiBub2RlLnJlbW92ZSgpKTtcblxuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgYXMgSFRNTEVsZW1lbnRXaXRoRGF0YXNldDtcbiAgICAgIGNvbnN0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykgYXMgSFRNTEVsZW1lbnRXaXRoRGF0YXNldDtcbiAgICAgIHAuaW5uZXJUZXh0ID0gbm9kZS5sYWJlbDtcbiAgICAgIGVsLmFwcGVuZENoaWxkKHApO1xuICAgICAgZWwuY2xhc3NOYW1lID0gJ2F4LWZsb3ctY2hhcnQtbm9kZSc7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKGBheC0ke25vZGUudHlwZX1gKTtcbiAgICAgIGVsLnN0eWxlLmxlZnQgPSBub2RlLnggKyAncHgnO1xuICAgICAgZWwuc3R5bGUudG9wID0gbm9kZS55ICsgJ3B4JztcbiAgICAgIGVsLmRhdGFzZXRbJ2lkJ10gPSBub2RlLmlkO1xuXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoZWwsIG5vZGUudHlwZSk7XG4gICAgICB0aGlzLm1ha2VEcmFnZ2FibGUoZWwpO1xuICAgICAgdGhpcy5zZXR1cE5vZGVFdmVudExpc3RlbmVycyhlbCwgbm9kZSk7XG5cbiAgICAgIHRoaXMuY2FudmFzU2VydmljZSgpLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgdGhpcy5ub2Rlc01hcC5zZXQobm9kZS5pZCwgZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlTm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydE5vZGUudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUuZmlsdGVyKChlKSA9PiBlLmlkICE9PSBub2RlSWQpKTtcblxuICAgIHRoaXMuaW5pdGlhbEZsb3dDaGFydEVkZ2UoKS5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICBpZiAoZWRnZS5zb3VyY2UuaWQgPT09IG5vZGVJZCB8fCBlZGdlLnRhcmdldC5pZCA9PT0gbm9kZUlkKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRWRnZShlZGdlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWlkPVwiJHtub2RlSWR9XCJdYCk/LnJlbW92ZSgpO1xuICAgIHRoaXMuYW5jaG9yQ2xpY2tCdWZmZXIgPSBudWxsO1xuICB9XG5cbiAgY2xlYW51cCgpIHtcbiAgICB0aGlzLm5vZGVzTWFwLmZvckVhY2goKF8sIGlkKSA9PiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKGlkKSk7XG4gICAgdGhpcy5ub2Rlc01hcC5jbGVhcigpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbiAgfVxufVxuIl19","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXFlowChartService } from '../flow-chart.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/text-box\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@angular/forms\";\nexport class AXFlowChartCreatorComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.service = inject(AXFlowChartService);\n this.selectedShape = signal('rectangle', ...(ngDevMode ? [{ debugName: \"selectedShape\" }] : []));\n this.label = 'Label';\n }\n selectShapeHandler(shape) {\n this.selectedShape.set(shape);\n }\n createShapeHandler() {\n const newNode = {\n id: Math.random().toString(),\n type: this.selectedShape(),\n label: this.label,\n x: 0,\n y: 0,\n };\n this.service.initialFlowChartNode.update((value) => [...value, newNode]);\n this.service.onNodeUpdate.next(newNode);\n }\n printChart() {\n const printWindow = window.open('', '_blank');\n if (!printWindow)\n return;\n const canvas = this.service.canvasService()?.nativeElement;\n if (!canvas)\n return;\n // Get all styles from the document and component\n const styles = Array.from(document.styleSheets)\n .map((sheet) => {\n try {\n return Array.from(sheet.cssRules)\n .map((rule) => rule.cssText)\n .join('\\n');\n }\n catch (e) {\n return '';\n }\n })\n .join('\\n');\n // Add print-specific styles for anchors\n const printStyles = `\n ${styles}\n .ax-flow-chart-anchor {\n opacity: 1 !important;\n }\n `;\n // Create the print content with proper styling\n const printContent = `\n <!DOCTYPE html>\n <html>\n <head>\n <title>Flow Chart Print</title>\n <style>\n ${printStyles}\n </style>\n </head>\n <body>\n <ax-flow-chart-renderer>\n ${canvas.outerHTML}\n </ax-flow-chart-renderer>\n </body>\n </html>\n `;\n printWindow.document.write(printContent);\n printWindow.document.close();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartCreatorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.3\", type: AXFlowChartCreatorComponent, isStandalone: true, selector: \"ax-flow-chart-creator\", providers: [{ provide: AXComponent, useExisting: AXFlowChartCreatorComponent }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-shape-container\\\">\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'rectangle' }\\\"\\n (click)=\\\"selectShapeHandler('rectangle')\\\"\\n class=\\\"ax-rectangle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'circle' }\\\"\\n (click)=\\\"selectShapeHandler('circle')\\\"\\n class=\\\"ax-circle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'diamond' }\\\"\\n (click)=\\\"selectShapeHandler('diamond')\\\"\\n class=\\\"ax-diamond\\\"\\n ></div>\\n</div>\\n<ax-text-box class=\\\"ax-sm\\\" [(ngModel)]=\\\"label\\\" placeholder=\\\"Label\\\"> </ax-text-box>\\n\\n<ax-button class=\\\"ax-sm\\\" (onClick)=\\\"createShapeHandler()\\\" color=\\\"primary\\\" text=\\\"Create\\\"></ax-button>\\n<ax-button color=\\\"primary\\\" text=\\\"Print\\\" class=\\\"ax-sm\\\" (click)=\\\"printChart()\\\"></ax-button>\\n\", styles: [\"ax-flow-chart-creator{display:flex;gap:1rem;align-items:center;padding:1rem}ax-flow-chart-creator .ax-shape-container{display:flex;gap:1rem}ax-flow-chart-creator .ax-shape-container .ax-shape-selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))!important}ax-flow-chart-creator .ax-shape-container .ax-rectangle,ax-flow-chart-creator .ax-shape-container .ax-circle,ax-flow-chart-creator .ax-shape-container .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:30px;height:30px;cursor:pointer}ax-flow-chart-creator .ax-shape-container .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-creator .ax-shape-container .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i1.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartCreatorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-flow-chart-creator', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXTextBoxModule, AXButtonModule, CommonModule, FormsModule], providers: [{ provide: AXComponent, useExisting: AXFlowChartCreatorComponent }], template: \"<div class=\\\"ax-shape-container\\\">\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'rectangle' }\\\"\\n (click)=\\\"selectShapeHandler('rectangle')\\\"\\n class=\\\"ax-rectangle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'circle' }\\\"\\n (click)=\\\"selectShapeHandler('circle')\\\"\\n class=\\\"ax-circle\\\"\\n ></div>\\n <div\\n [ngClass]=\\\"{ 'ax-shape-selected': selectedShape() === 'diamond' }\\\"\\n (click)=\\\"selectShapeHandler('diamond')\\\"\\n class=\\\"ax-diamond\\\"\\n ></div>\\n</div>\\n<ax-text-box class=\\\"ax-sm\\\" [(ngModel)]=\\\"label\\\" placeholder=\\\"Label\\\"> </ax-text-box>\\n\\n<ax-button class=\\\"ax-sm\\\" (onClick)=\\\"createShapeHandler()\\\" color=\\\"primary\\\" text=\\\"Create\\\"></ax-button>\\n<ax-button color=\\\"primary\\\" text=\\\"Print\\\" class=\\\"ax-sm\\\" (click)=\\\"printChart()\\\"></ax-button>\\n\", styles: [\"ax-flow-chart-creator{display:flex;gap:1rem;align-items:center;padding:1rem}ax-flow-chart-creator .ax-shape-container{display:flex;gap:1rem}ax-flow-chart-creator .ax-shape-container .ax-shape-selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))!important}ax-flow-chart-creator .ax-shape-container .ax-rectangle,ax-flow-chart-creator .ax-shape-container .ax-circle,ax-flow-chart-creator .ax-shape-container .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:30px;height:30px;cursor:pointer}ax-flow-chart-creator .ax-shape-container .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-creator .ax-shape-container .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmxvdy1jaGFydC9zcmMvbGliL2Zsb3ctY2hhcnQtY3JlYXRvci9mbG93LWNoYXJ0LWNyZWF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9mbG93LWNoYXJ0L3NyYy9saWIvZmxvdy1jaGFydC1jcmVhdG9yL2Zsb3ctY2hhcnQtY3JlYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQVczRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsV0FBVztJQVQ1RDs7UUFVRSxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQUMsV0FBVyx5REFBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxPQUFPLENBQUM7S0FtRTNCO0lBakVXLGtCQUFrQixDQUFDLEtBQXlDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsTUFBTSxPQUFPLEdBQUc7WUFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztTQUNMLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsVUFBVTtRQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFFekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLGlEQUFpRDtRQUNqRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDNUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7cUJBQzlCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztxQkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLHdDQUF3QztRQUN4QyxNQUFNLFdBQVcsR0FBRztRQUNoQixNQUFNOzs7O0tBSVQsQ0FBQztRQUVGLCtDQUErQztRQUMvQyxNQUFNLFlBQVksR0FBRzs7Ozs7O2NBTVgsV0FBVzs7Ozs7Y0FLWCxNQUFNLENBQUMsU0FBUzs7OztLQUl6QixDQUFDO1FBRUYsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDOzhHQXJFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixvRUFGM0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLENBQUMsaURDZmpGLGcxQkFxQkEsNDBCRFBZLGVBQWUscWJBQUUsY0FBYyw2WEFBRSxZQUFZLDRIQUFFLFdBQVc7OzJGQUd6RCwyQkFBMkI7a0JBVHZDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLGFBQzFELENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsNkJBQTZCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50LCBOWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhGbG93Q2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvdy1jaGFydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZmxvdy1jaGFydC1jcmVhdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY2hhcnQtY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zsb3ctY2hhcnQtY3JlYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW0FYVGV4dEJveE1vZHVsZSwgQVhCdXR0b25Nb2R1bGUsIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRDcmVhdG9yQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWEZsb3dDaGFydENyZWF0b3JDb21wb25lbnQgZXh0ZW5kcyBOWENvbXBvbmVudCB7XG4gIHNlcnZpY2UgPSBpbmplY3QoQVhGbG93Q2hhcnRTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkU2hhcGUgPSBzaWduYWwoJ3JlY3RhbmdsZScpO1xuICBwcm90ZWN0ZWQgbGFiZWwgPSAnTGFiZWwnO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RTaGFwZUhhbmRsZXIoc2hhcGU6ICdyZWN0YW5nbGUnIHwgJ2NpcmNsZScgfCAnZGlhbW9uZCcpIHtcbiAgICB0aGlzLnNlbGVjdGVkU2hhcGUuc2V0KHNoYXBlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVTaGFwZUhhbmRsZXIoKSB7XG4gICAgY29uc3QgbmV3Tm9kZSA9IHtcbiAgICAgIGlkOiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksXG4gICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkU2hhcGUoKSxcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgfTtcbiAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEZsb3dDaGFydE5vZGUudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBuZXdOb2RlXSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9uTm9kZVVwZGF0ZS5uZXh0KG5ld05vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHByaW50Q2hhcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcHJpbnRXaW5kb3cgPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycpO1xuICAgIGlmICghcHJpbnRXaW5kb3cpIHJldHVybjtcblxuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuc2VydmljZS5jYW52YXNTZXJ2aWNlKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFjYW52YXMpIHJldHVybjtcblxuICAgIC8vIEdldCBhbGwgc3R5bGVzIGZyb20gdGhlIGRvY3VtZW50IGFuZCBjb21wb25lbnRcbiAgICBjb25zdCBzdHlsZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKVxuICAgICAgLm1hcCgoc2hlZXQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzaGVldC5jc3NSdWxlcylcbiAgICAgICAgICAgIC5tYXAoKHJ1bGUpID0+IHJ1bGUuY3NzVGV4dClcbiAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIC8vIEFkZCBwcmludC1zcGVjaWZpYyBzdHlsZXMgZm9yIGFuY2hvcnNcbiAgICBjb25zdCBwcmludFN0eWxlcyA9IGBcbiAgICAgICR7c3R5bGVzfVxuICAgICAgLmF4LWZsb3ctY2hhcnQtYW5jaG9yIHtcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIGA7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHByaW50IGNvbnRlbnQgd2l0aCBwcm9wZXIgc3R5bGluZ1xuICAgIGNvbnN0IHByaW50Q29udGVudCA9IGBcbiAgICAgIDwhRE9DVFlQRSBodG1sPlxuICAgICAgPGh0bWw+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgIDx0aXRsZT5GbG93IENoYXJ0IFByaW50PC90aXRsZT5cbiAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICAke3ByaW50U3R5bGVzfVxuICAgICAgICAgIDwvc3R5bGU+XG4gICAgICAgIDwvaGVhZD5cbiAgICAgICAgPGJvZHk+XG4gICAgICAgICAgPGF4LWZsb3ctY2hhcnQtcmVuZGVyZXI+XG4gICAgICAgICAgICAke2NhbnZhcy5vdXRlckhUTUx9XG4gICAgICAgICAgPC9heC1mbG93LWNoYXJ0LXJlbmRlcmVyPlxuICAgICAgICA8L2JvZHk+XG4gICAgICA8L2h0bWw+XG4gICAgYDtcblxuICAgIHByaW50V2luZG93LmRvY3VtZW50LndyaXRlKHByaW50Q29udGVudCk7XG4gICAgcHJpbnRXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LXNoYXBlLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwieyAnYXgtc2hhcGUtc2VsZWN0ZWQnOiBzZWxlY3RlZFNoYXBlKCkgPT09ICdyZWN0YW5nbGUnIH1cIlxuICAgIChjbGljayk9XCJzZWxlY3RTaGFwZUhhbmRsZXIoJ3JlY3RhbmdsZScpXCJcbiAgICBjbGFzcz1cImF4LXJlY3RhbmdsZVwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJ2F4LXNoYXBlLXNlbGVjdGVkJzogc2VsZWN0ZWRTaGFwZSgpID09PSAnY2lyY2xlJyB9XCJcbiAgICAoY2xpY2spPVwic2VsZWN0U2hhcGVIYW5kbGVyKCdjaXJjbGUnKVwiXG4gICAgY2xhc3M9XCJheC1jaXJjbGVcIlxuICA+PC9kaXY+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdheC1zaGFwZS1zZWxlY3RlZCc6IHNlbGVjdGVkU2hhcGUoKSA9PT0gJ2RpYW1vbmQnIH1cIlxuICAgIChjbGljayk9XCJzZWxlY3RTaGFwZUhhbmRsZXIoJ2RpYW1vbmQnKVwiXG4gICAgY2xhc3M9XCJheC1kaWFtb25kXCJcbiAgPjwvZGl2PlxuPC9kaXY+XG48YXgtdGV4dC1ib3ggY2xhc3M9XCJheC1zbVwiIFsobmdNb2RlbCldPVwibGFiZWxcIiBwbGFjZWhvbGRlcj1cIkxhYmVsXCI+IDwvYXgtdGV4dC1ib3g+XG5cbjxheC1idXR0b24gY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cImNyZWF0ZVNoYXBlSGFuZGxlcigpXCIgY29sb3I9XCJwcmltYXJ5XCIgdGV4dD1cIkNyZWF0ZVwiPjwvYXgtYnV0dG9uPlxuPGF4LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0ZXh0PVwiUHJpbnRcIiBjbGFzcz1cImF4LXNtXCIgKGNsaWNrKT1cInByaW50Q2hhcnQoKVwiPjwvYXgtYnV0dG9uPlxuIl19","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, effect, inject, output, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXFlowChartService } from '../flow-chart.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFlowChartRendererComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.canvas = viewChild('canvas', ...(ngDevMode ? [{ debugName: \"canvas\" }] : []));\n this.svg = viewChild('connections', ...(ngDevMode ? [{ debugName: \"svg\" }] : []));\n this.service = inject(AXFlowChartService);\n this.onLineClick = output();\n this.onLineDbClick = output();\n this.onNodeClick = output();\n this.onNodeDbClick = output();\n this.onEdgeUpdate = output();\n this.onNodeUpdate = output();\n this.#init = afterNextRender(() => {\n this.setupEventListeners();\n });\n this.#eff = effect(() => {\n if (this.canvas() && this.svg()) {\n this.initializeServices();\n }\n }, ...(ngDevMode ? [{ debugName: \"#eff\" }] : []));\n }\n #init;\n #eff;\n setupEventListeners() {\n this.service.lineClick.subscribe((value) => {\n this.onLineClick.emit(value);\n });\n this.service.lineDbClick.subscribe((value) => {\n this.onLineDbClick.emit(value);\n });\n this.service.nodeClick.subscribe((value) => {\n this.onNodeClick.emit(value);\n });\n this.service.nodeDbClick.subscribe((value) => {\n this.onNodeDbClick.emit(value);\n });\n this.service.onEdgeUpdate.subscribe((newEdge) => {\n this.onEdgeUpdate.emit(newEdge);\n });\n this.service.onNodeUpdate.subscribe((newNode) => {\n this.onNodeUpdate.emit(newNode);\n });\n }\n initializeServices() {\n this.service.canvasService.set(this.canvas());\n this.service.svgService.set(this.svg());\n // Add click handlers for parent elements\n const canvas = this.canvas()?.nativeElement;\n const svg = this.svg()?.nativeElement;\n if (canvas) {\n canvas.addEventListener('click', (e) => {\n if (e.target === canvas) {\n this.service.selectedNode.set(null);\n this.service.selectedEdge.set(null);\n document.querySelectorAll('.ax-flow-chart-node').forEach((node) => node.classList.remove('selected'));\n document.querySelectorAll('.ax-flow-chart-line').forEach((line) => line.classList.remove('selected'));\n }\n });\n }\n if (svg) {\n svg.addEventListener('click', (e) => {\n if (e.target === svg) {\n this.service.selectedNode.set(null);\n this.service.selectedEdge.set(null);\n document.querySelectorAll('.ax-flow-chart-node').forEach((node) => node.classList.remove('selected'));\n document.querySelectorAll('.ax-flow-chart-line').forEach((line) => line.classList.remove('selected'));\n }\n });\n }\n }\n ngOnDestroy() {\n this.cleanup();\n }\n cleanup() {\n this.service.cleanup();\n this.service.lineClick.unsubscribe();\n this.service.lineDbClick.unsubscribe();\n this.service.nodeClick.unsubscribe();\n this.service.nodeDbClick.unsubscribe();\n this.service.onEdgeUpdate.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.1.3\", type: AXFlowChartRendererComponent, isStandalone: true, selector: \"ax-flow-chart-renderer\", outputs: { onLineClick: \"onLineClick\", onLineDbClick: \"onLineDbClick\", onNodeClick: \"onNodeClick\", onNodeDbClick: \"onNodeDbClick\", onEdgeUpdate: \"onEdgeUpdate\", onNodeUpdate: \"onNodeUpdate\" }, providers: [{ provide: AXComponent, useExisting: AXFlowChartRendererComponent }], viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true, isSignal: true }, { propertyName: \"svg\", first: true, predicate: [\"connections\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div id=\\\"ax-flow-chart-renderer-canvas\\\" #canvas>\\n <svg class=\\\"ax-flow-chart-renderer-svg\\\" id=\\\"ax-flow-chart-renderer-connections\\\" #connections></svg>\\n</div>\\n\", styles: [\"ax-flow-chart-renderer{overflow:hidden;width:var(--ax-comp-flow-chart-width, 100%);height:var(--ax-comp-flow-chart-height, 30rem);-webkit-print-color-adjust:exact;print-color-adjust:exact}ax-flow-chart-renderer #ax-flow-chart-renderer-canvas{position:relative;width:100%;height:100%}ax-flow-chart-renderer .ax-flow-chart-node{position:absolute;padding:1rem;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface));border:2px solid rgba(var(--ax-sys-color-border-surface));cursor:move;-webkit-user-select:none;user-select:none}ax-flow-chart-renderer .ax-flow-chart-node.selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))}ax-flow-chart-renderer .ax-flow-chart-node .ax-flow-chart-anchor{opacity:0;transition:opacity .5s ease}ax-flow-chart-renderer .ax-flow-chart-node:hover .ax-flow-chart-anchor,ax-flow-chart-renderer .ax-flow-chart-node.selected .ax-flow-chart-anchor{opacity:1}ax-flow-chart-renderer .ax-flow-chart-anchor{position:absolute;width:10px;height:10px;background-color:rgba(var(--ax-sys-color-on-lightest-surface));border-radius:50%;cursor:crosshair;transform:translate(-50%,-50%)}ax-flow-chart-renderer .ax-flow-chart-anchor.selected{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor.hover{transition:.3s all ease;scale:1.3;background-color:rgba(var(--ax-sys-color-danger-darkest-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor:before{content:\\\"\\\";position:absolute;top:-7px;left:-7px;right:-7px;bottom:-7px}ax-flow-chart-renderer .ax-flow-chart-renderer-svg{position:absolute;top:0;left:0;overflow:visible}ax-flow-chart-renderer .ax-flow-chart-line:hover{transition:.3s all ease;stroke:rgba(var(--ax-sys-color-danger-darker-surface));cursor:pointer}ax-flow-chart-renderer .ax-flow-chart-line.selected{stroke:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-rectangle,ax-flow-chart-renderer .ax-circle,ax-flow-chart-renderer .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:auto;height:auto}ax-flow-chart-renderer .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-renderer .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}ax-flow-chart-renderer .ax-diamond p{transform:rotate(-45deg) scale(1.25)}ax-flow-chart-renderer .ax-diamond .ax-flow-chart-anchor{width:14px;height:14px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-flow-chart-renderer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXFlowChartRendererComponent }], template: \"<div id=\\\"ax-flow-chart-renderer-canvas\\\" #canvas>\\n <svg class=\\\"ax-flow-chart-renderer-svg\\\" id=\\\"ax-flow-chart-renderer-connections\\\" #connections></svg>\\n</div>\\n\", styles: [\"ax-flow-chart-renderer{overflow:hidden;width:var(--ax-comp-flow-chart-width, 100%);height:var(--ax-comp-flow-chart-height, 30rem);-webkit-print-color-adjust:exact;print-color-adjust:exact}ax-flow-chart-renderer #ax-flow-chart-renderer-canvas{position:relative;width:100%;height:100%}ax-flow-chart-renderer .ax-flow-chart-node{position:absolute;padding:1rem;background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-surface));border:2px solid rgba(var(--ax-sys-color-border-surface));cursor:move;-webkit-user-select:none;user-select:none}ax-flow-chart-renderer .ax-flow-chart-node.selected{border:2px solid rgba(var(--ax-sys-color-danger-darker-surface))}ax-flow-chart-renderer .ax-flow-chart-node .ax-flow-chart-anchor{opacity:0;transition:opacity .5s ease}ax-flow-chart-renderer .ax-flow-chart-node:hover .ax-flow-chart-anchor,ax-flow-chart-renderer .ax-flow-chart-node.selected .ax-flow-chart-anchor{opacity:1}ax-flow-chart-renderer .ax-flow-chart-anchor{position:absolute;width:10px;height:10px;background-color:rgba(var(--ax-sys-color-on-lightest-surface));border-radius:50%;cursor:crosshair;transform:translate(-50%,-50%)}ax-flow-chart-renderer .ax-flow-chart-anchor.selected{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor.hover{transition:.3s all ease;scale:1.3;background-color:rgba(var(--ax-sys-color-danger-darkest-surface))}ax-flow-chart-renderer .ax-flow-chart-anchor:before{content:\\\"\\\";position:absolute;top:-7px;left:-7px;right:-7px;bottom:-7px}ax-flow-chart-renderer .ax-flow-chart-renderer-svg{position:absolute;top:0;left:0;overflow:visible}ax-flow-chart-renderer .ax-flow-chart-line:hover{transition:.3s all ease;stroke:rgba(var(--ax-sys-color-danger-darker-surface));cursor:pointer}ax-flow-chart-renderer .ax-flow-chart-line.selected{stroke:rgba(var(--ax-sys-color-primary-surface))}ax-flow-chart-renderer .ax-rectangle,ax-flow-chart-renderer .ax-circle,ax-flow-chart-renderer .ax-diamond{border:2px solid rgba(var(--ax-sys-color-border-surface));display:flex;justify-content:center;align-items:center;width:auto;height:auto}ax-flow-chart-renderer .ax-circle{border-radius:1000vmax;aspect-ratio:1}ax-flow-chart-renderer .ax-diamond{transform:rotate(45deg) scale(.75);aspect-ratio:1}ax-flow-chart-renderer .ax-diamond p{transform:rotate(-45deg) scale(1.25)}ax-flow-chart-renderer .ax-diamond .ax-flow-chart-anchor{width:14px;height:14px}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Zsb3ctY2hhcnQvc3JjL2xpYi9mbG93LWNoYXJ0LXJlbmRlcmVyL2Zsb3ctY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9mbG93LWNoYXJ0L3NyYy9saWIvZmxvdy1jaGFydC1yZW5kZXJlci9mbG93LWNoYXJ0LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBVzNELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxXQUFXO0lBUjdEOztRQVNVLFdBQU0sR0FBRyxTQUFTLENBQWEsUUFBUSxrREFBQyxDQUFDO1FBQ3pDLFFBQUcsR0FBRyxTQUFTLENBQWEsYUFBYSwrQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwQyxnQkFBVyxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUMxQyxpQkFBWSxHQUFH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UyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7OEdBckZVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHNRQUY1QixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyx3UUN0QmxGLHlLQUdBOzsyRkRxQmEsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDhCQUE4QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCwgTlhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGbG93Q2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvdy1jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYRmxvd0NoYXJ0RWRnZXMsIEFYRmxvd0NoYXJ0Tm9kZXMsIEFYTGluZUNsaWNrRXZlbnQsIEFYTm9kZUNsaWNrRXZlbnQgfSBmcm9tICcuLi9mbG93LWNoYXJ0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1mbG93LWNoYXJ0LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG93LWNoYXJ0LXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRSZW5kZXJlckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhGbG93Q2hhcnRSZW5kZXJlckNvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBjYW52YXMgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NhbnZhcycpO1xuICBwcml2YXRlIHN2ZyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29ubmVjdGlvbnMnKTtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYRmxvd0NoYXJ0U2VydmljZSk7XG5cbiAgcmVhZG9ubHkgb25MaW5lQ2xpY2sgPSBvdXRwdXQ8QVhMaW5lQ2xpY2tFdmVudD4oKTtcbiAgcmVhZG9ubHkgb25MaW5lRGJDbGljayA9IG91dHB1dDxBWExpbmVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBvbk5vZGVDbGljayA9IG91dHB1dDxBWE5vZGVDbGlja0V2ZW50PigpO1xuICByZWFkb25seSBvbk5vZGVEYkNsaWNrID0gb3V0cHV0PEFYTm9kZUNsaWNrRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG9uRWRnZVVwZGF0ZSA9IG91dHB1dDxBWEZsb3dDaGFydEVkZ2VzPigpO1xuICByZWFkb25seSBvbk5vZGVVcGRhdGUgPSBvdXRwdXQ8QVhGbG93Q2hhcnROb2Rlcz4oKTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gIH0pO1xuXG4gICNlZmYgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLmNhbnZhcygpICYmIHRoaXMuc3ZnKCkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlcnZpY2VzKCk7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmxpbmVDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTGluZUNsaWNrLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5saW5lRGJDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTGluZURiQ2xpY2suZW1pdCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm5vZGVDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTm9kZUNsaWNrLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZS5ub2RlRGJDbGljay5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLm9uTm9kZURiQ2xpY2suZW1pdCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9uRWRnZVVwZGF0ZS5zdWJzY3JpYmUoKG5ld0VkZ2UpID0+IHtcbiAgICAgIHRoaXMub25FZGdlVXBkYXRlLmVtaXQobmV3RWRnZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9uTm9kZVVwZGF0ZS5zdWJzY3JpYmUoKG5ld05vZGUpID0+IHtcbiAgICAgIHRoaXMub25Ob2RlVXBkYXRlLmVtaXQobmV3Tm9kZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTZXJ2aWNlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuY2FudmFzU2VydmljZS5zZXQodGhpcy5jYW52YXMoKSk7XG4gICAgdGhpcy5zZXJ2aWNlLnN2Z1NlcnZpY2Uuc2V0KHRoaXMuc3ZnKCkpO1xuXG4gICAgLy8gQWRkIGNsaWNrIGhhbmRsZXJzIGZvciBwYXJlbnQgZWxlbWVudHNcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhcygpPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoY2FudmFzKSB7XG4gICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBjYW52YXMpIHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWROb2RlLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWRFZGdlLnNldChudWxsKTtcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYXgtZmxvdy1jaGFydC1ub2RlJykuZm9yRWFjaCgobm9kZSkgPT4gbm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTtcbiAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYXgtZmxvdy1jaGFydC1saW5lJykuZm9yRWFjaCgobGluZSkgPT4gbGluZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHN2Zykge1xuICAgICAgc3ZnLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gc3ZnKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZS5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkRWRnZS5zZXQobnVsbCk7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbm9kZScpLmZvckVhY2goKG5vZGUpID0+IG5vZGUuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmF4LWZsb3ctY2hhcnQtbGluZScpLmZvckVhY2goKGxpbmUpID0+IGxpbmUuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5zZXJ2aWNlLmxpbmVDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VydmljZS5saW5lRGJDbGljay51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VydmljZS5ub2RlQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlcnZpY2Uubm9kZURiQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlcnZpY2Uub25FZGdlVXBkYXRlLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJheC1mbG93LWNoYXJ0LXJlbmRlcmVyLWNhbnZhc1wiICNjYW52YXM+XG4gIDxzdmcgY2xhc3M9XCJheC1mbG93LWNoYXJ0LXJlbmRlcmVyLXN2Z1wiIGlkPVwiYXgtZmxvdy1jaGFydC1yZW5kZXJlci1jb25uZWN0aW9uc1wiICNjb25uZWN0aW9ucz48L3N2Zz5cbjwvZGl2PlxuIl19","import { AXComponent, AXFocusableComponent, AXValuableComponent, NXComponent } from '@acorex/cdk/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, HostListener, inject, input, ViewEncapsulation, } from '@angular/core';\nimport { AXFlowChartService } from './flow-chart.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFlowChartComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.flowChartService = inject(AXFlowChartService);\n this.initialFlowChartNode = input.required(...(ngDevMode ? [{ debugName: \"initialFlowChartNode\" }] : []));\n this.initialFlowChartEdge = input.required(...(ngDevMode ? [{ debugName: \"initialFlowChartEdge\" }] : []));\n this.selectedNode = computed(() => this.flowChartService.selectedNode(), ...(ngDevMode ? [{ debugName: \"selectedNode\" }] : []));\n this.selectedEdge = computed(() => this.flowChartService.selectedEdge(), ...(ngDevMode ? [{ debugName: \"selectedEdge\" }] : []));\n this.#init = afterNextRender(() => {\n this.flowChartService.initialFlowChartNode.set(this.initialFlowChartNode());\n this.flowChartService.initialFlowChartEdge.set(this.initialFlowChartEdge());\n });\n }\n #init;\n handleKeyboardEvent(event) {\n if (event.key === 'Delete') {\n const selectedNode = this.selectedNode();\n const selectedEdge = this.selectedEdge();\n if (selectedNode) {\n this.removeNode(selectedNode.id);\n }\n else if (selectedEdge) {\n this.removeEdge(selectedEdge);\n }\n }\n }\n drawEdges(edges) {\n this.flowChartService.drawEdges(edges);\n }\n removeEdge(edge) {\n this.flowChartService.removeEdge(edge);\n }\n createNode(nodes) {\n this.flowChartService.createNode(nodes);\n }\n removeNode(nodeId) {\n this.flowChartService.removeNode(nodeId);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.1.3\", type: AXFlowChartComponent, isStandalone: true, selector: \"ax-flow-chart\", inputs: { initialFlowChartNode: { classPropertyName: \"initialFlowChartNode\", publicName: \"initialFlowChartNode\", isSignal: true, isRequired: true, transformFunction: null }, initialFlowChartEdge: { classPropertyName: \"initialFlowChartEdge\", publicName: \"initialFlowChartEdge\", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { \"document:keydown\": \"handleKeyboardEvent($event)\" } }, providers: [\n AXFlowChartService,\n { provide: AXComponent, useExisting: AXFlowChartComponent },\n { provide: AXValuableComponent, useExisting: AXFlowChartComponent },\n { provide: AXFocusableComponent, useExisting: AXFlowChartComponent },\n ], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<ng-content select=\\\"ax-flow-chart-renderer\\\"></ng-content>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-flow-chart{display:flex;flex-direction:column;width:100%;height:100%;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface));border-radius:var(--ax-sys-border-radius)}ax-flow-chart ax-header{border-bottom:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-flow-chart ax-footer{border-top:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-flow-chart', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXFlowChartService,\n { provide: AXComponent, useExisting: AXFlowChartComponent },\n { provide: AXValuableComponent, useExisting: AXFlowChartComponent },\n { provide: AXFocusableComponent, useExisting: AXFlowChartComponent },\n ], template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<ng-content select=\\\"ax-flow-chart-renderer\\\"></ng-content>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-flow-chart{display:flex;flex-direction:column;width:100%;height:100%;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface));border-radius:var(--ax-sys-border-radius)}ax-flow-chart ax-header{border-bottom:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}ax-flow-chart ax-footer{border-top:1px solid rgba(var(--ax-sys-color-border-lightest-surface))}\\n\"] }]\n }], propDecorators: { handleKeyboardEvent: [{\n type: HostListener,\n args: ['document:keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Zsb3ctY2hhcnQvc3JjL2xpYi9mbG93LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmxvdy1jaGFydC9zcmMvbGliL2Zsb3ctY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RyxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFnQjFELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxXQUFXO0lBYnJEOztRQWNVLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXRELHlCQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLCtEQUFzQixDQUFDO1FBQzVELHlCQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLCtEQUFzQixDQUFDO1FBQzVELGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsd0RBQUMsQ0FBQztRQUNwRSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLHdEQUFDLENBQUM7UUFFcEUsVUFBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztLQStCSjtJQWxDQyxLQUFLLENBR0Y7SUFHSCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV6QyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFzQjtRQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBMEU7UUFDbkYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQXpDVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw0ZEFQcEI7WUFDVCxrQkFBa0I7WUFDbEIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtZQUMzRCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUU7WUFDbkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO1NBQ3JFLGlEQ3pCSCwrSkFHQTs7MkZEd0JhLG9CQUFvQjtrQkFiaEMsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Qsa0JBQWtCO3dCQUNsQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxzQkFBc0IsRUFBRTt3QkFDM0QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxzQkFBc0IsRUFBRTt3QkFDbkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxzQkFBc0IsRUFBRTtxQkFDckU7OEJBZ0JELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tcG9uZW50LCBBWEZvY3VzYWJsZUNvbXBvbmVudCwgQVhWYWx1YWJsZUNvbXBvbmVudCwgTlhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZsb3dDaGFydFNlcnZpY2UgfSBmcm9tICcuL2Zsb3ctY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBWEZsb3dDaGFydEVkZ2VzLCBBWEZsb3dDaGFydE5vZGVzIH0gZnJvbSAnLi9mbG93LWNoYXJ0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1mbG93LWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG93LWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWEZsb3dDaGFydFNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRmxvd0NoYXJ0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhGbG93Q2hhcnRDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhGbG93Q2hhcnRDb21wb25lbnQgZXh0ZW5kcyBOWENvbXBvbmVudCB7XG4gIHByaXZhdGUgZmxvd0NoYXJ0U2VydmljZSA9IGluamVjdChBWEZsb3dDaGFydFNlcnZpY2UpO1xuXG4gIGluaXRpYWxGbG93Q2hhcnROb2RlID0gaW5wdXQucmVxdWlyZWQ8QVhGbG93Q2hhcnROb2Rlc1tdPigpO1xuICBpbml0aWFsRmxvd0NoYXJ0RWRnZSA9IGlucHV0LnJlcXVpcmVkPEFYRmxvd0NoYXJ0RWRnZXNbXT4oKTtcbiAgc2VsZWN0ZWROb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLnNlbGVjdGVkTm9kZSgpKTtcbiAgc2VsZWN0ZWRFZGdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLnNlbGVjdGVkRWRnZSgpKTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLmluaXRpYWxGbG93Q2hhcnROb2RlLnNldCh0aGlzLmluaXRpYWxGbG93Q2hhcnROb2RlKCkpO1xuICAgIHRoaXMuZmxvd0NoYXJ0U2VydmljZS5pbml0aWFsRmxvd0NoYXJ0RWRnZS5zZXQodGhpcy5pbml0aWFsRmxvd0NoYXJ0RWRnZSgpKTtcbiAgfSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5zZWxlY3RlZE5vZGUoKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRnZSA9IHRoaXMuc2VsZWN0ZWRFZGdlKCk7XG5cbiAgICAgIGlmIChzZWxlY3RlZE5vZGUpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb2RlKHNlbGVjdGVkTm9kZS5pZCk7XG4gICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkRWRnZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUVkZ2Uoc2VsZWN0ZWRFZGdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkcmF3RWRnZXMoZWRnZXM6IEFYRmxvd0NoYXJ0RWRnZXNbXSkge1xuICAgIHRoaXMuZmxvd0NoYXJ0U2VydmljZS5kcmF3RWRnZXMoZWRnZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZShlZGdlOiBBWEZsb3dDaGFydEVkZ2VzKSB7XG4gICAgdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLnJlbW92ZUVkZ2UoZWRnZSk7XG4gIH1cblxuICBjcmVhdGVOb2RlKG5vZGVzOiB7IGlkOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdKSB7XG4gICAgdGhpcy5mbG93Q2hhcnRTZXJ2aWNlLmNyZWF0ZU5vZGUobm9kZXMpO1xuICB9XG5cbiAgcmVtb3ZlTm9kZShub2RlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuZmxvd0NoYXJ0U2VydmljZS5yZW1vdmVOb2RlKG5vZGVJZCk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPjwvbmctY29udGVudD5cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZsb3ctY2hhcnQtcmVuZGVyZXJcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFlowChartCreatorComponent } from './flow-chart-creator/flow-chart-creator.component';\nimport { AXFlowChartRendererComponent } from './flow-chart-renderer/flow-chart-renderer.component';\nimport { AXFlowChartComponent } from './flow-chart.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXFlowChartRendererComponent, AXFlowChartCreatorComponent, AXFlowChartComponent];\nconst MODULES = [CommonModule];\nexport class AXFlowChartModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartModule, imports: [CommonModule, AXFlowChartRendererComponent, AXFlowChartCreatorComponent, AXFlowChartComponent], exports: [AXFlowChartRendererComponent, AXFlowChartCreatorComponent, AXFlowChartComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartModule, imports: [MODULES, AXFlowChartCreatorComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: AXFlowChartModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jaGFydC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2Zsb3ctY2hhcnQvc3JjL2xpYi9mbG93LWNoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFOUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3BHLE1BQU0sT0FBTyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUFPL0IsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsWUFQYixZQUFZLEVBRFYsNEJBQTRCLEVBQUUsMkJBQTJCLEVBQUUsb0JBQW9CLGFBQS9FLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQjsrR0FRckYsaUJBQWlCLFlBSmYsT0FBTyxFQUoyQiwyQkFBMkI7OzJGQVEvRCxpQkFBaUI7a0JBTDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGbG93Q2hhcnRDcmVhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9mbG93LWNoYXJ0LWNyZWF0b3IvZmxvdy1jaGFydC1jcmVhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEZsb3dDaGFydFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9mbG93LWNoYXJ0LXJlbmRlcmVyL2Zsb3ctY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYRmxvd0NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9mbG93LWNoYXJ0LmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtBWEZsb3dDaGFydFJlbmRlcmVyQ29tcG9uZW50LCBBWEZsb3dDaGFydENyZWF0b3JDb21wb25lbnQsIEFYRmxvd0NoYXJ0Q29tcG9uZW50XTtcbmNvbnN0IE1PRFVMRVMgPSBbQ29tbW9uTW9kdWxlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLk1PRFVMRVMsIC4uLkNPTVBPTkVOVF0sXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWEZsb3dDaGFydE1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZmxvdy1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmxvdy1jaGFydC9zcmMvYWNvcmV4LWNvbXBvbmVudHMtZmxvdy1jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}