@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.
- package/core/constants/autocomplete.const.d.ts +4 -0
- package/core/constants/context-selector.const.d.ts +1 -0
- package/core/constants/gantt.const.d.ts +7 -0
- package/core/constants/hyperlink.const.d.ts +1 -0
- package/core/constants/inline-edit.const.d.ts +4 -0
- package/core/constants/kanban.const.d.ts +2 -0
- package/core/constants/pin-code-field.const.d.ts +5 -0
- package/core/constants/rating-scale.const.d.ts +1 -0
- package/core/constants/spotlight.const.d.ts +8 -0
- package/core/constants/star-rating.const.d.ts +4 -0
- package/core/constants/stepper.const.d.ts +1 -0
- package/core/constants/tiered-menu.const.d.ts +3 -0
- package/core/types/autocomplete.type.d.ts +9 -0
- package/core/types/chat.type.d.ts +12 -0
- package/core/types/checkbox-list.type.d.ts +12 -0
- package/core/types/gantt.type.d.ts +22 -0
- package/core/types/grid-menu.type.d.ts +13 -0
- package/core/types/hyperlink.type.d.ts +1 -0
- package/core/types/image-cropper.type.d.ts +20 -0
- package/core/types/inline-edit.type.d.ts +26 -0
- package/core/types/kanban.type.d.ts +36 -0
- package/core/types/panel.type.d.ts +16 -0
- package/core/types/profile-picture-picker.type.d.ts +9 -0
- package/core/types/rating-scale.type.d.ts +5 -0
- package/core/types/select-button.type.d.ts +1 -0
- package/core/types/spotlight.type.d.ts +34 -0
- package/core/types/star-rating.type.d.ts +1 -0
- package/core/types/stepper.type.d.ts +20 -0
- package/core/types/table-column.type.d.ts +3 -1
- package/core/types/table-options.type.d.ts +8 -2
- package/core/types/table.type.d.ts +1 -1
- package/core/types/tiered-menu.type.d.ts +16 -0
- package/core/types/tree.type.d.ts +25 -0
- package/core/types/workspace-switch.type.d.ts +6 -0
- package/core/utils/body-scroll.util.d.ts +2 -0
- package/core/utils/roving-focus.util.d.ts +2 -0
- package/core/utils/selection.util.d.ts +3 -0
- package/core/utils/tree.util.d.ts +4 -0
- package/esm2022/core/constants/autocomplete.const.mjs +5 -0
- package/esm2022/core/constants/context-selector.const.mjs +2 -0
- package/esm2022/core/constants/gantt.const.mjs +7 -0
- package/esm2022/core/constants/hyperlink.const.mjs +2 -1
- package/esm2022/core/constants/inline-edit.const.mjs +5 -0
- package/esm2022/core/constants/kanban.const.mjs +3 -0
- package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
- package/esm2022/core/constants/rating-scale.const.mjs +2 -0
- package/esm2022/core/constants/spotlight.const.mjs +9 -0
- package/esm2022/core/constants/star-rating.const.mjs +5 -0
- package/esm2022/core/constants/stepper.const.mjs +2 -0
- package/esm2022/core/constants/table.const.mjs +2 -2
- package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
- package/esm2022/core/types/autocomplete.type.mjs +2 -0
- package/esm2022/core/types/chat.type.mjs +2 -0
- package/esm2022/core/types/checkbox-list.type.mjs +2 -0
- package/esm2022/core/types/gantt.type.mjs +2 -0
- package/esm2022/core/types/grid-menu.type.mjs +2 -0
- package/esm2022/core/types/hyperlink.type.mjs +1 -1
- package/esm2022/core/types/image-cropper.type.mjs +2 -0
- package/esm2022/core/types/inline-edit.type.mjs +2 -0
- package/esm2022/core/types/kanban.type.mjs +2 -0
- package/esm2022/core/types/panel.type.mjs +9 -0
- package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
- package/esm2022/core/types/rating-scale.type.mjs +2 -0
- package/esm2022/core/types/select-button.type.mjs +1 -1
- package/esm2022/core/types/spotlight.type.mjs +2 -0
- package/esm2022/core/types/star-rating.type.mjs +2 -0
- package/esm2022/core/types/stepper.type.mjs +7 -0
- package/esm2022/core/types/table-column.type.mjs +1 -1
- package/esm2022/core/types/table-options.type.mjs +1 -1
- package/esm2022/core/types/table.type.mjs +1 -1
- package/esm2022/core/types/tiered-menu.type.mjs +2 -0
- package/esm2022/core/types/tree.type.mjs +2 -0
- package/esm2022/core/types/workspace-switch.type.mjs +2 -0
- package/esm2022/core/utils/body-scroll.util.mjs +19 -0
- package/esm2022/core/utils/combobox.util.mjs +3 -2
- package/esm2022/core/utils/roving-focus.util.mjs +20 -0
- package/esm2022/core/utils/selection.util.mjs +13 -0
- package/esm2022/core/utils/string.util.mjs +8 -3
- package/esm2022/core/utils/tree.util.mjs +23 -0
- package/esm2022/features/accordion/accordion.component.mjs +2 -2
- package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
- package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
- package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
- package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/features/card-list/card/card.component.mjs +63 -99
- package/esm2022/features/chat/chat.component.mjs +126 -0
- package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
- package/esm2022/features/combobox/combobox.component.mjs +20 -8
- package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
- package/esm2022/features/filters/filters.component.mjs +1 -1
- package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
- package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
- package/esm2022/features/gantt/gantt.component.mjs +89 -0
- package/esm2022/features/gantt/gantt.engine.mjs +662 -0
- package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
- package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
- package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
- package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
- package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
- package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
- package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
- package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
- package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
- package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
- package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
- package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
- package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
- package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
- package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
- package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
- package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
- package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
- package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
- package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
- package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
- package/esm2022/features/kanban/kanban.component.mjs +198 -0
- package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
- package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
- package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
- package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
- package/esm2022/features/paginator/paginator.component.mjs +8 -3
- package/esm2022/features/panel/panel.component.mjs +43 -11
- package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
- package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
- package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
- package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
- package/esm2022/features/select-button/select-button.component.mjs +7 -4
- package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
- package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
- package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
- package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
- package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
- package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
- package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
- package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
- package/esm2022/features/stepper/stepper.component.mjs +86 -0
- package/esm2022/features/switch/switch.component.mjs +12 -8
- package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
- package/esm2022/features/tab/tab.component.mjs +4 -4
- package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
- package/esm2022/features/table/table.component.mjs +220 -29
- package/esm2022/features/table/utils/table-data.util.mjs +71 -8
- package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
- package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
- package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
- package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
- package/esm2022/features/tree/tree.component.mjs +211 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
- package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
- package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
- package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
- package/esm2022/locales/en.json +351 -3
- package/esm2022/locales/es-CO.json +351 -3
- package/esm2022/locales/pt.json +351 -3
- package/esm2022/providers/features.provider.mjs +40 -4
- package/esm2022/public-api.mjs +56 -3
- package/features/accordion/accordion.component.d.ts +1 -1
- package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
- package/features/autocomplete/autocomplete.component.d.ts +102 -0
- package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
- package/features/card-list/card/card.component.d.ts +14 -34
- package/features/chat/chat.component.d.ts +31 -0
- package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
- package/features/combobox/combobox.component.d.ts +2 -1
- package/features/context-selector/context-selector.component.d.ts +37 -0
- package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
- package/features/gantt/gantt-date.utils.d.ts +36 -0
- package/features/gantt/gantt.component.d.ts +24 -0
- package/features/gantt/gantt.engine.d.ts +52 -0
- package/features/grid-menu/grid-menu.component.d.ts +29 -0
- package/features/hyperlink/hyperlink.component.d.ts +2 -1
- package/features/image-cropper/image-cropper.component.d.ts +43 -0
- package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
- package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
- package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
- package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
- package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
- package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
- package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
- package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
- package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
- package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
- package/features/inline-edit/inline-edit.component.d.ts +13 -0
- package/features/interactive-content/interactive-content.directive.d.ts +31 -0
- package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
- package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
- package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
- package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
- package/features/kanban/kanban.component.d.ts +32 -0
- package/features/kanban/services/kanban-event.service.d.ts +15 -0
- package/features/loading-state/loading-state.component.d.ts +0 -2
- package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
- package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
- package/features/panel/panel.component.d.ts +12 -3
- package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
- package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
- package/features/rating-scale/rating-scale.component.d.ts +24 -0
- package/features/select-button/select-button.component.d.ts +2 -1
- package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
- package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
- package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
- package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
- package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
- package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
- package/features/spotlight/spotlight.component.d.ts +59 -0
- package/features/star-rating/star-rating.component.d.ts +26 -0
- package/features/stepper/stepper.component.d.ts +23 -0
- package/features/switch/switch.component.d.ts +2 -1
- package/features/tab/tab.component.d.ts +1 -1
- package/features/table/components/table-cell-content.component.d.ts +4 -3
- package/features/table/table.component.d.ts +40 -5
- package/features/table/utils/table-data.util.d.ts +1 -0
- package/features/table/utils/table-layout.util.d.ts +1 -0
- package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
- package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
- package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
- package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
- package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
- package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
- package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
- package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
- package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
- package/features/tree/tree.component.d.ts +37 -0
- package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
- package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
- package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
- package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
- package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
- package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
- package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
- package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
- package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
- package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +8 -8
- package/public-api.d.ts +72 -2
- package/src/locales/en.json +353 -15
- package/src/locales/es-CO.json +352 -14
- package/src/locales/pt.json +352 -14
- package/styles/sdc-global-variables.scss +1 -1
- package/styles.css +1 -1
- /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
|