@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
1,389 lines (1,373 loc) • 3.09 MB
JavaScript
import { style, animate, animation, keyframes, AnimationBuilder, useAnimation, trigger, transition, state } from '@angular/animations';
import { __assign, __spread, __decorate, __metadata, __values, __param, __extends, __read } from 'tslib';
import { Injectable, Input, HostListener, Directive, NgModule, Inject, PLATFORM_ID, ɵɵdefineInjectable, ɵɵinject, Pipe, EventEmitter, Output, isDevMode, ElementRef, ComponentFactoryResolver, ApplicationRef, Injector, NgZone, INJECTOR, ChangeDetectorRef, Optional, HostBinding, InjectionToken, Component, ViewContainerRef, ViewChild, TemplateRef, IterableDiffers, ContentChild, ContentChildren, forwardRef, QueryList, Self, Renderer2, SecurityContext, Host, ViewChildren, NgModuleRef, SimpleChange, ChangeDetectionStrategy, LOCALE_ID } from '@angular/core';
import { NgModel, FormControlName, NG_VALUE_ACCESSOR, FormsModule, NG_VALIDATORS, CheckboxRequiredValidator, NgControl, ReactiveFormsModule } from '@angular/forms';
import { isPlatformBrowser, DOCUMENT, CommonModule, formatDate, DatePipe, DecimalPipe } from '@angular/common';
import { Observable, Subject, fromEvent, interval, animationFrameScheduler, merge, Subscription, timer, pipe, combineLatest } from 'rxjs';
import { filter, takeUntil, throttleTime, first as first$1, take, throttle, debounce, tap, switchMap, skipLast, map, debounceTime } from 'rxjs/operators';
import ResizeObserver from 'resize-observer-polyfill';
import * as JSZip from 'jszip/dist/jszip';
import { DomSanitizer, HammerGestureConfig, HAMMER_GESTURE_CONFIG, ɵgetDOM } from '@angular/platform-browser';
var EaseIn;
(function (EaseIn) {
EaseIn[EaseIn["quad"] = "cubic-bezier(0.550, 0.085, 0.680, 0.530)"] = "quad";
EaseIn[EaseIn["cubic"] = "cubic-bezier(0.550, 0.055, 0.675, 0.190)"] = "cubic";
EaseIn[EaseIn["quart"] = "cubic-bezier(0.895, 0.030, 0.685, 0.220)"] = "quart";
EaseIn[EaseIn["quint"] = "cubic-bezier(0.755, 0.050, 0.855, 0.060)"] = "quint";
EaseIn[EaseIn["sine"] = "cubic-bezier(0.470, 0.000, 0.745, 0.715)"] = "sine";
EaseIn[EaseIn["expo"] = "cubic-bezier(0.950, 0.050, 0.795, 0.035)"] = "expo";
EaseIn[EaseIn["circ"] = "cubic-bezier(0.600, 0.040, 0.980, 0.335)"] = "circ";
EaseIn[EaseIn["back"] = "cubic-bezier(0.600, -0.280, 0.735, 0.045)"] = "back";
})(EaseIn || (EaseIn = {}));
var EaseOut;
(function (EaseOut) {
EaseOut[EaseOut["quad"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)"] = "quad";
EaseOut[EaseOut["cubic"] = "cubic-bezier(0.215, 0.610, 0.355, 1.000)"] = "cubic";
EaseOut[EaseOut["quart"] = "cubic-bezier(0.165, 0.840, 0.440, 1.000)"] = "quart";
EaseOut[EaseOut["quint"] = "cubic-bezier(0.230, 1.000, 0.320, 1.000)"] = "quint";
EaseOut[EaseOut["sine"] = "cubic-bezier(0.390, 0.575, 0.565, 1.000)"] = "sine";
EaseOut[EaseOut["expo"] = "cubic-bezier(0.190, 1.000, 0.220, 1.000)"] = "expo";
EaseOut[EaseOut["circ"] = "cubic-bezier(0.075, 0.820, 0.165, 1.000)"] = "circ";
EaseOut[EaseOut["back"] = "cubic-bezier(0.175, 0.885, 0.320, 1.275)"] = "back";
})(EaseOut || (EaseOut = {}));
var EaseInOut;
(function (EaseInOut) {
EaseInOut[EaseInOut["quad"] = "cubic-bezier(0.455, 0.030, 0.515, 0.955)"] = "quad";
EaseInOut[EaseInOut["cubic"] = "cubic-bezier(0.645, 0.045, 0.355, 1.000)"] = "cubic";
EaseInOut[EaseInOut["quart"] = "cubic-bezier(0.770, 0.000, 0.175, 1.000)"] = "quart";
EaseInOut[EaseInOut["quint"] = "cubic-bezier(0.860, 0.000, 0.070, 1.000)"] = "quint";
EaseInOut[EaseInOut["sine"] = "cubic-bezier(0.445, 0.050, 0.550, 0.950)"] = "sine";
EaseInOut[EaseInOut["expo"] = "cubic-bezier(1.000, 0.000, 0.000, 1.000)"] = "expo";
EaseInOut[EaseInOut["circ"] = "cubic-bezier(0.785, 0.135, 0.150, 0.860)"] = "circ";
EaseInOut[EaseInOut["back"] = "cubic-bezier(0.680, -0.550, 0.265, 1.550)"] = "back";
})(EaseInOut || (EaseInOut = {}));
var base = [
style({
opacity: "{{startOpacity}}"
}),
animate("{{duration}} {{delay}} {{easing}}", style({
opacity: "{{endOpacity}}"
}))
];
var baseParams = {
delay: '0s',
duration: '350ms',
easing: EaseOut.sine,
endOpacity: 1,
startOpacity: 0
};
var fadeIn = animation(base, {
params: baseParams
});
var fadeOut = animation(base, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.sine,
endOpacity: 0,
startOpacity: 1
}
});
var baseRecipe = [
style({
backfaceVisibility: 'hidden',
transformStyle: 'preserve-3d'
}),
animate("{{duration}} {{delay}} {{easing}}", keyframes([
style({
offset: 0,
transform: "translateZ({{startDistance}})\n rotate3d({{rotateX}}, {{rotateY}}, {{rotateZ}}, {{startAngle}}deg)"
}),
style({
offset: 1,
transform: "translateZ({{endDistance}})\n rotate3d({{rotateX}}, {{rotateY}}, {{rotateZ}}, {{endAngle}}deg)"
})
]))
];
var baseParams$1 = {
delay: '0s',
duration: '600ms',
easing: EaseOut.quad,
endAngle: 180,
endDistance: '0px',
rotateX: 1,
rotateY: 0,
rotateZ: 0,
startAngle: 0,
startDistance: '0px'
};
var flipTop = animation(baseRecipe, {
params: __assign({}, baseParams$1)
});
var flipBottom = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { endAngle: -180 })
});
var flipLeft = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { rotateX: 0, rotateY: 1 })
});
var flipRight = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { endAngle: -180, rotateX: 0, rotateY: 1 })
});
var flipHorFwd = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { endDistance: '170px' })
});
var flipHorBck = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { endDistance: '-170px' })
});
var flipVerFwd = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { endDistance: '170px', rotateX: 0, rotateY: 1 })
});
var flipVerBck = animation(baseRecipe, {
params: __assign(__assign({}, baseParams$1), { endDistance: '-170px', rotateX: 0, rotateY: 1 })
});
var baseRecipe$1 = [
style({
opacity: "{{startOpacity}}",
transform: "rotate3d({{rotateX}},{{rotateY}},{{rotateZ}},{{startAngle}}deg)",
transformOrigin: "{{xPos}} {{yPos}}"
}),
animate("{{duration}} {{delay}} {{easing}}", style({
offset: 0,
opacity: "{{endOpacity}}",
transform: "rotate3d({{rotateX}},{{rotateY}},{{rotateZ}},{{endAngle}}deg)",
transformOrigin: "{{xPos}} {{yPos}}"
}))
];
var baseInParams = {
delay: '0s',
duration: '600ms',
easing: EaseOut.quad,
endAngle: 0,
endOpacity: 1,
rotateX: 0,
rotateY: 0,
rotateZ: 1,
startAngle: -360,
startOpacity: 0,
xPos: 'center',
yPos: 'center'
};
var baseOutParams = __assign(__assign({}, baseInParams), { easing: EaseIn.quad, endOpacity: 0, startOpacity: 1 });
var rotateInCenter = animation(baseRecipe$1, {
params: __assign({}, baseInParams)
});
var rotateOutCenter = animation(baseRecipe$1, {
params: __assign({}, baseOutParams)
});
var rotateInTop = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'top' })
});
var rotateOutTop = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'top' })
});
var rotateInRight = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'right' })
});
var rotateOutRight = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'right' })
});
var rotateInBottom = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'bottom' })
});
var rotateOutBottom = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'bottom' })
});
var rotateInLeft = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'left' })
});
var rotateOutLeft = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'left' })
});
var rotateInTr = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'right', yPos: 'top' })
});
var rotateOutTr = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'right', yPos: 'top' })
});
var rotateInBr = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'right', yPos: 'bottom' })
});
var rotateOutBr = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'right', yPos: 'bottom' })
});
var rotateInBl = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'left', yPos: 'bottom' })
});
var rotateOutBl = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'left', yPos: 'bottom' })
});
var rotateInTl = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { xPos: 'left', yPos: 'top' })
});
var rotateOutTl = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { xPos: 'left', yPos: 'top' })
});
var rotateInDiagonal1 = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { rotateX: 1, rotateY: 1, rotateZ: 0 })
});
var rotateOutDiagonal1 = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { rotateX: 1, rotateY: 1, rotateZ: 0 })
});
var rotateInDiagonal2 = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { rotateX: -1, rotateY: 1, rotateZ: 0 })
});
var rotateOutDiagonal2 = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { rotateX: -1, rotateY: 1, rotateZ: 0 })
});
var rotateInHor = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { rotateX: 0, rotateY: 1, rotateZ: 0 })
});
var rotateOutHor = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { rotateX: 0, rotateY: 1, rotateZ: 0 })
});
var rotateInVer = animation(baseRecipe$1, {
params: __assign(__assign({}, baseInParams), { rotateX: 1, rotateY: 0, rotateZ: 0 })
});
var rotateOutVer = animation(baseRecipe$1, {
params: __assign(__assign({}, baseOutParams), { rotateX: 1, rotateY: 0, rotateZ: 0 })
});
var baseRecipe$2 = [
animate("{{duration}} {{delay}} {{easing}}", keyframes([
style({
offset: 0,
transform: "rotate(0deg) translate{{direction}}(0)",
transformOrigin: "{{xPos}} {{yPos}}"
}),
style({
offset: 0.1,
transform: "rotate({{endAngle}}deg) translate{{direction}}(-{{startDistance}})"
}),
style({
offset: 0.2,
transform: "rotate(-{{startAngle}}deg) translate{{direction}}({{startDistance}})"
}),
style({
offset: 0.3,
transform: "rotate({{startAngle}}deg) translate{{direction}}(-{{startDistance}})"
}),
style({
offset: 0.4,
transform: "rotate(-{{startAngle}}deg) translate{{direction}}({{startDistance}})"
}),
style({
offset: 0.5,
transform: "rotate({{startAngle}}deg) translate{{direction}}(-{{startDistance}})"
}),
style({
offset: 0.6,
transform: "rotate(-{{startAngle}}deg) translate{{direction}}({{startDistance}})"
}),
style({
offset: 0.7,
transform: "rotate({{startAngle}}deg) translate{{direction}}(-{{startDistance}})"
}),
style({
offset: 0.8,
transform: "rotate(-{{endAngle}}deg) translate{{direction}}({{endDistance}})"
}),
style({
offset: 0.9,
transform: "rotate({{endAngle}}deg) translate{{direction}}(-{{endDistance}})"
}),
style({
offset: 1,
transform: "rotate(0deg) translate{{direction}}(0)",
transformOrigin: "{{xPos}} {{yPos}}"
})
]))
];
var baseParams$2 = {
delay: '0s',
direction: 'X',
duration: '800ms',
easing: EaseInOut.quad,
endAngle: 0,
endDistance: '8px',
startAngle: 0,
startDistance: '10px',
xPos: 'center',
yPos: 'center'
};
var shakeHor = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'X' })
});
var shakeVer = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y' })
});
var shakeTop = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', yPos: 'top' })
});
var shakeBottom = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', yPos: 'bottom' })
});
var shakeRight = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'center' })
});
var shakeLeft = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'center' })
});
var shakeCenter = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 8, endDistance: '0', startAngle: 10, startDistance: '0', xPos: 'center', yPos: 'center' })
});
var shakeTr = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'top' })
});
var shakeBr = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'bottom' })
});
var shakeBl = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'bottom' })
});
var shakeTl = animation(baseRecipe$2, {
params: __assign(__assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'top' })
});
var heartbeatBase = [
style({
animationTimingFunction: "ease-out",
transform: "scale(1)",
transformOrigin: "center center"
}),
animate("{{duration}} {{delay}} {{easing}}", keyframes([
style({
animationTimingFunction: "ease-in",
offset: 0.1,
transform: "scale(0.91)"
}),
style({
animationTimingFunction: "ease-out",
offset: 0.17,
transform: "scale(0.98)"
}),
style({
animationTimingFunction: "ease-in",
offset: 0.33,
transform: "scale(0.87)"
}),
style({
animationTimingFunction: "ease-out",
offset: 0.45,
transform: "scale(1)"
})
]))
];
var heartbeatParams = {
delay: '0s',
duration: '1.5s',
easing: 'ease-in-out'
};
var pulsateBase = [
animate("{{duration}} {{delay}} {{easing}}", keyframes([
style({
offset: 0,
transform: "scale({{fromScale}})"
}),
style({
offset: 0.5,
transform: "scale({{toScale}})"
}),
style({
offset: 1,
transform: "scale({{fromScale}})"
})
]))
];
var pulsateParams = {
delay: '0s',
duration: '.5s',
easing: 'ease-in-out',
fromScale: 1,
toScale: 1.1
};
var blinkBase = [
animate("{{duration}} {{delay}} {{easing}}", keyframes([
style({
offset: 0,
opacity: .8,
transform: "scale({{fromScale}})"
}),
style({
offset: 0.8,
opacity: 0,
transform: "scale({{midScale}})"
}),
style({
offset: 1,
opacity: 0,
transform: "scale({{toScale}})"
})
]))
];
var blinkParams = {
delay: '0s',
duration: '.8s',
easing: 'ease-in-out',
fromScale: .2,
midScale: 1.2,
toScale: 2.2
};
var pulsateFwd = animation(pulsateBase, {
params: __assign({}, pulsateParams)
});
var pulsateBck = animation(pulsateBase, {
params: __assign(__assign({}, pulsateParams), { toScale: .9 })
});
var heartbeat = animation(heartbeatBase, {
params: __assign({}, heartbeatParams)
});
var blink = animation(blinkBase, {
params: __assign({}, blinkParams)
});
var base$1 = [
style({
opacity: "{{startOpacity}}",
transform: "scale{{direction}}({{fromScale}})",
transformOrigin: "{{xPos}} {{yPos}}"
}),
animate("{{duration}} {{delay}} {{easing}}", style({
opacity: "{{endOpacity}}",
transform: "scale{{direction}}({{toScale}})",
transformOrigin: "{{xPos}} {{yPos}}"
}))
];
var baseInParams$1 = {
delay: '0s',
direction: '',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromScale: .5,
startOpacity: 0,
toScale: 1,
xPos: '50%',
yPos: '50%'
};
var baseOutParams$1 = __assign(__assign({}, baseInParams$1), { easing: EaseOut.sine, endOpacity: 0, fromScale: 1, startOpacity: 1, toScale: .5 });
var scaleInCenter = animation(base$1, { params: baseInParams$1 });
var scaleInBl = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '0', yPos: '100%' })
});
var scaleInVerCenter = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { direction: 'Y', fromScale: .4 })
});
var scaleInTop = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '50%', yPos: '0' })
});
var scaleInLeft = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '0', yPos: '50%' })
});
var scaleInVerTop = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { direction: 'Y', fromScale: .4, xPos: '100%', yPos: '0' })
});
var scaleInTr = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '100%', yPos: '0' })
});
var scaleInTl = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '0', yPos: '0' })
});
var scaleInVerBottom = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { direction: 'Y', fromScale: .4, xPos: '0', yPos: '100%' })
});
var scaleInRight = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '100%', yPos: '50%' })
});
var scaleInHorCenter = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { direction: 'X', fromScale: .4 })
});
var scaleInBr = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '100%', yPos: '100%' })
});
var scaleInHorLeft = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { direction: 'X', fromScale: .4, xPos: '0', yPos: '0' })
});
var scaleInBottom = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { xPos: '50%', yPos: '100%' })
});
var scaleInHorRight = animation(base$1, {
params: __assign(__assign({}, baseInParams$1), { direction: 'X', fromScale: .4, xPos: '100%', yPos: '100%' })
});
var scaleOutCenter = animation(base$1, { params: baseOutParams$1 });
var scaleOutBl = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '0', yPos: '100%' })
});
var scaleOutBr = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '100%', yPos: '100%' })
});
var scaleOutVerCenter = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { direction: 'Y', toScale: .3 })
});
var scaleOutVerTop = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { direction: 'Y', toScale: .3, xPos: '100%', yPos: '0' })
});
var scaleOutVerBottom = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { direction: 'Y', toScale: .3, xPos: '0', yPos: '100%' })
});
var scaleOutTop = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '50%', yPos: '0' })
});
var scaleOutLeft = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '0', yPos: '50%' })
});
var scaleOutTr = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '100%', yPos: '0' })
});
var scaleOutTl = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '0', yPos: '0' })
});
var scaleOutRight = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '100%', yPos: '50%' })
});
var scaleOutBottom = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { xPos: '50%', yPos: '100%' })
});
var scaleOutHorCenter = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { direction: 'X', toScale: .3 })
});
var scaleOutHorLeft = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { direction: 'X', toScale: .3, xPos: '0', yPos: '0' })
});
var scaleOutHorRight = animation(base$1, {
params: __assign(__assign({}, baseOutParams$1), { direction: 'X', toScale: .3, xPos: '100%', yPos: '100%' })
});
var base$2 = [
style({
opacity: "{{startOpacity}}",
transform: "{{fromPosition}}"
}),
animate("{{duration}} {{delay}} {{easing}}", style({
opacity: "{{endOpacity}}",
transform: "{{toPosition}}"
}))
];
var baseInParams$2 = {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateY(-500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
};
var baseOutParams$2 = {
delay: '0s',
duration: '350ms',
easing: EaseIn.quad,
endOpacity: 0,
fromPosition: 'translateY(0)',
startOpacity: 1,
toPosition: 'translateY(-500px)'
};
var slideInTop = animation(base$2, { params: baseInParams$2 });
var slideInLeft = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateX(-500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
}
});
var slideInRight = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateX(500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
}
});
var slideInBottom = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateY(500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
}
});
var slideInTr = animation(base$2, {
params: __assign(__assign({}, baseInParams$2), { fromPosition: 'translateY(-500px) translateX(500px)', toPosition: 'translateY(0) translateX(0)' })
});
var slideInTl = animation(base$2, {
params: __assign(__assign({}, baseInParams$2), { fromPosition: 'translateY(-500px) translateX(-500px)', toPosition: 'translateY(0) translateX(0)' })
});
var slideInBr = animation(base$2, {
params: __assign(__assign({}, baseInParams$2), { fromPosition: 'translateY(500px) translateX(500px)', toPosition: 'translateY(0) translateX(0)' })
});
var slideInBl = animation(base$2, {
params: __assign(__assign({}, baseInParams$2), { fromPosition: 'translateY(500px) translateX(-500px)', toPosition: 'translateY(0) translateX(0)' })
});
var slideOutTop = animation(base$2, { params: baseOutParams$2 });
var slideOutRight = animation(base$2, {
params: __assign(__assign({}, baseOutParams$2), { toPosition: 'translateX(500px)' })
});
var slideOutBottom = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseIn.quad,
endOpacity: 0,
fromPosition: 'translateY(0)',
startOpacity: 1,
toPosition: 'translateY(500px)'
}
});
var slideOutLeft = animation(base$2, {
params: __assign(__assign({}, baseOutParams$2), { toPosition: 'translateX(-500px)' })
});
var slideOutTr = animation(base$2, {
params: __assign(__assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(-500px) translateX(500px)' })
});
var slideOutBr = animation(base$2, {
params: __assign(__assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(500px) translateX(500px)' })
});
var slideOutBl = animation(base$2, {
params: __assign(__assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(500px) translateX(-500px)' })
});
var slideOutTl = animation(base$2, {
params: __assign(__assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(-500px) translateX(-500px)' })
});
var swingBase = [
style({
opacity: "{{startOpacity}}",
transform: "rotate{{direction}}({{startAngle}}deg)",
transformOrigin: "{{xPos}} {{yPos}}"
}),
animate("{{duration}} {{delay}} {{easing}}", style({
opacity: "{{endOpacity}}",
transform: "rotate{{direction}}({{endAngle}}deg)",
transformOrigin: "{{xPos}} {{yPos}}"
}))
];
var swingParams = {
delay: '0s',
direction: 'X',
duration: '.5s',
easing: EaseOut.back,
endAngle: 0,
endOpacity: 1,
startAngle: -100,
startOpacity: 0,
xPos: 'top',
yPos: 'center'
};
var swingOutParams = __assign(__assign({}, swingParams), { duration: '.55s', easing: EaseIn.back, endAngle: 70, endOpacity: 0, startAngle: 0, startOpacity: 1 });
var swingInTopFwd = animation(swingBase, {
params: __assign({}, swingParams)
});
var swingInRightFwd = animation(swingBase, {
params: __assign(__assign({}, swingParams), { direction: 'Y', xPos: 'center', yPos: 'right' })
});
var swingInBottomFwd = animation(swingBase, {
params: __assign(__assign({}, swingParams), { startAngle: 100, xPos: 'bottom' })
});
var swingInLeftFwd = animation(swingBase, {
params: __assign(__assign({}, swingParams), { direction: 'Y', startAngle: 100, xPos: 'center', yPos: 'left' })
});
var swingInTopBck = animation(swingBase, {
params: __assign(__assign({}, swingParams), { duration: '.6s', startAngle: 70 })
});
var swingInRightBck = animation(swingBase, {
params: __assign(__assign({}, swingParams), { direction: 'Y', duration: '.6s', startAngle: 70, xPos: 'center', yPos: 'right' })
});
var swingInBottomBck = animation(swingBase, {
params: __assign(__assign({}, swingParams), { duration: '.6s', startAngle: -70, xPos: 'bottom' })
});
var swingInLeftBck = animation(swingBase, {
params: __assign(__assign({}, swingParams), { direction: 'Y', duration: '.6s', startAngle: -70, xPos: 'center', yPos: 'left' })
});
var swingOutTopFwd = animation(swingBase, {
params: __assign({}, swingOutParams)
});
var swingOutRightFwd = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { direction: 'Y', xPos: 'center', yPos: 'right' })
});
var swingOutBottomFwd = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { endAngle: -70, xPos: 'bottom' })
});
var swingOutLefttFwd = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { direction: 'Y', endAngle: -70, xPos: 'center', yPos: 'left' })
});
var swingOutTopBck = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { duration: '.45s', endAngle: -100 })
});
var swingOutRightBck = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { direction: 'Y', duration: '.45s', endAngle: -100, xPos: 'center', yPos: 'right' })
});
var swingOutBottomBck = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { duration: '.45s', endAngle: 100, xPos: 'bottom' })
});
var swingOutLeftBck = animation(swingBase, {
params: __assign(__assign({}, swingOutParams), { direction: 'Y', duration: '.45s', endAngle: 100, xPos: 'center', yPos: 'left' })
});
var base$3 = [
style({
opacity: "{{ startOpacity }}",
height: "{{ startHeight }}"
}),
animate("{{duration}} {{delay}} {{easing}}", style({
opacity: "{{ endOpacity }}",
height: "{{ endHeight }}"
}))
];
var baseParams$3 = {
delay: '0s',
duration: '350ms',
easing: EaseIn.quad,
startOpacity: 0,
endOpacity: 1,
startHeight: '',
endHeight: ''
};
var growVerIn = animation(base$3, {
params: __assign(__assign({}, baseParams$3), { easing: EaseOut.quad, startOpacity: 0, endOpacity: 1, startHeight: '0px', endHeight: '*' })
});
var growVerOut = animation(base$3, {
params: __assign(__assign({}, baseParams$3), { easing: EaseOut.quad, startOpacity: 1, endOpacity: 0, startHeight: '*', endHeight: '0px' })
});
/**
* Common service to be injected between components where those implementing common
* ToggleView interface can register and toggle directives can call their methods.
* TODO: Track currently active? Events?
*/
var IgxNavigationService = /** @class */ (function () {
function IgxNavigationService() {
this.navs = {};
}
IgxNavigationService.prototype.add = function (id, navItem) {
this.navs[id] = navItem;
};
IgxNavigationService.prototype.remove = function (id) {
delete this.navs[id];
};
IgxNavigationService.prototype.get = function (id) {
if (id) {
return this.navs[id];
}
};
IgxNavigationService.prototype.toggle = function (id) {
var _a;
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (this.navs[id]) {
return (_a = this.navs[id]).toggle.apply(_a, __spread(args));
}
};
IgxNavigationService.prototype.open = function (id) {
var _a;
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (this.navs[id]) {
return (_a = this.navs[id]).open.apply(_a, __spread(args));
}
};
IgxNavigationService.prototype.close = function (id) {
var _a;
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (this.navs[id]) {
return (_a = this.navs[id]).close.apply(_a, __spread(args));
}
};
IgxNavigationService = __decorate([
Injectable(),
__metadata("design:paramtypes", [])
], IgxNavigationService);
return IgxNavigationService;
}());
/**
* Directive that can toggle targets through provided NavigationService.
*
* Usage:
* ```
* <button igxNavToggle="ID"> Toggle </button>
* ```
* Where the `ID` matches the ID of compatible `IToggleView` component.
*/
var IgxNavigationToggleDirective = /** @class */ (function () {
function IgxNavigationToggleDirective(nav) {
this.state = nav;
}
IgxNavigationToggleDirective.prototype.toggleNavigationDrawer = function () {
this.state.toggle(this.target, true);
};
IgxNavigationToggleDirective.ctorParameters = function () { return [
{ type: IgxNavigationService }
]; };
__decorate([
Input('igxNavToggle'),
__metadata("design:type", Object)
], IgxNavigationToggleDirective.prototype, "target", void 0);
__decorate([
HostListener('click'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], IgxNavigationToggleDirective.prototype, "toggleNavigationDrawer", null);
IgxNavigationToggleDirective = __decorate([
Directive({ selector: '[igxNavToggle]' }),
__metadata("design:paramtypes", [IgxNavigationService])
], IgxNavigationToggleDirective);
return IgxNavigationToggleDirective;
}());
/**
* Directive that can close targets through provided NavigationService.
*
* Usage:
* ```
* <button igxNavClose="ID"> Close </button>
* ```
* Where the `ID` matches the ID of compatible `IToggleView` component.
*/
var IgxNavigationCloseDirective = /** @class */ (function () {
function IgxNavigationCloseDirective(nav) {
this.state = nav;
}
IgxNavigationCloseDirective.prototype.closeNavigationDrawer = function () {
this.state.close(this.target, true);
};
IgxNavigationCloseDirective.ctorParameters = function () { return [
{ type: IgxNavigationService }
]; };
__decorate([
Input('igxNavClose'),
__metadata("design:type", Object)
], IgxNavigationCloseDirective.prototype, "target", void 0);
__decorate([
HostListener('click'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], IgxNavigationCloseDirective.prototype, "closeNavigationDrawer", null);
IgxNavigationCloseDirective = __decorate([
Directive({ selector: '[igxNavClose]' }),
__metadata("design:paramtypes", [IgxNavigationService])
], IgxNavigationCloseDirective);
return IgxNavigationCloseDirective;
}());
/**
* @hidden
*/
var IgxNavigationModule = /** @class */ (function () {
function IgxNavigationModule() {
}
IgxNavigationModule = __decorate([
NgModule({
declarations: [IgxNavigationCloseDirective, IgxNavigationToggleDirective],
exports: [IgxNavigationCloseDirective, IgxNavigationToggleDirective],
providers: [IgxNavigationService]
})
], IgxNavigationModule);
return IgxNavigationModule;
}());
/**
*@hidden
*/
function cloneArray(array, deep) {
var arr = [];
if (!array) {
return arr;
}
var i = array.length;
while (i--) {
arr[i] = deep ? cloneValue(array[i]) : array[i];
}
return arr;
}
/**
* Doesn't clone leaf items
* @hidden
*/
function cloneHierarchicalArray(array, childDataKey) {
var e_1, _a;
var result = [];
if (!array) {
return result;
}
try {
for (var array_1 = __values(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {
var item = array_1_1.value;
var clonedItem = cloneValue(item);
if (Array.isArray(item[childDataKey])) {
clonedItem[childDataKey] = cloneHierarchicalArray(clonedItem[childDataKey], childDataKey);
}
result.push(clonedItem);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);
}
finally { if (e_1) throw e_1.error; }
}
return result;
}
/**
* Deep clones all first level keys of Obj2 and merges them to Obj1
* @param obj1 Object to merge into
* @param obj2 Object to merge from
* @returns Obj1 with merged cloned keys from Obj2
* @hidden
*/
function mergeObjects(obj1, obj2) {
var e_2, _a;
if (!isObject(obj1)) {
throw new Error("Cannot merge into " + obj1 + ". First param must be an object.");
}
if (!isObject(obj2)) {
return obj1;
}
try {
for (var _b = __values(Object.keys(obj2)), _c = _b.next(); !_c.done; _c = _b.next()) {
var key = _c.value;
obj1[key] = cloneValue(obj2[key]);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
}
return obj1;
}
/**
* Creates deep clone of provided value.
* Supports primitive values, dates and objects.
* If passed value is array returns shallow copy of the array.
* @param value value to clone
* @returns Deep copy of provided value
*@hidden
*/
function cloneValue(value) {
var e_3, _a;
if (isDate(value)) {
return new Date(value.getTime());
}
if (Array.isArray(value)) {
return __spread(value);
}
if (value instanceof Map || value instanceof Set) {
return value;
}
if (isObject(value)) {
var result = {};
try {
for (var _b = __values(Object.keys(value)), _c = _b.next(); !_c.done; _c = _b.next()) {
var key = _c.value;
result[key] = cloneValue(value[key]);
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_3) throw e_3.error; }
}
return result;
}
return value;
}
/**
* Checks if provided variable is Object
* @param value Value to check
* @returns true if provided variable is Object
*@hidden
*/
function isObject(value) {
return value && value.toString() === '[object Object]';
}
/**
* Checks if provided variable is Date
* @param value Value to check
* @returns true if provided variable is Date
*@hidden
*/
function isDate(value) {
return Object.prototype.toString.call(value) === '[object Date]';
}
/**
* Checks if the two passed arguments are equal
* Currently supports date objects
* @param obj1
* @param obj2
* @returns: `boolean`
* @hidden
*/
function isEqual(obj1, obj2) {
if (isDate(obj1) && isDate(obj2)) {
return obj1.getTime() === obj2.getTime();
}
return obj1 === obj2;
}
/**
*@hidden
* Returns the actual size of the node content, using Range
* ```typescript
* let range = document.createRange();
* let column = this.grid.columnList.filter(c => c.field === 'ID')[0];
*
* let size = getNodeSizeViaRange(range, column.cells[0].nativeElement);
* ```
*/
function getNodeSizeViaRange(range, node) {
var overflow = null;
if (!isFirefox()) {
overflow = node.style.overflow;
// we need that hack - otherwise content won't be measured correctly in IE/Edge
node.style.overflow = 'visible';
}
range.selectNodeContents(node);
var width = range.getBoundingClientRect().width;
if (!isFirefox()) {
// we need that hack - otherwise content won't be measured correctly in IE/Edge
node.style.overflow = overflow;
}
return width;
}
/**
*@hidden
* Returns the actual size of the node content, using Canvas
* ```typescript
* let ctx = document.createElement('canvas').getContext('2d');
* let column = this.grid.columnList.filter(c => c.field === 'ID')[0];
*
* let size = valToPxlsUsingCanvas(ctx, column.cells[0].nativeElement);
* ```
*/
function getNodeSizeViaCanvas(canvas2dCtx, node) {
var s = this.grid.document.defaultView.getComputedStyle(node);
// need to set the font to get correct width
canvas2dCtx.font = s.fontSize + ' ' + s.fontFamily;
return canvas2dCtx.measureText(node.textContent).width;
}
/**
*@hidden
*/
function isIE() {
return navigator.appVersion.indexOf('Trident/') > 0;
}
/**
*@hidden
*/
function isEdge() {
var edgeBrowser = /Edge[\/\s](\d+\.\d+)/.test(navigator.userAgent);
return edgeBrowser;
}
/**
*@hidden
*/
function isFirefox() {
var firefoxBrowser = /Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent);
return firefoxBrowser;
}
/**
* @hidden
*/
var PlatformUtil = /** @class */ (function () {
function PlatformUtil(platformId) {
this.platformId = platformId;
this.isBrowser = isPlatformBrowser(this.platformId);
this.isIOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);
}
PlatformUtil.ctorParameters = function () { return [
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
]; };
PlatformUtil.ɵprov = ɵɵdefineInjectable({ factory: function PlatformUtil_Factory() { return new PlatformUtil(ɵɵinject(PLATFORM_ID)); }, token: PlatformUtil, providedIn: "root" });
PlatformUtil = __decorate([
Injectable({ providedIn: 'root' }),
__param(0, Inject(PLATFORM_ID)),
__metadata("design:paramtypes", [Object])
], PlatformUtil);
return PlatformUtil;
}());
/**
* @hidden
*/
function isLeftClick(event) {
return event.button === 0;
}
/** @hidden */
function isNavigationKey(key) {
return [
'down',
'up',
'left',
'right',
'arrowdown',
'arrowup',
'arrowleft',
'arrowright',
'home',
'end',
'space',
'spacebar',
' '
].indexOf(key) !== -1;
}
/**
*@hidden
*/
function flatten(arr) {
var result = [];
arr.forEach(function (el) {
result.push(el);
if (el.children) {
var children = Array.isArray(el.children) ? el.children : el.children.toArray();
result = result.concat(flatten(children));
}
});
return result;
}
var NAVIGATION_KEYS = new Set([
'down',
'up',
'left',
'right',
'arrowdown',
'arrowup',
'arrowleft',
'arrowright',
'home',
'end',
'space',
'spacebar',
' '
]);
var ROW_EXPAND_KEYS = new Set('right down arrowright arrowdown'.split(' '));
var ROW_COLLAPSE_KEYS = new Set('left up arrowleft arrowup'.split(' '));
var SUPPORTED_KEYS = new Set(__spread(Array.from(NAVIGATION_KEYS), ['tab', 'enter', 'f2', 'escape', 'esc']));
/**
* @hidden
* @internal
*
* Creates a new ResizeObserver on `target` and returns it as an Observable.
*/
function resizeObservable(target) {
return new Observable(function (observer) {
var instance = new ResizeObserver(function (entries) {
observer.next(entries);
});
instance.observe(target);
var unsubscribe = function () { return instance.disconnect(); };
return unsubscribe;
});
}
/**
* Represents sorting expressions.
*/
var SortingDirection;
(function (SortingDirection) {
SortingDirection[SortingDirection["None"] = 0] = "None";
SortingDirection[SortingDirection["Asc"] = 1] = "Asc";
SortingDirection[SortingDirection["Desc"] = 2] = "Desc";
})(SortingDirection || (SortingDirection = {}));
function isHierarchyMatch(h1, h2) {
if (h1.length !== h2.length) {
return false;
}
return h1.every(function (level, index) {
return level.fieldName === h2[index].fieldName && level.value === h2[index].value;
});
}
function getHierarchy(gRow) {
var hierarchy = [];
if (gRow !== undefined && gRow.expression) {
hierarchy.push({ fieldName: gRow.expression.fieldName, value: gRow.value });
while (gRow.groupParent) {
gRow = gRow.groupParent;
hierarchy.unshift({ fieldName: gRow.expression.fieldName, value: gRow.value });
}
}
return hierarchy;
}
var DefaultSortingStrategy = /** @class */ (function () {
function DefaultSortingStrategy() {
}
DefaultSortingStrategy.instance = function () {
return this._instance || (this._instance = new this());
};
DefaultSortingStrategy.prototype.sort = function (data, fieldName, dir, ignoreCase, valueResolver) {
var _this = this;
var key = fieldName;
var reverse = (dir === SortingDirection.Desc ? -1 : 1);
var cmpFunc = function (obj1, obj2) {
return _this.compareObjects(obj1, obj2, key, reverse, ignoreCase, valueResolver);
};
return this.arraySort(data, cmpFunc);
};
DefaultSortingStrategy.prototype.compareValues = function (a, b) {
var an = (a === null || a === undefined);
var bn = (b === null || b === undefined);
if (an) {
if (bn) {
return 0;
}
return -1;
}
else if (bn) {
return 1;
}
return a > b ? 1 : a < b ? -1 : 0;
};
DefaultSortingStrategy.prototype.compareObjects = function (obj1, obj2, key, reverse, ignoreCase, valueResolver) {
var a = valueResolver(obj1, key);
var b = valueResolver(obj2, key);
if (ignoreCase) {
a = a && a.toLowerCase ? a.toLowerCase() : a;
b = b && b.toLowerCase ? b.toLowerCase() : b;
}
return reverse * this.compareValues(a, b);
};
DefaultSortingStrategy.prototype.arraySort = function (data, compareFn) {
return data.sort(compareFn);
};
DefaultSortingStrategy._instance = null;
return DefaultSortingStrategy;
}());
var NoopSortingStrategy = /** @class */ (function () {
function NoopSortingStrategy() {
}
NoopSortingStrategy.instance = function () {
return this._instance || (this._instance = new NoopSortingStrategy());
};
NoopSortingStrategy.prototype.sort = function (data, expressions) {
return data;
};
NoopSortingStrategy._instance = null;
return NoopSortingStrategy;
}());
var IgxSorting = /** @class */ (function () {
function IgxSorting() {
}
IgxSorting.prototype.sort = function (data, expressions) {
return this.sortDataRecursive(data, expressions);
};
IgxSorting.prototype.groupedRecordsByExpression = function (data, index, expression) {
var i;
var groupval;
var res = [];
var key = expression.fieldName;
var len = data.length;
res.push(data[index]);
groupval = this.getFieldValue(data[index], key);
index++;
var comparer = expression.groupingComparer || DefaultSortingStrategy.instance().compareValues;
for (i = index; i < len; i++) {
if (comparer(this.getFieldValue(data[i], key), groupval) === 0) {
res.push(data[i]);
}
else {
break;
}
}
return res;
};
IgxSorting.prototype.sortDataRecursive = function (data, expressions, expressionIndex) {
if (expressionIndex === void 0) { expressionIndex = 0; }
var i;
var j;
var expr;
var gbData;
var gbDataLen;
var exprsLen = expressions.length;
var dataLen = data.length;
expressionIndex = expressionIndex || 0;
if (expressionIndex >= exprsLen || dataLen <= 1) {
return data;
}
expr = expressions[expressionIndex];
if (!expr.strategy) {
expr.strategy = DefaultSortingStrategy.instance();
}
data = expr.strategy.sort(data, expr.fieldName, expr.dir, expr.ignoreCase, this.getFieldValue);
if (expressionIndex === exprsLen - 1) {
return data;
}
// in case of multiple sorting
for (i = 0; i < dataLen; i++) {
gbData = this.groupedRecordsByExpression(data, i, expr);
gbDataLen = gbData.length;
if (gbDataLen > 1) {
gbData = this.sortDataRecursive(gbData, expressions, expressionIndex + 1);
}
for (j = 0; j < gbDataLen; j++) {
data[i + j] = gbData[j];
}
i += gbDataLen - 1;
}
return data;
};
IgxSorting.prototype.groupDataRecursive = function (data, state, level, parent, metadata, grid, groupsRecords, fullResult) {
if (grid === void 0) { grid = null; }
if (groupsRecords === void 0) { groupsRecords = []; }
if (fullResult === void 0) { fullResult = { data: [], metadata: [] }; }
var expressions = state.expressions;
var expansion = state.expansion;
var i = 0;
var result = [];
var _loop_1 = function () {
var e_1, _a;
var group = this_1.groupedRecordsByExpression(data, i, expressions[level]);
var groupRow = {
expression: expressions[level],
level: level,
records: cloneArray(group),
value: group[0][expressions[level].fieldName],
groupParent: parent,
groups: [],
height: grid ? grid.renderedRowHeight : null
};
if (parent) {
parent.groups.push(groupRow);
}
else {
groupsRecords.push(groupRow);
}
var hierarchy = getHierarchy(groupRow);
var expandState = expansion.find(function (s) {
return isHierarchyMatch(s.hierarchy || [{ fieldName: groupRow.expression.fieldName, value: groupRow.value }], hierarchy);
});
var expanded = expandState ? expandState.expanded : state.defaultExpanded;
var recursiveResult = void 0;
result.push(groupRow);
metadata.push(null);
fullResult.data.push(groupRow);
fullResult.metadata.push(null);
if (level < expressions.length - 1) {
recursiveResult = this_1.groupDataRecursive(group, state, level + 1, groupRow, expanded ? metadata : [], grid, groupsRecords, fullResult);
if (expanded) {
result = result.concat(recursiveResult);
}
}
else {
try {
for (var group_1 = (e_1 = void 0, __values(group)), group_1_1 = group_1.next(); !group_1_1.done; group_1_1 = group_1.next()) {
var groupItem = group_1_1.value;
fullResult.metadata.push(groupRow);
fullResult.data.push(groupItem);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (group_1_1 && !group_1_1.done && (_a = group_1.return)) _a.call(group_1);
}
finally { if (e_1) throw e_1.error; }
}
if (expanded) {
metadata.push.apply(metadata, __spread(fullResult.metadata.slice(fullResult.metadata.length - group