@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -0,0 +1,29 @@
1
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class VisualSqlEditorSortModalComponent {
4
+ visible = false;
5
+ editIndex = null;
6
+ draft = { column: "", direction: "" };
7
+ visibleChange = new EventEmitter();
8
+ closed = new EventEmitter();
9
+ saved = new EventEmitter();
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorSortModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: VisualSqlEditorSortModalComponent, isStandalone: true, selector: "sdc-vse-sort-modal", inputs: { visible: "visible", editIndex: "editIndex", draft: "draft" }, outputs: { visibleChange: "visibleChange", closed: "closed", saved: "saved" }, ngImport: i0, template: "<ng-container><!-- sort modal stub --></ng-container>\n", styles: [""] });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorSortModalComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: "sdc-vse-sort-modal", standalone: true, imports: [], template: "<ng-container><!-- sort modal stub --></ng-container>\n" }]
16
+ }], propDecorators: { visible: [{
17
+ type: Input
18
+ }], editIndex: [{
19
+ type: Input
20
+ }], draft: [{
21
+ type: Input
22
+ }], visibleChange: [{
23
+ type: Output
24
+ }], closed: [{
25
+ type: Output
26
+ }], saved: [{
27
+ type: Output
28
+ }] } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3Itc29ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Zpc3VhbC1zcWwtZWRpdG9yL2NvbXBvbmVudHMvdmlzdWFsLXNxbC1lZGl0b3Itc29ydC1tb2RhbC92aXN1YWwtc3FsLWVkaXRvci1zb3J0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1zb3J0LW1vZGFsL3Zpc3VhbC1zcWwtZWRpdG9yLXNvcnQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVdkUsTUFBTSxPQUFPLGlDQUFpQztJQUNqQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQ2hDLEtBQUssR0FBMkIsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVwRCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM1QyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNsQyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7d0dBUDdELGlDQUFpQzs0RkFBakMsaUNBQWlDLHFPQ1Y5Qyx5REFDQTs7NEZEU2EsaUNBQWlDO2tCQVA3QyxTQUFTOytCQUNJLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsRUFBRTs4QkFLRixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWEsYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLEtBQUs7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IER5bmFtaWNWaWV3QnVpbGRlclNvcnQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29yZS90eXBlcy9keW5hbWljLXZpZXctYnVpbGRlci50eXBlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInNkYy12c2Utc29ydC1tb2RhbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW10sXG4gICAgdGVtcGxhdGVVcmw6IFwiLi92aXN1YWwtc3FsLWVkaXRvci1zb3J0LW1vZGFsLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3Zpc3VhbC1zcWwtZWRpdG9yLXNvcnQtbW9kYWwuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFZpc3VhbFNxbEVkaXRvclNvcnRNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGVkaXRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgZHJhZnQ6IER5bmFtaWNWaWV3QnVpbGRlclNvcnQgPSB7IGNvbHVtbjogXCJcIiwgZGlyZWN0aW9uOiBcIlwiIH07XG5cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY1ZpZXdCdWlsZGVyU29ydD4oKTtcbn1cbiIsIjxuZy1jb250YWluZXI+PCEtLSBzb3J0IG1vZGFsIHN0dWIgLS0+PC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class VisualSqlEditorSourceModalComponent {
4
+ visible = false;
5
+ step = "select";
6
+ drafts = [];
7
+ visibleChange = new EventEmitter();
8
+ closed = new EventEmitter();
9
+ stepChange = new EventEmitter();
10
+ draftsChange = new EventEmitter();
11
+ saved = new EventEmitter();
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorSourceModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: VisualSqlEditorSourceModalComponent, isStandalone: true, selector: "sdc-vse-source-modal", inputs: { visible: "visible", step: "step", drafts: "drafts" }, outputs: { visibleChange: "visibleChange", closed: "closed", stepChange: "stepChange", draftsChange: "draftsChange", saved: "saved" }, ngImport: i0, template: "<ng-container><!-- source modal stub --></ng-container>\n", styles: [""] });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorSourceModalComponent, decorators: [{
16
+ type: Component,
17
+ args: [{ selector: "sdc-vse-source-modal", standalone: true, imports: [], template: "<ng-container><!-- source modal stub --></ng-container>\n" }]
18
+ }], propDecorators: { visible: [{
19
+ type: Input
20
+ }], step: [{
21
+ type: Input
22
+ }], drafts: [{
23
+ type: Input
24
+ }], visibleChange: [{
25
+ type: Output
26
+ }], closed: [{
27
+ type: Output
28
+ }], stepChange: [{
29
+ type: Output
30
+ }], draftsChange: [{
31
+ type: Output
32
+ }], saved: [{
33
+ type: Output
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3Itc291cmNlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1zb3VyY2UtbW9kYWwvdmlzdWFsLXNxbC1lZGl0b3Itc291cmNlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1zb3VyY2UtbW9kYWwvdmlzdWFsLXNxbC1lZGl0b3Itc291cmNlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVXZFLE1BQU0sT0FBTyxtQ0FBbUM7SUFDbkMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixJQUFJLEdBQW9CLFFBQVEsQ0FBQztJQUNqQyxNQUFNLEdBQXVCLEVBQUUsQ0FBQztJQUV0QixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM1QyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNsQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFDakQsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO0lBQ3RELEtBQUssR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQzt3R0FUekQsbUNBQW1DOzRGQUFuQyxtQ0FBbUMsdVJDVmhELDJEQUNBOzs0RkRTYSxtQ0FBbUM7a0JBUC9DLFNBQVM7K0JBQ0ksc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxFQUFFOzhCQUtGLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVhLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1ksTUFBTTtzQkFBeEIsTUFBTTtnQkFDWSxVQUFVO3NCQUE1QixNQUFNO2dCQUNZLFlBQVk7c0JBQTlCLE1BQU07Z0JBQ1ksS0FBSztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgU291cmNlTW9kYWxEcmFmdCwgU291cmNlTW9kYWxTdGVwIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3Zpc3VhbC1zcWwtZWRpdG9yLnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInNkYy12c2Utc291cmNlLW1vZGFsXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXSxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3Zpc3VhbC1zcWwtZWRpdG9yLXNvdXJjZS1tb2RhbC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi92aXN1YWwtc3FsLWVkaXRvci1zb3VyY2UtbW9kYWwuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFZpc3VhbFNxbEVkaXRvclNvdXJjZU1vZGFsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB2aXNpYmxlID0gZmFsc2U7XG4gICAgQElucHV0KCkgc3RlcDogU291cmNlTW9kYWxTdGVwID0gXCJzZWxlY3RcIjtcbiAgICBASW5wdXQoKSBkcmFmdHM6IFNvdXJjZU1vZGFsRHJhZnRbXSA9IFtdO1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U291cmNlTW9kYWxTdGVwPigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBkcmFmdHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvdXJjZU1vZGFsRHJhZnRbXT4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvdXJjZU1vZGFsRHJhZnRbXT4oKTtcbn1cbiIsIjxuZy1jb250YWluZXI+PCEtLSBzb3VyY2UgbW9kYWwgc3R1YiAtLT48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,106 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { FLOW_ARROW_INSET, FLOW_ARROW_MIN_GAP, FLOW_ARROWS_REFRESH_DELAY_MS, } from "../utils/visual-sql-editor.constants";
3
+ import * as i0 from "@angular/core";
4
+ export class VisualSqlEditorFlowService {
5
+ refreshFlowArrowsFrame = null;
6
+ refreshFlowArrowsTimeout = null;
7
+ ngOnDestroy() {
8
+ if (this.refreshFlowArrowsFrame !== null) {
9
+ cancelAnimationFrame(this.refreshFlowArrowsFrame);
10
+ this.refreshFlowArrowsFrame = null;
11
+ }
12
+ if (this.refreshFlowArrowsTimeout !== null) {
13
+ clearTimeout(this.refreshFlowArrowsTimeout);
14
+ this.refreshFlowArrowsTimeout = null;
15
+ }
16
+ }
17
+ scheduleFlowArrowRefresh(context) {
18
+ if (this.refreshFlowArrowsFrame !== null) {
19
+ cancelAnimationFrame(this.refreshFlowArrowsFrame);
20
+ }
21
+ if (this.refreshFlowArrowsTimeout !== null) {
22
+ clearTimeout(this.refreshFlowArrowsTimeout);
23
+ this.refreshFlowArrowsTimeout = null;
24
+ }
25
+ this.refreshFlowArrowsFrame = requestAnimationFrame(() => {
26
+ this.refreshFlowArrowsFrame = null;
27
+ this.refreshFlowArrows(context);
28
+ this.refreshFlowArrowsTimeout = setTimeout(() => {
29
+ this.refreshFlowArrowsTimeout = null;
30
+ this.refreshFlowArrows(context);
31
+ }, FLOW_ARROWS_REFRESH_DELAY_MS);
32
+ });
33
+ }
34
+ refreshFlowArrows(context) {
35
+ const measuredHeight = this.refreshMeasuredPreviewHeight(context);
36
+ const nextArrows = this.buildFlowArrows(context);
37
+ context.onFlowArrowsChange(nextArrows, measuredHeight);
38
+ context.changeDetectorRef.markForCheck();
39
+ }
40
+ refreshMeasuredPreviewHeight(context) {
41
+ const sectionsHeight = context.sectionsContainer?.nativeElement.offsetHeight ?? 0;
42
+ return sectionsHeight > 0 ? `${sectionsHeight}px` : "24rem";
43
+ }
44
+ buildFlowArrows(context) {
45
+ const container = context.sectionsContainer?.nativeElement;
46
+ const sections = context.builderSections?.toArray() ?? [];
47
+ if (!container || sections.length < 2) {
48
+ return [];
49
+ }
50
+ const sectionMap = new Map();
51
+ sections.forEach((sectionRef) => {
52
+ const sectionId = sectionRef.nativeElement.dataset["sectionId"];
53
+ if (sectionId) {
54
+ sectionMap.set(sectionId, sectionRef.nativeElement);
55
+ }
56
+ });
57
+ const containerRect = container.getBoundingClientRect();
58
+ const sectionOrder = context.sectionOrder;
59
+ return sectionOrder
60
+ .slice(0, -1)
61
+ .map((sectionId, index) => {
62
+ const current = sectionMap.get(sectionId);
63
+ const next = sectionMap.get(sectionOrder[index + 1]);
64
+ if (!current || !next) {
65
+ return null;
66
+ }
67
+ const currentRect = current.getBoundingClientRect();
68
+ const nextRect = next.getBoundingClientRect();
69
+ const isSameRow = Math.abs(currentRect.top - nextRect.top) < 16;
70
+ const horizontalGap = Math.max(FLOW_ARROW_MIN_GAP, nextRect.left - currentRect.right);
71
+ const verticalGap = Math.max(FLOW_ARROW_MIN_GAP, nextRect.top - currentRect.bottom);
72
+ const overlapLeft = Math.max(currentRect.left, nextRect.left);
73
+ const overlapRight = Math.min(currentRect.right, nextRect.right);
74
+ const overlapTop = Math.max(currentRect.top, nextRect.top);
75
+ const overlapBottom = Math.min(currentRect.bottom, nextRect.bottom);
76
+ const nextCenterX = nextRect.left + nextRect.width / 2;
77
+ const sameRowTop = overlapTop < overlapBottom
78
+ ? overlapTop + (overlapBottom - overlapTop) / 2
79
+ : (currentRect.top +
80
+ currentRect.height / 2 +
81
+ (nextRect.top + nextRect.height / 2)) /
82
+ 2;
83
+ const downLeft = overlapLeft < overlapRight
84
+ ? overlapLeft + (overlapRight - overlapLeft) / 2
85
+ : (currentRect.left + currentRect.width / 2 + nextCenterX) / 2;
86
+ return {
87
+ id: `${sectionId}-${sectionOrder[index + 1]}`,
88
+ direction: isSameRow ? "right" : "down",
89
+ left: isSameRow
90
+ ? currentRect.right - containerRect.left - FLOW_ARROW_INSET + horizontalGap / 2
91
+ : downLeft - containerRect.left,
92
+ top: isSameRow
93
+ ? sameRowTop - containerRect.top
94
+ : currentRect.bottom - containerRect.top - FLOW_ARROW_INSET + verticalGap / 2,
95
+ };
96
+ })
97
+ .filter((item) => !!item);
98
+ }
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFlowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFlowService, providedIn: null });
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFlowService, decorators: [{
103
+ type: Injectable,
104
+ args: [{ providedIn: null }]
105
+ }] });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3ItZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy92aXN1YWwtc3FsLWVkaXRvci9zZXJ2aWNlcy92aXN1YWwtc3FsLWVkaXRvci1mbG93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUQsTUFBTSxlQUFlLENBQUM7QUFFaEcsT0FBTyxFQUNILGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsNEJBQTRCLEdBQy9CLE1BQU0sc0NBQXNDLENBQUM7O0FBZ0I5QyxNQUFNLE9BQU8sMEJBQTBCO0lBQzNCLHNCQUFzQixHQUFrQixJQUFJLENBQUM7SUFDN0Msd0JBQXdCLEdBQXlDLElBQUksQ0FBQztJQUU5RSxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekMsWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDekMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUF5QjtRQUM5QyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2QyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekMsWUFBWSxDQUFDLElBQUksQ0FB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QUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgUXVlcnlMaXN0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEJ1aWxkZXJGbG93QXJyb3csIEJ1aWxkZXJTZWN0aW9uSWQgfSBmcm9tIFwiLi4vdHlwZXMvdmlzdWFsLXNxbC1lZGl0b3IudHlwZXNcIjtcbmltcG9ydCB7XG4gICAgRkxPV19BUlJPV19JTlNFVCxcbiAgICBGTE9XX0FSUk9XX01JTl9HQVAsXG4gICAgRkxPV19BUlJPV1NfUkVGUkVTSF9ERUxBWV9NUyxcbn0gZnJvbSBcIi4uL3V0aWxzL3Zpc3VhbC1zcWwtZWRpdG9yLmNvbnN0YW50c1wiO1xuXG4vKipcbiAqIENvbnRleHQgb2JqZWN0IHByb3ZpZGVkIGJ5IHRoZSBob3N0IGNvbXBvbmVudCBzbyB0aGUgZmxvdyBzZXJ2aWNlIGNhbiByZWFkXG4gKiBWaWV3Q2hpbGQgLyBWaWV3Q2hpbGRyZW4gcmVmZXJlbmNlcyB3aXRob3V0IGltcG9ydGluZyB0aGUgY29tcG9uZW50IGl0c2VsZi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93QXJyb3dDb250ZXh0IHtcbiAgICBzZWN0aW9uc0NvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG4gICAgYnVpbGRlclNlY3Rpb25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+IHwgdW5kZWZpbmVkO1xuICAgIHNlY3Rpb25PcmRlcjogcmVhZG9ubHkgQnVpbGRlclNlY3Rpb25JZFtdO1xuICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgICAvKiogQ2FsbGJhY2sgaW52b2tlZCBieSB0aGUgc2VydmljZSB3aGVuIGNvbXB1dGVkIHN0YXRlIGNoYW5nZXMuICovXG4gICAgb25GbG93QXJyb3dzQ2hhbmdlKGFycm93czogQnVpbGRlckZsb3dBcnJvd1tdLCBtZWFzdXJlZEhlaWdodDogc3RyaW5nKTogdm9pZDtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBudWxsIH0pXG5leHBvcnQgY2xhc3MgVmlzdWFsU3FsRWRpdG9yRmxvd1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVmcmVzaEZsb3dBcnJvd3NGcmFtZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSByZWZyZXNoRmxvd0Fycm93c1RpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVmcmVzaEZsb3dBcnJvd3NGcmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoRmxvd0Fycm93c0ZyYW1lKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEZsb3dBcnJvd3NGcmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVmcmVzaEZsb3dBcnJvd3NUaW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoRmxvd0Fycm93c1RpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRmxvd0Fycm93c1RpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2NoZWR1bGVGbG93QXJyb3dSZWZyZXNoKGNvbnRleHQ6IEZsb3dBcnJvd0NvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVmcmVzaEZsb3dBcnJvd3NGcmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoRmxvd0Fycm93c0ZyYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWZyZXNoRmxvd0Fycm93c1RpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hGbG93QXJyb3dzVGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGbG93QXJyb3dzVGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoRmxvd0Fycm93c0ZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEZsb3dBcnJvd3NGcmFtZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGbG93QXJyb3dzKGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRmxvd0Fycm93c1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hGbG93QXJyb3dzVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoRmxvd0Fycm93cyhjb250ZXh0KTtcbiAgICAgICAgICAgIH0sIEZMT1dfQVJST1dTX1JFRlJFU0hfREVMQVlfTVMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWZyZXNoRmxvd0Fycm93cyhjb250ZXh0OiBGbG93QXJyb3dDb250ZXh0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1lYXN1cmVkSGVpZ2h0ID0gdGhpcy5yZWZyZXNoTWVhc3VyZWRQcmV2aWV3SGVpZ2h0KGNvbnRleHQpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3dzID0gdGhpcy5idWlsZEZsb3dBcnJvd3MoY29udGV4dCk7XG4gICAgICAgIGNvbnRleHQub25GbG93QXJyb3dzQ2hhbmdlKG5leHRBcnJvd3MsIG1lYXN1cmVkSGVpZ2h0KTtcbiAgICAgICAgY29udGV4dC5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWZyZXNoTWVhc3VyZWRQcmV2aWV3SGVpZ2h0KGNvbnRleHQ6IEZsb3dBcnJvd0NvbnRleHQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzZWN0aW9uc0hlaWdodCA9IGNvbnRleHQuc2VjdGlvbnNDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8/IDA7XG4gICAgICAgIHJldHVybiBzZWN0aW9uc0hlaWdodCA+IDAgPyBgJHtzZWN0aW9uc0hlaWdodH1weGAgOiBcIjI0cmVtXCI7XG4gICAgfVxuXG4gICAgYnVpbGRGbG93QXJyb3dzKGNvbnRleHQ6IEZsb3dBcnJvd0NvbnRleHQpOiBCdWlsZGVyRmxvd0Fycm93W10ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBjb250ZXh0LnNlY3Rpb25zQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGNvbnRleHQuYnVpbGRlclNlY3Rpb25zPy50b0FycmF5KCkgPz8gW107XG4gICAgICAgIGlmICghY29udGFpbmVyIHx8IHNlY3Rpb25zLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWN0aW9uTWFwID0gbmV3IE1hcDxCdWlsZGVyU2VjdGlvbklkLCBIVE1MRWxlbWVudD4oKTtcbiAgICAgICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvblJlZikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbklkID0gc2VjdGlvblJlZi5uYXRpdmVFbGVtZW50LmRhdGFzZXRbXG4gICAgICAgICAgICAgICAgXCJzZWN0aW9uSWRcIlxuICAgICAgICAgICAgXSBhcyBCdWlsZGVyU2VjdGlvbklkIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHNlY3Rpb25JZCkge1xuICAgICAgICAgICAgICAgIHNlY3Rpb25NYXAuc2V0KHNlY3Rpb25JZCwgc2VjdGlvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25PcmRlciA9IGNvbnRleHQuc2VjdGlvbk9yZGVyO1xuICAgICAgICByZXR1cm4gc2VjdGlvbk9yZGVyXG4gICAgICAgICAgICAuc2xpY2UoMCwgLTEpXG4gICAgICAgICAgICAubWFwKChzZWN0aW9uSWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHNlY3Rpb25NYXAuZ2V0KHNlY3Rpb25JZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHNlY3Rpb25NYXAuZ2V0KHNlY3Rpb25PcmRlcltpbmRleCArIDFdKTtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnQgfHwgIW5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSZWN0ID0gY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IG5leHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTYW1lUm93ID0gTWF0aC5hYnMoY3VycmVudFJlY3QudG9wIC0gbmV4dFJlY3QudG9wKSA8IDE2O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvcml6b250YWxHYXAgPSBNYXRoLm1heChGTE9XX0FSUk9XX01JTl9HQVAsIG5leHRSZWN0LmxlZnQgLSBjdXJyZW50UmVjdC5yaWdodCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVydGljYWxHYXAgPSBNYXRoLm1heChGTE9XX0FSUk9XX01JTl9HQVAsIG5leHRSZWN0LnRvcCAtIGN1cnJlbnRSZWN0LmJvdHRvbSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxhcExlZnQgPSBNYXRoLm1heChjdXJyZW50UmVjdC5sZWZ0LCBuZXh0UmVjdC5sZWZ0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVybGFwUmlnaHQgPSBNYXRoLm1pbihjdXJyZW50UmVjdC5yaWdodCwgbmV4dFJlY3QucmlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG92ZXJsYXBUb3AgPSBNYXRoLm1heChjdXJyZW50UmVjdC50b3AsIG5leHRSZWN0LnRvcCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxhcEJvdHRvbSA9IE1hdGgubWluKGN1cnJlbnRSZWN0LmJvdHRvbSwgbmV4dFJlY3QuYm90dG9tKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q2VudGVyWCA9IG5leHRSZWN0LmxlZnQgKyBuZXh0UmVjdC53aWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2FtZVJvd1RvcCA9XG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXBUb3AgPCBvdmVybGFwQm90dG9tXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG92ZXJsYXBUb3AgKyAob3ZlcmxhcEJvdHRvbSAtIG92ZXJsYXBUb3ApIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoY3VycmVudFJlY3QudG9wICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVjdC5oZWlnaHQgLyAyICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV4dFJlY3QudG9wICsgbmV4dFJlY3QuaGVpZ2h0IC8gMikpIC9cbiAgICAgICAgICAgICAgICAgICAgICAgIDI7XG4gICAgICAgICAgICAgICAgY29uc3QgZG93bkxlZnQgPVxuICAgICAgICAgICAgICAgICAgICBvdmVybGFwTGVmdCA8IG92ZXJsYXBSaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBvdmVybGFwTGVmdCArIChvdmVybGFwUmlnaHQgLSBvdmVybGFwTGVmdCkgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChjdXJyZW50UmVjdC5sZWZ0ICsgY3VycmVudFJlY3Qud2lkdGggLyAyICsgbmV4dENlbnRlclgpIC8gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogYCR7c2VjdGlvbklkfS0ke3NlY3Rpb25PcmRlcltpbmRleCArIDFdfWAsXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogaXNTYW1lUm93ID8gXCJyaWdodFwiIDogXCJkb3duXCIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGlzU2FtZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW50UmVjdC5yaWdodCAtIGNvbnRhaW5lclJlY3QubGVmdCAtIEZMT1dfQVJST1dfSU5TRVQgKyBob3Jpem9udGFsR2FwIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkb3duTGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBpc1NhbWVSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2FtZVJvd1RvcCAtIGNvbnRhaW5lclJlY3QudG9wXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRSZWN0LmJvdHRvbSAtIGNvbnRhaW5lclJlY3QudG9wIC0gRkxPV19BUlJPV19JTlNFVCArIHZlcnRpY2FsR2FwIC8gMixcbiAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBCdWlsZGVyRmxvd0Fycm93O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIEJ1aWxkZXJGbG93QXJyb3cgPT4gISFpdGVtKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,230 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { EMPTY_VALUE, DEFAULT_JOIN_OPERATOR, DEFAULT_SORT_DIRECTION, DEFAULT_FILTER_OPERATOR, DEFAULT_FILTER_CONNECTOR, DEFAULT_FILTER_VALUE_TYPE, FILTER_MODE_DOMAIN, } from "../utils/visual-sql-editor.constants";
3
+ import * as i0 from "@angular/core";
4
+ export class VisualSqlEditorStateService {
5
+ // ─── Source modal ────────────────────────────────────────────────────────────
6
+ sourceModalVisible = false;
7
+ sourceModalStep = "select";
8
+ sourceModalDrafts = [];
9
+ openSourceModal(existingSources, resolveDefaultAlias, step = "select") {
10
+ this.sourceModalDrafts = existingSources.map((item) => ({
11
+ table: item.table,
12
+ alias: item.alias?.trim() ?? resolveDefaultAlias(item.table),
13
+ }));
14
+ this.sourceModalStep =
15
+ step === "configure" && this.sourceModalDrafts.length
16
+ ? "configure"
17
+ : "select";
18
+ this.sourceModalVisible = true;
19
+ }
20
+ closeSourceModal() {
21
+ this.sourceModalVisible = false;
22
+ this.sourceModalStep = "select";
23
+ this.sourceModalDrafts = [];
24
+ }
25
+ goToSourceModalStep(step) {
26
+ if (step === "configure" && !this.sourceModalDrafts.length) {
27
+ return;
28
+ }
29
+ this.sourceModalStep = step;
30
+ }
31
+ // ─── Join modal ──────────────────────────────────────────────────────────────
32
+ joinModalVisible = false;
33
+ joinEditIndex = null;
34
+ joinDraft = {
35
+ sourceColumn: EMPTY_VALUE,
36
+ targetColumn: EMPTY_VALUE,
37
+ operator: DEFAULT_JOIN_OPERATOR,
38
+ };
39
+ openJoinModal(current, index) {
40
+ this.joinEditIndex = index;
41
+ this.joinDraft = {
42
+ sourceColumn: current?.sourceColumn ?? EMPTY_VALUE,
43
+ targetColumn: current?.targetColumn ?? EMPTY_VALUE,
44
+ operator: current?.operator ?? DEFAULT_JOIN_OPERATOR,
45
+ };
46
+ this.joinModalVisible = true;
47
+ }
48
+ closeJoinModal() {
49
+ this.joinModalVisible = false;
50
+ this.joinEditIndex = null;
51
+ this.joinDraft = {
52
+ sourceColumn: EMPTY_VALUE,
53
+ targetColumn: EMPTY_VALUE,
54
+ operator: DEFAULT_JOIN_OPERATOR,
55
+ };
56
+ }
57
+ // ─── Sort modal ──────────────────────────────────────────────────────────────
58
+ sortModalVisible = false;
59
+ sortEditIndex = null;
60
+ sortDraft = {
61
+ column: EMPTY_VALUE,
62
+ functionName: EMPTY_VALUE,
63
+ direction: DEFAULT_SORT_DIRECTION,
64
+ };
65
+ openSortModal(current, index) {
66
+ this.sortEditIndex = index;
67
+ this.sortDraft = {
68
+ column: current?.column ?? EMPTY_VALUE,
69
+ functionName: current?.functionName?.trim() ?? EMPTY_VALUE,
70
+ direction: current?.direction ?? DEFAULT_SORT_DIRECTION,
71
+ };
72
+ this.sortModalVisible = true;
73
+ }
74
+ closeSortModal() {
75
+ this.sortModalVisible = false;
76
+ this.sortEditIndex = null;
77
+ this.sortDraft = {
78
+ column: EMPTY_VALUE,
79
+ functionName: EMPTY_VALUE,
80
+ direction: DEFAULT_SORT_DIRECTION,
81
+ };
82
+ }
83
+ // ─── Field modal ─────────────────────────────────────────────────────────────
84
+ fieldModalVisible = false;
85
+ fieldModalStep = "select";
86
+ fieldModalDrafts = [];
87
+ fieldFunctionEditColumn = null;
88
+ fieldFunctionDraft = {
89
+ column: EMPTY_VALUE,
90
+ functionName: EMPTY_VALUE,
91
+ functionAlias: EMPTY_VALUE,
92
+ };
93
+ openFieldModal(drafts, openAtStep) {
94
+ this.fieldModalDrafts = drafts;
95
+ this.fieldFunctionEditColumn = null;
96
+ this.fieldFunctionDraft = {
97
+ column: EMPTY_VALUE,
98
+ functionName: EMPTY_VALUE,
99
+ functionAlias: EMPTY_VALUE,
100
+ };
101
+ this.fieldModalStep = openAtStep;
102
+ this.fieldModalVisible = true;
103
+ }
104
+ closeFieldModal() {
105
+ this.fieldModalVisible = false;
106
+ this.fieldModalStep = "select";
107
+ this.fieldModalDrafts = [];
108
+ this.fieldFunctionEditColumn = null;
109
+ this.fieldFunctionDraft = {
110
+ column: EMPTY_VALUE,
111
+ functionName: EMPTY_VALUE,
112
+ functionAlias: EMPTY_VALUE,
113
+ };
114
+ }
115
+ goToFieldModalStep(step) {
116
+ if (step === "configure" && !this.fieldModalDrafts.length) {
117
+ return;
118
+ }
119
+ this.fieldModalStep = step;
120
+ }
121
+ // ─── Filter modal ────────────────────────────────────────────────────────────
122
+ filterModalVisible = false;
123
+ filterEditIndex = null;
124
+ filterModalStep = "select";
125
+ filterModalMode = "condition";
126
+ filterDraft = {
127
+ mode: "condition",
128
+ column: EMPTY_VALUE,
129
+ operator: DEFAULT_FILTER_OPERATOR,
130
+ connector: DEFAULT_FILTER_CONNECTOR,
131
+ optional: false,
132
+ valueType: DEFAULT_FILTER_VALUE_TYPE,
133
+ value: EMPTY_VALUE,
134
+ valuesText: EMPTY_VALUE,
135
+ betweenStart: EMPTY_VALUE,
136
+ betweenEnd: EMPTY_VALUE,
137
+ parameterName: EMPTY_VALUE,
138
+ domainExpression: EMPTY_VALUE,
139
+ };
140
+ openFilterModal(current, index) {
141
+ this.filterEditIndex = index;
142
+ this.filterModalMode = this.resolveFilterMode(current);
143
+ this.filterModalStep = this.resolveFilterModalStep(index, current);
144
+ this.filterDraft = this.buildFilterDraft(current);
145
+ this.filterModalVisible = true;
146
+ }
147
+ resolveFilterMode(current) {
148
+ return current?.valueType === FILTER_MODE_DOMAIN ? FILTER_MODE_DOMAIN : "condition";
149
+ }
150
+ resolveFilterModalStep(index, current) {
151
+ return index !== null && current ? "configure" : "select";
152
+ }
153
+ buildFilterDraft(current) {
154
+ if (!current) {
155
+ return this.buildEmptyFilterDraft();
156
+ }
157
+ return this.buildFilterDraftFromCurrent(current);
158
+ }
159
+ buildEmptyFilterDraft() {
160
+ return {
161
+ mode: "condition",
162
+ column: EMPTY_VALUE,
163
+ operator: DEFAULT_FILTER_OPERATOR,
164
+ connector: DEFAULT_FILTER_CONNECTOR,
165
+ optional: false,
166
+ valueType: DEFAULT_FILTER_VALUE_TYPE,
167
+ value: EMPTY_VALUE,
168
+ valuesText: EMPTY_VALUE,
169
+ betweenStart: EMPTY_VALUE,
170
+ betweenEnd: EMPTY_VALUE,
171
+ parameterName: EMPTY_VALUE,
172
+ domainExpression: EMPTY_VALUE,
173
+ };
174
+ }
175
+ buildFilterDraftFromCurrent(current) {
176
+ const { column = EMPTY_VALUE, operator = DEFAULT_FILTER_OPERATOR, connector = DEFAULT_FILTER_CONNECTOR, optional = false, valueType = DEFAULT_FILTER_VALUE_TYPE, value = EMPTY_VALUE, parameterName = EMPTY_VALUE, domainExpression = EMPTY_VALUE, values = [], } = current;
177
+ const [betweenStart = EMPTY_VALUE, betweenEnd = EMPTY_VALUE] = values;
178
+ const valuesText = values.length > 0 ? values.join(", ") : EMPTY_VALUE;
179
+ return {
180
+ mode: this.resolveFilterMode(current),
181
+ column,
182
+ operator,
183
+ connector,
184
+ optional,
185
+ valueType,
186
+ value,
187
+ valuesText,
188
+ betweenStart,
189
+ betweenEnd,
190
+ parameterName,
191
+ domainExpression,
192
+ };
193
+ }
194
+ closeFilterModal() {
195
+ this.filterModalVisible = false;
196
+ this.filterEditIndex = null;
197
+ this.filterModalStep = "select";
198
+ this.filterModalMode = "condition";
199
+ this.filterDraft = {
200
+ mode: "condition",
201
+ column: EMPTY_VALUE,
202
+ operator: DEFAULT_FILTER_OPERATOR,
203
+ connector: DEFAULT_FILTER_CONNECTOR,
204
+ optional: false,
205
+ valueType: DEFAULT_FILTER_VALUE_TYPE,
206
+ value: EMPTY_VALUE,
207
+ valuesText: EMPTY_VALUE,
208
+ betweenStart: EMPTY_VALUE,
209
+ betweenEnd: EMPTY_VALUE,
210
+ parameterName: EMPTY_VALUE,
211
+ domainExpression: EMPTY_VALUE,
212
+ };
213
+ }
214
+ goToFilterModalStep(step, canProceed, canReview) {
215
+ if (step === "configure" && !canProceed) {
216
+ return;
217
+ }
218
+ if (step === "review" && !canReview) {
219
+ return;
220
+ }
221
+ this.filterModalStep = step;
222
+ }
223
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
224
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorStateService, providedIn: null });
225
+ }
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorStateService, decorators: [{
227
+ type: Injectable,
228
+ args: [{ providedIn: null }]
229
+ }] });
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3Itc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3Ivc2VydmljZXMvdmlzdWFsLXNxbC1lZGl0b3Itc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYzNDLE9BQU8sRUFDSCxXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixrQkFBa0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFHOUMsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxnRkFBZ0Y7SUFDaEYsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLGVBQWUsR0FBb0IsUUFBUSxDQUFDO0lBQzVDLGlCQUFpQixHQUF1QixFQUFFLENBQUM7SUFFM0MsZUFBZSxDQUNYLGVBQWdFLEVBQ2hFLG1CQUE4QyxFQUM5QyxPQUF3QixRQUFRO1FBRWhDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGVBQWU7WUFDaEIsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTTtnQkFDakQsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2IsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNuQixJQUFJLENBQUMsa0JBQWtCLEdB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7XG4gICAgRHluYW1pY1ZpZXdCdWlsZGVyRmllbGQsXG4gICAgRHluYW1pY1ZpZXdCdWlsZGVyRmlsdGVyLFxuICAgIER5bmFtaWNWaWV3QnVpbGRlckpvaW4sXG4gICAgRHluYW1pY1ZpZXdCdWlsZGVyU29ydCxcbn0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdHlwZXMvZHluYW1pYy12aWV3LWJ1aWxkZXIudHlwZVwiO1xuaW1wb3J0IHR5cGUge1xuICAgIFNvdXJjZU1vZGFsU3RlcCxcbiAgICBGaWVsZE1vZGFsU3RlcCxcbiAgICBGaWx0ZXJNb2RhbFN0ZXAsXG4gICAgRmlsdGVyTW9kYWxNb2RlLFxuICAgIFNvdXJjZU1vZGFsRHJhZnQsXG59IGZyb20gXCIuLi90eXBlcy92aXN1YWwtc3FsLWVkaXRvci50eXBlc1wiO1xuaW1wb3J0IHtcbiAgICBFTVBUWV9WQUxVRSxcbiAgICBERUZBVUxUX0pPSU5fT1BFUkFUT1IsXG4gICAgREVGQVVMVF9TT1JUX0RJUkVDVElPTixcbiAgICBERUZBVUxUX0ZJTFRFUl9PUEVSQVRPUixcbiAgICBERUZBVUxUX0ZJTFRFUl9DT05ORUNUT1IsXG4gICAgREVGQVVMVF9GSUxURVJfVkFMVUVfVFlQRSxcbiAgICBGSUxURVJfTU9ERV9ET01BSU4sXG59IGZyb20gXCIuLi91dGlscy92aXN1YWwtc3FsLWVkaXRvci5jb25zdGFudHNcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBudWxsIH0pXG5leHBvcnQgY2xhc3MgVmlzdWFsU3FsRWRpdG9yU3RhdGVTZXJ2aWNlIHtcbiAgICAvLyDilIDilIDilIAgU291cmNlIG1vZGFsIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIHNvdXJjZU1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgIHNvdXJjZU1vZGFsU3RlcDogU291cmNlTW9kYWxTdGVwID0gXCJzZWxlY3RcIjtcbiAgICBzb3VyY2VNb2RhbERyYWZ0czogU291cmNlTW9kYWxEcmFmdFtdID0gW107XG5cbiAgICBvcGVuU291cmNlTW9kYWwoXG4gICAgICAgIGV4aXN0aW5nU291cmNlczogQXJyYXk8eyB0YWJsZTogc3RyaW5nOyBhbGlhcz86IHN0cmluZyB8IG51bGwgfT4sXG4gICAgICAgIHJlc29sdmVEZWZhdWx0QWxpYXM6ICh0YWJsZTogc3RyaW5nKSA9PiBzdHJpbmcsXG4gICAgICAgIHN0ZXA6IFNvdXJjZU1vZGFsU3RlcCA9IFwic2VsZWN0XCJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3VyY2VNb2RhbERyYWZ0cyA9IGV4aXN0aW5nU291cmNlcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICB0YWJsZTogaXRlbS50YWJsZSxcbiAgICAgICAgICAgIGFsaWFzOiBpdGVtLmFsaWFzPy50cmltKCkgPz8gcmVzb2x2ZURlZmF1bHRBbGlhcyhpdGVtLnRhYmxlKSxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnNvdXJjZU1vZGFsU3RlcCA9XG4gICAgICAgICAgICBzdGVwID09PSBcImNvbmZpZ3VyZVwiICYmIHRoaXMuc291cmNlTW9kYWxEcmFmdHMubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBcImNvbmZpZ3VyZVwiXG4gICAgICAgICAgICAgICAgOiBcInNlbGVjdFwiO1xuICAgICAgICB0aGlzLnNvdXJjZU1vZGFsVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgY2xvc2VTb3VyY2VNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3VyY2VNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zb3VyY2VNb2RhbFN0ZXAgPSBcInNlbGVjdFwiO1xuICAgICAgICB0aGlzLnNvdXJjZU1vZGFsRHJhZnRzID0gW107XG4gICAgfVxuXG4gICAgZ29Ub1NvdXJjZU1vZGFsU3RlcChzdGVwOiBTb3VyY2VNb2RhbFN0ZXApOiB2b2lkIHtcbiAgICAgICAgaWYgKHN0ZXAgPT09IFwiY29uZmlndXJlXCIgJiYgIXRoaXMuc291cmNlTW9kYWxEcmFmdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zb3VyY2VNb2RhbFN0ZXAgPSBzdGVwO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgOKUgCBKb2luIG1vZGFsIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIGpvaW5Nb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICBqb2luRWRpdEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBqb2luRHJhZnQgPSB7XG4gICAgICAgIHNvdXJjZUNvbHVtbjogRU1QVFlfVkFMVUUsXG4gICAgICAgIHRhcmdldENvbHVtbjogRU1QVFlfVkFMVUUsXG4gICAgICAgIG9wZXJhdG9yOiBERUZBVUxUX0pPSU5fT1BFUkFUT1IsXG4gICAgfTtcblxuICAgIG9wZW5Kb2luTW9kYWwoY3VycmVudDogRHluYW1pY1ZpZXdCdWlsZGVySm9pbiB8IG51bGwsIGluZGV4OiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuam9pbkVkaXRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmpvaW5EcmFmdCA9IHtcbiAgICAgICAgICAgIHNvdXJjZUNvbHVtbjogY3VycmVudD8uc291cmNlQ29sdW1uID8/IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uOiBjdXJyZW50Py50YXJnZXRDb2x1bW4gPz8gRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBvcGVyYXRvcjogY3VycmVudD8ub3BlcmF0b3IgPz8gREVGQVVMVF9KT0lOX09QRVJBVE9SLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmpvaW5Nb2RhbFZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNsb3NlSm9pbk1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmpvaW5Nb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5qb2luRWRpdEluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5qb2luRHJhZnQgPSB7XG4gICAgICAgICAgICBzb3VyY2VDb2x1bW46IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIG9wZXJhdG9yOiBERUZBVUxUX0pPSU5fT1BFUkFUT1IsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8g4pSA4pSA4pSAIFNvcnQgbW9kYWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgc29ydE1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgIHNvcnRFZGl0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHNvcnREcmFmdCA9IHtcbiAgICAgICAgY29sdW1uOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgZGlyZWN0aW9uOiBERUZBVUxUX1NPUlRfRElSRUNUSU9OLFxuICAgIH07XG5cbiAgICBvcGVuU29ydE1vZGFsKGN1cnJlbnQ6IER5bmFtaWNWaWV3QnVpbGRlclNvcnQgfCBudWxsLCBpbmRleDogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRFZGl0SW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5zb3J0RHJhZnQgPSB7XG4gICAgICAgICAgICBjb2x1bW46IGN1cnJlbnQ/LmNvbHVtbiA/PyBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogY3VycmVudD8uZnVuY3Rpb25OYW1lPy50cmltKCkgPz8gRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBkaXJlY3Rpb246IGN1cnJlbnQ/LmRpcmVjdGlvbiA/PyBERUZBVUxUX1NPUlRfRElSRUNUSU9OLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNvcnRNb2RhbFZpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNsb3NlU29ydE1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zb3J0RWRpdEluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zb3J0RHJhZnQgPSB7XG4gICAgICAgICAgICBjb2x1bW46IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogREVGQVVMVF9TT1JUX0RJUkVDVElPTixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyDilIDilIDilIAgRmllbGQgbW9kYWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgZmllbGRNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICBmaWVsZE1vZGFsU3RlcDogRmllbGRNb2RhbFN0ZXAgPSBcInNlbGVjdFwiO1xuICAgIGZpZWxkTW9kYWxEcmFmdHM6IER5bmFtaWNWaWV3QnVpbGRlckZpZWxkW10gPSBbXTtcbiAgICBmaWVsZEZ1bmN0aW9uRWRpdENvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgZmllbGRGdW5jdGlvbkRyYWZ0ID0ge1xuICAgICAgICBjb2x1bW46IEVNUFRZX1ZBTFVFLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IEVNUFRZX1ZBTFVFLFxuICAgICAgICBmdW5jdGlvbkFsaWFzOiBFTVBUWV9WQUxVRSxcbiAgICB9O1xuXG4gICAgb3BlbkZpZWxkTW9kYWwoXG4gICAgICAgIGRyYWZ0czogRHluYW1pY1ZpZXdCdWlsZGVyRmllbGRbXSxcbiAgICAgICAgb3BlbkF0U3RlcDogRmllbGRNb2RhbFN0ZXBcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZE1vZGFsRHJhZnRzID0gZHJhZnRzO1xuICAgICAgICB0aGlzLmZpZWxkRnVuY3Rpb25FZGl0Q29sdW1uID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWVsZEZ1bmN0aW9uRHJhZnQgPSB7XG4gICAgICAgICAgICBjb2x1bW46IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIGZ1bmN0aW9uQWxpYXM6IEVNUFRZX1ZBTFVFLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpZWxkTW9kYWxTdGVwID0gb3BlbkF0U3RlcDtcbiAgICAgICAgdGhpcy5maWVsZE1vZGFsVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgY2xvc2VGaWVsZE1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpZWxkTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmllbGRNb2RhbFN0ZXAgPSBcInNlbGVjdFwiO1xuICAgICAgICB0aGlzLmZpZWxkTW9kYWxEcmFmdHMgPSBbXTtcbiAgICAgICAgdGhpcy5maWVsZEZ1bmN0aW9uRWRpdENvbHVtbiA9IG51bGw7XG4gICAgICAgIHRoaXMuZmllbGRGdW5jdGlvbkRyYWZ0ID0ge1xuICAgICAgICAgICAgY29sdW1uOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBmdW5jdGlvbkFsaWFzOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnb1RvRmllbGRNb2RhbFN0ZXAoc3RlcDogRmllbGRNb2RhbFN0ZXApOiB2b2lkIHtcbiAgICAgICAgaWYgKHN0ZXAgPT09IFwiY29uZmlndXJlXCIgJiYgIXRoaXMuZmllbGRNb2RhbERyYWZ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkTW9kYWxTdGVwID0gc3RlcDtcbiAgICB9XG5cbiAgICAvLyDilIDilIDilIAgRmlsdGVyIG1vZGFsIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgIGZpbHRlck1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgIGZpbHRlckVkaXRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZmlsdGVyTW9kYWxTdGVwOiBGaWx0ZXJNb2RhbFN0ZXAgPSBcInNlbGVjdFwiO1xuICAgIGZpbHRlck1vZGFsTW9kZTogRmlsdGVyTW9kYWxNb2RlID0gXCJjb25kaXRpb25cIjtcbiAgICBmaWx0ZXJEcmFmdCA9IHtcbiAgICAgICAgbW9kZTogXCJjb25kaXRpb25cIiBhcyBGaWx0ZXJNb2RhbE1vZGUsXG4gICAgICAgIGNvbHVtbjogRU1QVFlfVkFMVUUsXG4gICAgICAgIG9wZXJhdG9yOiBERUZBVUxUX0ZJTFRFUl9PUEVSQVRPUixcbiAgICAgICAgY29ubmVjdG9yOiBERUZBVUxUX0ZJTFRFUl9DT05ORUNUT1IsXG4gICAgICAgIG9wdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgdmFsdWVUeXBlOiBERUZBVUxUX0ZJTFRFUl9WQUxVRV9UWVBFLFxuICAgICAgICB2YWx1ZTogRU1QVFlfVkFMVUUsXG4gICAgICAgIHZhbHVlc1RleHQ6IEVNUFRZX1ZBTFVFLFxuICAgICAgICBiZXR3ZWVuU3RhcnQ6IEVNUFRZX1ZBTFVFLFxuICAgICAgICBiZXR3ZWVuRW5kOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgcGFyYW1ldGVyTmFtZTogRU1QVFlfVkFMVUUsXG4gICAgICAgIGRvbWFpbkV4cHJlc3Npb246IEVNUFRZX1ZBTFVFLFxuICAgIH07XG5cbiAgICBvcGVuRmlsdGVyTW9kYWwoY3VycmVudDogRHluYW1pY1ZpZXdCdWlsZGVyRmlsdGVyIHwgbnVsbCwgaW5kZXg6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJFZGl0SW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5maWx0ZXJNb2RhbE1vZGUgPSB0aGlzLnJlc29sdmVGaWx0ZXJNb2RlKGN1cnJlbnQpO1xuICAgICAgICB0aGlzLmZpbHRlck1vZGFsU3RlcCA9IHRoaXMucmVzb2x2ZUZpbHRlck1vZGFsU3RlcChpbmRleCwgY3VycmVudCk7XG4gICAgICAgIHRoaXMuZmlsdGVyRHJhZnQgPSB0aGlzLmJ1aWxkRmlsdGVyRHJhZnQoY3VycmVudCk7XG4gICAgICAgIHRoaXMuZmlsdGVyTW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVGaWx0ZXJNb2RlKGN1cnJlbnQ6IER5bmFtaWNWaWV3QnVpbGRlckZpbHRlciB8IG51bGwpOiBGaWx0ZXJNb2RhbE1vZGUge1xuICAgICAgICByZXR1cm4gY3VycmVudD8udmFsdWVUeXBlID09PSBGSUxURVJfTU9ERV9ET01BSU4gPyBGSUxURVJfTU9ERV9ET01BSU4gOiBcImNvbmRpdGlvblwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUZpbHRlck1vZGFsU3RlcChcbiAgICAgICAgaW5kZXg6IG51bWJlciB8IG51bGwsXG4gICAgICAgIGN1cnJlbnQ6IER5bmFtaWNWaWV3QnVpbGRlckZpbHRlciB8IG51bGxcbiAgICApOiBGaWx0ZXJNb2RhbFN0ZXAge1xuICAgICAgICByZXR1cm4gaW5kZXggIT09IG51bGwgJiYgY3VycmVudCA/IFwiY29uZmlndXJlXCIgOiBcInNlbGVjdFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRGaWx0ZXJEcmFmdChjdXJyZW50OiBEeW5hbWljVmlld0J1aWxkZXJGaWx0ZXIgfCBudWxsKTogdHlwZW9mIHRoaXMuZmlsdGVyRHJhZnQge1xuICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkRW1wdHlGaWx0ZXJEcmFmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGaWx0ZXJEcmFmdEZyb21DdXJyZW50KGN1cnJlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRFbXB0eUZpbHRlckRyYWZ0KCk6IHR5cGVvZiB0aGlzLmZpbHRlckRyYWZ0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGU6IFwiY29uZGl0aW9uXCIsXG4gICAgICAgICAgICBjb2x1bW46IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgb3BlcmF0b3I6IERFRkFVTFRfRklMVEVSX09QRVJBVE9SLFxuICAgICAgICAgICAgY29ubmVjdG9yOiBERUZBVUxUX0ZJTFRFUl9DT05ORUNUT1IsXG4gICAgICAgICAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IERFRkFVTFRfRklMVEVSX1ZBTFVFX1RZUEUsXG4gICAgICAgICAgICB2YWx1ZTogRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICB2YWx1ZXNUZXh0OiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIGJldHdlZW5TdGFydDogRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBiZXR3ZWVuRW5kOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIHBhcmFtZXRlck5hbWU6IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgZG9tYWluRXhwcmVzc2lvbjogRU1QVFlfVkFMVUUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZpbHRlckRyYWZ0RnJvbUN1cnJlbnQoY3VycmVudDogRHluYW1pY1ZpZXdCdWlsZGVyRmlsdGVyKTogdHlwZW9mIHRoaXMuZmlsdGVyRHJhZnQge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb2x1bW4gPSBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIG9wZXJhdG9yID0gREVGQVVMVF9GSUxURVJfT1BFUkFUT1IsXG4gICAgICAgICAgICBjb25uZWN0b3IgPSBERUZBVUxUX0ZJTFRFUl9DT05ORUNUT1IsXG4gICAgICAgICAgICBvcHRpb25hbCA9IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWVUeXBlID0gREVGQVVMVF9GSUxURVJfVkFMVUVfVFlQRSxcbiAgICAgICAgICAgIHZhbHVlID0gRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBwYXJhbWV0ZXJOYW1lID0gRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBkb21haW5FeHByZXNzaW9uID0gRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICB2YWx1ZXMgPSBbXSxcbiAgICAgICAgfSA9IGN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IFtiZXR3ZWVuU3RhcnQgPSBFTVBUWV9WQUxVRSwgYmV0d2VlbkVuZCA9IEVNUFRZX1ZBTFVFXSA9IHZhbHVlcztcbiAgICAgICAgY29uc3QgdmFsdWVzVGV4dCA9IHZhbHVlcy5sZW5ndGggPiAwID8gdmFsdWVzLmpvaW4oXCIsIFwiKSA6IEVNUFRZX1ZBTFVFO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2RlOiB0aGlzLnJlc29sdmVGaWx0ZXJNb2RlKGN1cnJlbnQpLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICBjb25uZWN0b3IsXG4gICAgICAgICAgICBvcHRpb25hbCxcbiAgICAgICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgdmFsdWVzVGV4dCxcbiAgICAgICAgICAgIGJldHdlZW5TdGFydCxcbiAgICAgICAgICAgIGJldHdlZW5FbmQsXG4gICAgICAgICAgICBwYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgICAgZG9tYWluRXhwcmVzc2lvbixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjbG9zZUZpbHRlck1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlck1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbHRlckVkaXRJbmRleCA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsdGVyTW9kYWxTdGVwID0gXCJzZWxlY3RcIjtcbiAgICAgICAgdGhpcy5maWx0ZXJNb2RhbE1vZGUgPSBcImNvbmRpdGlvblwiO1xuICAgICAgICB0aGlzLmZpbHRlckRyYWZ0ID0ge1xuICAgICAgICAgICAgbW9kZTogXCJjb25kaXRpb25cIixcbiAgICAgICAgICAgIGNvbHVtbjogRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBvcGVyYXRvcjogREVGQVVMVF9GSUxURVJfT1BFUkFUT1IsXG4gICAgICAgICAgICBjb25uZWN0b3I6IERFRkFVTFRfRklMVEVSX0NPTk5FQ1RPUixcbiAgICAgICAgICAgIG9wdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlVHlwZTogREVGQVVMVF9GSUxURVJfVkFMVUVfVFlQRSxcbiAgICAgICAgICAgIHZhbHVlOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIHZhbHVlc1RleHQ6IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgYmV0d2VlblN0YXJ0OiBFTVBUWV9WQUxVRSxcbiAgICAgICAgICAgIGJldHdlZW5FbmQ6IEVNUFRZX1ZBTFVFLFxuICAgICAgICAgICAgcGFyYW1ldGVyTmFtZTogRU1QVFlfVkFMVUUsXG4gICAgICAgICAgICBkb21haW5FeHByZXNzaW9uOiBFTVBUWV9WQUxVRSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnb1RvRmlsdGVyTW9kYWxTdGVwKHN0ZXA6IEZpbHRlck1vZGFsU3RlcCwgY2FuUHJvY2VlZDogYm9vbGVhbiwgY2FuUmV2aWV3OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChzdGVwID09PSBcImNvbmZpZ3VyZVwiICYmICFjYW5Qcm9jZWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXAgPT09IFwicmV2aWV3XCIgJiYgIWNhblJldmlldykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyTW9kYWxTdGVwID0gc3RlcDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3IudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Zpc3VhbC1zcWwtZWRpdG9yL3R5cGVzL3Zpc3VhbC1zcWwtZWRpdG9yLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBpY2tsaXN0UmVjb3JkIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdHlwZXMvcGlja2xpc3QudHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdHlwZXMvYmFkZ2UudHlwZVwiO1xuXG5leHBvcnQgdHlwZSBTZWxlY3Rpb25Nb2RhbE1vZGUgPSBcInRhYmxlc1wiIHwgXCJmaWVsZHNcIiB8IFwiZ3JvdXBCeVwiO1xuZXhwb3J0IHR5cGUgQnVpbGRlckxheW91dE1vZGUgPSBcInN0YWNrZWRcIiB8IFwic3BsaXRcIjtcbmV4cG9ydCB0eXBlIFNvdXJjZU1vZGFsU3RlcCA9IFwic2VsZWN0XCIgfCBcImNvbmZpZ3VyZVwiO1xuZXhwb3J0IHR5cGUgRmllbGRNb2RhbFN0ZXAgPSBcInNlbGVjdFwiIHwgXCJjb25maWd1cmVcIjtcbmV4cG9ydCB0eXBlIEZpbHRlck1vZGFsU3RlcCA9IFwic2VsZWN0XCIgfCBcImNvbmZpZ3VyZVwiIHwgXCJyZXZpZXdcIjtcbmV4cG9ydCB0eXBlIEJ1aWxkZXJTZWN0aW9uSWQgPVxuICAgIHwgXCJ0YWJsZXNcIlxuICAgIHwgXCJqb2luc1wiXG4gICAgfCBcImdyb3VwQnlcIlxuICAgIHwgXCJmaWVsZHNcIlxuICAgIHwgXCJzb3J0aW5nXCJcbiAgICB8IFwiZmlsdGVyc1wiO1xuZXhwb3J0IHR5cGUgRmlsdGVyTW9kYWxNb2RlID0gXCJjb25kaXRpb25cIiB8IFwiZG9tYWluXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUm93IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXRhOiBzdHJpbmc7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgZGJMYWJlbD86IHN0cmluZztcbiAgICB0YWJsZUxhYmVsPzogc3RyaW5nO1xuICAgIHBhdGhUeXBlPzogXCJ0YWJsZVwiIHwgXCJjb2x1bW5cIjtcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgbm90ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VWaWV3SXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkYkxhYmVsOiBzdHJpbmc7XG4gICAgdGFibGVMYWJlbDogc3RyaW5nO1xuICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgaGFzQ3VzdG9tQWxpYXM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlTW9kYWxEcmFmdCB7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICBhbGlhczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZUNvbmZpZ3VyZWRJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRhYmxlOiBzdHJpbmc7XG4gICAgZGJMYWJlbDogc3RyaW5nO1xuICAgIHRhYmxlTGFiZWw6IHN0cmluZztcbiAgICBhbGlhczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpvaW5WaWV3SXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzb3VyY2VUYWJsZTogc3RyaW5nO1xuICAgIHNvdXJjZUZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0b3I6IHN0cmluZztcbiAgICB0YXJnZXRUYWJsZTogc3RyaW5nO1xuICAgIHRhcmdldEZpZWxkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlVmlld0l0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGJMYWJlbDogc3RyaW5nO1xuICAgIHRhYmxlTGFiZWw6IHN0cmluZztcbiAgICBmaWVsZExhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRWaWV3SXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzb3VyY2VJbmRleDogbnVtYmVyO1xuICAgIGNvbHVtbjogc3RyaW5nO1xuICAgIG9yZGVyTGFiZWw6IHN0cmluZztcbiAgICBkYkxhYmVsOiBzdHJpbmc7XG4gICAgdGFibGVMYWJlbDogc3RyaW5nO1xuICAgIGZpZWxkTGFiZWw6IHN0cmluZztcbiAgICBhbGlhczogc3RyaW5nO1xuICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgZnVuY3Rpb25MYWJlbDogc3RyaW5nO1xuICAgIGZ1bmN0aW9uQWxpYXM6IHN0cmluZztcbiAgICBoYXNDdXN0b21Db25maWc6IGJvb2xlYW47XG4gICAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3J0Vmlld0l0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGJMYWJlbDogc3RyaW5nO1xuICAgIHRhYmxlTGFiZWw6IHN0cmluZztcbiAgICBmaWVsZExhYmVsOiBzdHJpbmc7XG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgZnVuY3Rpb25MYWJlbDogc3RyaW5nO1xuICAgIGRpcmVjdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTZWxlY3RhYmxlSXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgICB0YWJsZUxhYmVsOiBzdHJpbmc7XG4gICAgZmllbGRMYWJlbDogc3RyaW5nO1xuICAgIG1ldGE6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJWaWV3SXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkYkxhYmVsOiBzdHJpbmc7XG4gICAgdGFibGVMYWJlbDogc3RyaW5nO1xuICAgIGZpZWxkTGFiZWw6IHN0cmluZztcbiAgICBvcGVyYXRvckxhYmVsOiBzdHJpbmc7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBvcHRpb25hbDogYm9vbGVhbjtcbiAgICBpc0RvbWFpbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJSZXZpZXdJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBlbXBoYXNpemU/OiBcInBhdGhcIiB8IFwiY29kZVwiIHwgXCJkZWZhdWx0XCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRGlzcGxheVBhcnRzIHtcbiAgICBkYkxhYmVsOiBzdHJpbmc7XG4gICAgdGFibGVMYWJlbDogc3RyaW5nO1xuICAgIGZpZWxkTGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZURpc3BsYXlQYXJ0cyB7XG4gICAgZGJMYWJlbDogc3RyaW5nO1xuICAgIHRhYmxlTGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZE1vZGFsQ29uZmlndXJlZEl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29sdW1uOiBzdHJpbmc7XG4gICAgdGFibGVMYWJlbDogc3RyaW5nO1xuICAgIGZpZWxkTGFiZWw6IHN0cmluZztcbiAgICBhbGlhczogc3RyaW5nO1xuICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgZnVuY3Rpb25MYWJlbDogc3RyaW5nO1xuICAgIGZ1bmN0aW9uQWxpYXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyRmxvd0Fycm93IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGRpcmVjdGlvbjogXCJyaWdodFwiIHwgXCJkb3duXCI7XG4gICAgbGVmdDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblBpY2tsaXN0SXRlbSBleHRlbmRzIFBpY2tsaXN0UmVjb3JkIHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGlkOiBudW1iZXI7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB0aXRsZVByZWZpeDogc3RyaW5nO1xuICAgIHRpdGxlU3VmZml4OiBzdHJpbmc7XG4gICAgdGl0bGVQcmVmaXhDb2xvcjogc3RyaW5nO1xuICAgIHRpdGxlU3VmZml4Q29sb3I6IHN0cmluZztcbiAgICBiYWRnZTogc3RyaW5nO1xuICAgIGJhZGdlQ29sb3I6IEJhZGdlQ29sb3I7XG4gICAgY29sdW1uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFBpY2tsaXN0SXRlbSBleHRlbmRzIFBpY2tsaXN0UmVjb3JkIHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGlkOiBudW1iZXI7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB0aXRsZVByZWZpeDogc3RyaW5nO1xuICAgIHRpdGxlU3VmZml4OiBzdHJpbmc7XG4gICAgdGl0bGVQcmVmaXhDb2xvcjogc3RyaW5nO1xuICAgIHRpdGxlU3VmZml4Q29sb3I6IHN0cmluZztcbiAgICBiYWRnZTogc3RyaW5nO1xuICAgIGJhZGdlQ29sb3I6IEJhZGdlQ29sb3I7XG4gICAgc2VsZWN0aW9uSWQ6IHN0cmluZztcbiAgICBjb2x1bW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVBpY2tsaXN0SXRlbSBleHRlbmRzIFBpY2tsaXN0UmVjb3JkIHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGlkOiBudW1iZXI7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB0aXRsZVByZWZpeDogc3RyaW5nO1xuICAgIHRpdGxlU3VmZml4OiBzdHJpbmc7XG4gICAgdGl0bGVQcmVmaXhDb2xvcjogc3RyaW5nO1xuICAgIHRpdGxlU3VmZml4Q29sb3I6IHN0cmluZztcbiAgICBiYWRnZTogc3RyaW5nO1xuICAgIGJhZGdlQ29sb3I6IEJhZGdlQ29sb3I7XG4gICAgdGFibGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmV2aWV3Q29sdW1uTGlrZSB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBoZWFkZXI/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRHluYW1pY01vZGFsRGltZW5zaW9uID0ge1xuICAgIHdpZHRoOiBzdHJpbmc7XG4gICAgaGVpZ2h0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEeW5hbWljTW9kYWxEaW1lbnNpb25zTWFwID0ge1xuICAgIHNvdXJjZTogRHluYW1pY01vZGFsRGltZW5zaW9uO1xuICAgIHNlbGVjdGlvbjogRHluYW1pY01vZGFsRGltZW5zaW9uO1xuICAgIGpvaW46IER5bmFtaWNNb2RhbERpbWVuc2lvbjtcbiAgICBzb3J0OiBEeW5hbWljTW9kYWxEaW1lbnNpb247XG4gICAgZmlsdGVyOiBEeW5hbWljTW9kYWxEaW1lbnNpb247XG4gICAgZmllbGQ6IER5bmFtaWNNb2RhbERpbWVuc2lvbjtcbn07XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { EMPTY_VALUE } from "./visual-sql-editor.constants";
2
+ /**
3
+ * Returns true when the given data type string is a numeric type.
4
+ */
5
+ export function isNumericType(value) {
6
+ return [
7
+ "number",
8
+ "integer",
9
+ "decimal",
10
+ "float",
11
+ "double",
12
+ "long",
13
+ "short",
14
+ ].includes((value ?? "").toLowerCase());
15
+ }
16
+ /**
17
+ * Returns true when the given data type string is a date/time type.
18
+ */
19
+ export function isDateType(value) {
20
+ return ["date", "datetime", "timestamp", "time"].includes((value ?? "").toLowerCase());
21
+ }
22
+ /**
23
+ * Returns the list of valid filter operator keys for a given column option,
24
+ * based on the column's data type.
25
+ */
26
+ export function filterOperatorsForColumn(column) {
27
+ const normalizedDataType = (column.dataType ?? EMPTY_VALUE).toLowerCase();
28
+ if (normalizedDataType === "boolean") {
29
+ return ["EQUAL", "NOT_EQUAL", "EMPTY", "NOT_EMPTY"];
30
+ }
31
+ if (normalizedDataType === "datetime" ||
32
+ normalizedDataType === "time" ||
33
+ normalizedDataType === "timestamp") {
34
+ return [
35
+ "EQUAL",
36
+ "NOT_EQUAL",
37
+ "GREATER_THAN",
38
+ "GREATER_THAN_OR_EQUAL",
39
+ "LESS_THAN",
40
+ "LESS_THAN_OR_EQUAL",
41
+ "BETWEEN",
42
+ "EMPTY",
43
+ "NOT_EMPTY",
44
+ ];
45
+ }
46
+ if (isNumericType(column.dataType) || normalizedDataType === "date") {
47
+ return [
48
+ "EQUAL",
49
+ "NOT_EQUAL",
50
+ "GREATER_THAN",
51
+ "GREATER_THAN_OR_EQUAL",
52
+ "LESS_THAN",
53
+ "LESS_THAN_OR_EQUAL",
54
+ "BETWEEN",
55
+ "IN",
56
+ "EMPTY",
57
+ "NOT_EMPTY",
58
+ ];
59
+ }
60
+ return [
61
+ "EQUAL",
62
+ "NOT_EQUAL",
63
+ "CONTAINS",
64
+ "DOES_NOT_CONTAIN",
65
+ "STARTS_WITH",
66
+ "ENDS_WITH",
67
+ "IN",
68
+ "EMPTY",
69
+ "NOT_EMPTY",
70
+ ];
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3Itc2FuaXRpemUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvdXRpbHMvdmlzdWFsLXNxbC1lZGl0b3Itc2FuaXRpemUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWM7SUFDeEMsT0FBTztRQUNILFFBQVE7UUFDUixTQUFTO1FBQ1QsU0FBUztRQUNULE9BQU87UUFDUCxRQUFRO1FBQ1IsTUFBTTtRQUNOLE9BQU87S0FDVixDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYztJQUNyQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUNyRCxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDOUIsQ0FBQztBQUNOLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3BDLE1BQXNDO0lBRXRDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTFFLElBQUksa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUNJLGtCQUFrQixLQUFLLFVBQVU7UUFDakMsa0JBQWtCLEtBQUssTUFBTTtRQUM3QixrQkFBa0IsS0FBSyxXQUFXLEVBQ3BDLENBQUM7UUFDQyxPQUFPO1lBQ0gsT0FBTztZQUNQLFdBQVc7WUFDWCxjQUFjO1lBQ2QsdUJBQXVCO1lBQ3ZCLFdBQVc7WUFDWCxvQkFBb0I7WUFDcEIsU0FBUztZQUNULE9BQU87WUFDUCxXQUFXO1NBQ2QsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksa0JBQWtCLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDbEUsT0FBTztZQUNILE9BQU87WUFDUCxXQUFXO1lBQ1gsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixXQUFXO1lBQ1gsb0JBQW9CO1lBQ3BCLFNBQVM7WUFDVCxJQUFJO1lBQ0osT0FBTztZQUNQLFdBQVc7U0FDZCxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPO1FBQ1AsV0FBVztRQUNYLFVBQVU7UUFDVixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLFdBQVc7UUFDWCxJQUFJO1FBQ0osT0FBTztRQUNQLFdBQVc7S0FDZCxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHluYW1pY1ZpZXdCdWlsZGVyQ29sdW1uT3B0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdHlwZXMvZHluYW1pYy12aWV3LWJ1aWxkZXIudHlwZVwiO1xuaW1wb3J0IHsgRU1QVFlfVkFMVUUgfSBmcm9tIFwiLi92aXN1YWwtc3FsLWVkaXRvci5jb25zdGFudHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgZ2l2ZW4gZGF0YSB0eXBlIHN0cmluZyBpcyBhIG51bWVyaWMgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY1R5cGUodmFsdWU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBcIm51bWJlclwiLFxuICAgICAgICBcImludGVnZXJcIixcbiAgICAgICAgXCJkZWNpbWFsXCIsXG4gICAgICAgIFwiZmxvYXRcIixcbiAgICAgICAgXCJkb3VibGVcIixcbiAgICAgICAgXCJsb25nXCIsXG4gICAgICAgIFwic2hvcnRcIixcbiAgICBdLmluY2x1ZGVzKCh2YWx1ZSA/PyBcIlwiKS50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgZ2l2ZW4gZGF0YSB0eXBlIHN0cmluZyBpcyBhIGRhdGUvdGltZSB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlVHlwZSh2YWx1ZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbXCJkYXRlXCIsIFwiZGF0ZXRpbWVcIiwgXCJ0aW1lc3RhbXBcIiwgXCJ0aW1lXCJdLmluY2x1ZGVzKFxuICAgICAgICAodmFsdWUgPz8gXCJcIikudG9Mb3dlckNhc2UoKVxuICAgICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbGlzdCBvZiB2YWxpZCBmaWx0ZXIgb3BlcmF0b3Iga2V5cyBmb3IgYSBnaXZlbiBjb2x1bW4gb3B0aW9uLFxuICogYmFzZWQgb24gdGhlIGNvbHVtbidzIGRhdGEgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlck9wZXJhdG9yc0ZvckNvbHVtbihcbiAgICBjb2x1bW46IER5bmFtaWNWaWV3QnVpbGRlckNvbHVtbk9wdGlvblxuKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRhVHlwZSA9IChjb2x1bW4uZGF0YVR5cGUgPz8gRU1QVFlfVkFMVUUpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAobm9ybWFsaXplZERhdGFUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICByZXR1cm4gW1wiRVFVQUxcIiwgXCJOT1RfRVFVQUxcIiwgXCJFTVBUWVwiLCBcIk5PVF9FTVBUWVwiXTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAgIG5vcm1hbGl6ZWREYXRhVHlwZSA9PT0gXCJkYXRldGltZVwiIHx8XG4gICAgICAgIG5vcm1hbGl6ZWREYXRhVHlwZSA9PT0gXCJ0aW1lXCIgfHxcbiAgICAgICAgbm9ybWFsaXplZERhdGFUeXBlID09PSBcInRpbWVzdGFtcFwiXG4gICAgKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBcIkVRVUFMXCIsXG4gICAgICAgICAgICBcIk5PVF9FUVVBTFwiLFxuICAgICAgICAgICAgXCJHUkVBVEVSX1RIQU5cIixcbiAgICAgICAgICAgIFwiR1JFQVRFUl9USEFOX09SX0VRVUFMXCIsXG4gICAgICAgICAgICBcIkxFU1NfVEhBTlwiLFxuICAgICAgICAgICAgXCJMRVNTX1RIQU5fT1JfRVFVQUxcIixcbiAgICAgICAgICAgIFwiQkVUV0VFTlwiLFxuICAgICAgICAgICAgXCJFTVBUWVwiLFxuICAgICAgICAgICAgXCJOT1RfRU1QVFlcIixcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1lcmljVHlwZShjb2x1bW4uZGF0YVR5cGUpIHx8IG5vcm1hbGl6ZWREYXRhVHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFwiRVFVQUxcIixcbiAgICAgICAgICAgIFwiTk9UX0VRVUFMXCIsXG4gICAgICAgICAgICBcIkdSRUFURVJfVEhBTlwiLFxuICAgICAgICAgICAgXCJHUkVBVEVSX1RIQU5fT1JfRVFVQUxcIixcbiAgICAgICAgICAgIFwiTEVTU19USEFOXCIsXG4gICAgICAgICAgICBcIkxFU1NfVEhBTl9PUl9FUVVBTFwiLFxuICAgICAgICAgICAgXCJCRVRXRUVOXCIsXG4gICAgICAgICAgICBcIklOXCIsXG4gICAgICAgICAgICBcIkVNUFRZXCIsXG4gICAgICAgICAgICBcIk5PVF9FTVBUWVwiLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAgIFwiRVFVQUxcIixcbiAgICAgICAgXCJOT1RfRVFVQUxcIixcbiAgICAgICAgXCJDT05UQUlOU1wiLFxuICAgICAgICBcIkRPRVNfTk9UX0NPTlRBSU5cIixcbiAgICAgICAgXCJTVEFSVFNfV0lUSFwiLFxuICAgICAgICBcIkVORFNfV0lUSFwiLFxuICAgICAgICBcIklOXCIsXG4gICAgICAgIFwiRU1QVFlcIixcbiAgICAgICAgXCJOT1RfRU1QVFlcIixcbiAgICBdO1xufVxuIl19