@igo2/common 20.1.1 → 21.0.0-next.2
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/fesm2022/igo2-common-action.mjs +32 -32
- package/fesm2022/igo2-common-action.mjs.map +1 -1
- package/fesm2022/igo2-common-backdrop.mjs +8 -9
- package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
- package/fesm2022/igo2-common-badge.mjs +7 -8
- package/fesm2022/igo2-common-badge.mjs.map +1 -1
- package/fesm2022/igo2-common-clickout.mjs +11 -11
- package/fesm2022/igo2-common-clickout.mjs.map +1 -1
- package/fesm2022/igo2-common-clone.mjs +8 -9
- package/fesm2022/igo2-common-clone.mjs.map +1 -1
- package/fesm2022/igo2-common-collapsible.mjs +13 -14
- package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
- package/fesm2022/igo2-common-color.mjs +9 -9
- package/fesm2022/igo2-common-color.mjs.map +1 -1
- package/fesm2022/igo2-common-confirm-dialog.mjs +10 -10
- package/fesm2022/igo2-common-context-menu.mjs +20 -26
- package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
- package/fesm2022/igo2-common-custom-html.mjs +11 -12
- package/fesm2022/igo2-common-custom-html.mjs.map +1 -1
- package/fesm2022/igo2-common-datepicker.mjs +13 -13
- package/fesm2022/igo2-common-datepicker.mjs.map +1 -1
- package/fesm2022/igo2-common-dom.mjs +7 -7
- package/fesm2022/igo2-common-drag-drop.mjs +24 -28
- package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
- package/fesm2022/igo2-common-dynamic-component.mjs +19 -19
- package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
- package/fesm2022/igo2-common-entity.mjs +61 -61
- package/fesm2022/igo2-common-entity.mjs.map +1 -1
- package/fesm2022/igo2-common-flexible.mjs +9 -9
- package/fesm2022/igo2-common-flexible.mjs.map +1 -1
- package/fesm2022/igo2-common-form.mjs +75 -75
- package/fesm2022/igo2-common-form.mjs.map +1 -1
- package/fesm2022/igo2-common-home-button.mjs +7 -7
- package/fesm2022/igo2-common-icon.mjs +8 -8
- package/fesm2022/igo2-common-icon.mjs.map +1 -1
- package/fesm2022/igo2-common-image.mjs +14 -16
- package/fesm2022/igo2-common-image.mjs.map +1 -1
- package/fesm2022/igo2-common-interactive-tour.mjs +16 -16
- package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
- package/fesm2022/igo2-common-json-dialog.mjs +10 -10
- package/fesm2022/igo2-common-keyvalue.mjs +8 -9
- package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
- package/fesm2022/igo2-common-list.mjs +17 -25
- package/fesm2022/igo2-common-list.mjs.map +1 -1
- package/fesm2022/igo2-common-panel.mjs +12 -13
- package/fesm2022/igo2-common-panel.mjs.map +1 -1
- package/fesm2022/igo2-common-resizable-bar.mjs +9 -13
- package/fesm2022/igo2-common-resizable-bar.mjs.map +1 -1
- package/fesm2022/igo2-common-select-value-dialog.mjs +10 -10
- package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-sidenav.mjs +14 -19
- package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
- package/fesm2022/igo2-common-spinner.mjs +13 -14
- package/fesm2022/igo2-common-spinner.mjs.map +1 -1
- package/fesm2022/igo2-common-stop-propagation.mjs +12 -14
- package/fesm2022/igo2-common-stop-propagation.mjs.map +1 -1
- package/fesm2022/igo2-common-table.mjs +12 -12
- package/fesm2022/igo2-common-table.mjs.map +1 -1
- package/fesm2022/igo2-common-timepicker.mjs +9 -9
- package/fesm2022/igo2-common-timepicker.mjs.map +1 -1
- package/fesm2022/igo2-common-tool.mjs +19 -19
- package/fesm2022/igo2-common-tool.mjs.map +1 -1
- package/fesm2022/igo2-common-widget.mjs +17 -17
- package/fesm2022/igo2-common-widget.mjs.map +1 -1
- package/fesm2022/igo2-common-workspace.mjs +21 -21
- package/fesm2022/igo2-common-workspace.mjs.map +1 -1
- package/package.json +60 -59
- package/{clickout/index.d.ts → types/igo2-common-clickout.d.ts} +1 -1
- package/{drag-drop/index.d.ts → types/igo2-common-drag-drop.d.ts} +1 -1
- package/{entity/index.d.ts → types/igo2-common-entity.d.ts} +1 -1
- package/{table/index.d.ts → types/igo2-common-table.d.ts} +2 -2
- /package/{action/index.d.ts → types/igo2-common-action.d.ts} +0 -0
- /package/{backdrop/index.d.ts → types/igo2-common-backdrop.d.ts} +0 -0
- /package/{badge/index.d.ts → types/igo2-common-badge.d.ts} +0 -0
- /package/{clone/index.d.ts → types/igo2-common-clone.d.ts} +0 -0
- /package/{collapsible/index.d.ts → types/igo2-common-collapsible.d.ts} +0 -0
- /package/{color/index.d.ts → types/igo2-common-color.d.ts} +0 -0
- /package/{confirm-dialog/index.d.ts → types/igo2-common-confirm-dialog.d.ts} +0 -0
- /package/{context-menu/index.d.ts → types/igo2-common-context-menu.d.ts} +0 -0
- /package/{custom-html/index.d.ts → types/igo2-common-custom-html.d.ts} +0 -0
- /package/{datepicker/index.d.ts → types/igo2-common-datepicker.d.ts} +0 -0
- /package/{dom/index.d.ts → types/igo2-common-dom.d.ts} +0 -0
- /package/{dynamic-component/index.d.ts → types/igo2-common-dynamic-component.d.ts} +0 -0
- /package/{environment/index.d.ts → types/igo2-common-environment.d.ts} +0 -0
- /package/{flexible/index.d.ts → types/igo2-common-flexible.d.ts} +0 -0
- /package/{form/index.d.ts → types/igo2-common-form.d.ts} +0 -0
- /package/{home-button/index.d.ts → types/igo2-common-home-button.d.ts} +0 -0
- /package/{icon/index.d.ts → types/igo2-common-icon.d.ts} +0 -0
- /package/{image/index.d.ts → types/igo2-common-image.d.ts} +0 -0
- /package/{interactive-tour/index.d.ts → types/igo2-common-interactive-tour.d.ts} +0 -0
- /package/{json-dialog/index.d.ts → types/igo2-common-json-dialog.d.ts} +0 -0
- /package/{keyvalue/index.d.ts → types/igo2-common-keyvalue.d.ts} +0 -0
- /package/{list/index.d.ts → types/igo2-common-list.d.ts} +0 -0
- /package/{panel/index.d.ts → types/igo2-common-panel.d.ts} +0 -0
- /package/{resizable-bar/index.d.ts → types/igo2-common-resizable-bar.d.ts} +0 -0
- /package/{select-value-dialog/index.d.ts → types/igo2-common-select-value-dialog.d.ts} +0 -0
- /package/{sidenav/index.d.ts → types/igo2-common-sidenav.d.ts} +0 -0
- /package/{spinner/index.d.ts → types/igo2-common-spinner.d.ts} +0 -0
- /package/{stop-propagation/index.d.ts → types/igo2-common-stop-propagation.d.ts} +0 -0
- /package/{timepicker/index.d.ts → types/igo2-common-timepicker.d.ts} +0 -0
- /package/{tool/index.d.ts → types/igo2-common-tool.d.ts} +0 -0
- /package/{widget/index.d.ts → types/igo2-common-widget.d.ts} +0 -0
- /package/{workspace/index.d.ts → types/igo2-common-workspace.d.ts} +0 -0
- /package/{index.d.ts → types/igo2-common.d.ts} +0 -0
|
@@ -29,16 +29,16 @@ class DatepickerComponent {
|
|
|
29
29
|
return this._disabled;
|
|
30
30
|
}
|
|
31
31
|
_disabled = false;
|
|
32
|
-
placeholder = input(undefined, ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
33
|
-
minDate = input(undefined, ...(ngDevMode ? [{ debugName: "minDate" }] : []));
|
|
34
|
-
maxDate = input(undefined, ...(ngDevMode ? [{ debugName: "maxDate" }] : []));
|
|
35
|
-
calendarType = input('date', ...(ngDevMode ? [{ debugName: "calendarType" }] : []));
|
|
36
|
-
startView = model(undefined, ...(ngDevMode ? [{ debugName: "startView" }] : []));
|
|
37
|
-
startAt = input(undefined, ...(ngDevMode ? [{ debugName: "startAt" }] : []));
|
|
38
|
-
datepickerFilter = input(undefined, ...(ngDevMode ? [{ debugName: "datepickerFilter" }] : []));
|
|
39
|
-
value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
40
|
-
todayButtonLabel = input('Today', ...(ngDevMode ? [{ debugName: "todayButtonLabel" }] : []));
|
|
41
|
-
clearButtonLabel = input('Clear', ...(ngDevMode ? [{ debugName: "clearButtonLabel" }] : []));
|
|
32
|
+
placeholder = input(undefined, ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
33
|
+
minDate = input(undefined, ...(ngDevMode ? [{ debugName: "minDate" }] : /* istanbul ignore next */ []));
|
|
34
|
+
maxDate = input(undefined, ...(ngDevMode ? [{ debugName: "maxDate" }] : /* istanbul ignore next */ []));
|
|
35
|
+
calendarType = input('date', ...(ngDevMode ? [{ debugName: "calendarType" }] : /* istanbul ignore next */ []));
|
|
36
|
+
startView = model(undefined, ...(ngDevMode ? [{ debugName: "startView" }] : /* istanbul ignore next */ []));
|
|
37
|
+
startAt = input(undefined, ...(ngDevMode ? [{ debugName: "startAt" }] : /* istanbul ignore next */ []));
|
|
38
|
+
datepickerFilter = input(undefined, ...(ngDevMode ? [{ debugName: "datepickerFilter" }] : /* istanbul ignore next */ []));
|
|
39
|
+
value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
40
|
+
todayButtonLabel = input('Today', ...(ngDevMode ? [{ debugName: "todayButtonLabel" }] : /* istanbul ignore next */ []));
|
|
41
|
+
clearButtonLabel = input('Clear', ...(ngDevMode ? [{ debugName: "clearButtonLabel" }] : /* istanbul ignore next */ []));
|
|
42
42
|
valueChange = output();
|
|
43
43
|
get panelClassName() {
|
|
44
44
|
return ['year', 'month'].includes(this.calendarType())
|
|
@@ -291,10 +291,10 @@ class DatepickerComponent {
|
|
|
291
291
|
});
|
|
292
292
|
return expectedOrder;
|
|
293
293
|
}
|
|
294
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
295
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
294
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
295
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: DatepickerComponent, isStandalone: true, selector: "igo-datepicker", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, calendarType: { classPropertyName: "calendarType", publicName: "calendarType", isSignal: true, isRequired: false, transformFunction: null }, startView: { classPropertyName: "startView", publicName: "startView", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, datepickerFilter: { classPropertyName: "datepickerFilter", publicName: "datepickerFilter", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, todayButtonLabel: { classPropertyName: "todayButtonLabel", publicName: "todayButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, clearButtonLabel: { classPropertyName: "clearButtonLabel", publicName: "clearButtonLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startView: "startViewChange", valueChange: "valueChange" }, providers: [DatePipe, provideNativeDateAdapter()], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\">\n @if (startView() === 'multi-year' && calendarType() === 'year') {\n <mat-label>\n {{ placeholder() }}\n </mat-label>\n }\n\n <!-- Text input for displaying the selected date -->\n <input\n matInput\n type=\"text\"\n name=\"dateLabel\"\n [formControl]=\"dateLabelFormControl\"\n [placeholder]=\"placeholder()\"\n (blur)=\"handleDateLabelBlur()\"\n [readonly]=\"todaySelected\"\n />\n <!-- Hidden input for the actual datepicker -->\n <input\n [matDatepicker]=\"picker\"\n hidden=\"true\"\n name=\"date\"\n [formControl]=\"dateFormControl\"\n [min]=\"resolveDate(minDate())\"\n [max]=\"resolveDate(maxDate())\"\n [matDatepickerFilter]=\"datepickerFilter()\"\n />\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\" />\n <mat-datepicker\n #picker\n [startView]=\"startView()\"\n [startAt]=\"resolveDate(startAt())\"\n [panelClass]=\"panelClassName\"\n >\n @if (showActions) {\n <mat-datepicker-actions>\n <button mat-button (click)=\"clearDate()\">\n {{ clearButtonLabel() }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"setToday()\">\n {{ todayButtonLabel() }}\n </button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n</mat-form-field>\n", styles: [":host mat-form-field{width:150px}::ng-deep .igo-datepicker-month-year-picker .mat-calendar-period-button{pointer-events:none;cursor:default;color:#00000061}.igo-datepicker-custom-footer{display:flex;justify-content:flex-end;align-items:center;padding:0 8px 8px;gap:5px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i5.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }] });
|
|
296
296
|
}
|
|
297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
297
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
298
298
|
type: Component,
|
|
299
299
|
args: [{ selector: 'igo-datepicker', imports: [
|
|
300
300
|
MatButtonModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-common-datepicker.mjs","sources":["../../../packages/common/datepicker/src/datepicker.component.ts","../../../packages/common/datepicker/src/datepicker.component.html","../../../packages/common/datepicker/src/igo2-common-datepicker.ts"],"sourcesContent":["import { DatePipe } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n inject,\n input,\n model,\n output,\n viewChild\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport {\n MatCalendar,\n MatDatepicker,\n MatDatepickerModule\n} from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { TimeFrame, isTimeFrame, resolveDate } from '@igo2/utils';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'igo-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n imports: [\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n MatDatepickerModule\n ],\n providers: [DatePipe, provideNativeDateAdapter()]\n})\nexport class DatepickerComponent implements OnInit, AfterViewInit, OnDestroy {\n private datePipe = inject(DatePipe);\n private _locale = inject(LOCALE_ID);\n\n readonly picker = viewChild.required<MatDatepicker<Date>>('picker');\n\n @Input()\n set disabled(value: boolean) {\n this._disabled = value;\n this.setDisabledState();\n }\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n readonly placeholder = input<string>(undefined);\n readonly minDate = input<Date | TimeFrame>(undefined);\n readonly maxDate = input<Date | TimeFrame>(undefined);\n readonly calendarType = input<'year' | 'month' | 'date' | 'datetime'>('date');\n readonly startView = model<'multi-year' | 'year' | 'month'>(undefined);\n readonly startAt = input<Date | TimeFrame>(undefined);\n readonly datepickerFilter = input<(date: Date | null) => boolean>(undefined);\n readonly value = input<Date | TimeFrame>(undefined);\n readonly todayButtonLabel = input<string>('Today');\n readonly clearButtonLabel = input<string>('Clear');\n\n readonly valueChange = output<Date | TimeFrame>();\n\n get panelClassName(): string {\n return ['year', 'month'].includes(this.calendarType())\n ? 'igo-datepicker-month-year-picker'\n : '';\n }\n\n resolveDate = resolveDate;\n dateFormControl!: FormControl<Date>;\n dateLabelFormControl!: FormControl<string>;\n showActions = false;\n todaySelected = false;\n previousTodaySelected: boolean;\n previousValue: Date | TimeFrame;\n\n private destroy$ = new Subject<void>();\n\n ngOnInit(): void {\n this.initStartView();\n this.initFormControls();\n\n this.todaySelected = isTimeFrame(this.value());\n\n this.dateFormControl.valueChanges.subscribe((value) => {\n this.picker().startAt = value;\n if (!this.todaySelected) {\n this.dateLabelFormControl.setValue(this.getFormattedLabel(value));\n }\n\n const emittedValue = this.todaySelected\n ? this.calendarType() === 'datetime'\n ? TimeFrame[0]\n : TimeFrame[1]\n : value;\n this.valueChange.emit(emittedValue);\n });\n }\n\n ngAfterViewInit(): void {\n this.attachCalendarTypeListeners();\n this.picker()\n .openedStream.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.previousValue = this.dateFormControl.value;\n this.previousTodaySelected = this.todaySelected;\n this.todaySelected = false;\n this.registerAutoCloseEvents();\n });\n\n this.picker()\n .closedStream.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.previousValue === this.dateFormControl.value) {\n this.todaySelected = this.previousTodaySelected;\n } else if (isTimeFrame(this.value())) {\n this.todaySelected = true;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setToday(): void {\n const keyword =\n this.calendarType() === 'datetime' ? TimeFrame[0] : TimeFrame[1];\n const picker = this.picker();\n const date = (picker.startAt = resolveDate(keyword));\n this.dateLabelFormControl.setValue(this.getFormattedLabel(keyword));\n this.todaySelected = true;\n this.updateDateControl(date);\n\n picker.close();\n }\n\n clearDate(): void {\n this.dateFormControl.reset();\n this.dateLabelFormControl.reset();\n this.picker().close();\n }\n\n private registerAutoCloseEvents(): void {\n const resolvedMaxDate = resolveDate(this.maxDate());\n\n this.showActions =\n (!resolvedMaxDate || resolvedMaxDate >= new Date()) &&\n ['date', 'datetime'].includes(this.calendarType());\n\n if (this.showActions) {\n // Workaround, we need the next event queue to get the calendar\n setTimeout(() => {\n const calendar: MatCalendar<Date> =\n this.picker()['_componentRef'].instance._calendar;\n calendar?._userSelection.subscribe((event) => {\n this.dateFormControl.setValue(event.value);\n this.picker().close();\n });\n }, 0);\n }\n }\n\n /** Public API methods */\n reset(date: Date | TimeFrame) {\n this.todaySelected = isTimeFrame(date);\n this.dateLabelFormControl.setValue(this.getFormattedLabel(date));\n this.dateFormControl.setValue(resolveDate(date));\n }\n\n handleDateLabelBlur(): void {\n const value = this.dateLabelFormControl.value;\n const parsedDate = this.parseInput(value);\n if (!parsedDate) return;\n this.dateFormControl.setValue(parsedDate);\n }\n\n private parseInput(value: string): Date | undefined {\n if (!value) return undefined;\n switch (this.calendarType()) {\n case 'year':\n return this.parseYearInput(value);\n case 'month':\n return this.parseMonthInput(value);\n default:\n return this.parseDateInput(value);\n }\n }\n\n private parseYearInput(value: string): Date | undefined {\n // Accept \"yyyy\"\n const match = value.match(/^\\s*(\\d{4})\\s*$/);\n if (!match) return undefined;\n const year = +match[1];\n const date = new Date(year, 0, 1);\n return date.getFullYear() === year ? date : undefined;\n }\n\n private parseMonthInput(value: string): Date | undefined {\n return this.parseFromLocalizedInput(value, {\n year: 'numeric',\n month: '2-digit'\n });\n }\n\n private parseDateInput(value: string): Date | undefined {\n return this.parseFromLocalizedInput(value, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n });\n }\n\n private initStartView(): void {\n if (this.startView()) return;\n switch (this.calendarType()) {\n case 'year':\n this.startView.set('multi-year');\n break;\n case 'month':\n this.startView.set('year');\n break;\n case 'date':\n case 'datetime':\n default:\n this.startView.set('month');\n break;\n }\n }\n\n private initFormControls() {\n const date = this.value() ?? new Date();\n this.dateFormControl = new FormControl({\n value: resolveDate(date),\n disabled: this.disabled\n });\n\n this.dateLabelFormControl = new FormControl({\n value: this.getFormattedLabel(date),\n disabled: this.disabled\n });\n }\n\n private setDisabledState(): void {\n const method = this.disabled ? 'disable' : 'enable';\n this.dateFormControl?.[method]({ emitEvent: false });\n this.dateLabelFormControl?.[method]({ emitEvent: false });\n }\n\n private attachCalendarTypeListeners(): void {\n const calendarType = this.calendarType();\n if (calendarType === 'year') {\n this.picker().yearSelected.subscribe((date) => {\n this.updateDateControl(date);\n this.picker().close();\n });\n } else if (calendarType === 'month') {\n this.picker().monthSelected.subscribe((date) => {\n this.updateDateControl(date);\n this.picker().close();\n });\n }\n }\n\n private updateDateControl(date: Date) {\n this.dateFormControl.setValue(date);\n }\n\n private getFormattedLabel(date: Date | TimeFrame): string {\n if (isTimeFrame(date)) return this.todayButtonLabel();\n const calendarType = this.calendarType();\n if (calendarType === 'year') {\n return this.format(date as Date, 'yyyy');\n } else if (calendarType === 'month') {\n return this.formatYearMonth(date as Date);\n }\n return this.format(date as Date, 'shortDate');\n }\n\n private format(date: Date, formatStr: string): string {\n return (\n this.datePipe.transform(date, formatStr, undefined, this._locale) ?? ''\n );\n }\n\n private formatYearMonth(date: Date): string {\n return new Intl.DateTimeFormat(this._locale, {\n year: 'numeric',\n month: '2-digit'\n }).format(date);\n }\n\n private parseFromLocalizedInput(\n value: string,\n formatOptions: Intl.DateTimeFormatOptions\n ): Date | undefined {\n const expectedOrder = this.getExpectedDateOrder(formatOptions);\n const inputParts = value.trim().match(/\\d+/g);\n if (!inputParts || inputParts.length !== expectedOrder.length)\n return undefined;\n\n let year: number | undefined;\n let month: number | undefined;\n let day: number | undefined;\n\n expectedOrder.forEach((type, i) => {\n const num = Number(inputParts[i]);\n if (type === 'year') year = num;\n else if (type === 'month') month = num;\n else if (type === 'day') day = num;\n });\n\n // Basic range checks\n if (!year || !month || month < 1 || month > 12) return undefined;\n const date = new Date(year, month - 1, day !== undefined ? day : 1);\n const isValid =\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n day !== undefined\n ? date.getDate() === day\n : true;\n return isValid ? date : undefined;\n }\n\n /**\n * Returns the expected order of date parts (year, month, day) as used by\n * Intl.DateTimeFormat.formatToParts for the provided options and current locale.\n */\n private getExpectedDateOrder(\n formatOptions: Intl.DateTimeFormatOptions\n ): ('year' | 'month' | 'day')[] {\n const sampleDate = new Date(2001, 1, 3);\n const formatter = new Intl.DateTimeFormat(this._locale, formatOptions);\n const formatParts = formatter.formatToParts(sampleDate);\n // Extract expected order from locale formatting\n const expectedOrder: ('year' | 'month' | 'day')[] = [];\n formatParts.forEach((part) => {\n if (\n part.type === 'year' ||\n part.type === 'month' ||\n part.type === 'day'\n ) {\n expectedOrder.push(part.type);\n }\n });\n return expectedOrder;\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\">\n @if (startView() === 'multi-year' && calendarType() === 'year') {\n <mat-label>\n {{ placeholder() }}\n </mat-label>\n }\n\n <!-- Text input for displaying the selected date -->\n <input\n matInput\n type=\"text\"\n name=\"dateLabel\"\n [formControl]=\"dateLabelFormControl\"\n [placeholder]=\"placeholder()\"\n (blur)=\"handleDateLabelBlur()\"\n [readonly]=\"todaySelected\"\n />\n <!-- Hidden input for the actual datepicker -->\n <input\n [matDatepicker]=\"picker\"\n hidden=\"true\"\n name=\"date\"\n [formControl]=\"dateFormControl\"\n [min]=\"resolveDate(minDate())\"\n [max]=\"resolveDate(maxDate())\"\n [matDatepickerFilter]=\"datepickerFilter()\"\n />\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\" />\n <mat-datepicker\n #picker\n [startView]=\"startView()\"\n [startAt]=\"resolveDate(startAt())\"\n [panelClass]=\"panelClassName\"\n >\n @if (showActions) {\n <mat-datepicker-actions>\n <button mat-button (click)=\"clearDate()\">\n {{ clearButtonLabel() }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"setToday()\">\n {{ todayButtonLabel() }}\n </button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n</mat-form-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-common-datepicker.mjs","sources":["../../../packages/common/datepicker/src/datepicker.component.ts","../../../packages/common/datepicker/src/datepicker.component.html","../../../packages/common/datepicker/src/igo2-common-datepicker.ts"],"sourcesContent":["import { DatePipe } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n Input,\n LOCALE_ID,\n OnDestroy,\n OnInit,\n inject,\n input,\n model,\n output,\n viewChild\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport {\n MatCalendar,\n MatDatepicker,\n MatDatepickerModule\n} from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { TimeFrame, isTimeFrame, resolveDate } from '@igo2/utils';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'igo-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n imports: [\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n MatDatepickerModule\n ],\n providers: [DatePipe, provideNativeDateAdapter()]\n})\nexport class DatepickerComponent implements OnInit, AfterViewInit, OnDestroy {\n private datePipe = inject(DatePipe);\n private _locale = inject(LOCALE_ID);\n\n readonly picker = viewChild.required<MatDatepicker<Date>>('picker');\n\n @Input()\n set disabled(value: boolean) {\n this._disabled = value;\n this.setDisabledState();\n }\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n readonly placeholder = input<string>(undefined);\n readonly minDate = input<Date | TimeFrame>(undefined);\n readonly maxDate = input<Date | TimeFrame>(undefined);\n readonly calendarType = input<'year' | 'month' | 'date' | 'datetime'>('date');\n readonly startView = model<'multi-year' | 'year' | 'month'>(undefined);\n readonly startAt = input<Date | TimeFrame>(undefined);\n readonly datepickerFilter = input<(date: Date | null) => boolean>(undefined);\n readonly value = input<Date | TimeFrame>(undefined);\n readonly todayButtonLabel = input<string>('Today');\n readonly clearButtonLabel = input<string>('Clear');\n\n readonly valueChange = output<Date | TimeFrame>();\n\n get panelClassName(): string {\n return ['year', 'month'].includes(this.calendarType())\n ? 'igo-datepicker-month-year-picker'\n : '';\n }\n\n resolveDate = resolveDate;\n dateFormControl!: FormControl<Date>;\n dateLabelFormControl!: FormControl<string>;\n showActions = false;\n todaySelected = false;\n previousTodaySelected: boolean;\n previousValue: Date | TimeFrame;\n\n private destroy$ = new Subject<void>();\n\n ngOnInit(): void {\n this.initStartView();\n this.initFormControls();\n\n this.todaySelected = isTimeFrame(this.value());\n\n this.dateFormControl.valueChanges.subscribe((value) => {\n this.picker().startAt = value;\n if (!this.todaySelected) {\n this.dateLabelFormControl.setValue(this.getFormattedLabel(value));\n }\n\n const emittedValue = this.todaySelected\n ? this.calendarType() === 'datetime'\n ? TimeFrame[0]\n : TimeFrame[1]\n : value;\n this.valueChange.emit(emittedValue);\n });\n }\n\n ngAfterViewInit(): void {\n this.attachCalendarTypeListeners();\n this.picker()\n .openedStream.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.previousValue = this.dateFormControl.value;\n this.previousTodaySelected = this.todaySelected;\n this.todaySelected = false;\n this.registerAutoCloseEvents();\n });\n\n this.picker()\n .closedStream.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.previousValue === this.dateFormControl.value) {\n this.todaySelected = this.previousTodaySelected;\n } else if (isTimeFrame(this.value())) {\n this.todaySelected = true;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setToday(): void {\n const keyword =\n this.calendarType() === 'datetime' ? TimeFrame[0] : TimeFrame[1];\n const picker = this.picker();\n const date = (picker.startAt = resolveDate(keyword));\n this.dateLabelFormControl.setValue(this.getFormattedLabel(keyword));\n this.todaySelected = true;\n this.updateDateControl(date);\n\n picker.close();\n }\n\n clearDate(): void {\n this.dateFormControl.reset();\n this.dateLabelFormControl.reset();\n this.picker().close();\n }\n\n private registerAutoCloseEvents(): void {\n const resolvedMaxDate = resolveDate(this.maxDate());\n\n this.showActions =\n (!resolvedMaxDate || resolvedMaxDate >= new Date()) &&\n ['date', 'datetime'].includes(this.calendarType());\n\n if (this.showActions) {\n // Workaround, we need the next event queue to get the calendar\n setTimeout(() => {\n const calendar: MatCalendar<Date> =\n this.picker()['_componentRef'].instance._calendar;\n calendar?._userSelection.subscribe((event) => {\n this.dateFormControl.setValue(event.value);\n this.picker().close();\n });\n }, 0);\n }\n }\n\n /** Public API methods */\n reset(date: Date | TimeFrame) {\n this.todaySelected = isTimeFrame(date);\n this.dateLabelFormControl.setValue(this.getFormattedLabel(date));\n this.dateFormControl.setValue(resolveDate(date));\n }\n\n handleDateLabelBlur(): void {\n const value = this.dateLabelFormControl.value;\n const parsedDate = this.parseInput(value);\n if (!parsedDate) return;\n this.dateFormControl.setValue(parsedDate);\n }\n\n private parseInput(value: string): Date | undefined {\n if (!value) return undefined;\n switch (this.calendarType()) {\n case 'year':\n return this.parseYearInput(value);\n case 'month':\n return this.parseMonthInput(value);\n default:\n return this.parseDateInput(value);\n }\n }\n\n private parseYearInput(value: string): Date | undefined {\n // Accept \"yyyy\"\n const match = value.match(/^\\s*(\\d{4})\\s*$/);\n if (!match) return undefined;\n const year = +match[1];\n const date = new Date(year, 0, 1);\n return date.getFullYear() === year ? date : undefined;\n }\n\n private parseMonthInput(value: string): Date | undefined {\n return this.parseFromLocalizedInput(value, {\n year: 'numeric',\n month: '2-digit'\n });\n }\n\n private parseDateInput(value: string): Date | undefined {\n return this.parseFromLocalizedInput(value, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n });\n }\n\n private initStartView(): void {\n if (this.startView()) return;\n switch (this.calendarType()) {\n case 'year':\n this.startView.set('multi-year');\n break;\n case 'month':\n this.startView.set('year');\n break;\n case 'date':\n case 'datetime':\n default:\n this.startView.set('month');\n break;\n }\n }\n\n private initFormControls() {\n const date = this.value() ?? new Date();\n this.dateFormControl = new FormControl({\n value: resolveDate(date),\n disabled: this.disabled\n });\n\n this.dateLabelFormControl = new FormControl({\n value: this.getFormattedLabel(date),\n disabled: this.disabled\n });\n }\n\n private setDisabledState(): void {\n const method = this.disabled ? 'disable' : 'enable';\n this.dateFormControl?.[method]({ emitEvent: false });\n this.dateLabelFormControl?.[method]({ emitEvent: false });\n }\n\n private attachCalendarTypeListeners(): void {\n const calendarType = this.calendarType();\n if (calendarType === 'year') {\n this.picker().yearSelected.subscribe((date) => {\n this.updateDateControl(date);\n this.picker().close();\n });\n } else if (calendarType === 'month') {\n this.picker().monthSelected.subscribe((date) => {\n this.updateDateControl(date);\n this.picker().close();\n });\n }\n }\n\n private updateDateControl(date: Date) {\n this.dateFormControl.setValue(date);\n }\n\n private getFormattedLabel(date: Date | TimeFrame): string {\n if (isTimeFrame(date)) return this.todayButtonLabel();\n const calendarType = this.calendarType();\n if (calendarType === 'year') {\n return this.format(date as Date, 'yyyy');\n } else if (calendarType === 'month') {\n return this.formatYearMonth(date as Date);\n }\n return this.format(date as Date, 'shortDate');\n }\n\n private format(date: Date, formatStr: string): string {\n return (\n this.datePipe.transform(date, formatStr, undefined, this._locale) ?? ''\n );\n }\n\n private formatYearMonth(date: Date): string {\n return new Intl.DateTimeFormat(this._locale, {\n year: 'numeric',\n month: '2-digit'\n }).format(date);\n }\n\n private parseFromLocalizedInput(\n value: string,\n formatOptions: Intl.DateTimeFormatOptions\n ): Date | undefined {\n const expectedOrder = this.getExpectedDateOrder(formatOptions);\n const inputParts = value.trim().match(/\\d+/g);\n if (!inputParts || inputParts.length !== expectedOrder.length)\n return undefined;\n\n let year: number | undefined;\n let month: number | undefined;\n let day: number | undefined;\n\n expectedOrder.forEach((type, i) => {\n const num = Number(inputParts[i]);\n if (type === 'year') year = num;\n else if (type === 'month') month = num;\n else if (type === 'day') day = num;\n });\n\n // Basic range checks\n if (!year || !month || month < 1 || month > 12) return undefined;\n const date = new Date(year, month - 1, day !== undefined ? day : 1);\n const isValid =\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n day !== undefined\n ? date.getDate() === day\n : true;\n return isValid ? date : undefined;\n }\n\n /**\n * Returns the expected order of date parts (year, month, day) as used by\n * Intl.DateTimeFormat.formatToParts for the provided options and current locale.\n */\n private getExpectedDateOrder(\n formatOptions: Intl.DateTimeFormatOptions\n ): ('year' | 'month' | 'day')[] {\n const sampleDate = new Date(2001, 1, 3);\n const formatter = new Intl.DateTimeFormat(this._locale, formatOptions);\n const formatParts = formatter.formatToParts(sampleDate);\n // Extract expected order from locale formatting\n const expectedOrder: ('year' | 'month' | 'day')[] = [];\n formatParts.forEach((part) => {\n if (\n part.type === 'year' ||\n part.type === 'month' ||\n part.type === 'day'\n ) {\n expectedOrder.push(part.type);\n }\n });\n return expectedOrder;\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\">\n @if (startView() === 'multi-year' && calendarType() === 'year') {\n <mat-label>\n {{ placeholder() }}\n </mat-label>\n }\n\n <!-- Text input for displaying the selected date -->\n <input\n matInput\n type=\"text\"\n name=\"dateLabel\"\n [formControl]=\"dateLabelFormControl\"\n [placeholder]=\"placeholder()\"\n (blur)=\"handleDateLabelBlur()\"\n [readonly]=\"todaySelected\"\n />\n <!-- Hidden input for the actual datepicker -->\n <input\n [matDatepicker]=\"picker\"\n hidden=\"true\"\n name=\"date\"\n [formControl]=\"dateFormControl\"\n [min]=\"resolveDate(minDate())\"\n [max]=\"resolveDate(maxDate())\"\n [matDatepickerFilter]=\"datepickerFilter()\"\n />\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\" />\n <mat-datepicker\n #picker\n [startView]=\"startView()\"\n [startAt]=\"resolveDate(startAt())\"\n [panelClass]=\"panelClassName\"\n >\n @if (showActions) {\n <mat-datepicker-actions>\n <button mat-button (click)=\"clearDate()\">\n {{ clearButtonLabel() }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"setToday()\">\n {{ todayButtonLabel() }}\n </button>\n </mat-datepicker-actions>\n }\n </mat-datepicker>\n</mat-form-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -20,10 +20,10 @@ class DOMService {
|
|
|
20
20
|
.toPromise();
|
|
21
21
|
return result;
|
|
22
22
|
}
|
|
23
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
24
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DOMService, providedIn: 'root' });
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DOMService, decorators: [{
|
|
27
27
|
type: Injectable,
|
|
28
28
|
args: [{
|
|
29
29
|
providedIn: 'root'
|
|
@@ -43,11 +43,11 @@ class IgoDOMModule {
|
|
|
43
43
|
providers: [DOMService]
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
47
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
48
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoDOMModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
47
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoDOMModule });
|
|
48
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoDOMModule, providers: [DOMService] });
|
|
49
49
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoDOMModule, decorators: [{
|
|
51
51
|
type: NgModule,
|
|
52
52
|
args: [{
|
|
53
53
|
providers: [DOMService]
|
|
@@ -3,7 +3,7 @@ import { input, output, HostListener, HostBinding, Directive, inject, ElementRef
|
|
|
3
3
|
import { MatTreeNode } from '@angular/material/tree';
|
|
4
4
|
|
|
5
5
|
class DragAndDropDirective {
|
|
6
|
-
allowedExtensions = input([], ...(ngDevMode ? [{ debugName: "allowedExtensions" }] : []));
|
|
6
|
+
allowedExtensions = input([], ...(ngDevMode ? [{ debugName: "allowedExtensions" }] : /* istanbul ignore next */ []));
|
|
7
7
|
filesDropped = output();
|
|
8
8
|
filesInvalid = output();
|
|
9
9
|
background = 'inherit';
|
|
@@ -54,14 +54,13 @@ class DragAndDropDirective {
|
|
|
54
54
|
}
|
|
55
55
|
return filesObj;
|
|
56
56
|
}
|
|
57
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
58
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
57
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DragAndDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: DragAndDropDirective, isStandalone: true, selector: "[igoDragAndDrop]", inputs: { allowedExtensions: { classPropertyName: "allowedExtensions", publicName: "allowedExtensions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesDropped: "filesDropped", filesInvalid: "filesInvalid" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "style.background": "this.background" } }, ngImport: i0 });
|
|
59
59
|
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DragAndDropDirective, decorators: [{
|
|
61
61
|
type: Directive,
|
|
62
62
|
args: [{
|
|
63
|
-
selector: '[igoDragAndDrop]'
|
|
64
|
-
standalone: true
|
|
63
|
+
selector: '[igoDragAndDrop]'
|
|
65
64
|
}]
|
|
66
65
|
}], propDecorators: { allowedExtensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowedExtensions", required: false }] }], filesDropped: [{ type: i0.Output, args: ["filesDropped"] }], filesInvalid: [{ type: i0.Output, args: ["filesInvalid"] }], background: [{
|
|
67
66
|
type: HostBinding,
|
|
@@ -88,32 +87,30 @@ class TreeDragDropDirective {
|
|
|
88
87
|
elementRef = inject(ElementRef);
|
|
89
88
|
renderer = inject(Renderer2);
|
|
90
89
|
draggedNode;
|
|
91
|
-
dropNodeTarget = signal(null, ...(ngDevMode ? [{ debugName: "dropNodeTarget" }] : []));
|
|
90
|
+
dropNodeTarget = signal(null, ...(ngDevMode ? [{ debugName: "dropNodeTarget" }] : /* istanbul ignore next */ []));
|
|
92
91
|
expandTimeout;
|
|
93
92
|
nodesListeners;
|
|
94
93
|
nodesEffect = effect(() => {
|
|
95
94
|
this.nodes();
|
|
96
95
|
this.addAllListener();
|
|
97
|
-
}, ...(ngDevMode ? [{ debugName: "nodesEffect" }] : []));
|
|
98
|
-
dropLineTarget = signal(null, ...(ngDevMode ? [{ debugName: "dropLineTarget" }] : []));
|
|
99
|
-
previousDropLine = signal(null, ...(ngDevMode ? [{ debugName: "previousDropLine" }] : []));
|
|
100
|
-
dropPosition = signal(null, ...(ngDevMode ? [{ debugName: "dropPosition" }] : []));
|
|
101
|
-
dragging = signal(false, ...(ngDevMode ? [{ debugName: "dragging" }] : []));
|
|
96
|
+
}, ...(ngDevMode ? [{ debugName: "nodesEffect" }] : /* istanbul ignore next */ []));
|
|
97
|
+
dropLineTarget = signal(null, ...(ngDevMode ? [{ debugName: "dropLineTarget" }] : /* istanbul ignore next */ []));
|
|
98
|
+
previousDropLine = signal(null, ...(ngDevMode ? [{ debugName: "previousDropLine" }] : /* istanbul ignore next */ []));
|
|
99
|
+
dropPosition = signal(null, ...(ngDevMode ? [{ debugName: "dropPosition" }] : /* istanbul ignore next */ []));
|
|
100
|
+
dragging = signal(false, ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
|
|
102
101
|
// Use a Set or just manage classes manually since SelectionModel was providing simple toggle
|
|
103
102
|
// But we can stick to simple class logic
|
|
104
103
|
highlightedNode;
|
|
105
|
-
tree = input.required(...(ngDevMode ? [{ debugName: "tree" }] : []));
|
|
106
|
-
childrenAccessor = input.required(...(ngDevMode ? [{ debugName: "childrenAccessor" }] : []));
|
|
107
|
-
config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
104
|
+
tree = input.required(...(ngDevMode ? [{ debugName: "tree" }] : /* istanbul ignore next */ []));
|
|
105
|
+
childrenAccessor = input.required(...(ngDevMode ? [{ debugName: "childrenAccessor" }] : /* istanbul ignore next */ []));
|
|
106
|
+
config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
|
|
108
107
|
/** The default is 5 */
|
|
109
|
-
maxLevel = input(5, ...(ngDevMode ? [{ debugName: "maxLevel" }] : []));
|
|
110
|
-
treeDragDropIsDisabled = input(false, ...(ngDevMode ?
|
|
111
|
-
transform: booleanAttribute
|
|
112
|
-
}]));
|
|
108
|
+
maxLevel = input(5, ...(ngDevMode ? [{ debugName: "maxLevel" }] : /* istanbul ignore next */ []));
|
|
109
|
+
treeDragDropIsDisabled = input(false, { ...(ngDevMode ? { debugName: "treeDragDropIsDisabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
113
110
|
dragStart = output();
|
|
114
111
|
dropped = output();
|
|
115
112
|
droppedError = output();
|
|
116
|
-
nodes = contentChildren(MatTreeNode, ...(ngDevMode ?
|
|
113
|
+
nodes = contentChildren(MatTreeNode, { ...(ngDevMode ? { debugName: "nodes" } : /* istanbul ignore next */ {}), descendants: true });
|
|
117
114
|
constructor() {
|
|
118
115
|
this.dropped.subscribe(() => this.dragEnd());
|
|
119
116
|
effect(() => {
|
|
@@ -551,14 +548,13 @@ class TreeDragDropDirective {
|
|
|
551
548
|
findTreeNode(id) {
|
|
552
549
|
return this.nodes().find((n) => String(n.data.id) === String(id));
|
|
553
550
|
}
|
|
554
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
555
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
551
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: TreeDragDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
552
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.10", type: TreeDragDropDirective, isStandalone: true, selector: "[igoTreeDragDrop]", inputs: { tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: true, transformFunction: null }, childrenAccessor: { classPropertyName: "childrenAccessor", publicName: "childrenAccessor", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, maxLevel: { classPropertyName: "maxLevel", publicName: "maxLevel", isSignal: true, isRequired: false, transformFunction: null }, treeDragDropIsDisabled: { classPropertyName: "treeDragDropIsDisabled", publicName: "treeDragDropIsDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragStart: "dragStart", dropped: "dropped", droppedError: "droppedError" }, host: { listeners: { "dragover": "hostDragOver($event)", "dragleave": "hostDragLeave($event)", "drop": "hostDrop($event)" }, properties: { "class.--dragging": "dragging()" } }, queries: [{ propertyName: "nodes", predicate: MatTreeNode, descendants: true, isSignal: true }], ngImport: i0 });
|
|
556
553
|
}
|
|
557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
554
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: TreeDragDropDirective, decorators: [{
|
|
558
555
|
type: Directive,
|
|
559
556
|
args: [{
|
|
560
557
|
selector: '[igoTreeDragDrop]',
|
|
561
|
-
standalone: true,
|
|
562
558
|
host: {
|
|
563
559
|
'[class.--dragging]': 'dragging()',
|
|
564
560
|
'(dragover)': 'hostDragOver($event)',
|
|
@@ -578,11 +574,11 @@ class IgoDrapDropModule {
|
|
|
578
574
|
providers: []
|
|
579
575
|
};
|
|
580
576
|
}
|
|
581
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
582
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
583
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
577
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoDrapDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
578
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoDrapDropModule, imports: [DragAndDropDirective, TreeDragDropDirective], exports: [DragAndDropDirective, TreeDragDropDirective] });
|
|
579
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoDrapDropModule });
|
|
584
580
|
}
|
|
585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
581
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoDrapDropModule, decorators: [{
|
|
586
582
|
type: NgModule,
|
|
587
583
|
args: [{
|
|
588
584
|
imports: [DragAndDropDirective, TreeDragDropDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-common-drag-drop.mjs","sources":["../../../packages/common/drag-drop/src/drag-drop.directive.ts","../../../packages/common/drag-drop/src/tree-drag-drop/tree-drag-drop.directive.ts","../../../packages/common/drag-drop/src/drag-drop.module.ts","../../../packages/common/drag-drop/src/igo2-common-drag-drop.ts"],"sourcesContent":["import {\n Directive,\n HostBinding,\n HostListener,\n input,\n output\n} from '@angular/core';\n\n@Directive({\n selector: '[igoDragAndDrop]',\n standalone: true\n})\nexport class DragAndDropDirective {\n readonly allowedExtensions = input<string[]>([]);\n\n protected readonly filesDropped = output<File[]>();\n\n protected readonly filesInvalid = output<File[]>();\n\n @HostBinding('style.background') private background = 'inherit';\n\n @HostListener('dragover', ['$event'])\n public onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#999';\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'inherit';\n }\n\n @HostListener('drop', ['$event'])\n public onDrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (evt.alreadyFired) {\n return;\n }\n evt.alreadyFired = true;\n\n this.background = 'inherit';\n const filesObj = this.validExtensions(evt);\n if (filesObj.valid.length) {\n this.filesDropped.emit(filesObj.valid);\n }\n if (filesObj.invalid.length) {\n this.filesInvalid.emit(filesObj.invalid);\n }\n }\n\n private validExtensions(evt) {\n const files = evt.dataTransfer.files;\n const filesObj = {\n valid: [],\n invalid: []\n };\n if (files.length > 0) {\n for (const file of files) {\n const ext = file.name.split('.')[file.name.split('.').length - 1];\n const allowedExtensions = this.allowedExtensions();\n if (\n allowedExtensions.length === 0 ||\n (allowedExtensions.lastIndexOf(ext) !== -1 && file.size !== 0)\n ) {\n filesObj.valid.push(file);\n } else {\n filesObj.invalid.push(file);\n }\n }\n }\n\n return filesObj;\n }\n}\n","import { CdkTree } from '@angular/cdk/tree';\nimport {\n Directive,\n ElementRef,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n contentChildren,\n effect,\n inject,\n input,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { MatTreeNode } from '@angular/material/tree';\n\nimport {\n DropPermission,\n DropPosition,\n DropPositionType,\n TreeDropEvent\n} from './tree-drag-drop.interface';\n\ninterface DragNodeListeners {\n element: HTMLElement;\n listeners: [string, EventListenerOrEventListenerObject][];\n}\n\nexport interface ITreeConfig<T> {\n isGroup: (node: T) => boolean;\n descendantLevels: (node: T) => number | undefined;\n}\n\n/**\n * This directive should be use with a MatTree flatened\n * It should add all logic to drag the MatTreeNode and connect the (onDrop) output\n * Class added:\n * Tree: --dragging\n * Node: --drag-hover | --dragged\n */\n@Directive({\n selector: '[igoTreeDragDrop]',\n standalone: true,\n host: {\n '[class.--dragging]': 'dragging()',\n '(dragover)': 'hostDragOver($event)',\n '(dragleave)': 'hostDragLeave($event)',\n '(drop)': 'hostDrop($event)'\n }\n})\nexport class TreeDragDropDirective<\n T extends { id: string | number } = { id: string | number },\n K = T\n> implements OnDestroy {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n draggedNode: T;\n dropNodeTarget = signal<T | null>(null);\n expandTimeout: number;\n nodesListeners: DragNodeListeners[] | undefined;\n private nodesEffect = effect(() => {\n this.nodes();\n this.addAllListener();\n });\n dropLineTarget = signal<HTMLElement | null>(null);\n previousDropLine = signal<HTMLElement | null>(null);\n dropPosition = signal<DropPosition | null>(null);\n dragging = signal(false);\n // Use a Set or just manage classes manually since SelectionModel was providing simple toggle\n // But we can stick to simple class logic\n highlightedNode: T | undefined;\n\n readonly tree = input.required<CdkTree<T, K>>();\n readonly childrenAccessor = input.required<(node: T) => T[]>();\n readonly config = input.required<ITreeConfig<T>>();\n\n /** The default is 5 */\n readonly maxLevel = input(5);\n\n readonly treeDragDropIsDisabled = input(false, {\n transform: booleanAttribute\n });\n\n readonly dragStart = output<T>();\n\n readonly dropped = output<TreeDropEvent<T>>();\n\n readonly droppedError = output<DropPermission>();\n\n readonly nodes = contentChildren(MatTreeNode, { descendants: true });\n\n constructor() {\n this.dropped.subscribe(() => this.dragEnd());\n\n effect(() => {\n const disabled = this.treeDragDropIsDisabled();\n disabled ? this.removeAllListener() : this.addAllListener();\n });\n\n effect(() => {\n const current = this.dropLineTarget();\n const parent = this.elementRef.nativeElement.parentElement;\n\n if (!current) {\n untracked(() => {\n const previous = this.previousDropLine();\n if (previous !== null) {\n this.renderer.removeChild(parent, previous);\n this.previousDropLine.set(null);\n }\n });\n } else {\n this.renderer.appendChild(parent, current);\n }\n });\n\n effect(() => {\n if (!this.dragging()) {\n return;\n }\n const targetNode = this.dropNodeTarget();\n const position = this.dropPosition();\n const dropLineTarget = this.dropLineTarget();\n\n if (targetNode) {\n this.setHighlightedNode(targetNode);\n\n if (position) {\n if (dropLineTarget) {\n this.updateDropTargetLinePosition(position, dropLineTarget);\n }\n this.handleGroupExpansion(targetNode, position.type === 'inside');\n }\n }\n });\n }\n\n get isGroup() {\n return this.config().isGroup;\n }\n\n get getDescendantLevels() {\n return this.config().descendantLevels;\n }\n\n ngOnDestroy(): void {\n this.removeAllListener();\n this.removeDropTargetLine();\n if (this.nodesEffect) {\n this.nodesEffect.destroy();\n this.nodesEffect = undefined;\n }\n }\n\n hostDragOver(event: Event): void {\n event.preventDefault();\n }\n\n hostDragLeave(event: DragEvent): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n if (\n event.clientY < rect.top ||\n event.clientY >= rect.bottom ||\n event.clientX < rect.left ||\n event.clientX >= rect.right\n ) {\n this.dragLeave();\n }\n }\n\n hostDrop(event: DragEvent): void {\n this.drop(event);\n }\n\n onDragStart(node: T): void {\n this.addDropTargetLine();\n\n this.dragging.set(true);\n this.draggedNode = node;\n this.addNodeClass(node.id, '--dragged');\n\n this.dragStart.emit(node);\n }\n\n dragEnd(): void {\n this.dragging.set(false);\n this.dropNodeTarget.set(null);\n this.dropPosition.set(null);\n\n if (this.draggedNode) {\n this.removeNodeClass(this.draggedNode.id, '--dragged');\n this.draggedNode = null;\n }\n\n this.dragLeave();\n this.removeDropTargetLine();\n }\n\n dragOver(node: T, event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.dropNodeTarget.set(node);\n\n const position = this.getPosition(event, node);\n this.dropPosition.set(position);\n }\n\n dragLeave(): void {\n clearTimeout(this.expandTimeout);\n this.expandTimeout = null;\n if (this.highlightedNode) {\n this.removeNodeClass(this.highlightedNode.id, '--drag-hover');\n this.highlightedNode = undefined;\n }\n }\n\n drop(event: DragEvent): void {\n let nodeTarget = this.dropNodeTarget();\n if (!nodeTarget || this.treeDragDropIsDisabled()) {\n return;\n }\n\n const dropPosition: DropPosition = this.getPosition(event, nodeTarget);\n\n const validation = this.canDropNode(nodeTarget, dropPosition);\n if (!validation.canDrop) {\n this.droppedError.emit(validation);\n return;\n }\n\n let targetNodeLevel = this.getNodeLevel(nodeTarget);\n\n // Allow to drop a last child outside is group. We refer to it's ancestor for the target\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== targetNodeLevel\n ) {\n const ancestor = this.getNodeAncestors(nodeTarget.id, dropPosition.level);\n this.dropNodeTarget.set(ancestor);\n nodeTarget = ancestor;\n targetNodeLevel = this.getNodeLevel(nodeTarget);\n }\n\n if (this.isGroup(nodeTarget)) {\n if (dropPosition.type === 'inside') {\n const isExpanded = this.tree().isExpanded(nodeTarget);\n if (isExpanded) {\n const children = this.getDirectDescendants(nodeTarget);\n if (children[0]?.id === this.draggedNode.id) {\n return;\n }\n }\n\n this.tree().expand(nodeTarget);\n return this.dropped.emit({\n node: this.draggedNode,\n ref: nodeTarget,\n position: dropPosition.type\n });\n }\n }\n\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== targetNodeLevel\n ) {\n const ancestor = this.getNodeAncestors(nodeTarget.id);\n return this.dropped.emit({\n node: this.draggedNode,\n ref: ancestor,\n position: dropPosition.type\n });\n }\n\n this.dropped.emit({\n node: this.draggedNode,\n ref: nodeTarget,\n position: dropPosition.type\n });\n }\n\n private addNodeClass(id: string | number, className: string): void {\n const node = this.findTreeNode(id);\n if (node) {\n this.renderer.addClass(node['_elementRef'].nativeElement, className);\n }\n }\n\n private removeNodeClass(id: string | number, className: string): void {\n const node = this.findTreeNode(id);\n if (node) {\n this.renderer.removeClass(node['_elementRef'].nativeElement, className);\n }\n }\n\n private addAllListener(): void {\n if (this.treeDragDropIsDisabled()) {\n return;\n }\n const nodes = this.nodes();\n if (this.nodesListeners) {\n this.removeAllListener();\n }\n\n this.nodesListeners = nodes?.map((node) => this.addListener(node));\n }\n\n private addListener(node: MatTreeNode<T>): DragNodeListeners {\n const element = node['_elementRef'].nativeElement as HTMLElement;\n const listeners: [string, EventListenerOrEventListenerObject][] = [\n ['dragstart', () => this.onDragStart(node.data)],\n ['dragend', () => this.dragEnd()],\n ['dragover', (event: DragEvent) => this.dragOver(node.data, event)],\n ['dragleave', () => this.dragLeave()]\n ];\n element.setAttribute('draggable', 'true');\n listeners.forEach(([type, listener]) =>\n element.addEventListener(type, listener)\n );\n\n return { element, listeners };\n }\n\n private removeAllListener(): void {\n this.nodesListeners?.forEach(({ element, listeners }) => {\n listeners.forEach(([type, listener]) => {\n element.setAttribute('draggable', 'false');\n element.removeEventListener(type, listener);\n });\n });\n this.nodesListeners = null;\n }\n\n private setHighlightedNode(node: T): void {\n const toHighlight = this.isGroup(node)\n ? node\n : this.getNodeAncestors(node.id);\n\n if (this.highlightedNode && this.highlightedNode.id !== toHighlight?.id) {\n this.removeNodeClass(this.highlightedNode.id, '--drag-hover');\n this.highlightedNode = undefined;\n }\n\n if (toHighlight) {\n this.highlightedNode = toHighlight;\n this.addNodeClass(toHighlight.id, '--drag-hover');\n } else if (this.highlightedNode) {\n this.removeNodeClass(this.highlightedNode.id, '--drag-hover');\n this.highlightedNode = undefined;\n }\n }\n\n private addDropTargetLine(): void {\n const target: HTMLElement = this.renderer.createElement('div');\n target.classList.add('drop-target-line');\n target.setAttribute(\n 'style',\n `position: absolute; top: 0; width: 100%; pointer-events: none; z-index: 4; height: 2px; background-color: black; transition: margin-left 150ms;`\n );\n this.dropLineTarget.set(target);\n }\n\n private removeDropTargetLine(): void {\n const target = this.dropLineTarget();\n if (target) {\n this.previousDropLine.set(target);\n this.dropLineTarget.set(null);\n }\n }\n\n private hideDropTargetLine(): void {\n const target = this.dropLineTarget();\n this.renderer.setStyle(target, 'display', 'none');\n }\n\n private showDropTargetLine(): void {\n const target = this.dropLineTarget();\n this.renderer.setStyle(target, 'display', 'block');\n }\n\n private updateDropTargetLinePosition(\n position: DropPosition,\n dropLineTarget: HTMLElement\n ): void {\n if (position.type === 'inside') {\n return this.hideDropTargetLine();\n } else {\n this.showDropTargetLine();\n }\n\n this.renderer.setStyle(\n dropLineTarget,\n 'margin-left',\n position.level * 24 + 20 + 'px'\n );\n this.renderer.setStyle(\n dropLineTarget,\n 'transform',\n 'translate3d(0,' + position.y + 'px, 0)'\n );\n }\n\n private handleGroupExpansion(node: T, isInside: boolean): void {\n if (!isInside) {\n return this.dragLeave();\n }\n const isOpen = this.tree().isExpanded(node);\n if (!isOpen && !this.expandTimeout) {\n this.expandTimeout = window.setTimeout(() => {\n this.tree().expand(node);\n }, 1200);\n }\n }\n\n private getNodeElement(node: T): HTMLElement | undefined {\n const treeNode = this.findTreeNode(node.id);\n return treeNode?.['_elementRef'].nativeElement;\n }\n\n private canDropNode(hoveredNode: T, position: DropPosition): DropPermission {\n if (this.isGroup(this.draggedNode)) {\n return this.canDropGroup(hoveredNode, position);\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n return { canDrop: true };\n }\n\n private canDropGroup(\n hoveredNode: T,\n position: DropPosition\n ): {\n canDrop: boolean;\n message?: string;\n params?: { [key: string]: unknown };\n } {\n // On ne veut pas permettre le Drop pour un groupe qui s'auto référence\n if (hoveredNode.id === this.draggedNode.id) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n const isHoverDescendant = this.isHoverDescendant(\n hoveredNode.id,\n hoveredNode\n );\n if (isHoverDescendant) {\n return {\n canDrop: !isHoverDescendant,\n message: 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n return {\n canDrop: true,\n message: undefined\n };\n }\n\n private validateMaxHierarchyLevel(position: DropPosition): DropPermission {\n const maxLevel = this.maxLevel();\n if (!maxLevel) {\n return;\n }\n\n let level =\n position.type === 'inside' ? position.level + 1 : position.level;\n\n if (this.isGroup(this.draggedNode)) {\n // We add an extra level +1 to avoid empty group in group\n level = level + +(this.getDescendantLevels(this.draggedNode) ?? 0) + 1;\n }\n\n if (level > maxLevel) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.maxLevel',\n params: { value: maxLevel }\n };\n }\n }\n\n private getDescendants(node: T): T[] {\n const children = this.childrenAccessor()(node) ?? [];\n const descendants: T[] = [...children];\n children.forEach((child) => {\n descendants.push(...this.getDescendants(child));\n });\n return descendants;\n }\n\n private isHoverDescendant(id: string | number, _hoveredNode: T): boolean {\n return this.getDescendants(this.draggedNode).some(\n (child) => child.id === id\n );\n }\n\n private getPosition(event: DragEvent, hoveredNode: T): DropPosition {\n if (this.isGroup(this.draggedNode)) {\n if (this.isHoverDescendant(hoveredNode.id, hoveredNode)) {\n hoveredNode = this.draggedNode;\n }\n }\n\n let positionType = this.getPositionType(event, hoveredNode);\n\n const bellowOpenedGroup =\n this.isGroup(hoveredNode) &&\n positionType === 'below' &&\n this.tree().isExpanded(hoveredNode);\n if (bellowOpenedGroup) {\n positionType = 'inside';\n }\n\n return {\n x: event.x,\n y: this.getPositionY(hoveredNode, positionType),\n level: this.getPositionLevel(hoveredNode, positionType, event.x),\n type: positionType\n };\n }\n\n private getPositionY(node: T, type: DropPositionType): number {\n const element = this.getNodeElement(node);\n const rect = element.getBoundingClientRect();\n\n return type === 'below'\n ? element.offsetTop + rect.height - 1\n : element.offsetTop + 1;\n }\n\n private getPositionType(event: DragEvent, hoveredNode: T): DropPositionType {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n const middle = rect.top + rect.height / 2;\n const y = event.y;\n\n const selfReferencing = this.draggedNode.id === hoveredNode.id;\n if (this.isGroup(hoveredNode) && !selfReferencing) {\n const tolerence = 5;\n if (y <= middle + tolerence && y >= middle - tolerence) {\n return 'inside';\n }\n }\n\n const isBelow = y > middle;\n return isBelow ? 'below' : 'above';\n }\n\n private getPositionLevel(\n hoveredNode: T,\n type: DropPositionType,\n x: number\n ): number {\n const hoveredNodeLevel = this.getNodeLevel(hoveredNode);\n if (hoveredNodeLevel === 0) {\n return 0;\n }\n\n const ancestor = this.getNodeAncestors(hoveredNode.id);\n if (!ancestor) return hoveredNodeLevel;\n\n const children = this.getDirectDescendants(ancestor);\n const lastChild = [...children].pop();\n\n if (type === 'below' && lastChild?.id === hoveredNode.id) {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n\n const indentation = 24;\n const xMin = rect.x + indentation;\n const xMax = xMin + indentation * hoveredNodeLevel;\n\n const isInsideSameGroup = x > xMax;\n if (!isInsideSameGroup) {\n const levelSubstracted = Math.round((xMax - x) / indentation);\n return Math.max(0, hoveredNodeLevel - levelSubstracted);\n }\n }\n return hoveredNodeLevel;\n }\n\n /**\n * @param level if level is defined with go to the defined levle to find ancestor. Sinon on prend le current ancestor\n */\n private getNodeAncestors(id: string | number, level?: number): T | undefined {\n const path = this.getAncestorsPath(id);\n if (path.length === 0) {\n return undefined;\n }\n\n if (level !== undefined) {\n return path[level];\n }\n return path[path.length - 1];\n }\n\n private getAncestorsPath(id: string | number): T[] {\n const nodes = this.nodes();\n const roots = nodes.filter((n) => n.level === 0).map((n) => n.data);\n\n for (const root of roots) {\n const path: T[] = [];\n if (this.findPath(root, id, path)) {\n return path;\n }\n }\n\n return [];\n }\n\n private findPath(\n currentNode: T,\n targetId: string | number,\n path: T[]\n ): boolean {\n if (String(currentNode.id) === String(targetId)) {\n return true;\n }\n\n const children = this.childrenAccessor()(currentNode) ?? [];\n for (const child of children) {\n path.push(currentNode);\n if (this.findPath(child, targetId, path)) {\n return true;\n }\n path.pop();\n }\n return false;\n }\n\n private getNodeLevel(node: T): number {\n const treeNode = this.findTreeNode(node.id);\n return treeNode ? treeNode.level : 0;\n }\n\n private getDirectDescendants(node: T): T[] {\n return this.childrenAccessor()(node) ?? [];\n }\n\n private findTreeNode(id: string | number): MatTreeNode<T> | undefined {\n return this.nodes().find((n) => String(n.data.id) === String(id));\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DragAndDropDirective } from './drag-drop.directive';\nimport { TreeDragDropDirective } from './tree-drag-drop/tree-drag-drop.directive';\n\n/**\n * @deprecated import the DragAndDropDirective directly\n */\n@NgModule({\n imports: [DragAndDropDirective, TreeDragDropDirective],\n exports: [DragAndDropDirective, TreeDragDropDirective]\n})\nexport class IgoDrapDropModule {\n static forRoot(): ModuleWithProviders<IgoDrapDropModule> {\n return {\n ngModule: IgoDrapDropModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAYa,oBAAoB,CAAA;AACtB,IAAA,iBAAiB,GAAG,KAAK,CAAW,EAAE,6DAAC;IAE7B,YAAY,GAAG,MAAM,EAAU;IAE/B,YAAY,GAAG,MAAM,EAAU;IAET,UAAU,GAAG,SAAS;AAGxD,IAAA,UAAU,CAAC,GAAG,EAAA;QACnB,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;IAC1B;AAGO,IAAA,WAAW,CAAC,GAAG,EAAA;QACpB,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC7B;AAGO,IAAA,MAAM,CAAC,GAAG,EAAA;QACf,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,GAAG,CAAC,YAAY,EAAE;YACpB;QACF;AACA,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxC;AACA,QAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1C;IACF;AAEQ,IAAA,eAAe,CAAC,GAAG,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK;AACpC,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE;SACV;AACD,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACjE,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAClD,gBAAA,IACE,iBAAiB,CAAC,MAAM,KAAK,CAAC;AAC9B,qBAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAC9D;AACA,oBAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B;qBAAO;AACL,oBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B;YACF;QACF;AAEA,QAAA,OAAO,QAAQ;IACjB;wGAhEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAQE,WAAW;uBAAC,kBAAkB;;sBAE9B,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;sBAOnC,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAOpC,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;ACDlC;;;;;;AAMG;MAWU,qBAAqB,CAAA;AAIxB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAEpC,IAAA,WAAW;AACX,IAAA,cAAc,GAAG,MAAM,CAAW,IAAI,0DAAC;AACvC,IAAA,aAAa;AACb,IAAA,cAAc;AACN,IAAA,WAAW,GAAG,MAAM,CAAC,MAAK;QAChC,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,cAAc,EAAE;AACvB,IAAA,CAAC,uDAAC;AACF,IAAA,cAAc,GAAG,MAAM,CAAqB,IAAI,0DAAC;AACjD,IAAA,gBAAgB,GAAG,MAAM,CAAqB,IAAI,4DAAC;AACnD,IAAA,YAAY,GAAG,MAAM,CAAsB,IAAI,wDAAC;AAChD,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;;;AAGxB,IAAA,eAAe;AAEN,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAiB;AACtC,IAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,2DAAoB;AACrD,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAkB;;AAGzC,IAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,oDAAC;IAEnB,sBAAsB,GAAG,KAAK,CAAC,KAAK,0DAC3C,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADkB;AAC7C,YAAA,SAAS,EAAE;AACZ,SAAA,CAAA,CAAA,CAAC;IAEO,SAAS,GAAG,MAAM,EAAK;IAEvB,OAAO,GAAG,MAAM,EAAoB;IAEpC,YAAY,GAAG,MAAM,EAAkB;AAEvC,IAAA,KAAK,GAAG,eAAe,CAAC,WAAW,yCAAI,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAAnB,EAAE,WAAW,EAAE,IAAI,EAAE,GAAC;AAEpE,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAE5C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC9C,YAAA,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;AAC7D,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa;YAE1D,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS,CAAC,MAAK;AACb,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,oBAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;wBACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC3C,wBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;oBACjC;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACpB;YACF;AACA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACxC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;YAE5C,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;gBAEnC,IAAI,QAAQ,EAAE;oBACZ,IAAI,cAAc,EAAE;AAClB,wBAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,cAAc,CAAC;oBAC7D;oBACA,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;gBACnE;YACF;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO;IAC9B;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,gBAAgB;IACvC;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;IACF;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;IACxB;AAEA,IAAA,aAAa,CAAC,KAAgB,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,IACE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;AACxB,YAAA,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM;AAC5B,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AACzB,YAAA,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAC3B;YACA,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEA,IAAA,QAAQ,CAAC,KAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB;AAEA,IAAA,WAAW,CAAC,IAAO,EAAA;QACjB,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC;AAEvC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;QAEA,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,QAAQ,CAAC,IAAO,EAAE,KAAgB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjC;IAEA,SAAS,GAAA;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,CAAC;AAC7D,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;IACF;AAEA,IAAA,IAAI,CAAC,KAAgB,EAAA;AACnB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;QACtC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAChD;QACF;QAEA,MAAM,YAAY,GAAiB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC;QAEtE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC;QACF;QAEA,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;;AAGnD,QAAA,IACE,YAAY,CAAC,IAAI,KAAK,OAAO;AAC7B,YAAA,YAAY,CAAC,KAAK,KAAK,eAAe,EACtC;AACA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC;AACzE,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjC,UAAU,GAAG,QAAQ;AACrB,YAAA,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QACjD;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5B,YAAA,IAAI,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBACrD,IAAI,UAAU,EAAE;oBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACtD,oBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;wBAC3C;oBACF;gBACF;gBAEA,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AAC9B,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,oBAAA,GAAG,EAAE,UAAU;oBACf,QAAQ,EAAE,YAAY,CAAC;AACxB,iBAAA,CAAC;YACJ;QACF;AAEA,QAAA,IACE,YAAY,CAAC,IAAI,KAAK,OAAO;AAC7B,YAAA,YAAY,CAAC,KAAK,KAAK,eAAe,EACtC;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;AACrD,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,gBAAA,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAE,YAAY,CAAC;AACxB,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,YAAY,CAAC;AACxB,SAAA,CAAC;IACJ;IAEQ,YAAY,CAAC,EAAmB,EAAE,SAAiB,EAAA;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC;QACtE;IACF;IAEQ,eAAe,CAAC,EAAmB,EAAE,SAAiB,EAAA;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC;QACzE;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACjC;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,iBAAiB,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpE;AAEQ,IAAA,WAAW,CAAC,IAAoB,EAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,aAA4B;AAChE,QAAA,MAAM,SAAS,GAAmD;AAChE,YAAA,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACjC,YAAA,CAAC,UAAU,EAAE,CAAC,KAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;SACrC;AACD,QAAA,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;QACzC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KACjC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CACzC;AAED,QAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;IAC/B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAI;YACtD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAI;AACrC,gBAAA,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;AAC1C,gBAAA,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7C,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;IAC5B;AAEQ,IAAA,kBAAkB,CAAC,IAAO,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AACnC,cAAE;cACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,WAAW,EAAE,EAAE,EAAE;YACvE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,CAAC;AAC7D,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;QAEA,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW;YAClC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC;QACnD;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,CAAC;AAC7D,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;IACF;IAEQ,iBAAiB,GAAA;QACvB,MAAM,MAAM,GAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9D,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACxC,QAAA,MAAM,CAAC,YAAY,CACjB,OAAO,EACP,CAAA,+IAAA,CAAiJ,CAClJ;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;IACjC;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;IACnD;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;IACpD;IAEQ,4BAA4B,CAClC,QAAsB,EACtB,cAA2B,EAAA;AAE3B,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;QAClC;aAAO;YACL,IAAI,CAAC,kBAAkB,EAAE;QAC3B;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,cAAc,EACd,aAAa,EACb,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAChC;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,cAAc,EACd,WAAW,EACX,gBAAgB,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CACzC;IACH;IAEQ,oBAAoB,CAAC,IAAO,EAAE,QAAiB,EAAA;QACrD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QACzB;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;gBAC1C,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,IAAI,CAAC;QACV;IACF;AAEQ,IAAA,cAAc,CAAC,IAAO,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3C,QAAA,OAAO,QAAQ,GAAG,aAAa,CAAC,CAAC,aAAa;IAChD;IAEQ,WAAW,CAAC,WAAc,EAAE,QAAsB,EAAA;QACxD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC;QACjD;QAEA,MAAM,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;QACxE,IAAI,uBAAuB,EAAE;AAC3B,YAAA,OAAO,uBAAuB;QAChC;AAEA,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1B;IAEQ,YAAY,CAClB,WAAc,EACd,QAAsB,EAAA;;QAOtB,IAAI,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YAC1C,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;aACV;QACH;AACA,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAC9C,WAAW,CAAC,EAAE,EACd,WAAW,CACZ;QACD,IAAI,iBAAiB,EAAE;YACrB,OAAO;gBACL,OAAO,EAAE,CAAC,iBAAiB;AAC3B,gBAAA,OAAO,EAAE;aACV;QACH;QAEA,MAAM,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;QACxE,IAAI,uBAAuB,EAAE;AAC3B,YAAA,OAAO,uBAAuB;QAChC;QAEA,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE;SACV;IACH;AAEQ,IAAA,yBAAyB,CAAC,QAAsB,EAAA;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;QAEA,IAAI,KAAK,GACP,QAAQ,CAAC,IAAI,KAAK,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK;QAElE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;;AAElC,YAAA,KAAK,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACxE;AAEA,QAAA,IAAI,KAAK,GAAG,QAAQ,EAAE;YACpB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,qCAAqC;AAC9C,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ;aAC1B;QACH;IACF;AAEQ,IAAA,cAAc,CAAC,IAAO,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;AACpD,QAAA,MAAM,WAAW,GAAQ,CAAC,GAAG,QAAQ,CAAC;AACtC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACzB,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,WAAW;IACpB;IAEQ,iBAAiB,CAAC,EAAmB,EAAE,YAAe,EAAA;QAC5D,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAC/C,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAC3B;IACH;IAEQ,WAAW,CAAC,KAAgB,EAAE,WAAc,EAAA;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAClC,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE;AACvD,gBAAA,WAAW,GAAG,IAAI,CAAC,WAAW;YAChC;QACF;QAEA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;AAE3D,QAAA,MAAM,iBAAiB,GACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACzB,YAAA,YAAY,KAAK,OAAO;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QACrC,IAAI,iBAAiB,EAAE;YACrB,YAAY,GAAG,QAAQ;QACzB;QAEA,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC;AAC/C,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAChE,YAAA,IAAI,EAAE;SACP;IACH;IAEQ,YAAY,CAAC,IAAO,EAAE,IAAsB,EAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACzC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAE5C,OAAO,IAAI,KAAK;cACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG;AACpC,cAAE,OAAO,CAAC,SAAS,GAAG,CAAC;IAC3B;IAEQ,eAAe,CAAC,KAAgB,EAAE,WAAc,EAAA;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAC/C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACzC,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;QAEjB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE;QAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE;YACjD,MAAM,SAAS,GAAG,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,EAAE;AACtD,gBAAA,OAAO,QAAQ;YACjB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM;QAC1B,OAAO,OAAO,GAAG,OAAO,GAAG,OAAO;IACpC;AAEQ,IAAA,gBAAgB,CACtB,WAAc,EACd,IAAsB,EACtB,CAAS,EAAA;QAET,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AACvD,QAAA,IAAI,gBAAgB,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC;QACV;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,gBAAgB;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACpD,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE;AAErC,QAAA,IAAI,IAAI,KAAK,OAAO,IAAI,SAAS,EAAE,EAAE,KAAK,WAAW,CAAC,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;YAE3C,MAAM,WAAW,GAAG,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,WAAW;AACjC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,WAAW,GAAG,gBAAgB;AAElD,YAAA,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI;YAClC,IAAI,CAAC,iBAAiB,EAAE;AACtB,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,CAAC;gBAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;YACzD;QACF;AACA,QAAA,OAAO,gBAAgB;IACzB;AAEA;;AAEG;IACK,gBAAgB,CAAC,EAAmB,EAAE,KAAc,EAAA;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B;AAEQ,IAAA,gBAAgB,CAAC,EAAmB,EAAA;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAEnE,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,IAAI,GAAQ,EAAE;YACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;AACjC,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,QAAQ,CACd,WAAc,EACd,QAAyB,EACzB,IAAS,EAAA;AAET,QAAA,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE;AAC3D,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;AACxC,gBAAA,OAAO,IAAI;YACb;YACA,IAAI,CAAC,GAAG,EAAE;QACZ;AACA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,YAAY,CAAC,IAAO,EAAA;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;IACtC;AAEQ,IAAA,oBAAoB,CAAC,IAAO,EAAA;QAClC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;IAC5C;AAEQ,IAAA,YAAY,CAAC,EAAmB,EAAA;QACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;IACnE;wGA5lBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yiCAwCC,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAxCjC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE,YAAY;AAClC,wBAAA,YAAY,EAAE,sBAAsB;AACpC,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,QAAQ,EAAE;AACX;AACF,iBAAA;AAyCkC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,WAAW,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtFrE;;AAEG;MAKU,iBAAiB,CAAA;AAC5B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE;SACZ;IACH;wGANW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,oBAAoB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC3C,oBAAoB,EAAE,qBAAqB,CAAA,EAAA,CAAA;yGAE1C,iBAAiB,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;AACtD,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,qBAAqB;AACtD,iBAAA;;;ACXD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"igo2-common-drag-drop.mjs","sources":["../../../packages/common/drag-drop/src/drag-drop.directive.ts","../../../packages/common/drag-drop/src/tree-drag-drop/tree-drag-drop.directive.ts","../../../packages/common/drag-drop/src/drag-drop.module.ts","../../../packages/common/drag-drop/src/igo2-common-drag-drop.ts"],"sourcesContent":["import {\n Directive,\n HostBinding,\n HostListener,\n input,\n output\n} from '@angular/core';\n\n@Directive({\n selector: '[igoDragAndDrop]'\n})\nexport class DragAndDropDirective {\n readonly allowedExtensions = input<string[]>([]);\n\n protected readonly filesDropped = output<File[]>();\n\n protected readonly filesInvalid = output<File[]>();\n\n @HostBinding('style.background') background = 'inherit';\n\n @HostListener('dragover', ['$event'])\n public onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#999';\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = 'inherit';\n }\n\n @HostListener('drop', ['$event'])\n public onDrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (evt.alreadyFired) {\n return;\n }\n evt.alreadyFired = true;\n\n this.background = 'inherit';\n const filesObj = this.validExtensions(evt);\n if (filesObj.valid.length) {\n this.filesDropped.emit(filesObj.valid);\n }\n if (filesObj.invalid.length) {\n this.filesInvalid.emit(filesObj.invalid);\n }\n }\n\n private validExtensions(evt) {\n const files = evt.dataTransfer.files;\n const filesObj = {\n valid: [],\n invalid: []\n };\n if (files.length > 0) {\n for (const file of files) {\n const ext = file.name.split('.')[file.name.split('.').length - 1];\n const allowedExtensions = this.allowedExtensions();\n if (\n allowedExtensions.length === 0 ||\n (allowedExtensions.lastIndexOf(ext) !== -1 && file.size !== 0)\n ) {\n filesObj.valid.push(file);\n } else {\n filesObj.invalid.push(file);\n }\n }\n }\n\n return filesObj;\n }\n}\n","import { CdkTree } from '@angular/cdk/tree';\nimport {\n Directive,\n ElementRef,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n contentChildren,\n effect,\n inject,\n input,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { MatTreeNode } from '@angular/material/tree';\n\nimport {\n DropPermission,\n DropPosition,\n DropPositionType,\n TreeDropEvent\n} from './tree-drag-drop.interface';\n\ninterface DragNodeListeners {\n element: HTMLElement;\n listeners: [string, EventListenerOrEventListenerObject][];\n}\n\nexport interface ITreeConfig<T> {\n isGroup: (node: T) => boolean;\n descendantLevels: (node: T) => number | undefined;\n}\n\n/**\n * This directive should be use with a MatTree flatened\n * It should add all logic to drag the MatTreeNode and connect the (onDrop) output\n * Class added:\n * Tree: --dragging\n * Node: --drag-hover | --dragged\n */\n@Directive({\n selector: '[igoTreeDragDrop]',\n host: {\n '[class.--dragging]': 'dragging()',\n '(dragover)': 'hostDragOver($event)',\n '(dragleave)': 'hostDragLeave($event)',\n '(drop)': 'hostDrop($event)'\n }\n})\nexport class TreeDragDropDirective<\n T extends { id: string | number } = { id: string | number },\n K = T\n> implements OnDestroy {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n draggedNode: T;\n dropNodeTarget = signal<T | null>(null);\n expandTimeout: number;\n nodesListeners: DragNodeListeners[] | undefined;\n private nodesEffect = effect(() => {\n this.nodes();\n this.addAllListener();\n });\n dropLineTarget = signal<HTMLElement | null>(null);\n previousDropLine = signal<HTMLElement | null>(null);\n dropPosition = signal<DropPosition | null>(null);\n dragging = signal(false);\n // Use a Set or just manage classes manually since SelectionModel was providing simple toggle\n // But we can stick to simple class logic\n highlightedNode: T | undefined;\n\n readonly tree = input.required<CdkTree<T, K>>();\n readonly childrenAccessor = input.required<(node: T) => T[]>();\n readonly config = input.required<ITreeConfig<T>>();\n\n /** The default is 5 */\n readonly maxLevel = input(5);\n\n readonly treeDragDropIsDisabled = input(false, {\n transform: booleanAttribute\n });\n\n readonly dragStart = output<T>();\n\n readonly dropped = output<TreeDropEvent<T>>();\n\n readonly droppedError = output<DropPermission>();\n\n readonly nodes = contentChildren(MatTreeNode, { descendants: true });\n\n constructor() {\n this.dropped.subscribe(() => this.dragEnd());\n\n effect(() => {\n const disabled = this.treeDragDropIsDisabled();\n disabled ? this.removeAllListener() : this.addAllListener();\n });\n\n effect(() => {\n const current = this.dropLineTarget();\n const parent = this.elementRef.nativeElement.parentElement;\n\n if (!current) {\n untracked(() => {\n const previous = this.previousDropLine();\n if (previous !== null) {\n this.renderer.removeChild(parent, previous);\n this.previousDropLine.set(null);\n }\n });\n } else {\n this.renderer.appendChild(parent, current);\n }\n });\n\n effect(() => {\n if (!this.dragging()) {\n return;\n }\n const targetNode = this.dropNodeTarget();\n const position = this.dropPosition();\n const dropLineTarget = this.dropLineTarget();\n\n if (targetNode) {\n this.setHighlightedNode(targetNode);\n\n if (position) {\n if (dropLineTarget) {\n this.updateDropTargetLinePosition(position, dropLineTarget);\n }\n this.handleGroupExpansion(targetNode, position.type === 'inside');\n }\n }\n });\n }\n\n get isGroup() {\n return this.config().isGroup;\n }\n\n get getDescendantLevels() {\n return this.config().descendantLevels;\n }\n\n ngOnDestroy(): void {\n this.removeAllListener();\n this.removeDropTargetLine();\n if (this.nodesEffect) {\n this.nodesEffect.destroy();\n this.nodesEffect = undefined;\n }\n }\n\n hostDragOver(event: Event): void {\n event.preventDefault();\n }\n\n hostDragLeave(event: DragEvent): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n if (\n event.clientY < rect.top ||\n event.clientY >= rect.bottom ||\n event.clientX < rect.left ||\n event.clientX >= rect.right\n ) {\n this.dragLeave();\n }\n }\n\n hostDrop(event: DragEvent): void {\n this.drop(event);\n }\n\n onDragStart(node: T): void {\n this.addDropTargetLine();\n\n this.dragging.set(true);\n this.draggedNode = node;\n this.addNodeClass(node.id, '--dragged');\n\n this.dragStart.emit(node);\n }\n\n dragEnd(): void {\n this.dragging.set(false);\n this.dropNodeTarget.set(null);\n this.dropPosition.set(null);\n\n if (this.draggedNode) {\n this.removeNodeClass(this.draggedNode.id, '--dragged');\n this.draggedNode = null;\n }\n\n this.dragLeave();\n this.removeDropTargetLine();\n }\n\n dragOver(node: T, event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.dropNodeTarget.set(node);\n\n const position = this.getPosition(event, node);\n this.dropPosition.set(position);\n }\n\n dragLeave(): void {\n clearTimeout(this.expandTimeout);\n this.expandTimeout = null;\n if (this.highlightedNode) {\n this.removeNodeClass(this.highlightedNode.id, '--drag-hover');\n this.highlightedNode = undefined;\n }\n }\n\n drop(event: DragEvent): void {\n let nodeTarget = this.dropNodeTarget();\n if (!nodeTarget || this.treeDragDropIsDisabled()) {\n return;\n }\n\n const dropPosition: DropPosition = this.getPosition(event, nodeTarget);\n\n const validation = this.canDropNode(nodeTarget, dropPosition);\n if (!validation.canDrop) {\n this.droppedError.emit(validation);\n return;\n }\n\n let targetNodeLevel = this.getNodeLevel(nodeTarget);\n\n // Allow to drop a last child outside is group. We refer to it's ancestor for the target\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== targetNodeLevel\n ) {\n const ancestor = this.getNodeAncestors(nodeTarget.id, dropPosition.level);\n this.dropNodeTarget.set(ancestor);\n nodeTarget = ancestor;\n targetNodeLevel = this.getNodeLevel(nodeTarget);\n }\n\n if (this.isGroup(nodeTarget)) {\n if (dropPosition.type === 'inside') {\n const isExpanded = this.tree().isExpanded(nodeTarget);\n if (isExpanded) {\n const children = this.getDirectDescendants(nodeTarget);\n if (children[0]?.id === this.draggedNode.id) {\n return;\n }\n }\n\n this.tree().expand(nodeTarget);\n return this.dropped.emit({\n node: this.draggedNode,\n ref: nodeTarget,\n position: dropPosition.type\n });\n }\n }\n\n if (\n dropPosition.type === 'below' &&\n dropPosition.level !== targetNodeLevel\n ) {\n const ancestor = this.getNodeAncestors(nodeTarget.id);\n return this.dropped.emit({\n node: this.draggedNode,\n ref: ancestor,\n position: dropPosition.type\n });\n }\n\n this.dropped.emit({\n node: this.draggedNode,\n ref: nodeTarget,\n position: dropPosition.type\n });\n }\n\n private addNodeClass(id: string | number, className: string): void {\n const node = this.findTreeNode(id);\n if (node) {\n this.renderer.addClass(node['_elementRef'].nativeElement, className);\n }\n }\n\n private removeNodeClass(id: string | number, className: string): void {\n const node = this.findTreeNode(id);\n if (node) {\n this.renderer.removeClass(node['_elementRef'].nativeElement, className);\n }\n }\n\n private addAllListener(): void {\n if (this.treeDragDropIsDisabled()) {\n return;\n }\n const nodes = this.nodes();\n if (this.nodesListeners) {\n this.removeAllListener();\n }\n\n this.nodesListeners = nodes?.map((node) => this.addListener(node));\n }\n\n private addListener(node: MatTreeNode<T>): DragNodeListeners {\n const element = node['_elementRef'].nativeElement as HTMLElement;\n const listeners: [string, EventListenerOrEventListenerObject][] = [\n ['dragstart', () => this.onDragStart(node.data)],\n ['dragend', () => this.dragEnd()],\n ['dragover', (event: DragEvent) => this.dragOver(node.data, event)],\n ['dragleave', () => this.dragLeave()]\n ];\n element.setAttribute('draggable', 'true');\n listeners.forEach(([type, listener]) =>\n element.addEventListener(type, listener)\n );\n\n return { element, listeners };\n }\n\n private removeAllListener(): void {\n this.nodesListeners?.forEach(({ element, listeners }) => {\n listeners.forEach(([type, listener]) => {\n element.setAttribute('draggable', 'false');\n element.removeEventListener(type, listener);\n });\n });\n this.nodesListeners = null;\n }\n\n private setHighlightedNode(node: T): void {\n const toHighlight = this.isGroup(node)\n ? node\n : this.getNodeAncestors(node.id);\n\n if (this.highlightedNode && this.highlightedNode.id !== toHighlight?.id) {\n this.removeNodeClass(this.highlightedNode.id, '--drag-hover');\n this.highlightedNode = undefined;\n }\n\n if (toHighlight) {\n this.highlightedNode = toHighlight;\n this.addNodeClass(toHighlight.id, '--drag-hover');\n } else if (this.highlightedNode) {\n this.removeNodeClass(this.highlightedNode.id, '--drag-hover');\n this.highlightedNode = undefined;\n }\n }\n\n private addDropTargetLine(): void {\n const target: HTMLElement = this.renderer.createElement('div');\n target.classList.add('drop-target-line');\n target.setAttribute(\n 'style',\n `position: absolute; top: 0; width: 100%; pointer-events: none; z-index: 4; height: 2px; background-color: black; transition: margin-left 150ms;`\n );\n this.dropLineTarget.set(target);\n }\n\n private removeDropTargetLine(): void {\n const target = this.dropLineTarget();\n if (target) {\n this.previousDropLine.set(target);\n this.dropLineTarget.set(null);\n }\n }\n\n private hideDropTargetLine(): void {\n const target = this.dropLineTarget();\n this.renderer.setStyle(target, 'display', 'none');\n }\n\n private showDropTargetLine(): void {\n const target = this.dropLineTarget();\n this.renderer.setStyle(target, 'display', 'block');\n }\n\n private updateDropTargetLinePosition(\n position: DropPosition,\n dropLineTarget: HTMLElement\n ): void {\n if (position.type === 'inside') {\n return this.hideDropTargetLine();\n } else {\n this.showDropTargetLine();\n }\n\n this.renderer.setStyle(\n dropLineTarget,\n 'margin-left',\n position.level * 24 + 20 + 'px'\n );\n this.renderer.setStyle(\n dropLineTarget,\n 'transform',\n 'translate3d(0,' + position.y + 'px, 0)'\n );\n }\n\n private handleGroupExpansion(node: T, isInside: boolean): void {\n if (!isInside) {\n return this.dragLeave();\n }\n const isOpen = this.tree().isExpanded(node);\n if (!isOpen && !this.expandTimeout) {\n this.expandTimeout = window.setTimeout(() => {\n this.tree().expand(node);\n }, 1200);\n }\n }\n\n private getNodeElement(node: T): HTMLElement | undefined {\n const treeNode = this.findTreeNode(node.id);\n return treeNode?.['_elementRef'].nativeElement;\n }\n\n private canDropNode(hoveredNode: T, position: DropPosition): DropPermission {\n if (this.isGroup(this.draggedNode)) {\n return this.canDropGroup(hoveredNode, position);\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n return { canDrop: true };\n }\n\n private canDropGroup(\n hoveredNode: T,\n position: DropPosition\n ): {\n canDrop: boolean;\n message?: string;\n params?: { [key: string]: unknown };\n } {\n // On ne veut pas permettre le Drop pour un groupe qui s'auto référence\n if (hoveredNode.id === this.draggedNode.id) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n const isHoverDescendant = this.isHoverDescendant(\n hoveredNode.id,\n hoveredNode\n );\n if (isHoverDescendant) {\n return {\n canDrop: !isHoverDescendant,\n message: 'igo.common.dragDrop.cannot.dropInsideItself'\n };\n }\n\n const hasMaxLevelRestrictions = this.validateMaxHierarchyLevel(position);\n if (hasMaxLevelRestrictions) {\n return hasMaxLevelRestrictions;\n }\n\n return {\n canDrop: true,\n message: undefined\n };\n }\n\n private validateMaxHierarchyLevel(position: DropPosition): DropPermission {\n const maxLevel = this.maxLevel();\n if (!maxLevel) {\n return;\n }\n\n let level =\n position.type === 'inside' ? position.level + 1 : position.level;\n\n if (this.isGroup(this.draggedNode)) {\n // We add an extra level +1 to avoid empty group in group\n level = level + +(this.getDescendantLevels(this.draggedNode) ?? 0) + 1;\n }\n\n if (level > maxLevel) {\n return {\n canDrop: false,\n message: 'igo.common.dragDrop.cannot.maxLevel',\n params: { value: maxLevel }\n };\n }\n }\n\n private getDescendants(node: T): T[] {\n const children = this.childrenAccessor()(node) ?? [];\n const descendants: T[] = [...children];\n children.forEach((child) => {\n descendants.push(...this.getDescendants(child));\n });\n return descendants;\n }\n\n private isHoverDescendant(id: string | number, _hoveredNode: T): boolean {\n return this.getDescendants(this.draggedNode).some(\n (child) => child.id === id\n );\n }\n\n private getPosition(event: DragEvent, hoveredNode: T): DropPosition {\n if (this.isGroup(this.draggedNode)) {\n if (this.isHoverDescendant(hoveredNode.id, hoveredNode)) {\n hoveredNode = this.draggedNode;\n }\n }\n\n let positionType = this.getPositionType(event, hoveredNode);\n\n const bellowOpenedGroup =\n this.isGroup(hoveredNode) &&\n positionType === 'below' &&\n this.tree().isExpanded(hoveredNode);\n if (bellowOpenedGroup) {\n positionType = 'inside';\n }\n\n return {\n x: event.x,\n y: this.getPositionY(hoveredNode, positionType),\n level: this.getPositionLevel(hoveredNode, positionType, event.x),\n type: positionType\n };\n }\n\n private getPositionY(node: T, type: DropPositionType): number {\n const element = this.getNodeElement(node);\n const rect = element.getBoundingClientRect();\n\n return type === 'below'\n ? element.offsetTop + rect.height - 1\n : element.offsetTop + 1;\n }\n\n private getPositionType(event: DragEvent, hoveredNode: T): DropPositionType {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n const middle = rect.top + rect.height / 2;\n const y = event.y;\n\n const selfReferencing = this.draggedNode.id === hoveredNode.id;\n if (this.isGroup(hoveredNode) && !selfReferencing) {\n const tolerence = 5;\n if (y <= middle + tolerence && y >= middle - tolerence) {\n return 'inside';\n }\n }\n\n const isBelow = y > middle;\n return isBelow ? 'below' : 'above';\n }\n\n private getPositionLevel(\n hoveredNode: T,\n type: DropPositionType,\n x: number\n ): number {\n const hoveredNodeLevel = this.getNodeLevel(hoveredNode);\n if (hoveredNodeLevel === 0) {\n return 0;\n }\n\n const ancestor = this.getNodeAncestors(hoveredNode.id);\n if (!ancestor) return hoveredNodeLevel;\n\n const children = this.getDirectDescendants(ancestor);\n const lastChild = [...children].pop();\n\n if (type === 'below' && lastChild?.id === hoveredNode.id) {\n const target = this.getNodeElement(hoveredNode);\n const rect = target.getBoundingClientRect();\n\n const indentation = 24;\n const xMin = rect.x + indentation;\n const xMax = xMin + indentation * hoveredNodeLevel;\n\n const isInsideSameGroup = x > xMax;\n if (!isInsideSameGroup) {\n const levelSubstracted = Math.round((xMax - x) / indentation);\n return Math.max(0, hoveredNodeLevel - levelSubstracted);\n }\n }\n return hoveredNodeLevel;\n }\n\n /**\n * @param level if level is defined with go to the defined levle to find ancestor. Sinon on prend le current ancestor\n */\n private getNodeAncestors(id: string | number, level?: number): T | undefined {\n const path = this.getAncestorsPath(id);\n if (path.length === 0) {\n return undefined;\n }\n\n if (level !== undefined) {\n return path[level];\n }\n return path[path.length - 1];\n }\n\n private getAncestorsPath(id: string | number): T[] {\n const nodes = this.nodes();\n const roots = nodes.filter((n) => n.level === 0).map((n) => n.data);\n\n for (const root of roots) {\n const path: T[] = [];\n if (this.findPath(root, id, path)) {\n return path;\n }\n }\n\n return [];\n }\n\n private findPath(\n currentNode: T,\n targetId: string | number,\n path: T[]\n ): boolean {\n if (String(currentNode.id) === String(targetId)) {\n return true;\n }\n\n const children = this.childrenAccessor()(currentNode) ?? [];\n for (const child of children) {\n path.push(currentNode);\n if (this.findPath(child, targetId, path)) {\n return true;\n }\n path.pop();\n }\n return false;\n }\n\n private getNodeLevel(node: T): number {\n const treeNode = this.findTreeNode(node.id);\n return treeNode ? treeNode.level : 0;\n }\n\n private getDirectDescendants(node: T): T[] {\n return this.childrenAccessor()(node) ?? [];\n }\n\n private findTreeNode(id: string | number): MatTreeNode<T> | undefined {\n return this.nodes().find((n) => String(n.data.id) === String(id));\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DragAndDropDirective } from './drag-drop.directive';\nimport { TreeDragDropDirective } from './tree-drag-drop/tree-drag-drop.directive';\n\n/**\n * @deprecated import the DragAndDropDirective directly\n */\n@NgModule({\n imports: [DragAndDropDirective, TreeDragDropDirective],\n exports: [DragAndDropDirective, TreeDragDropDirective]\n})\nexport class IgoDrapDropModule {\n static forRoot(): ModuleWithProviders<IgoDrapDropModule> {\n return {\n ngModule: IgoDrapDropModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|