UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

1,391 lines (1,371 loc) 2.63 MB
import { style, animate, animation, keyframes, AnimationBuilder, useAnimation, trigger, transition, state } from '@angular/animations'; import { __decorate, __metadata, __param } 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 = {})); const base = [ style({ opacity: `{{startOpacity}}` }), animate(`{{duration}} {{delay}} {{easing}}`, style({ opacity: `{{endOpacity}}` })) ]; const baseParams = { delay: '0s', duration: '350ms', easing: EaseOut.sine, endOpacity: 1, startOpacity: 0 }; const fadeIn = animation(base, { params: baseParams }); const fadeOut = animation(base, { params: { delay: '0s', duration: '350ms', easing: EaseOut.sine, endOpacity: 0, startOpacity: 1 } }); const baseRecipe = [ style({ backfaceVisibility: 'hidden', transformStyle: 'preserve-3d' }), animate(`{{duration}} {{delay}} {{easing}}`, keyframes([ style({ offset: 0, transform: `translateZ({{startDistance}}) rotate3d({{rotateX}}, {{rotateY}}, {{rotateZ}}, {{startAngle}}deg)` }), style({ offset: 1, transform: `translateZ({{endDistance}}) rotate3d({{rotateX}}, {{rotateY}}, {{rotateZ}}, {{endAngle}}deg)` }) ])) ]; const baseParams$1 = { delay: '0s', duration: '600ms', easing: EaseOut.quad, endAngle: 180, endDistance: '0px', rotateX: 1, rotateY: 0, rotateZ: 0, startAngle: 0, startDistance: '0px' }; const flipTop = animation(baseRecipe, { params: Object.assign({}, baseParams$1) }); const flipBottom = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { endAngle: -180 }) }); const flipLeft = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { rotateX: 0, rotateY: 1 }) }); const flipRight = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { endAngle: -180, rotateX: 0, rotateY: 1 }) }); const flipHorFwd = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '170px' }) }); const flipHorBck = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '-170px' }) }); const flipVerFwd = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '170px', rotateX: 0, rotateY: 1 }) }); const flipVerBck = animation(baseRecipe, { params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '-170px', rotateX: 0, rotateY: 1 }) }); const 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}}` })) ]; const 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' }; const baseOutParams = Object.assign(Object.assign({}, baseInParams), { easing: EaseIn.quad, endOpacity: 0, startOpacity: 1 }); const rotateInCenter = animation(baseRecipe$1, { params: Object.assign({}, baseInParams) }); const rotateOutCenter = animation(baseRecipe$1, { params: Object.assign({}, baseOutParams) }); const rotateInTop = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'top' }) }); const rotateOutTop = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'top' }) }); const rotateInRight = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'right' }) }); const rotateOutRight = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'right' }) }); const rotateInBottom = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'bottom' }) }); const rotateOutBottom = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'bottom' }) }); const rotateInLeft = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'left' }) }); const rotateOutLeft = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'left' }) }); const rotateInTr = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'right', yPos: 'top' }) }); const rotateOutTr = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'right', yPos: 'top' }) }); const rotateInBr = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'right', yPos: 'bottom' }) }); const rotateOutBr = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'right', yPos: 'bottom' }) }); const rotateInBl = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'left', yPos: 'bottom' }) }); const rotateOutBl = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'left', yPos: 'bottom' }) }); const rotateInTl = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { xPos: 'left', yPos: 'top' }) }); const rotateOutTl = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'left', yPos: 'top' }) }); const rotateInDiagonal1 = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { rotateX: 1, rotateY: 1, rotateZ: 0 }) }); const rotateOutDiagonal1 = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { rotateX: 1, rotateY: 1, rotateZ: 0 }) }); const rotateInDiagonal2 = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { rotateX: -1, rotateY: 1, rotateZ: 0 }) }); const rotateOutDiagonal2 = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { rotateX: -1, rotateY: 1, rotateZ: 0 }) }); const rotateInHor = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { rotateX: 0, rotateY: 1, rotateZ: 0 }) }); const rotateOutHor = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { rotateX: 0, rotateY: 1, rotateZ: 0 }) }); const rotateInVer = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseInParams), { rotateX: 1, rotateY: 0, rotateZ: 0 }) }); const rotateOutVer = animation(baseRecipe$1, { params: Object.assign(Object.assign({}, baseOutParams), { rotateX: 1, rotateY: 0, rotateZ: 0 }) }); const 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}}` }) ])) ]; const baseParams$2 = { delay: '0s', direction: 'X', duration: '800ms', easing: EaseInOut.quad, endAngle: 0, endDistance: '8px', startAngle: 0, startDistance: '10px', xPos: 'center', yPos: 'center' }; const shakeHor = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'X' }) }); const shakeVer = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y' }) }); const shakeTop = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', yPos: 'top' }) }); const shakeBottom = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', yPos: 'bottom' }) }); const shakeRight = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'center' }) }); const shakeLeft = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'center' }) }); const shakeCenter = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 8, endDistance: '0', startAngle: 10, startDistance: '0', xPos: 'center', yPos: 'center' }) }); const shakeTr = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'top' }) }); const shakeBr = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'bottom' }) }); const shakeBl = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'bottom' }) }); const shakeTl = animation(baseRecipe$2, { params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'top' }) }); const 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)` }) ])) ]; const heartbeatParams = { delay: '0s', duration: '1.5s', easing: 'ease-in-out' }; const 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}})` }) ])) ]; const pulsateParams = { delay: '0s', duration: '.5s', easing: 'ease-in-out', fromScale: 1, toScale: 1.1 }; const 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}})` }) ])) ]; const blinkParams = { delay: '0s', duration: '.8s', easing: 'ease-in-out', fromScale: .2, midScale: 1.2, toScale: 2.2 }; const pulsateFwd = animation(pulsateBase, { params: Object.assign({}, pulsateParams) }); const pulsateBck = animation(pulsateBase, { params: Object.assign(Object.assign({}, pulsateParams), { toScale: .9 }) }); const heartbeat = animation(heartbeatBase, { params: Object.assign({}, heartbeatParams) }); const blink = animation(blinkBase, { params: Object.assign({}, blinkParams) }); const 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}}` })) ]; const baseInParams$1 = { delay: '0s', direction: '', duration: '350ms', easing: EaseOut.quad, endOpacity: 1, fromScale: .5, startOpacity: 0, toScale: 1, xPos: '50%', yPos: '50%' }; const baseOutParams$1 = Object.assign(Object.assign({}, baseInParams$1), { easing: EaseOut.sine, endOpacity: 0, fromScale: 1, startOpacity: 1, toScale: .5 }); const scaleInCenter = animation(base$1, { params: baseInParams$1 }); const scaleInBl = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '0', yPos: '100%' }) }); const scaleInVerCenter = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'Y', fromScale: .4 }) }); const scaleInTop = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '50%', yPos: '0' }) }); const scaleInLeft = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '0', yPos: '50%' }) }); const scaleInVerTop = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'Y', fromScale: .4, xPos: '100%', yPos: '0' }) }); const scaleInTr = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '100%', yPos: '0' }) }); const scaleInTl = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '0', yPos: '0' }) }); const scaleInVerBottom = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'Y', fromScale: .4, xPos: '0', yPos: '100%' }) }); const scaleInRight = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '100%', yPos: '50%' }) }); const scaleInHorCenter = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'X', fromScale: .4 }) }); const scaleInBr = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '100%', yPos: '100%' }) }); const scaleInHorLeft = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'X', fromScale: .4, xPos: '0', yPos: '0' }) }); const scaleInBottom = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '50%', yPos: '100%' }) }); const scaleInHorRight = animation(base$1, { params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'X', fromScale: .4, xPos: '100%', yPos: '100%' }) }); const scaleOutCenter = animation(base$1, { params: baseOutParams$1 }); const scaleOutBl = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '0', yPos: '100%' }) }); const scaleOutBr = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '100%', yPos: '100%' }) }); const scaleOutVerCenter = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'Y', toScale: .3 }) }); const scaleOutVerTop = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'Y', toScale: .3, xPos: '100%', yPos: '0' }) }); const scaleOutVerBottom = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'Y', toScale: .3, xPos: '0', yPos: '100%' }) }); const scaleOutTop = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '50%', yPos: '0' }) }); const scaleOutLeft = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '0', yPos: '50%' }) }); const scaleOutTr = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '100%', yPos: '0' }) }); const scaleOutTl = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '0', yPos: '0' }) }); const scaleOutRight = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '100%', yPos: '50%' }) }); const scaleOutBottom = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '50%', yPos: '100%' }) }); const scaleOutHorCenter = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'X', toScale: .3 }) }); const scaleOutHorLeft = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'X', toScale: .3, xPos: '0', yPos: '0' }) }); const scaleOutHorRight = animation(base$1, { params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'X', toScale: .3, xPos: '100%', yPos: '100%' }) }); const base$2 = [ style({ opacity: `{{startOpacity}}`, transform: `{{fromPosition}}` }), animate(`{{duration}} {{delay}} {{easing}}`, style({ opacity: `{{endOpacity}}`, transform: `{{toPosition}}` })) ]; const baseInParams$2 = { delay: '0s', duration: '350ms', easing: EaseOut.quad, endOpacity: 1, fromPosition: 'translateY(-500px)', startOpacity: 0, toPosition: 'translateY(0)' }; const baseOutParams$2 = { delay: '0s', duration: '350ms', easing: EaseIn.quad, endOpacity: 0, fromPosition: 'translateY(0)', startOpacity: 1, toPosition: 'translateY(-500px)' }; const slideInTop = animation(base$2, { params: baseInParams$2 }); const slideInLeft = animation(base$2, { params: { delay: '0s', duration: '350ms', easing: EaseOut.quad, endOpacity: 1, fromPosition: 'translateX(-500px)', startOpacity: 0, toPosition: 'translateY(0)' } }); const slideInRight = animation(base$2, { params: { delay: '0s', duration: '350ms', easing: EaseOut.quad, endOpacity: 1, fromPosition: 'translateX(500px)', startOpacity: 0, toPosition: 'translateY(0)' } }); const slideInBottom = animation(base$2, { params: { delay: '0s', duration: '350ms', easing: EaseOut.quad, endOpacity: 1, fromPosition: 'translateY(500px)', startOpacity: 0, toPosition: 'translateY(0)' } }); const slideInTr = animation(base$2, { params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(-500px) translateX(500px)', toPosition: 'translateY(0) translateX(0)' }) }); const slideInTl = animation(base$2, { params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(-500px) translateX(-500px)', toPosition: 'translateY(0) translateX(0)' }) }); const slideInBr = animation(base$2, { params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(500px) translateX(500px)', toPosition: 'translateY(0) translateX(0)' }) }); const slideInBl = animation(base$2, { params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(500px) translateX(-500px)', toPosition: 'translateY(0) translateX(0)' }) }); const slideOutTop = animation(base$2, { params: baseOutParams$2 }); const slideOutRight = animation(base$2, { params: Object.assign(Object.assign({}, baseOutParams$2), { toPosition: 'translateX(500px)' }) }); const slideOutBottom = animation(base$2, { params: { delay: '0s', duration: '350ms', easing: EaseIn.quad, endOpacity: 0, fromPosition: 'translateY(0)', startOpacity: 1, toPosition: 'translateY(500px)' } }); const slideOutLeft = animation(base$2, { params: Object.assign(Object.assign({}, baseOutParams$2), { toPosition: 'translateX(-500px)' }) }); const slideOutTr = animation(base$2, { params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(-500px) translateX(500px)' }) }); const slideOutBr = animation(base$2, { params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(500px) translateX(500px)' }) }); const slideOutBl = animation(base$2, { params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(500px) translateX(-500px)' }) }); const slideOutTl = animation(base$2, { params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(-500px) translateX(-500px)' }) }); const 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}}` })) ]; const swingParams = { delay: '0s', direction: 'X', duration: '.5s', easing: EaseOut.back, endAngle: 0, endOpacity: 1, startAngle: -100, startOpacity: 0, xPos: 'top', yPos: 'center' }; const swingOutParams = Object.assign(Object.assign({}, swingParams), { duration: '.55s', easing: EaseIn.back, endAngle: 70, endOpacity: 0, startAngle: 0, startOpacity: 1 }); const swingInTopFwd = animation(swingBase, { params: Object.assign({}, swingParams) }); const swingInRightFwd = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', xPos: 'center', yPos: 'right' }) }); const swingInBottomFwd = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { startAngle: 100, xPos: 'bottom' }) }); const swingInLeftFwd = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', startAngle: 100, xPos: 'center', yPos: 'left' }) }); const swingInTopBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { duration: '.6s', startAngle: 70 }) }); const swingInRightBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', duration: '.6s', startAngle: 70, xPos: 'center', yPos: 'right' }) }); const swingInBottomBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { duration: '.6s', startAngle: -70, xPos: 'bottom' }) }); const swingInLeftBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', duration: '.6s', startAngle: -70, xPos: 'center', yPos: 'left' }) }); const swingOutTopFwd = animation(swingBase, { params: Object.assign({}, swingOutParams) }); const swingOutRightFwd = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', xPos: 'center', yPos: 'right' }) }); const swingOutBottomFwd = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { endAngle: -70, xPos: 'bottom' }) }); const swingOutLefttFwd = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', endAngle: -70, xPos: 'center', yPos: 'left' }) }); const swingOutTopBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { duration: '.45s', endAngle: -100 }) }); const swingOutRightBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', duration: '.45s', endAngle: -100, xPos: 'center', yPos: 'right' }) }); const swingOutBottomBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { duration: '.45s', endAngle: 100, xPos: 'bottom' }) }); const swingOutLeftBck = animation(swingBase, { params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', duration: '.45s', endAngle: 100, xPos: 'center', yPos: 'left' }) }); const base$3 = [ style({ opacity: `{{ startOpacity }}`, height: `{{ startHeight }}` }), animate(`{{duration}} {{delay}} {{easing}}`, style({ opacity: `{{ endOpacity }}`, height: `{{ endHeight }}` })) ]; const baseParams$3 = { delay: '0s', duration: '350ms', easing: EaseIn.quad, startOpacity: 0, endOpacity: 1, startHeight: '', endHeight: '' }; const growVerIn = animation(base$3, { params: Object.assign(Object.assign({}, baseParams$3), { easing: EaseOut.quad, startOpacity: 0, endOpacity: 1, startHeight: '0px', endHeight: '*' }) }); const growVerOut = animation(base$3, { params: Object.assign(Object.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? */ let IgxNavigationService = class IgxNavigationService { constructor() { this.navs = {}; } add(id, navItem) { this.navs[id] = navItem; } remove(id) { delete this.navs[id]; } get(id) { if (id) { return this.navs[id]; } } toggle(id, ...args) { if (this.navs[id]) { return this.navs[id].toggle(...args); } } open(id, ...args) { if (this.navs[id]) { return this.navs[id].open(...args); } } close(id, ...args) { if (this.navs[id]) { return this.navs[id].close(...args); } } }; IgxNavigationService = __decorate([ Injectable(), __metadata("design:paramtypes", []) ], 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. */ let IgxNavigationToggleDirective = class IgxNavigationToggleDirective { constructor(nav) { this.state = nav; } toggleNavigationDrawer() { this.state.toggle(this.target, true); } }; IgxNavigationToggleDirective.ctorParameters = () => [ { 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); /** * Directive that can close targets through provided NavigationService. * * Usage: * ``` * <button igxNavClose="ID"> Close </button> * ``` * Where the `ID` matches the ID of compatible `IToggleView` component. */ let IgxNavigationCloseDirective = class IgxNavigationCloseDirective { constructor(nav) { this.state = nav; } closeNavigationDrawer() { this.state.close(this.target, true); } }; IgxNavigationCloseDirective.ctorParameters = () => [ { 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); /** * @hidden */ let IgxNavigationModule = class IgxNavigationModule { }; IgxNavigationModule = __decorate([ NgModule({ declarations: [IgxNavigationCloseDirective, IgxNavigationToggleDirective], exports: [IgxNavigationCloseDirective, IgxNavigationToggleDirective], providers: [IgxNavigationService] }) ], IgxNavigationModule); /** *@hidden */ function cloneArray(array, deep) { const arr = []; if (!array) { return arr; } let 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) { const result = []; if (!array) { return result; } for (const item of array) { const clonedItem = cloneValue(item); if (Array.isArray(item[childDataKey])) { clonedItem[childDataKey] = cloneHierarchicalArray(clonedItem[childDataKey], childDataKey); } result.push(clonedItem); } 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) { if (!isObject(obj1)) { throw new Error(`Cannot merge into ${obj1}. First param must be an object.`); } if (!isObject(obj2)) { return obj1; } for (const key of Object.keys(obj2)) { obj1[key] = cloneValue(obj2[key]); } 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) { if (isDate(value)) { return new Date(value.getTime()); } if (Array.isArray(value)) { return [...value]; } if (value instanceof Map || value instanceof Set) { return value; } if (isObject(value)) { const result = {}; for (const key of Object.keys(value)) { result[key] = cloneValue(value[key]); } 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) { let 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); const 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) { const 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() { const edgeBrowser = /Edge[\/\s](\d+\.\d+)/.test(navigator.userAgent); return edgeBrowser; } /** *@hidden */ function isFirefox() { const firefoxBrowser = /Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent); return firefoxBrowser; } /** * @hidden */ let PlatformUtil = class PlatformUtil { constructor(platformId) { this.platformId = platformId; this.isBrowser = isPlatformBrowser(this.platformId); this.isIOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window); } }; PlatformUtil.ctorParameters = () => [ { 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); /** * @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) { let result = []; arr.forEach(el => { result.push(el); if (el.children) { const children = Array.isArray(el.children) ? el.children : el.children.toArray(); result = result.concat(flatten(children)); } }); return result; } const NAVIGATION_KEYS = new Set([ 'down', 'up', 'left', 'right', 'arrowdown', 'arrowup', 'arrowleft', 'arrowright', 'home', 'end', 'space', 'spacebar', ' ' ]); const ROW_EXPAND_KEYS = new Set('right down arrowright arrowdown'.split(' ')); const ROW_COLLAPSE_KEYS = new Set('left up arrowleft arrowup'.split(' ')); const SUPPORTED_KEYS = new Set([...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((observer) => { const instance = new ResizeObserver((entries) => { observer.next(entries); }); instance.observe(target); const unsubscribe = () => 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((level, index) => { return level.fieldName === h2[index].fieldName && level.value === h2[index].value; }); } function getHierarchy(gRow) { const 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; } class DefaultSortingStrategy { constructor() { } static instance() { return this._instance || (this._instance = new this()); } sort(data, fieldName, dir, ignoreCase, valueResolver) { const key = fieldName; const reverse = (dir === SortingDirection.Desc ? -1 : 1); const cmpFunc = (obj1, obj2) => { return this.compareObjects(obj1, obj2, key, reverse, ignoreCase, valueResolver); }; return this.arraySort(data, cmpFunc); } compareValues(a, b) { const an = (a === null || a === undefined); const 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; } compareObjects(obj1, obj2, key, reverse, ignoreCase, valueResolver) { let a = valueResolver(obj1, key); let 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); } arraySort(data, compareFn) { return data.sort(compareFn); } } DefaultSortingStrategy._instance = null; class NoopSortingStrategy { constructor() { } static instance() { return this._instance || (this._instance = new NoopSortingStrategy()); } sort(data, expressions) { return data; } } NoopSortingStrategy._instance = null; class IgxSorting { sort(data, expressions) { return this.sortDataRecursive(data, expressions); } groupedRecordsByExpression(data, index, expression) { let i; let groupval; const res = []; const key = expression.fieldName; const len = data.length; res.push(data[index]); groupval = this.getFieldValue(data[index], key); index++; const 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; } sortDataRecursive(data, expressions, expressionIndex = 0) { let i; let j; let expr; let gbData; let gbDataLen; const exprsLen = expressions.length; const 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; } groupDataRecursive(data, state, level, parent, metadata, grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) { const expressions = state.expressions; const expansion = state.expansion; let i = 0; let result = []; while (i < data.length) { const group = this.groupedRecordsByExpression(data, i, expressions[level]); const groupRow = { expression: expressions[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); } const hierarchy = getHierarchy(groupRow); const expandState = expansion.find((s) => isHierarchyMatch(s.hierarchy || [{ fieldName: groupRow.expression.fieldName, value: groupRow.value }], hierarchy)); const expanded = expandState ? expandState.expanded : state.defaultExpanded; let recursiveResult; result.push(groupRow); metadata.push(null); fullResult.data.push(groupRow); fullResult.metadata.push(null); if (level < expressions.length - 1) { recursiveResult = this.groupDataRecursive(group, state, level + 1, groupRow, expanded ? metadata : [], grid, groupsRecords, fullResult); if (expanded) { result = result.concat(recursiveResult); } } else { for (const groupItem of group) { fullResult.metadata.push(groupRow); fullResult.data.push(groupItem); } if (expanded) { metadata.push(...fullResult.metadata.slice(fullResult.metadata.length - group.length)); result.push(...fullResult.data.slice(fullResult.data.length - group.length)); } } i += group.length; } return result; } getFieldValue(obj, key) { return obj[key]; } } class IgxDataRecordSorting extends IgxSorting { getFieldValue(obj, key) { return obj.data[key]; } } class IgxGrouping extends IgxSorting { groupBy(data, state, grid, groupsRecords, fullResult = { data: [], metadata: [] }) { const metadata = []; const grouping = this.groupDataRecursive(data, state, 0, null, metadata, grid, groupsRecords, fullResult); return { data: grouping, metadata: metadata }; } } var PagingError; (function (PagingError) { PagingError[PagingError["None"] = 0] = "None"; PagingError[PagingError["IncorrectPageIndex"] = 1] = "IncorrectPageIndex"; PagingError[PagingError["IncorrectRecordsPerPage"] = 2] = "IncorrectRecordsPerPage"; })(PagingError || (PagingError = {})); var FilteringLogic; (function (FilteringLogic) { FilteringLogic[FilteringLogic["And"] = 0] = "And"; FilteringLogic[FilteringLogic["Or"] = 1] = "Or"; })(FilteringLogic || (FilteringLogic = {})); var FilteringExpressionsTreeType; (function (FilteringExpressionsTreeType) { FilteringExpressionsTreeType[FilteringExpressionsTreeType["Regular"] = 0] = "Regular"; FilteringExpressionsTreeType[FilteringExpressionsTreeType["Advanced"] = 1] = "Advanced"; })(FilteringExpressionsTreeType || (FilteringExpressionsTreeType = {})); class FilteringExpressionsTree { constructor(operator, fieldName) { /** * Sets/gets the filtering operands. * ```typescript * const gridExpressionsTree = new FilteringExpressionsTree(FilteringLogic.And); * const expression = [ * { * condition: IgxStringFilteringOperand.instance().condition('contains'), * fieldName: 'Column Field', * searchVal: 'Value', * ignoreCase: false * }]; * gridExpressionsTree.filteringOperands.push(expression); * this.grid.filteringExpressionsTree = gridExpressionsTree; * ``` * ```typescript * let filteringOperands = gridExpressionsTree.filteringOperands; * ``` * @memberof FilteringExpressionsTree */ this.filteringOperands = []; this.operator = operator; this.fieldName = fieldName; } /** * Checks if filtering expressions tree is empty. * @param expressionTree filtering expressions tree. */ static empty(expressionTree) { return !expressionTree || !expressionTree.filteringOperands || !expressionTre