import {
  route
} from "./chunk-EAEI3KAE.js";
import {
  AIM_FORM_LAYOUT,
  AIM_OPTION_PARENT_COMPONENT,
  AIM_SELECT_CONTEXT,
  AimButtonGroupComponent,
  AimCheckboxV2Component,
  AimCountComponent,
  AimDescriptionComponent,
  AimDialogModule,
  AimDialogService,
  AimFormLayoutComponent,
  AimFormLayoutControl,
  AimIconButtonComponent,
  AimInputBaseDirective,
  AimInputComponent,
  AimInputSize,
  AimInputState,
  AimLabelComponent,
  AimOptgroupComponent,
  AimOptionComponent,
  AimOptionModule,
  AimSelectContext,
  AimSelectFieldSize,
  AimSelectFieldWidth,
  AimTagBadgeComponent,
  AimTagChipComponent,
  AimTagChipModule,
  AimTextToggleComponent,
  AimTextToggleGroupComponent,
  AimToast,
  BadgeNotiRole,
  BadgeNotiSize,
  ChoiceNamePipe,
  EXPONENT,
  MAT_DIALOG_DATA,
  MAT_FORM_FIELD,
  MatAutocompleteModule,
  MatAutocompleteTrigger,
  MatDialogRef,
  MatFormField,
  MatFormFieldControl,
  MatFormFieldModule,
  MatInput,
  MatInputModule,
  NEGATIVE_SIGN,
  NumericInputOption,
  POSITIVE_SIGN,
  SelectOptionHeight,
  TranslateModule,
  TranslateService,
  decodeURIWithNormalizeFilename,
  makeAimDialogConfig
} from "./chunk-L7NBZNE6.js";
import {
  A,
  ANIMATION_MODULE_TYPE,
  ATTRIBUTE_KEY_MAX_LENGTH,
  ActiveDescendantKeyManager,
  AimButtonComponent,
  AimButtonHostingDirective,
  AimDividerComponent,
  AimIconComponent,
  AimTooltipModule,
  AnnotationType,
  ApplicationRef,
  AriaDescriber,
  ArrowDown,
  ArrowLeft,
  ArrowRight,
  AsyncPipe,
  Attribute,
  AttributeChoicesSourceType,
  AttributeConfigErrorKey,
  AttributeConfigFormName,
  AttributeConfigType,
  BehaviorSubject,
  ButtonSize,
  ButtonTheme,
  CHOICE_VALUE_MAX_LENGTH,
  CLASS_NAME_MAX_LENGTH,
  CdkConnectedOverlay,
  CdkOverlayOrigin,
  CdkScrollableModule,
  ChangeDetectionStrategy,
  ChangeDetectorRef,
  CheckboxRequiredValidator,
  ChoiceFormName,
  ClassItemColName,
  CommonModule,
  Component,
  ComponentFactoryResolver$1,
  ConnectionPositionPair,
  ContentChild,
  ContentChildren,
  DOCUMENT,
  DOWN_ARROW,
  DestroyRef,
  Directionality,
  Directive,
  DomPortalOutlet,
  DomSanitizer,
  ENTER,
  ESCAPE,
  ElementRef,
  Enter,
  ErrorStateMatcher,
  Escape,
  EventEmitter,
  FactoryTarget,
  FileFormat,
  FocusKeyManager,
  FocusMonitor,
  FormControl,
  FormGroupDirective,
  FormsModule,
  GlobalCatchError,
  Host,
  HostBinding,
  HostListener,
  HttpClient,
  HttpHeaders,
  HttpParams,
  INPUT_MAX_VALUE,
  Inject,
  Injectable,
  InjectionToken,
  Injector,
  Input,
  InputFormat,
  LEFT_ARROW,
  LiveAnnouncer,
  LoadMoreState,
  MAT_OPTGROUP,
  MAT_OPTION_PARENT_COMPONENT,
  MAT_TOOLTIP_DEFAULT_OPTIONS,
  MAT_TOOLTIP_SCROLL_STRATEGY,
  MatButtonModule,
  MatCommonModule,
  MatOption,
  MatOptionModule,
  MatRipple,
  MatRippleModule,
  MatTooltip,
  NEVER,
  NG_VALIDATORS,
  NG_VALUE_ACCESSOR,
  NgClass,
  NgControl,
  NgForOf,
  NgForageName,
  NgForm,
  NgIf,
  NgModule,
  NgStyle,
  NgSwitch,
  NgSwitchCase,
  NgSwitchDefault,
  NgZone,
  ObserveType,
  Optional,
  Output,
  Overlay,
  OverlayConfig,
  OverlayModule,
  Pipe,
  Platform,
  QueryList,
  QuotaOptionStatus,
  RIGHT_ARROW,
  ReactiveFormsModule,
  Renderer2,
  ResponseType,
  Router,
  SPACE,
  ScrollDispatcher,
  SelectionModel,
  Self,
  SmartCurationViewerApiService,
  SmartCurationViewerStoreService,
  Subject,
  Subscription,
  Tab,
  TemplatePortal,
  TemplateRef,
  UP_ARROW,
  UntypedFormBuilder,
  ValidationFormName,
  Validators,
  ViewChild,
  ViewContainerRef,
  ViewEncapsulation$1,
  ViewportRuler,
  _ErrorStateTracker,
  _MatInternalFormField,
  __decorate,
  _countGroupLabelsBeforeOption,
  _getOptionScrollPosition,
  addAriaReferencedId,
  animate,
  animateChild,
  asapScheduler,
  booleanAttribute,
  catchError,
  clamp_default,
  cloneDeep_default,
  coerceBooleanProperty,
  core_exports,
  debounceTime,
  defer,
  delay,
  distinctUntilChanged,
  exhaustMap,
  filter,
  filterNotEmpty,
  filterTruthy,
  finalize,
  forkJoin,
  forwardRef,
  fromEvent,
  getAttributeConfigFormGroupErrorHandler,
  getErrorMessageFrom,
  getFileNameFromHttpResponse,
  hasModifierKey,
  head_default,
  inject,
  isChoiceAttributeConfig,
  isDicomDatasetQuota,
  isEmpty_default,
  isEqual_default,
  isFakeMousedownFromScreenReader,
  isFakeTouchstartFromScreenReader,
  isImageDatasetQuota,
  isInputAttributeConfig,
  isLotteQaDatasetQuota,
  isMultiChoiceAttributeConfig,
  isNil_default,
  isObjectTrackingDatasetQuota,
  isPointCloudDatasetQuota,
  isSegmentationDatasetQuota,
  isTextDatasetQuota,
  isVideoDatasetQuota,
  last_default,
  map,
  merge,
  noop_default,
  normalizePassiveListenerOptions,
  numberAttribute,
  of,
  omit_default,
  query,
  removeAriaReferencedId,
  sampleTime,
  saveToFileFromBlob,
  signal,
  stagger,
  startWith,
  state,
  style,
  switchMap,
  take,
  takeUntil,
  takeUntilDestroyed,
  tap,
  throwError,
  timer,
  transition,
  trigger,
  uniq_default,
  uniqueId_default,
  ɵɵngDeclareClassMetadata,
  ɵɵngDeclareComponent,
  ɵɵngDeclareDirective,
  ɵɵngDeclareFactory,
  ɵɵngDeclareInjectable,
  ɵɵngDeclareInjector,
  ɵɵngDeclareNgModule,
  ɵɵngDeclarePipe
} from "./chunk-CMKZ6EQS.js";
import {
  __async,
  __commonJS,
  __export,
  __objRest,
  __require,
  __spreadProps,
  __spreadValues,
  __toESM
} from "./chunk-SJP7IFL7.js";

// node_modules/keyboardjs/dist/keyboard.js
var require_keyboard = __commonJS({
  "node_modules/keyboardjs/dist/keyboard.js"(exports, module) {
    (function(global2, factory) {
      typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = global2 || self, global2.keyboardJS = factory());
    })(exports, function() {
      "use strict";
      function _typeof(obj) {
        "@babel/helpers - typeof";
        if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
          _typeof = function(obj2) {
            return typeof obj2;
          };
        } else {
          _typeof = function(obj2) {
            return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
          };
        }
        return _typeof(obj);
      }
      function _classCallCheck(instance, Constructor) {
        if (!(instance instanceof Constructor)) {
          throw new TypeError("Cannot call a class as a function");
        }
      }
      function _defineProperties(target, props) {
        for (var i2 = 0; i2 < props.length; i2++) {
          var descriptor = props[i2];
          descriptor.enumerable = descriptor.enumerable || false;
          descriptor.configurable = true;
          if ("value" in descriptor)
            descriptor.writable = true;
          Object.defineProperty(target, descriptor.key, descriptor);
        }
      }
      function _createClass(Constructor, protoProps, staticProps) {
        if (protoProps)
          _defineProperties(Constructor.prototype, protoProps);
        if (staticProps)
          _defineProperties(Constructor, staticProps);
        return Constructor;
      }
      function _toConsumableArray(arr) {
        return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
      }
      function _arrayWithoutHoles(arr) {
        if (Array.isArray(arr))
          return _arrayLikeToArray(arr);
      }
      function _iterableToArray(iter) {
        if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
          return Array.from(iter);
      }
      function _unsupportedIterableToArray(o2, minLen) {
        if (!o2)
          return;
        if (typeof o2 === "string")
          return _arrayLikeToArray(o2, minLen);
        var n2 = Object.prototype.toString.call(o2).slice(8, -1);
        if (n2 === "Object" && o2.constructor)
          n2 = o2.constructor.name;
        if (n2 === "Map" || n2 === "Set")
          return Array.from(o2);
        if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2))
          return _arrayLikeToArray(o2, minLen);
      }
      function _arrayLikeToArray(arr, len) {
        if (len == null || len > arr.length)
          len = arr.length;
        for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++)
          arr2[i2] = arr[i2];
        return arr2;
      }
      function _nonIterableSpread() {
        throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
      }
      var KeyCombo = /* @__PURE__ */ function() {
        function KeyCombo2(keyComboStr) {
          _classCallCheck(this, KeyCombo2);
          this.sourceStr = keyComboStr;
          this.subCombos = KeyCombo2.parseComboStr(keyComboStr);
          this.keyNames = this.subCombos.reduce(function(memo, nextSubCombo) {
            return memo.concat(nextSubCombo);
          }, []);
        }
        _createClass(KeyCombo2, [{
          key: "check",
          value: function check(pressedKeyNames) {
            var startingKeyNameIndex = 0;
            for (var i2 = 0; i2 < this.subCombos.length; i2 += 1) {
              startingKeyNameIndex = this._checkSubCombo(this.subCombos[i2], startingKeyNameIndex, pressedKeyNames);
              if (startingKeyNameIndex === -1) {
                return false;
              }
            }
            return true;
          }
        }, {
          key: "isEqual",
          value: function isEqual(otherKeyCombo) {
            if (!otherKeyCombo || typeof otherKeyCombo !== "string" && _typeof(otherKeyCombo) !== "object") {
              return false;
            }
            if (typeof otherKeyCombo === "string") {
              otherKeyCombo = new KeyCombo2(otherKeyCombo);
            }
            if (this.subCombos.length !== otherKeyCombo.subCombos.length) {
              return false;
            }
            for (var i2 = 0; i2 < this.subCombos.length; i2 += 1) {
              if (this.subCombos[i2].length !== otherKeyCombo.subCombos[i2].length) {
                return false;
              }
            }
            for (var _i = 0; _i < this.subCombos.length; _i += 1) {
              var subCombo = this.subCombos[_i];
              var otherSubCombo = otherKeyCombo.subCombos[_i].slice(0);
              for (var j2 = 0; j2 < subCombo.length; j2 += 1) {
                var keyName = subCombo[j2];
                var index = otherSubCombo.indexOf(keyName);
                if (index > -1) {
                  otherSubCombo.splice(index, 1);
                }
              }
              if (otherSubCombo.length !== 0) {
                return false;
              }
            }
            return true;
          }
        }, {
          key: "_checkSubCombo",
          value: function _checkSubCombo(subCombo, startingKeyNameIndex, pressedKeyNames) {
            subCombo = subCombo.slice(0);
            pressedKeyNames = pressedKeyNames.slice(startingKeyNameIndex);
            var endIndex = startingKeyNameIndex;
            for (var i2 = 0; i2 < subCombo.length; i2 += 1) {
              var keyName = subCombo[i2];
              if (keyName[0] === "\\") {
                var escapedKeyName = keyName.slice(1);
                if (escapedKeyName === KeyCombo2.comboDeliminator || escapedKeyName === KeyCombo2.keyDeliminator) {
                  keyName = escapedKeyName;
                }
              }
              var index = pressedKeyNames.indexOf(keyName);
              if (index > -1) {
                subCombo.splice(i2, 1);
                i2 -= 1;
                if (index > endIndex) {
                  endIndex = index;
                }
                if (subCombo.length === 0) {
                  return endIndex;
                }
              }
            }
            return -1;
          }
        }]);
        return KeyCombo2;
      }();
      KeyCombo.comboDeliminator = ">";
      KeyCombo.keyDeliminator = "+";
      KeyCombo.parseComboStr = function(keyComboStr) {
        var subComboStrs = KeyCombo._splitStr(keyComboStr, KeyCombo.comboDeliminator);
        var combo = [];
        for (var i2 = 0; i2 < subComboStrs.length; i2 += 1) {
          combo.push(KeyCombo._splitStr(subComboStrs[i2], KeyCombo.keyDeliminator));
        }
        return combo;
      };
      KeyCombo._splitStr = function(str, deliminator) {
        var s2 = str;
        var d2 = deliminator;
        var c2 = "";
        var ca = [];
        for (var ci = 0; ci < s2.length; ci += 1) {
          if (ci > 0 && s2[ci] === d2 && s2[ci - 1] !== "\\") {
            ca.push(c2.trim());
            c2 = "";
            ci += 1;
          }
          c2 += s2[ci];
        }
        if (c2) {
          ca.push(c2.trim());
        }
        return ca;
      };
      var Locale = /* @__PURE__ */ function() {
        function Locale2(name) {
          _classCallCheck(this, Locale2);
          this.localeName = name;
          this.activeTargetKeys = [];
          this.pressedKeys = [];
          this._appliedMacros = [];
          this._keyMap = {};
          this._killKeyCodes = [];
          this._macros = [];
        }
        _createClass(Locale2, [{
          key: "bindKeyCode",
          value: function bindKeyCode(keyCode, keyNames) {
            if (typeof keyNames === "string") {
              keyNames = [keyNames];
            }
            this._keyMap[keyCode] = keyNames;
          }
        }, {
          key: "bindMacro",
          value: function bindMacro(keyComboStr, keyNames) {
            if (typeof keyNames === "string") {
              keyNames = [keyNames];
            }
            var handler = null;
            if (typeof keyNames === "function") {
              handler = keyNames;
              keyNames = null;
            }
            var macro = {
              keyCombo: new KeyCombo(keyComboStr),
              keyNames,
              handler
            };
            this._macros.push(macro);
          }
        }, {
          key: "getKeyCodes",
          value: function getKeyCodes(keyName) {
            var keyCodes = [];
            for (var keyCode in this._keyMap) {
              var index = this._keyMap[keyCode].indexOf(keyName);
              if (index > -1) {
                keyCodes.push(keyCode | 0);
              }
            }
            return keyCodes;
          }
        }, {
          key: "getKeyNames",
          value: function getKeyNames(keyCode) {
            return this._keyMap[keyCode] || [];
          }
        }, {
          key: "setKillKey",
          value: function setKillKey(keyCode) {
            if (typeof keyCode === "string") {
              var keyCodes = this.getKeyCodes(keyCode);
              for (var i2 = 0; i2 < keyCodes.length; i2 += 1) {
                this.setKillKey(keyCodes[i2]);
              }
              return;
            }
            this._killKeyCodes.push(keyCode);
          }
        }, {
          key: "pressKey",
          value: function pressKey(keyCode) {
            if (typeof keyCode === "string") {
              var keyCodes = this.getKeyCodes(keyCode);
              for (var i2 = 0; i2 < keyCodes.length; i2 += 1) {
                this.pressKey(keyCodes[i2]);
              }
              return;
            }
            this.activeTargetKeys.length = 0;
            var keyNames = this.getKeyNames(keyCode);
            for (var _i = 0; _i < keyNames.length; _i += 1) {
              this.activeTargetKeys.push(keyNames[_i]);
              if (this.pressedKeys.indexOf(keyNames[_i]) === -1) {
                this.pressedKeys.push(keyNames[_i]);
              }
            }
            this._applyMacros();
          }
        }, {
          key: "releaseKey",
          value: function releaseKey(keyCode) {
            if (typeof keyCode === "string") {
              var keyCodes = this.getKeyCodes(keyCode);
              for (var i2 = 0; i2 < keyCodes.length; i2 += 1) {
                this.releaseKey(keyCodes[i2]);
              }
            } else {
              var keyNames = this.getKeyNames(keyCode);
              var killKeyCodeIndex = this._killKeyCodes.indexOf(keyCode);
              if (killKeyCodeIndex !== -1) {
                this.pressedKeys.length = 0;
              } else {
                for (var _i2 = 0; _i2 < keyNames.length; _i2 += 1) {
                  var index = this.pressedKeys.indexOf(keyNames[_i2]);
                  if (index > -1) {
                    this.pressedKeys.splice(index, 1);
                  }
                }
              }
              this.activeTargetKeys.length = 0;
              this._clearMacros();
            }
          }
        }, {
          key: "_applyMacros",
          value: function _applyMacros() {
            var macros = this._macros.slice(0);
            for (var i2 = 0; i2 < macros.length; i2 += 1) {
              var macro = macros[i2];
              if (macro.keyCombo.check(this.pressedKeys)) {
                if (macro.handler) {
                  macro.keyNames = macro.handler(this.pressedKeys);
                }
                for (var j2 = 0; j2 < macro.keyNames.length; j2 += 1) {
                  if (this.pressedKeys.indexOf(macro.keyNames[j2]) === -1) {
                    this.pressedKeys.push(macro.keyNames[j2]);
                  }
                }
                this._appliedMacros.push(macro);
              }
            }
          }
        }, {
          key: "_clearMacros",
          value: function _clearMacros() {
            for (var i2 = 0; i2 < this._appliedMacros.length; i2 += 1) {
              var macro = this._appliedMacros[i2];
              if (!macro.keyCombo.check(this.pressedKeys)) {
                for (var j2 = 0; j2 < macro.keyNames.length; j2 += 1) {
                  var index = this.pressedKeys.indexOf(macro.keyNames[j2]);
                  if (index > -1) {
                    this.pressedKeys.splice(index, 1);
                  }
                }
                if (macro.handler) {
                  macro.keyNames = null;
                }
                this._appliedMacros.splice(i2, 1);
                i2 -= 1;
              }
            }
          }
        }]);
        return Locale2;
      }();
      var Keyboard = /* @__PURE__ */ function() {
        function Keyboard2(targetWindow, targetElement, targetPlatform, targetUserAgent) {
          _classCallCheck(this, Keyboard2);
          this._locale = null;
          this._currentContext = "";
          this._contexts = {};
          this._listeners = [];
          this._appliedListeners = [];
          this._locales = {};
          this._targetElement = null;
          this._targetWindow = null;
          this._targetPlatform = "";
          this._targetUserAgent = "";
          this._isModernBrowser = false;
          this._targetKeyDownBinding = null;
          this._targetKeyUpBinding = null;
          this._targetResetBinding = null;
          this._paused = false;
          this._contexts.global = {
            listeners: this._listeners,
            targetWindow,
            targetElement,
            targetPlatform,
            targetUserAgent
          };
          this.setContext("global");
        }
        _createClass(Keyboard2, [{
          key: "setLocale",
          value: function setLocale(localeName, localeBuilder) {
            var locale = null;
            if (typeof localeName === "string") {
              if (localeBuilder) {
                locale = new Locale(localeName);
                localeBuilder(locale, this._targetPlatform, this._targetUserAgent);
              } else {
                locale = this._locales[localeName] || null;
              }
            } else {
              locale = localeName;
              localeName = locale._localeName;
            }
            this._locale = locale;
            this._locales[localeName] = locale;
            if (locale) {
              this._locale.pressedKeys = locale.pressedKeys;
            }
            return this;
          }
        }, {
          key: "getLocale",
          value: function getLocale(localName) {
            localName || (localName = this._locale.localeName);
            return this._locales[localName] || null;
          }
        }, {
          key: "bind",
          value: function bind(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault2) {
            if (keyComboStr === null || typeof keyComboStr === "function") {
              preventRepeatByDefault2 = releaseHandler;
              releaseHandler = pressHandler;
              pressHandler = keyComboStr;
              keyComboStr = null;
            }
            if (keyComboStr && _typeof(keyComboStr) === "object" && typeof keyComboStr.length === "number") {
              for (var i2 = 0; i2 < keyComboStr.length; i2 += 1) {
                this.bind(keyComboStr[i2], pressHandler, releaseHandler);
              }
              return this;
            }
            this._listeners.push({
              keyCombo: keyComboStr ? new KeyCombo(keyComboStr) : null,
              pressHandler: pressHandler || null,
              releaseHandler: releaseHandler || null,
              preventRepeat: false,
              preventRepeatByDefault: preventRepeatByDefault2 || false,
              executingHandler: false
            });
            return this;
          }
        }, {
          key: "addListener",
          value: function addListener(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault2) {
            return this.bind(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault2);
          }
        }, {
          key: "on",
          value: function on2(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault2) {
            return this.bind(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault2);
          }
        }, {
          key: "bindPress",
          value: function bindPress(keyComboStr, pressHandler, preventRepeatByDefault2) {
            return this.bind(keyComboStr, pressHandler, null, preventRepeatByDefault2);
          }
        }, {
          key: "bindRelease",
          value: function bindRelease(keyComboStr, releaseHandler) {
            return this.bind(keyComboStr, null, releaseHandler, preventRepeatByDefault);
          }
        }, {
          key: "unbind",
          value: function unbind(keyComboStr, pressHandler, releaseHandler) {
            if (keyComboStr === null || typeof keyComboStr === "function") {
              releaseHandler = pressHandler;
              pressHandler = keyComboStr;
              keyComboStr = null;
            }
            if (keyComboStr && _typeof(keyComboStr) === "object" && typeof keyComboStr.length === "number") {
              for (var i2 = 0; i2 < keyComboStr.length; i2 += 1) {
                this.unbind(keyComboStr[i2], pressHandler, releaseHandler);
              }
              return this;
            }
            for (var _i = 0; _i < this._listeners.length; _i += 1) {
              var listener = this._listeners[_i];
              var comboMatches = !keyComboStr && !listener.keyCombo || listener.keyCombo && listener.keyCombo.isEqual(keyComboStr);
              var pressHandlerMatches = !pressHandler && !releaseHandler || !pressHandler && !listener.pressHandler || pressHandler === listener.pressHandler;
              var releaseHandlerMatches = !pressHandler && !releaseHandler || !releaseHandler && !listener.releaseHandler || releaseHandler === listener.releaseHandler;
              if (comboMatches && pressHandlerMatches && releaseHandlerMatches) {
                this._listeners.splice(_i, 1);
                _i -= 1;
              }
            }
            return this;
          }
        }, {
          key: "removeListener",
          value: function removeListener(keyComboStr, pressHandler, releaseHandler) {
            return this.unbind(keyComboStr, pressHandler, releaseHandler);
          }
        }, {
          key: "off",
          value: function off2(keyComboStr, pressHandler, releaseHandler) {
            return this.unbind(keyComboStr, pressHandler, releaseHandler);
          }
        }, {
          key: "setContext",
          value: function setContext(contextName) {
            if (this._locale) {
              this.releaseAllKeys();
            }
            if (!this._contexts[contextName]) {
              var globalContext = this._contexts.global;
              this._contexts[contextName] = {
                listeners: [],
                targetWindow: globalContext.targetWindow,
                targetElement: globalContext.targetElement,
                targetPlatform: globalContext.targetPlatform,
                targetUserAgent: globalContext.targetUserAgent
              };
            }
            var context = this._contexts[contextName];
            this._currentContext = contextName;
            this._listeners = context.listeners;
            this.stop();
            this.watch(context.targetWindow, context.targetElement, context.targetPlatform, context.targetUserAgent);
            return this;
          }
        }, {
          key: "getContext",
          value: function getContext() {
            return this._currentContext;
          }
        }, {
          key: "withContext",
          value: function withContext(contextName, callback) {
            var previousContextName = this.getContext();
            this.setContext(contextName);
            callback();
            this.setContext(previousContextName);
            return this;
          }
        }, {
          key: "watch",
          value: function watch(targetWindow, targetElement, targetPlatform, targetUserAgent) {
            var _this = this;
            this.stop();
            var win = typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : {};
            if (!targetWindow) {
              if (!win.addEventListener && !win.attachEvent) {
                if (this._currentContext === "global") {
                  return;
                }
                throw new Error("Cannot find window functions addEventListener or attachEvent.");
              }
              targetWindow = win;
            }
            if (typeof targetWindow.nodeType === "number") {
              targetUserAgent = targetPlatform;
              targetPlatform = targetElement;
              targetElement = targetWindow;
              targetWindow = win;
            }
            if (!targetWindow.addEventListener && !targetWindow.attachEvent) {
              throw new Error("Cannot find addEventListener or attachEvent methods on targetWindow.");
            }
            this._isModernBrowser = !!targetWindow.addEventListener;
            var userAgent = targetWindow.navigator && targetWindow.navigator.userAgent || "";
            var platform = targetWindow.navigator && targetWindow.navigator.platform || "";
            targetElement && targetElement !== null || (targetElement = targetWindow.document);
            targetPlatform && targetPlatform !== null || (targetPlatform = platform);
            targetUserAgent && targetUserAgent !== null || (targetUserAgent = userAgent);
            this._targetKeyDownBinding = function(event) {
              _this.pressKey(event.keyCode, event);
              _this._handleCommandBug(event, platform);
            };
            this._targetKeyUpBinding = function(event) {
              _this.releaseKey(event.keyCode, event);
            };
            this._targetResetBinding = function(event) {
              _this.releaseAllKeys(event);
            };
            this._bindEvent(targetElement, "keydown", this._targetKeyDownBinding);
            this._bindEvent(targetElement, "keyup", this._targetKeyUpBinding);
            this._bindEvent(targetWindow, "focus", this._targetResetBinding);
            this._bindEvent(targetWindow, "blur", this._targetResetBinding);
            this._targetElement = targetElement;
            this._targetWindow = targetWindow;
            this._targetPlatform = targetPlatform;
            this._targetUserAgent = targetUserAgent;
            var currentContext = this._contexts[this._currentContext];
            currentContext.targetWindow = this._targetWindow;
            currentContext.targetElement = this._targetElement;
            currentContext.targetPlatform = this._targetPlatform;
            currentContext.targetUserAgent = this._targetUserAgent;
            return this;
          }
        }, {
          key: "stop",
          value: function stop() {
            if (!this._targetElement || !this._targetWindow) {
              return;
            }
            this._unbindEvent(this._targetElement, "keydown", this._targetKeyDownBinding);
            this._unbindEvent(this._targetElement, "keyup", this._targetKeyUpBinding);
            this._unbindEvent(this._targetWindow, "focus", this._targetResetBinding);
            this._unbindEvent(this._targetWindow, "blur", this._targetResetBinding);
            this._targetWindow = null;
            this._targetElement = null;
            return this;
          }
        }, {
          key: "pressKey",
          value: function pressKey(keyCode, event) {
            if (this._paused) {
              return this;
            }
            if (!this._locale) {
              throw new Error("Locale not set");
            }
            this._locale.pressKey(keyCode);
            this._applyBindings(event);
            return this;
          }
        }, {
          key: "releaseKey",
          value: function releaseKey(keyCode, event) {
            if (this._paused) {
              return this;
            }
            if (!this._locale) {
              throw new Error("Locale not set");
            }
            this._locale.releaseKey(keyCode);
            this._clearBindings(event);
            return this;
          }
        }, {
          key: "releaseAllKeys",
          value: function releaseAllKeys(event) {
            if (this._paused) {
              return this;
            }
            if (!this._locale) {
              throw new Error("Locale not set");
            }
            this._locale.pressedKeys.length = 0;
            this._clearBindings(event);
            return this;
          }
        }, {
          key: "pause",
          value: function pause() {
            if (this._paused) {
              return this;
            }
            if (this._locale) {
              this.releaseAllKeys();
            }
            this._paused = true;
            return this;
          }
        }, {
          key: "resume",
          value: function resume() {
            this._paused = false;
            return this;
          }
        }, {
          key: "reset",
          value: function reset() {
            this.releaseAllKeys();
            this._listeners.length = 0;
            return this;
          }
        }, {
          key: "_bindEvent",
          value: function _bindEvent(targetElement, eventName, handler) {
            return this._isModernBrowser ? targetElement.addEventListener(eventName, handler, false) : targetElement.attachEvent("on" + eventName, handler);
          }
        }, {
          key: "_unbindEvent",
          value: function _unbindEvent(targetElement, eventName, handler) {
            return this._isModernBrowser ? targetElement.removeEventListener(eventName, handler, false) : targetElement.detachEvent("on" + eventName, handler);
          }
        }, {
          key: "_getGroupedListeners",
          value: function _getGroupedListeners() {
            var listenerGroups = [];
            var listenerGroupMap = [];
            var listeners = this._listeners;
            if (this._currentContext !== "global") {
              listeners = [].concat(_toConsumableArray(listeners), _toConsumableArray(this._contexts.global.listeners));
            }
            listeners.sort(function(a2, b2) {
              return (b2.keyCombo ? b2.keyCombo.keyNames.length : 0) - (a2.keyCombo ? a2.keyCombo.keyNames.length : 0);
            }).forEach(function(l2) {
              var mapIndex = -1;
              for (var i2 = 0; i2 < listenerGroupMap.length; i2 += 1) {
                if (listenerGroupMap[i2] === null && l2.keyCombo === null || listenerGroupMap[i2] !== null && listenerGroupMap[i2].isEqual(l2.keyCombo)) {
                  mapIndex = i2;
                }
              }
              if (mapIndex === -1) {
                mapIndex = listenerGroupMap.length;
                listenerGroupMap.push(l2.keyCombo);
              }
              if (!listenerGroups[mapIndex]) {
                listenerGroups[mapIndex] = [];
              }
              listenerGroups[mapIndex].push(l2);
            });
            return listenerGroups;
          }
        }, {
          key: "_applyBindings",
          value: function _applyBindings(event) {
            var _this2 = this;
            var preventRepeat = false;
            event || (event = {});
            event.preventRepeat = function() {
              preventRepeat = true;
            };
            event.pressedKeys = this._locale.pressedKeys.slice(0);
            var activeTargetKeys = this._locale.activeTargetKeys;
            var pressedKeys = this._locale.pressedKeys.slice(0);
            var listenerGroups = this._getGroupedListeners();
            var _loop = function _loop2(i3) {
              var listeners = listenerGroups[i3];
              var keyCombo = listeners[0].keyCombo;
              if (keyCombo === null || keyCombo.check(pressedKeys) && activeTargetKeys.some(function(k2) {
                return keyCombo.keyNames.includes(k2);
              })) {
                for (var j2 = 0; j2 < listeners.length; j2 += 1) {
                  var listener = listeners[j2];
                  if (!listener.executingHandler && listener.pressHandler && !listener.preventRepeat) {
                    listener.executingHandler = true;
                    listener.pressHandler.call(_this2, event);
                    listener.executingHandler = false;
                    if (preventRepeat || listener.preventRepeatByDefault) {
                      listener.preventRepeat = true;
                      preventRepeat = false;
                    }
                  }
                  if (_this2._appliedListeners.indexOf(listener) === -1) {
                    _this2._appliedListeners.push(listener);
                  }
                }
                if (keyCombo) {
                  for (var _j = 0; _j < keyCombo.keyNames.length; _j += 1) {
                    var index = pressedKeys.indexOf(keyCombo.keyNames[_j]);
                    if (index !== -1) {
                      pressedKeys.splice(index, 1);
                      _j -= 1;
                    }
                  }
                }
              }
            };
            for (var i2 = 0; i2 < listenerGroups.length; i2 += 1) {
              _loop(i2);
            }
          }
        }, {
          key: "_clearBindings",
          value: function _clearBindings(event) {
            event || (event = {});
            event.pressedKeys = this._locale.pressedKeys.slice(0);
            for (var i2 = 0; i2 < this._appliedListeners.length; i2 += 1) {
              var listener = this._appliedListeners[i2];
              var keyCombo = listener.keyCombo;
              if (keyCombo === null || !keyCombo.check(this._locale.pressedKeys)) {
                listener.preventRepeat = false;
                if (keyCombo !== null || event.pressedKeys.length === 0) {
                  this._appliedListeners.splice(i2, 1);
                  i2 -= 1;
                }
                if (!listener.executingHandler && listener.releaseHandler) {
                  listener.executingHandler = true;
                  listener.releaseHandler.call(this, event);
                  listener.executingHandler = false;
                }
              }
            }
          }
        }, {
          key: "_handleCommandBug",
          value: function _handleCommandBug(event, platform) {
            var modifierKeys = ["shift", "ctrl", "alt", "capslock", "tab", "command"];
            if (platform.match("Mac") && this._locale.pressedKeys.includes("command") && !modifierKeys.includes(this._locale.getKeyNames(event.keyCode)[0])) {
              this._targetKeyUpBinding(event);
            }
          }
        }]);
        return Keyboard2;
      }();
      function us(locale, platform, userAgent) {
        locale.bindKeyCode(3, ["cancel"]);
        locale.bindKeyCode(8, ["backspace"]);
        locale.bindKeyCode(9, ["tab"]);
        locale.bindKeyCode(12, ["clear"]);
        locale.bindKeyCode(13, ["enter"]);
        locale.bindKeyCode(16, ["shift"]);
        locale.bindKeyCode(17, ["ctrl"]);
        locale.bindKeyCode(18, ["alt", "menu"]);
        locale.bindKeyCode(19, ["pause", "break"]);
        locale.bindKeyCode(20, ["capslock"]);
        locale.bindKeyCode(27, ["escape", "esc"]);
        locale.bindKeyCode(32, ["space", "spacebar"]);
        locale.bindKeyCode(33, ["pageup"]);
        locale.bindKeyCode(34, ["pagedown"]);
        locale.bindKeyCode(35, ["end"]);
        locale.bindKeyCode(36, ["home"]);
        locale.bindKeyCode(37, ["left"]);
        locale.bindKeyCode(38, ["up"]);
        locale.bindKeyCode(39, ["right"]);
        locale.bindKeyCode(40, ["down"]);
        locale.bindKeyCode(41, ["select"]);
        locale.bindKeyCode(42, ["printscreen"]);
        locale.bindKeyCode(43, ["execute"]);
        locale.bindKeyCode(44, ["snapshot"]);
        locale.bindKeyCode(45, ["insert", "ins"]);
        locale.bindKeyCode(46, ["delete", "del"]);
        locale.bindKeyCode(47, ["help"]);
        locale.bindKeyCode(145, ["scrolllock", "scroll"]);
        locale.bindKeyCode(188, ["comma", ","]);
        locale.bindKeyCode(190, ["period", "."]);
        locale.bindKeyCode(191, ["slash", "forwardslash", "/"]);
        locale.bindKeyCode(192, ["graveaccent", "`"]);
        locale.bindKeyCode(219, ["openbracket", "["]);
        locale.bindKeyCode(220, ["backslash", "\\"]);
        locale.bindKeyCode(221, ["closebracket", "]"]);
        locale.bindKeyCode(222, ["apostrophe", "'"]);
        locale.bindKeyCode(48, ["zero", "0"]);
        locale.bindKeyCode(49, ["one", "1"]);
        locale.bindKeyCode(50, ["two", "2"]);
        locale.bindKeyCode(51, ["three", "3"]);
        locale.bindKeyCode(52, ["four", "4"]);
        locale.bindKeyCode(53, ["five", "5"]);
        locale.bindKeyCode(54, ["six", "6"]);
        locale.bindKeyCode(55, ["seven", "7"]);
        locale.bindKeyCode(56, ["eight", "8"]);
        locale.bindKeyCode(57, ["nine", "9"]);
        locale.bindKeyCode(96, ["numzero", "num0"]);
        locale.bindKeyCode(97, ["numone", "num1"]);
        locale.bindKeyCode(98, ["numtwo", "num2"]);
        locale.bindKeyCode(99, ["numthree", "num3"]);
        locale.bindKeyCode(100, ["numfour", "num4"]);
        locale.bindKeyCode(101, ["numfive", "num5"]);
        locale.bindKeyCode(102, ["numsix", "num6"]);
        locale.bindKeyCode(103, ["numseven", "num7"]);
        locale.bindKeyCode(104, ["numeight", "num8"]);
        locale.bindKeyCode(105, ["numnine", "num9"]);
        locale.bindKeyCode(106, ["nummultiply", "num*"]);
        locale.bindKeyCode(107, ["numadd", "num+"]);
        locale.bindKeyCode(108, ["numenter"]);
        locale.bindKeyCode(109, ["numsubtract", "num-"]);
        locale.bindKeyCode(110, ["numdecimal", "num."]);
        locale.bindKeyCode(111, ["numdivide", "num/"]);
        locale.bindKeyCode(144, ["numlock", "num"]);
        locale.bindKeyCode(112, ["f1"]);
        locale.bindKeyCode(113, ["f2"]);
        locale.bindKeyCode(114, ["f3"]);
        locale.bindKeyCode(115, ["f4"]);
        locale.bindKeyCode(116, ["f5"]);
        locale.bindKeyCode(117, ["f6"]);
        locale.bindKeyCode(118, ["f7"]);
        locale.bindKeyCode(119, ["f8"]);
        locale.bindKeyCode(120, ["f9"]);
        locale.bindKeyCode(121, ["f10"]);
        locale.bindKeyCode(122, ["f11"]);
        locale.bindKeyCode(123, ["f12"]);
        locale.bindKeyCode(124, ["f13"]);
        locale.bindKeyCode(125, ["f14"]);
        locale.bindKeyCode(126, ["f15"]);
        locale.bindKeyCode(127, ["f16"]);
        locale.bindKeyCode(128, ["f17"]);
        locale.bindKeyCode(129, ["f18"]);
        locale.bindKeyCode(130, ["f19"]);
        locale.bindKeyCode(131, ["f20"]);
        locale.bindKeyCode(132, ["f21"]);
        locale.bindKeyCode(133, ["f22"]);
        locale.bindKeyCode(134, ["f23"]);
        locale.bindKeyCode(135, ["f24"]);
        locale.bindMacro("shift + `", ["tilde", "~"]);
        locale.bindMacro("shift + 1", ["exclamation", "exclamationpoint", "!"]);
        locale.bindMacro("shift + 2", ["at", "@"]);
        locale.bindMacro("shift + 3", ["number", "#"]);
        locale.bindMacro("shift + 4", ["dollar", "dollars", "dollarsign", "$"]);
        locale.bindMacro("shift + 5", ["percent", "%"]);
        locale.bindMacro("shift + 6", ["caret", "^"]);
        locale.bindMacro("shift + 7", ["ampersand", "and", "&"]);
        locale.bindMacro("shift + 8", ["asterisk", "*"]);
        locale.bindMacro("shift + 9", ["openparen", "("]);
        locale.bindMacro("shift + 0", ["closeparen", ")"]);
        locale.bindMacro("shift + -", ["underscore", "_"]);
        locale.bindMacro("shift + =", ["plus", "+"]);
        locale.bindMacro("shift + [", ["opencurlybrace", "opencurlybracket", "{"]);
        locale.bindMacro("shift + ]", ["closecurlybrace", "closecurlybracket", "}"]);
        locale.bindMacro("shift + \\", ["verticalbar", "|"]);
        locale.bindMacro("shift + ;", ["colon", ":"]);
        locale.bindMacro("shift + '", ["quotationmark", "'"]);
        locale.bindMacro("shift + !,", ["openanglebracket", "<"]);
        locale.bindMacro("shift + .", ["closeanglebracket", ">"]);
        locale.bindMacro("shift + /", ["questionmark", "?"]);
        if (platform.match("Mac")) {
          locale.bindMacro("command", ["mod", "modifier"]);
        } else {
          locale.bindMacro("ctrl", ["mod", "modifier"]);
        }
        for (var keyCode = 65; keyCode <= 90; keyCode += 1) {
          var keyName = String.fromCharCode(keyCode + 32);
          var capitalKeyName = String.fromCharCode(keyCode);
          locale.bindKeyCode(keyCode, keyName);
          locale.bindMacro("shift + " + keyName, capitalKeyName);
          locale.bindMacro("capslock + " + keyName, capitalKeyName);
        }
        var semicolonKeyCode = userAgent.match("Firefox") ? 59 : 186;
        var dashKeyCode = userAgent.match("Firefox") ? 173 : 189;
        var equalKeyCode = userAgent.match("Firefox") ? 61 : 187;
        var leftCommandKeyCode;
        var rightCommandKeyCode;
        if (platform.match("Mac") && (userAgent.match("Safari") || userAgent.match("Chrome"))) {
          leftCommandKeyCode = 91;
          rightCommandKeyCode = 93;
        } else if (platform.match("Mac") && userAgent.match("Opera")) {
          leftCommandKeyCode = 17;
          rightCommandKeyCode = 17;
        } else if (platform.match("Mac") && userAgent.match("Firefox")) {
          leftCommandKeyCode = 224;
          rightCommandKeyCode = 224;
        }
        locale.bindKeyCode(semicolonKeyCode, ["semicolon", ";"]);
        locale.bindKeyCode(dashKeyCode, ["dash", "-"]);
        locale.bindKeyCode(equalKeyCode, ["equal", "equalsign", "="]);
        locale.bindKeyCode(leftCommandKeyCode, ["command", "windows", "win", "super", "leftcommand", "leftwindows", "leftwin", "leftsuper"]);
        locale.bindKeyCode(rightCommandKeyCode, ["command", "windows", "win", "super", "rightcommand", "rightwindows", "rightwin", "rightsuper"]);
        locale.setKillKey("command");
      }
      var keyboard = new Keyboard();
      keyboard.setLocale("us", us);
      keyboard.Keyboard = Keyboard;
      keyboard.Locale = Locale;
      keyboard.KeyCombo = KeyCombo;
      return keyboard;
    });
  }
});

// node_modules/localforage/dist/localforage.js
var require_localforage = __commonJS({
  "node_modules/localforage/dist/localforage.js"(exports, module) {
    (function(f2) {
      if (typeof exports === "object" && typeof module !== "undefined") {
        module.exports = f2();
      } else if (typeof define === "function" && define.amd) {
        define([], f2);
      } else {
        var g2;
        if (typeof window !== "undefined") {
          g2 = window;
        } else if (typeof global !== "undefined") {
          g2 = global;
        } else if (typeof self !== "undefined") {
          g2 = self;
        } else {
          g2 = this;
        }
        g2.localforage = f2();
      }
    })(function() {
      var define2, module2, exports2;
      return function e2(t2, n2, r2) {
        function s2(o3, u2) {
          if (!n2[o3]) {
            if (!t2[o3]) {
              var a2 = typeof __require == "function" && __require;
              if (!u2 && a2)
                return a2(o3, true);
              if (i2)
                return i2(o3, true);
              var f2 = new Error("Cannot find module '" + o3 + "'");
              throw f2.code = "MODULE_NOT_FOUND", f2;
            }
            var l2 = n2[o3] = { exports: {} };
            t2[o3][0].call(l2.exports, function(e3) {
              var n3 = t2[o3][1][e3];
              return s2(n3 ? n3 : e3);
            }, l2, l2.exports, e2, t2, n2, r2);
          }
          return n2[o3].exports;
        }
        var i2 = typeof __require == "function" && __require;
        for (var o2 = 0; o2 < r2.length; o2++)
          s2(r2[o2]);
        return s2;
      }({ 1: [function(_dereq_, module3, exports3) {
        (function(global2) {
          "use strict";
          var Mutation = global2.MutationObserver || global2.WebKitMutationObserver;
          var scheduleDrain;
          {
            if (Mutation) {
              var called = 0;
              var observer = new Mutation(nextTick);
              var element = global2.document.createTextNode("");
              observer.observe(element, {
                characterData: true
              });
              scheduleDrain = function() {
                element.data = called = ++called % 2;
              };
            } else if (!global2.setImmediate && typeof global2.MessageChannel !== "undefined") {
              var channel = new global2.MessageChannel();
              channel.port1.onmessage = nextTick;
              scheduleDrain = function() {
                channel.port2.postMessage(0);
              };
            } else if ("document" in global2 && "onreadystatechange" in global2.document.createElement("script")) {
              scheduleDrain = function() {
                var scriptEl = global2.document.createElement("script");
                scriptEl.onreadystatechange = function() {
                  nextTick();
                  scriptEl.onreadystatechange = null;
                  scriptEl.parentNode.removeChild(scriptEl);
                  scriptEl = null;
                };
                global2.document.documentElement.appendChild(scriptEl);
              };
            } else {
              scheduleDrain = function() {
                setTimeout(nextTick, 0);
              };
            }
          }
          var draining;
          var queue = [];
          function nextTick() {
            draining = true;
            var i2, oldQueue;
            var len = queue.length;
            while (len) {
              oldQueue = queue;
              queue = [];
              i2 = -1;
              while (++i2 < len) {
                oldQueue[i2]();
              }
              len = queue.length;
            }
            draining = false;
          }
          module3.exports = immediate;
          function immediate(task) {
            if (queue.push(task) === 1 && !draining) {
              scheduleDrain();
            }
          }
        }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
      }, {}], 2: [function(_dereq_, module3, exports3) {
        "use strict";
        var immediate = _dereq_(1);
        function INTERNAL() {
        }
        var handlers = {};
        var REJECTED = ["REJECTED"];
        var FULFILLED = ["FULFILLED"];
        var PENDING = ["PENDING"];
        module3.exports = Promise2;
        function Promise2(resolver) {
          if (typeof resolver !== "function") {
            throw new TypeError("resolver must be a function");
          }
          this.state = PENDING;
          this.queue = [];
          this.outcome = void 0;
          if (resolver !== INTERNAL) {
            safelyResolveThenable(this, resolver);
          }
        }
        Promise2.prototype["catch"] = function(onRejected) {
          return this.then(null, onRejected);
        };
        Promise2.prototype.then = function(onFulfilled, onRejected) {
          if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) {
            return this;
          }
          var promise = new this.constructor(INTERNAL);
          if (this.state !== PENDING) {
            var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
            unwrap2(promise, resolver, this.outcome);
          } else {
            this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
          }
          return promise;
        };
        function QueueItem(promise, onFulfilled, onRejected) {
          this.promise = promise;
          if (typeof onFulfilled === "function") {
            this.onFulfilled = onFulfilled;
            this.callFulfilled = this.otherCallFulfilled;
          }
          if (typeof onRejected === "function") {
            this.onRejected = onRejected;
            this.callRejected = this.otherCallRejected;
          }
        }
        QueueItem.prototype.callFulfilled = function(value) {
          handlers.resolve(this.promise, value);
        };
        QueueItem.prototype.otherCallFulfilled = function(value) {
          unwrap2(this.promise, this.onFulfilled, value);
        };
        QueueItem.prototype.callRejected = function(value) {
          handlers.reject(this.promise, value);
        };
        QueueItem.prototype.otherCallRejected = function(value) {
          unwrap2(this.promise, this.onRejected, value);
        };
        function unwrap2(promise, func, value) {
          immediate(function() {
            var returnValue;
            try {
              returnValue = func(value);
            } catch (e2) {
              return handlers.reject(promise, e2);
            }
            if (returnValue === promise) {
              handlers.reject(promise, new TypeError("Cannot resolve promise with itself"));
            } else {
              handlers.resolve(promise, returnValue);
            }
          });
        }
        handlers.resolve = function(self2, value) {
          var result = tryCatch(getThen, value);
          if (result.status === "error") {
            return handlers.reject(self2, result.value);
          }
          var thenable = result.value;
          if (thenable) {
            safelyResolveThenable(self2, thenable);
          } else {
            self2.state = FULFILLED;
            self2.outcome = value;
            var i2 = -1;
            var len = self2.queue.length;
            while (++i2 < len) {
              self2.queue[i2].callFulfilled(value);
            }
          }
          return self2;
        };
        handlers.reject = function(self2, error) {
          self2.state = REJECTED;
          self2.outcome = error;
          var i2 = -1;
          var len = self2.queue.length;
          while (++i2 < len) {
            self2.queue[i2].callRejected(error);
          }
          return self2;
        };
        function getThen(obj) {
          var then = obj && obj.then;
          if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") {
            return function appyThen() {
              then.apply(obj, arguments);
            };
          }
        }
        function safelyResolveThenable(self2, thenable) {
          var called = false;
          function onError(value) {
            if (called) {
              return;
            }
            called = true;
            handlers.reject(self2, value);
          }
          function onSuccess(value) {
            if (called) {
              return;
            }
            called = true;
            handlers.resolve(self2, value);
          }
          function tryToUnwrap() {
            thenable(onSuccess, onError);
          }
          var result = tryCatch(tryToUnwrap);
          if (result.status === "error") {
            onError(result.value);
          }
        }
        function tryCatch(func, value) {
          var out = {};
          try {
            out.value = func(value);
            out.status = "success";
          } catch (e2) {
            out.status = "error";
            out.value = e2;
          }
          return out;
        }
        Promise2.resolve = resolve;
        function resolve(value) {
          if (value instanceof this) {
            return value;
          }
          return handlers.resolve(new this(INTERNAL), value);
        }
        Promise2.reject = reject;
        function reject(reason) {
          var promise = new this(INTERNAL);
          return handlers.reject(promise, reason);
        }
        Promise2.all = all;
        function all(iterable) {
          var self2 = this;
          if (Object.prototype.toString.call(iterable) !== "[object Array]") {
            return this.reject(new TypeError("must be an array"));
          }
          var len = iterable.length;
          var called = false;
          if (!len) {
            return this.resolve([]);
          }
          var values2 = new Array(len);
          var resolved = 0;
          var i2 = -1;
          var promise = new this(INTERNAL);
          while (++i2 < len) {
            allResolver(iterable[i2], i2);
          }
          return promise;
          function allResolver(value, i3) {
            self2.resolve(value).then(resolveFromAll, function(error) {
              if (!called) {
                called = true;
                handlers.reject(promise, error);
              }
            });
            function resolveFromAll(outValue) {
              values2[i3] = outValue;
              if (++resolved === len && !called) {
                called = true;
                handlers.resolve(promise, values2);
              }
            }
          }
        }
        Promise2.race = race;
        function race(iterable) {
          var self2 = this;
          if (Object.prototype.toString.call(iterable) !== "[object Array]") {
            return this.reject(new TypeError("must be an array"));
          }
          var len = iterable.length;
          var called = false;
          if (!len) {
            return this.resolve([]);
          }
          var i2 = -1;
          var promise = new this(INTERNAL);
          while (++i2 < len) {
            resolver(iterable[i2]);
          }
          return promise;
          function resolver(value) {
            self2.resolve(value).then(function(response) {
              if (!called) {
                called = true;
                handlers.resolve(promise, response);
              }
            }, function(error) {
              if (!called) {
                called = true;
                handlers.reject(promise, error);
              }
            });
          }
        }
      }, { "1": 1 }], 3: [function(_dereq_, module3, exports3) {
        (function(global2) {
          "use strict";
          if (typeof global2.Promise !== "function") {
            global2.Promise = _dereq_(2);
          }
        }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
      }, { "2": 2 }], 4: [function(_dereq_, module3, exports3) {
        "use strict";
        var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
          return typeof obj;
        } : function(obj) {
          return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
        };
        function _classCallCheck(instance, Constructor) {
          if (!(instance instanceof Constructor)) {
            throw new TypeError("Cannot call a class as a function");
          }
        }
        function getIDB() {
          try {
            if (typeof indexedDB !== "undefined") {
              return indexedDB;
            }
            if (typeof webkitIndexedDB !== "undefined") {
              return webkitIndexedDB;
            }
            if (typeof mozIndexedDB !== "undefined") {
              return mozIndexedDB;
            }
            if (typeof OIndexedDB !== "undefined") {
              return OIndexedDB;
            }
            if (typeof msIndexedDB !== "undefined") {
              return msIndexedDB;
            }
          } catch (e2) {
            return;
          }
        }
        var idb = getIDB();
        function isIndexedDBValid() {
          try {
            if (!idb || !idb.open) {
              return false;
            }
            var isSafari2 = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);
            var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1;
            return (!isSafari2 || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung
            // and HTC Android devices <4.4 are missing IDBKeyRange
            // See: https://github.com/mozilla/localForage/issues/128
            // See: https://github.com/mozilla/localForage/issues/272
            typeof IDBKeyRange !== "undefined";
          } catch (e2) {
            return false;
          }
        }
        function createBlob(parts, properties) {
          parts = parts || [];
          properties = properties || {};
          try {
            return new Blob(parts, properties);
          } catch (e2) {
            if (e2.name !== "TypeError") {
              throw e2;
            }
            var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
            var builder = new Builder();
            for (var i2 = 0; i2 < parts.length; i2 += 1) {
              builder.append(parts[i2]);
            }
            return builder.getBlob(properties.type);
          }
        }
        if (typeof Promise === "undefined") {
          _dereq_(3);
        }
        var Promise$1 = Promise;
        function executeCallback(promise, callback) {
          if (callback) {
            promise.then(function(result) {
              callback(null, result);
            }, function(error) {
              callback(error);
            });
          }
        }
        function executeTwoCallbacks(promise, callback, errorCallback) {
          if (typeof callback === "function") {
            promise.then(callback);
          }
          if (typeof errorCallback === "function") {
            promise["catch"](errorCallback);
          }
        }
        function normalizeKey(key2) {
          if (typeof key2 !== "string") {
            console.warn(key2 + " used as a key, but it is not a string.");
            key2 = String(key2);
          }
          return key2;
        }
        function getCallback() {
          if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
            return arguments[arguments.length - 1];
          }
        }
        var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support";
        var supportsBlobs = void 0;
        var dbContexts = {};
        var toString = Object.prototype.toString;
        var READ_ONLY = "readonly";
        var READ_WRITE = "readwrite";
        function _binStringToArrayBuffer(bin) {
          var length2 = bin.length;
          var buf = new ArrayBuffer(length2);
          var arr = new Uint8Array(buf);
          for (var i2 = 0; i2 < length2; i2++) {
            arr[i2] = bin.charCodeAt(i2);
          }
          return buf;
        }
        function _checkBlobSupportWithoutCaching(idb2) {
          return new Promise$1(function(resolve) {
            var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);
            var blob = createBlob([""]);
            txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, "key");
            txn.onabort = function(e2) {
              e2.preventDefault();
              e2.stopPropagation();
              resolve(false);
            };
            txn.oncomplete = function() {
              var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/);
              var matchedEdge = navigator.userAgent.match(/Edge\//);
              resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);
            };
          })["catch"](function() {
            return false;
          });
        }
        function _checkBlobSupport(idb2) {
          if (typeof supportsBlobs === "boolean") {
            return Promise$1.resolve(supportsBlobs);
          }
          return _checkBlobSupportWithoutCaching(idb2).then(function(value) {
            supportsBlobs = value;
            return supportsBlobs;
          });
        }
        function _deferReadiness(dbInfo) {
          var dbContext = dbContexts[dbInfo.name];
          var deferredOperation = {};
          deferredOperation.promise = new Promise$1(function(resolve, reject) {
            deferredOperation.resolve = resolve;
            deferredOperation.reject = reject;
          });
          dbContext.deferredOperations.push(deferredOperation);
          if (!dbContext.dbReady) {
            dbContext.dbReady = deferredOperation.promise;
          } else {
            dbContext.dbReady = dbContext.dbReady.then(function() {
              return deferredOperation.promise;
            });
          }
        }
        function _advanceReadiness(dbInfo) {
          var dbContext = dbContexts[dbInfo.name];
          var deferredOperation = dbContext.deferredOperations.pop();
          if (deferredOperation) {
            deferredOperation.resolve();
            return deferredOperation.promise;
          }
        }
        function _rejectReadiness(dbInfo, err) {
          var dbContext = dbContexts[dbInfo.name];
          var deferredOperation = dbContext.deferredOperations.pop();
          if (deferredOperation) {
            deferredOperation.reject(err);
            return deferredOperation.promise;
          }
        }
        function _getConnection(dbInfo, upgradeNeeded) {
          return new Promise$1(function(resolve, reject) {
            dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();
            if (dbInfo.db) {
              if (upgradeNeeded) {
                _deferReadiness(dbInfo);
                dbInfo.db.close();
              } else {
                return resolve(dbInfo.db);
              }
            }
            var dbArgs = [dbInfo.name];
            if (upgradeNeeded) {
              dbArgs.push(dbInfo.version);
            }
            var openreq = idb.open.apply(idb, dbArgs);
            if (upgradeNeeded) {
              openreq.onupgradeneeded = function(e2) {
                var db = openreq.result;
                try {
                  db.createObjectStore(dbInfo.storeName);
                  if (e2.oldVersion <= 1) {
                    db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);
                  }
                } catch (ex) {
                  if (ex.name === "ConstraintError") {
                    console.warn('The database "' + dbInfo.name + '" has been upgraded from version ' + e2.oldVersion + " to version " + e2.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.');
                  } else {
                    throw ex;
                  }
                }
              };
            }
            openreq.onerror = function(e2) {
              e2.preventDefault();
              reject(openreq.error);
            };
            openreq.onsuccess = function() {
              var db = openreq.result;
              db.onversionchange = function(e2) {
                e2.target.close();
              };
              resolve(db);
              _advanceReadiness(dbInfo);
            };
          });
        }
        function _getOriginalConnection(dbInfo) {
          return _getConnection(dbInfo, false);
        }
        function _getUpgradedConnection(dbInfo) {
          return _getConnection(dbInfo, true);
        }
        function _isUpgradeNeeded(dbInfo, defaultVersion) {
          if (!dbInfo.db) {
            return true;
          }
          var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);
          var isDowngrade = dbInfo.version < dbInfo.db.version;
          var isUpgrade = dbInfo.version > dbInfo.db.version;
          if (isDowngrade) {
            if (dbInfo.version !== defaultVersion) {
              console.warn('The database "' + dbInfo.name + `" can't be downgraded from version ` + dbInfo.db.version + " to version " + dbInfo.version + ".");
            }
            dbInfo.version = dbInfo.db.version;
          }
          if (isUpgrade || isNewStore) {
            if (isNewStore) {
              var incVersion = dbInfo.db.version + 1;
              if (incVersion > dbInfo.version) {
                dbInfo.version = incVersion;
              }
            }
            return true;
          }
          return false;
        }
        function _encodeBlob(blob) {
          return new Promise$1(function(resolve, reject) {
            var reader = new FileReader();
            reader.onerror = reject;
            reader.onloadend = function(e2) {
              var base64 = btoa(e2.target.result || "");
              resolve({
                __local_forage_encoded_blob: true,
                data: base64,
                type: blob.type
              });
            };
            reader.readAsBinaryString(blob);
          });
        }
        function _decodeBlob(encodedBlob) {
          var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));
          return createBlob([arrayBuff], { type: encodedBlob.type });
        }
        function _isEncodedBlob(value) {
          return value && value.__local_forage_encoded_blob;
        }
        function _fullyReady(callback) {
          var self2 = this;
          var promise = self2._initReady().then(function() {
            var dbContext = dbContexts[self2._dbInfo.name];
            if (dbContext && dbContext.dbReady) {
              return dbContext.dbReady;
            }
          });
          executeTwoCallbacks(promise, callback, callback);
          return promise;
        }
        function _tryReconnect(dbInfo) {
          _deferReadiness(dbInfo);
          var dbContext = dbContexts[dbInfo.name];
          var forages = dbContext.forages;
          for (var i2 = 0; i2 < forages.length; i2++) {
            var forage = forages[i2];
            if (forage._dbInfo.db) {
              forage._dbInfo.db.close();
              forage._dbInfo.db = null;
            }
          }
          dbInfo.db = null;
          return _getOriginalConnection(dbInfo).then(function(db) {
            dbInfo.db = db;
            if (_isUpgradeNeeded(dbInfo)) {
              return _getUpgradedConnection(dbInfo);
            }
            return db;
          }).then(function(db) {
            dbInfo.db = dbContext.db = db;
            for (var i3 = 0; i3 < forages.length; i3++) {
              forages[i3]._dbInfo.db = db;
            }
          })["catch"](function(err) {
            _rejectReadiness(dbInfo, err);
            throw err;
          });
        }
        function createTransaction(dbInfo, mode, callback, retries) {
          if (retries === void 0) {
            retries = 1;
          }
          try {
            var tx = dbInfo.db.transaction(dbInfo.storeName, mode);
            callback(null, tx);
          } catch (err) {
            if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) {
              return Promise$1.resolve().then(function() {
                if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {
                  if (dbInfo.db) {
                    dbInfo.version = dbInfo.db.version + 1;
                  }
                  return _getUpgradedConnection(dbInfo);
                }
              }).then(function() {
                return _tryReconnect(dbInfo).then(function() {
                  createTransaction(dbInfo, mode, callback, retries - 1);
                });
              })["catch"](callback);
            }
            callback(err);
          }
        }
        function createDbContext() {
          return {
            // Running localForages sharing a database.
            forages: [],
            // Shared database.
            db: null,
            // Database readiness (promise).
            dbReady: null,
            // Deferred operations on the database.
            deferredOperations: []
          };
        }
        function _initStorage(options) {
          var self2 = this;
          var dbInfo = {
            db: null
          };
          if (options) {
            for (var i2 in options) {
              dbInfo[i2] = options[i2];
            }
          }
          var dbContext = dbContexts[dbInfo.name];
          if (!dbContext) {
            dbContext = createDbContext();
            dbContexts[dbInfo.name] = dbContext;
          }
          dbContext.forages.push(self2);
          if (!self2._initReady) {
            self2._initReady = self2.ready;
            self2.ready = _fullyReady;
          }
          var initPromises = [];
          function ignoreErrors() {
            return Promise$1.resolve();
          }
          for (var j2 = 0; j2 < dbContext.forages.length; j2++) {
            var forage = dbContext.forages[j2];
            if (forage !== self2) {
              initPromises.push(forage._initReady()["catch"](ignoreErrors));
            }
          }
          var forages = dbContext.forages.slice(0);
          return Promise$1.all(initPromises).then(function() {
            dbInfo.db = dbContext.db;
            return _getOriginalConnection(dbInfo);
          }).then(function(db) {
            dbInfo.db = db;
            if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) {
              return _getUpgradedConnection(dbInfo);
            }
            return db;
          }).then(function(db) {
            dbInfo.db = dbContext.db = db;
            self2._dbInfo = dbInfo;
            for (var k2 = 0; k2 < forages.length; k2++) {
              var forage2 = forages[k2];
              if (forage2 !== self2) {
                forage2._dbInfo.db = dbInfo.db;
                forage2._dbInfo.version = dbInfo.version;
              }
            }
          });
        }
        function getItem(key2, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var req = store.get(key2);
                  req.onsuccess = function() {
                    var value = req.result;
                    if (value === void 0) {
                      value = null;
                    }
                    if (_isEncodedBlob(value)) {
                      value = _decodeBlob(value);
                    }
                    resolve(value);
                  };
                  req.onerror = function() {
                    reject(req.error);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function iterate(iterator, callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var req = store.openCursor();
                  var iterationNumber = 1;
                  req.onsuccess = function() {
                    var cursor = req.result;
                    if (cursor) {
                      var value = cursor.value;
                      if (_isEncodedBlob(value)) {
                        value = _decodeBlob(value);
                      }
                      var result = iterator(value, cursor.key, iterationNumber++);
                      if (result !== void 0) {
                        resolve(result);
                      } else {
                        cursor["continue"]();
                      }
                    } else {
                      resolve();
                    }
                  };
                  req.onerror = function() {
                    reject(req.error);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function setItem(key2, value, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = new Promise$1(function(resolve, reject) {
            var dbInfo;
            self2.ready().then(function() {
              dbInfo = self2._dbInfo;
              if (toString.call(value) === "[object Blob]") {
                return _checkBlobSupport(dbInfo.db).then(function(blobSupport) {
                  if (blobSupport) {
                    return value;
                  }
                  return _encodeBlob(value);
                });
              }
              return value;
            }).then(function(value2) {
              createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  if (value2 === null) {
                    value2 = void 0;
                  }
                  var req = store.put(value2, key2);
                  transaction.oncomplete = function() {
                    if (value2 === void 0) {
                      value2 = null;
                    }
                    resolve(value2);
                  };
                  transaction.onabort = transaction.onerror = function() {
                    var err2 = req.error ? req.error : req.transaction.error;
                    reject(err2);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function removeItem(key2, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var req = store["delete"](key2);
                  transaction.oncomplete = function() {
                    resolve();
                  };
                  transaction.onerror = function() {
                    reject(req.error);
                  };
                  transaction.onabort = function() {
                    var err2 = req.error ? req.error : req.transaction.error;
                    reject(err2);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function clear(callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var req = store.clear();
                  transaction.oncomplete = function() {
                    resolve();
                  };
                  transaction.onabort = transaction.onerror = function() {
                    var err2 = req.error ? req.error : req.transaction.error;
                    reject(err2);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function length(callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var req = store.count();
                  req.onsuccess = function() {
                    resolve(req.result);
                  };
                  req.onerror = function() {
                    reject(req.error);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function key(n2, callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            if (n2 < 0) {
              resolve(null);
              return;
            }
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var advanced = false;
                  var req = store.openKeyCursor();
                  req.onsuccess = function() {
                    var cursor = req.result;
                    if (!cursor) {
                      resolve(null);
                      return;
                    }
                    if (n2 === 0) {
                      resolve(cursor.key);
                    } else {
                      if (!advanced) {
                        advanced = true;
                        cursor.advance(n2);
                      } else {
                        resolve(cursor.key);
                      }
                    }
                  };
                  req.onerror = function() {
                    reject(req.error);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function keys3(callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
                if (err) {
                  return reject(err);
                }
                try {
                  var store = transaction.objectStore(self2._dbInfo.storeName);
                  var req = store.openKeyCursor();
                  var keys4 = [];
                  req.onsuccess = function() {
                    var cursor = req.result;
                    if (!cursor) {
                      resolve(keys4);
                      return;
                    }
                    keys4.push(cursor.key);
                    cursor["continue"]();
                  };
                  req.onerror = function() {
                    reject(req.error);
                  };
                } catch (e2) {
                  reject(e2);
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function dropInstance(options, callback) {
          callback = getCallback.apply(this, arguments);
          var currentConfig = this.config();
          options = typeof options !== "function" && options || {};
          if (!options.name) {
            options.name = options.name || currentConfig.name;
            options.storeName = options.storeName || currentConfig.storeName;
          }
          var self2 = this;
          var promise;
          if (!options.name) {
            promise = Promise$1.reject("Invalid arguments");
          } else {
            var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db;
            var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) {
              var dbContext = dbContexts[options.name];
              var forages = dbContext.forages;
              dbContext.db = db;
              for (var i2 = 0; i2 < forages.length; i2++) {
                forages[i2]._dbInfo.db = db;
              }
              return db;
            });
            if (!options.storeName) {
              promise = dbPromise.then(function(db) {
                _deferReadiness(options);
                var dbContext = dbContexts[options.name];
                var forages = dbContext.forages;
                db.close();
                for (var i2 = 0; i2 < forages.length; i2++) {
                  var forage = forages[i2];
                  forage._dbInfo.db = null;
                }
                var dropDBPromise = new Promise$1(function(resolve, reject) {
                  var req = idb.deleteDatabase(options.name);
                  req.onerror = function() {
                    var db2 = req.result;
                    if (db2) {
                      db2.close();
                    }
                    reject(req.error);
                  };
                  req.onblocked = function() {
                    console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed');
                  };
                  req.onsuccess = function() {
                    var db2 = req.result;
                    if (db2) {
                      db2.close();
                    }
                    resolve(db2);
                  };
                });
                return dropDBPromise.then(function(db2) {
                  dbContext.db = db2;
                  for (var i3 = 0; i3 < forages.length; i3++) {
                    var _forage = forages[i3];
                    _advanceReadiness(_forage._dbInfo);
                  }
                })["catch"](function(err) {
                  (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
                  });
                  throw err;
                });
              });
            } else {
              promise = dbPromise.then(function(db) {
                if (!db.objectStoreNames.contains(options.storeName)) {
                  return;
                }
                var newVersion = db.version + 1;
                _deferReadiness(options);
                var dbContext = dbContexts[options.name];
                var forages = dbContext.forages;
                db.close();
                for (var i2 = 0; i2 < forages.length; i2++) {
                  var forage = forages[i2];
                  forage._dbInfo.db = null;
                  forage._dbInfo.version = newVersion;
                }
                var dropObjectPromise = new Promise$1(function(resolve, reject) {
                  var req = idb.open(options.name, newVersion);
                  req.onerror = function(err) {
                    var db2 = req.result;
                    db2.close();
                    reject(err);
                  };
                  req.onupgradeneeded = function() {
                    var db2 = req.result;
                    db2.deleteObjectStore(options.storeName);
                  };
                  req.onsuccess = function() {
                    var db2 = req.result;
                    db2.close();
                    resolve(db2);
                  };
                });
                return dropObjectPromise.then(function(db2) {
                  dbContext.db = db2;
                  for (var j2 = 0; j2 < forages.length; j2++) {
                    var _forage2 = forages[j2];
                    _forage2._dbInfo.db = db2;
                    _advanceReadiness(_forage2._dbInfo);
                  }
                })["catch"](function(err) {
                  (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
                  });
                  throw err;
                });
              });
            }
          }
          executeCallback(promise, callback);
          return promise;
        }
        var asyncStorage = {
          _driver: "asyncStorage",
          _initStorage,
          _support: isIndexedDBValid(),
          iterate,
          getItem,
          setItem,
          removeItem,
          clear,
          length,
          key,
          keys: keys3,
          dropInstance
        };
        function isWebSQLValid() {
          return typeof openDatabase === "function";
        }
        var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        var BLOB_TYPE_PREFIX = "~~local_forage_type~";
        var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
        var SERIALIZED_MARKER = "__lfsc__:";
        var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;
        var TYPE_ARRAYBUFFER = "arbf";
        var TYPE_BLOB = "blob";
        var TYPE_INT8ARRAY = "si08";
        var TYPE_UINT8ARRAY = "ui08";
        var TYPE_UINT8CLAMPEDARRAY = "uic8";
        var TYPE_INT16ARRAY = "si16";
        var TYPE_INT32ARRAY = "si32";
        var TYPE_UINT16ARRAY = "ur16";
        var TYPE_UINT32ARRAY = "ui32";
        var TYPE_FLOAT32ARRAY = "fl32";
        var TYPE_FLOAT64ARRAY = "fl64";
        var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;
        var toString$1 = Object.prototype.toString;
        function stringToBuffer(serializedString) {
          var bufferLength = serializedString.length * 0.75;
          var len = serializedString.length;
          var i2;
          var p2 = 0;
          var encoded1, encoded2, encoded3, encoded4;
          if (serializedString[serializedString.length - 1] === "=") {
            bufferLength--;
            if (serializedString[serializedString.length - 2] === "=") {
              bufferLength--;
            }
          }
          var buffer = new ArrayBuffer(bufferLength);
          var bytes = new Uint8Array(buffer);
          for (i2 = 0; i2 < len; i2 += 4) {
            encoded1 = BASE_CHARS.indexOf(serializedString[i2]);
            encoded2 = BASE_CHARS.indexOf(serializedString[i2 + 1]);
            encoded3 = BASE_CHARS.indexOf(serializedString[i2 + 2]);
            encoded4 = BASE_CHARS.indexOf(serializedString[i2 + 3]);
            bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
            bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
            bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
          }
          return buffer;
        }
        function bufferToString(buffer) {
          var bytes = new Uint8Array(buffer);
          var base64String = "";
          var i2;
          for (i2 = 0; i2 < bytes.length; i2 += 3) {
            base64String += BASE_CHARS[bytes[i2] >> 2];
            base64String += BASE_CHARS[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];
            base64String += BASE_CHARS[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];
            base64String += BASE_CHARS[bytes[i2 + 2] & 63];
          }
          if (bytes.length % 3 === 2) {
            base64String = base64String.substring(0, base64String.length - 1) + "=";
          } else if (bytes.length % 3 === 1) {
            base64String = base64String.substring(0, base64String.length - 2) + "==";
          }
          return base64String;
        }
        function serialize(value, callback) {
          var valueType = "";
          if (value) {
            valueType = toString$1.call(value);
          }
          if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) {
            var buffer;
            var marker = SERIALIZED_MARKER;
            if (value instanceof ArrayBuffer) {
              buffer = value;
              marker += TYPE_ARRAYBUFFER;
            } else {
              buffer = value.buffer;
              if (valueType === "[object Int8Array]") {
                marker += TYPE_INT8ARRAY;
              } else if (valueType === "[object Uint8Array]") {
                marker += TYPE_UINT8ARRAY;
              } else if (valueType === "[object Uint8ClampedArray]") {
                marker += TYPE_UINT8CLAMPEDARRAY;
              } else if (valueType === "[object Int16Array]") {
                marker += TYPE_INT16ARRAY;
              } else if (valueType === "[object Uint16Array]") {
                marker += TYPE_UINT16ARRAY;
              } else if (valueType === "[object Int32Array]") {
                marker += TYPE_INT32ARRAY;
              } else if (valueType === "[object Uint32Array]") {
                marker += TYPE_UINT32ARRAY;
              } else if (valueType === "[object Float32Array]") {
                marker += TYPE_FLOAT32ARRAY;
              } else if (valueType === "[object Float64Array]") {
                marker += TYPE_FLOAT64ARRAY;
              } else {
                callback(new Error("Failed to get type for BinaryArray"));
              }
            }
            callback(marker + bufferToString(buffer));
          } else if (valueType === "[object Blob]") {
            var fileReader = new FileReader();
            fileReader.onload = function() {
              var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result);
              callback(SERIALIZED_MARKER + TYPE_BLOB + str);
            };
            fileReader.readAsArrayBuffer(value);
          } else {
            try {
              callback(JSON.stringify(value));
            } catch (e2) {
              console.error("Couldn't convert value into a JSON string: ", value);
              callback(null, e2);
            }
          }
        }
        function deserialize(value) {
          if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {
            return JSON.parse(value);
          }
          var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
          var type2 = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
          var blobType;
          if (type2 === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
            var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
            blobType = matcher[1];
            serializedString = serializedString.substring(matcher[0].length);
          }
          var buffer = stringToBuffer(serializedString);
          switch (type2) {
            case TYPE_ARRAYBUFFER:
              return buffer;
            case TYPE_BLOB:
              return createBlob([buffer], { type: blobType });
            case TYPE_INT8ARRAY:
              return new Int8Array(buffer);
            case TYPE_UINT8ARRAY:
              return new Uint8Array(buffer);
            case TYPE_UINT8CLAMPEDARRAY:
              return new Uint8ClampedArray(buffer);
            case TYPE_INT16ARRAY:
              return new Int16Array(buffer);
            case TYPE_UINT16ARRAY:
              return new Uint16Array(buffer);
            case TYPE_INT32ARRAY:
              return new Int32Array(buffer);
            case TYPE_UINT32ARRAY:
              return new Uint32Array(buffer);
            case TYPE_FLOAT32ARRAY:
              return new Float32Array(buffer);
            case TYPE_FLOAT64ARRAY:
              return new Float64Array(buffer);
            default:
              throw new Error("Unkown type: " + type2);
          }
        }
        var localforageSerializer = {
          serialize,
          deserialize,
          stringToBuffer,
          bufferToString
        };
        function createDbTable(t2, dbInfo, callback, errorCallback) {
          t2.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback);
        }
        function _initStorage$1(options) {
          var self2 = this;
          var dbInfo = {
            db: null
          };
          if (options) {
            for (var i2 in options) {
              dbInfo[i2] = typeof options[i2] !== "string" ? options[i2].toString() : options[i2];
            }
          }
          var dbInfoPromise = new Promise$1(function(resolve, reject) {
            try {
              dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);
            } catch (e2) {
              return reject(e2);
            }
            dbInfo.db.transaction(function(t2) {
              createDbTable(t2, dbInfo, function() {
                self2._dbInfo = dbInfo;
                resolve();
              }, function(t3, error) {
                reject(error);
              });
            }, reject);
          });
          dbInfo.serializer = localforageSerializer;
          return dbInfoPromise;
        }
        function tryExecuteSql(t2, dbInfo, sqlStatement, args, callback, errorCallback) {
          t2.executeSql(sqlStatement, args, callback, function(t3, error) {
            if (error.code === error.SYNTAX_ERR) {
              t3.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t4, results) {
                if (!results.rows.length) {
                  createDbTable(t4, dbInfo, function() {
                    t4.executeSql(sqlStatement, args, callback, errorCallback);
                  }, errorCallback);
                } else {
                  errorCallback(t4, error);
                }
              }, errorCallback);
            } else {
              errorCallback(t3, error);
            }
          }, errorCallback);
        }
        function getItem$1(key2, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key2], function(t3, results) {
                  var result = results.rows.length ? results.rows.item(0).value : null;
                  if (result) {
                    result = dbInfo.serializer.deserialize(result);
                  }
                  resolve(result);
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function iterate$1(iterator, callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t3, results) {
                  var rows = results.rows;
                  var length2 = rows.length;
                  for (var i2 = 0; i2 < length2; i2++) {
                    var item = rows.item(i2);
                    var result = item.value;
                    if (result) {
                      result = dbInfo.serializer.deserialize(result);
                    }
                    result = iterator(result, item.key, i2 + 1);
                    if (result !== void 0) {
                      resolve(result);
                      return;
                    }
                  }
                  resolve();
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function _setItem(key2, value, callback, retriesLeft) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              if (value === void 0) {
                value = null;
              }
              var originalValue = value;
              var dbInfo = self2._dbInfo;
              dbInfo.serializer.serialize(value, function(value2, error) {
                if (error) {
                  reject(error);
                } else {
                  dbInfo.db.transaction(function(t2) {
                    tryExecuteSql(t2, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key2, value2], function() {
                      resolve(originalValue);
                    }, function(t3, error2) {
                      reject(error2);
                    });
                  }, function(sqlError) {
                    if (sqlError.code === sqlError.QUOTA_ERR) {
                      if (retriesLeft > 0) {
                        resolve(_setItem.apply(self2, [key2, originalValue, callback, retriesLeft - 1]));
                        return;
                      }
                      reject(sqlError);
                    }
                  });
                }
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function setItem$1(key2, value, callback) {
          return _setItem.apply(this, [key2, value, callback, 1]);
        }
        function removeItem$1(key2, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key2], function() {
                  resolve();
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function clear$1(callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() {
                  resolve();
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function length$1(callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t3, results) {
                  var result = results.rows.item(0).c;
                  resolve(result);
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function key$1(n2, callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n2 + 1], function(t3, results) {
                  var result = results.rows.length ? results.rows.item(0).key : null;
                  resolve(result);
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function keys$1(callback) {
          var self2 = this;
          var promise = new Promise$1(function(resolve, reject) {
            self2.ready().then(function() {
              var dbInfo = self2._dbInfo;
              dbInfo.db.transaction(function(t2) {
                tryExecuteSql(t2, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t3, results) {
                  var keys4 = [];
                  for (var i2 = 0; i2 < results.rows.length; i2++) {
                    keys4.push(results.rows.item(i2).key);
                  }
                  resolve(keys4);
                }, function(t3, error) {
                  reject(error);
                });
              });
            })["catch"](reject);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function getAllStoreNames(db) {
          return new Promise$1(function(resolve, reject) {
            db.transaction(function(t2) {
              t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t3, results) {
                var storeNames = [];
                for (var i2 = 0; i2 < results.rows.length; i2++) {
                  storeNames.push(results.rows.item(i2).name);
                }
                resolve({
                  db,
                  storeNames
                });
              }, function(t3, error) {
                reject(error);
              });
            }, function(sqlError) {
              reject(sqlError);
            });
          });
        }
        function dropInstance$1(options, callback) {
          callback = getCallback.apply(this, arguments);
          var currentConfig = this.config();
          options = typeof options !== "function" && options || {};
          if (!options.name) {
            options.name = options.name || currentConfig.name;
            options.storeName = options.storeName || currentConfig.storeName;
          }
          var self2 = this;
          var promise;
          if (!options.name) {
            promise = Promise$1.reject("Invalid arguments");
          } else {
            promise = new Promise$1(function(resolve) {
              var db;
              if (options.name === currentConfig.name) {
                db = self2._dbInfo.db;
              } else {
                db = openDatabase(options.name, "", "", 0);
              }
              if (!options.storeName) {
                resolve(getAllStoreNames(db));
              } else {
                resolve({
                  db,
                  storeNames: [options.storeName]
                });
              }
            }).then(function(operationInfo) {
              return new Promise$1(function(resolve, reject) {
                operationInfo.db.transaction(function(t2) {
                  function dropTable(storeName) {
                    return new Promise$1(function(resolve2, reject2) {
                      t2.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() {
                        resolve2();
                      }, function(t3, error) {
                        reject2(error);
                      });
                    });
                  }
                  var operations = [];
                  for (var i2 = 0, len = operationInfo.storeNames.length; i2 < len; i2++) {
                    operations.push(dropTable(operationInfo.storeNames[i2]));
                  }
                  Promise$1.all(operations).then(function() {
                    resolve();
                  })["catch"](function(e2) {
                    reject(e2);
                  });
                }, function(sqlError) {
                  reject(sqlError);
                });
              });
            });
          }
          executeCallback(promise, callback);
          return promise;
        }
        var webSQLStorage = {
          _driver: "webSQLStorage",
          _initStorage: _initStorage$1,
          _support: isWebSQLValid(),
          iterate: iterate$1,
          getItem: getItem$1,
          setItem: setItem$1,
          removeItem: removeItem$1,
          clear: clear$1,
          length: length$1,
          key: key$1,
          keys: keys$1,
          dropInstance: dropInstance$1
        };
        function isLocalStorageValid() {
          try {
            return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object'
            !!localStorage.setItem;
          } catch (e2) {
            return false;
          }
        }
        function _getKeyPrefix(options, defaultConfig) {
          var keyPrefix = options.name + "/";
          if (options.storeName !== defaultConfig.storeName) {
            keyPrefix += options.storeName + "/";
          }
          return keyPrefix;
        }
        function checkIfLocalStorageThrows() {
          var localStorageTestKey = "_localforage_support_test";
          try {
            localStorage.setItem(localStorageTestKey, true);
            localStorage.removeItem(localStorageTestKey);
            return false;
          } catch (e2) {
            return true;
          }
        }
        function _isLocalStorageUsable() {
          return !checkIfLocalStorageThrows() || localStorage.length > 0;
        }
        function _initStorage$2(options) {
          var self2 = this;
          var dbInfo = {};
          if (options) {
            for (var i2 in options) {
              dbInfo[i2] = options[i2];
            }
          }
          dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
          if (!_isLocalStorageUsable()) {
            return Promise$1.reject();
          }
          self2._dbInfo = dbInfo;
          dbInfo.serializer = localforageSerializer;
          return Promise$1.resolve();
        }
        function clear$2(callback) {
          var self2 = this;
          var promise = self2.ready().then(function() {
            var keyPrefix = self2._dbInfo.keyPrefix;
            for (var i2 = localStorage.length - 1; i2 >= 0; i2--) {
              var key2 = localStorage.key(i2);
              if (key2.indexOf(keyPrefix) === 0) {
                localStorage.removeItem(key2);
              }
            }
          });
          executeCallback(promise, callback);
          return promise;
        }
        function getItem$2(key2, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = self2.ready().then(function() {
            var dbInfo = self2._dbInfo;
            var result = localStorage.getItem(dbInfo.keyPrefix + key2);
            if (result) {
              result = dbInfo.serializer.deserialize(result);
            }
            return result;
          });
          executeCallback(promise, callback);
          return promise;
        }
        function iterate$2(iterator, callback) {
          var self2 = this;
          var promise = self2.ready().then(function() {
            var dbInfo = self2._dbInfo;
            var keyPrefix = dbInfo.keyPrefix;
            var keyPrefixLength = keyPrefix.length;
            var length2 = localStorage.length;
            var iterationNumber = 1;
            for (var i2 = 0; i2 < length2; i2++) {
              var key2 = localStorage.key(i2);
              if (key2.indexOf(keyPrefix) !== 0) {
                continue;
              }
              var value = localStorage.getItem(key2);
              if (value) {
                value = dbInfo.serializer.deserialize(value);
              }
              value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++);
              if (value !== void 0) {
                return value;
              }
            }
          });
          executeCallback(promise, callback);
          return promise;
        }
        function key$2(n2, callback) {
          var self2 = this;
          var promise = self2.ready().then(function() {
            var dbInfo = self2._dbInfo;
            var result;
            try {
              result = localStorage.key(n2);
            } catch (error) {
              result = null;
            }
            if (result) {
              result = result.substring(dbInfo.keyPrefix.length);
            }
            return result;
          });
          executeCallback(promise, callback);
          return promise;
        }
        function keys$2(callback) {
          var self2 = this;
          var promise = self2.ready().then(function() {
            var dbInfo = self2._dbInfo;
            var length2 = localStorage.length;
            var keys4 = [];
            for (var i2 = 0; i2 < length2; i2++) {
              var itemKey = localStorage.key(i2);
              if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {
                keys4.push(itemKey.substring(dbInfo.keyPrefix.length));
              }
            }
            return keys4;
          });
          executeCallback(promise, callback);
          return promise;
        }
        function length$2(callback) {
          var self2 = this;
          var promise = self2.keys().then(function(keys4) {
            return keys4.length;
          });
          executeCallback(promise, callback);
          return promise;
        }
        function removeItem$2(key2, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = self2.ready().then(function() {
            var dbInfo = self2._dbInfo;
            localStorage.removeItem(dbInfo.keyPrefix + key2);
          });
          executeCallback(promise, callback);
          return promise;
        }
        function setItem$2(key2, value, callback) {
          var self2 = this;
          key2 = normalizeKey(key2);
          var promise = self2.ready().then(function() {
            if (value === void 0) {
              value = null;
            }
            var originalValue = value;
            return new Promise$1(function(resolve, reject) {
              var dbInfo = self2._dbInfo;
              dbInfo.serializer.serialize(value, function(value2, error) {
                if (error) {
                  reject(error);
                } else {
                  try {
                    localStorage.setItem(dbInfo.keyPrefix + key2, value2);
                    resolve(originalValue);
                  } catch (e2) {
                    if (e2.name === "QuotaExceededError" || e2.name === "NS_ERROR_DOM_QUOTA_REACHED") {
                      reject(e2);
                    }
                    reject(e2);
                  }
                }
              });
            });
          });
          executeCallback(promise, callback);
          return promise;
        }
        function dropInstance$2(options, callback) {
          callback = getCallback.apply(this, arguments);
          options = typeof options !== "function" && options || {};
          if (!options.name) {
            var currentConfig = this.config();
            options.name = options.name || currentConfig.name;
            options.storeName = options.storeName || currentConfig.storeName;
          }
          var self2 = this;
          var promise;
          if (!options.name) {
            promise = Promise$1.reject("Invalid arguments");
          } else {
            promise = new Promise$1(function(resolve) {
              if (!options.storeName) {
                resolve(options.name + "/");
              } else {
                resolve(_getKeyPrefix(options, self2._defaultConfig));
              }
            }).then(function(keyPrefix) {
              for (var i2 = localStorage.length - 1; i2 >= 0; i2--) {
                var key2 = localStorage.key(i2);
                if (key2.indexOf(keyPrefix) === 0) {
                  localStorage.removeItem(key2);
                }
              }
            });
          }
          executeCallback(promise, callback);
          return promise;
        }
        var localStorageWrapper = {
          _driver: "localStorageWrapper",
          _initStorage: _initStorage$2,
          _support: isLocalStorageValid(),
          iterate: iterate$2,
          getItem: getItem$2,
          setItem: setItem$2,
          removeItem: removeItem$2,
          clear: clear$2,
          length: length$2,
          key: key$2,
          keys: keys$2,
          dropInstance: dropInstance$2
        };
        var sameValue = function sameValue2(x2, y2) {
          return x2 === y2 || typeof x2 === "number" && typeof y2 === "number" && isNaN(x2) && isNaN(y2);
        };
        var includes2 = function includes3(array, searchElement) {
          var len = array.length;
          var i2 = 0;
          while (i2 < len) {
            if (sameValue(array[i2], searchElement)) {
              return true;
            }
            i2++;
          }
          return false;
        };
        var isArray2 = Array.isArray || function(arg) {
          return Object.prototype.toString.call(arg) === "[object Array]";
        };
        var DefinedDrivers = {};
        var DriverSupport = {};
        var DefaultDrivers = {
          INDEXEDDB: asyncStorage,
          WEBSQL: webSQLStorage,
          LOCALSTORAGE: localStorageWrapper
        };
        var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];
        var OptionalDriverMethods = ["dropInstance"];
        var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods);
        var DefaultConfig = {
          description: "",
          driver: DefaultDriverOrder.slice(),
          name: "localforage",
          // Default DB size is _JUST UNDER_ 5MB, as it's the highest size
          // we can use without a prompt.
          size: 4980736,
          storeName: "keyvaluepairs",
          version: 1
        };
        function callWhenReady(localForageInstance, libraryMethod) {
          localForageInstance[libraryMethod] = function() {
            var _args = arguments;
            return localForageInstance.ready().then(function() {
              return localForageInstance[libraryMethod].apply(localForageInstance, _args);
            });
          };
        }
        function extend() {
          for (var i2 = 1; i2 < arguments.length; i2++) {
            var arg = arguments[i2];
            if (arg) {
              for (var _key in arg) {
                if (arg.hasOwnProperty(_key)) {
                  if (isArray2(arg[_key])) {
                    arguments[0][_key] = arg[_key].slice();
                  } else {
                    arguments[0][_key] = arg[_key];
                  }
                }
              }
            }
          }
          return arguments[0];
        }
        var LocalForage = function() {
          function LocalForage2(options) {
            _classCallCheck(this, LocalForage2);
            for (var driverTypeKey in DefaultDrivers) {
              if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {
                var driver = DefaultDrivers[driverTypeKey];
                var driverName = driver._driver;
                this[driverTypeKey] = driverName;
                if (!DefinedDrivers[driverName]) {
                  this.defineDriver(driver);
                }
              }
            }
            this._defaultConfig = extend({}, DefaultConfig);
            this._config = extend({}, this._defaultConfig, options);
            this._driverSet = null;
            this._initDriver = null;
            this._ready = false;
            this._dbInfo = null;
            this._wrapLibraryMethodsWithReady();
            this.setDriver(this._config.driver)["catch"](function() {
            });
          }
          LocalForage2.prototype.config = function config(options) {
            if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") {
              if (this._ready) {
                return new Error("Can't call config() after localforage has been used.");
              }
              for (var i2 in options) {
                if (i2 === "storeName") {
                  options[i2] = options[i2].replace(/\W/g, "_");
                }
                if (i2 === "version" && typeof options[i2] !== "number") {
                  return new Error("Database version must be a number.");
                }
                this._config[i2] = options[i2];
              }
              if ("driver" in options && options.driver) {
                return this.setDriver(this._config.driver);
              }
              return true;
            } else if (typeof options === "string") {
              return this._config[options];
            } else {
              return this._config;
            }
          };
          LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {
            var promise = new Promise$1(function(resolve, reject) {
              try {
                var driverName = driverObject._driver;
                var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
                if (!driverObject._driver) {
                  reject(complianceError);
                  return;
                }
                var driverMethods = LibraryMethods.concat("_initStorage");
                for (var i2 = 0, len = driverMethods.length; i2 < len; i2++) {
                  var driverMethodName = driverMethods[i2];
                  var isRequired = !includes2(OptionalDriverMethods, driverMethodName);
                  if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") {
                    reject(complianceError);
                    return;
                  }
                }
                var configureMissingMethods = function configureMissingMethods2() {
                  var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) {
                    return function() {
                      var error = new Error("Method " + methodName + " is not implemented by the current driver");
                      var promise2 = Promise$1.reject(error);
                      executeCallback(promise2, arguments[arguments.length - 1]);
                      return promise2;
                    };
                  };
                  for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {
                    var optionalDriverMethod = OptionalDriverMethods[_i];
                    if (!driverObject[optionalDriverMethod]) {
                      driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);
                    }
                  }
                };
                configureMissingMethods();
                var setDriverSupport = function setDriverSupport2(support) {
                  if (DefinedDrivers[driverName]) {
                    console.info("Redefining LocalForage driver: " + driverName);
                  }
                  DefinedDrivers[driverName] = driverObject;
                  DriverSupport[driverName] = support;
                  resolve();
                };
                if ("_support" in driverObject) {
                  if (driverObject._support && typeof driverObject._support === "function") {
                    driverObject._support().then(setDriverSupport, reject);
                  } else {
                    setDriverSupport(!!driverObject._support);
                  }
                } else {
                  setDriverSupport(true);
                }
              } catch (e2) {
                reject(e2);
              }
            });
            executeTwoCallbacks(promise, callback, errorCallback);
            return promise;
          };
          LocalForage2.prototype.driver = function driver() {
            return this._driver || null;
          };
          LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {
            var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found."));
            executeTwoCallbacks(getDriverPromise, callback, errorCallback);
            return getDriverPromise;
          };
          LocalForage2.prototype.getSerializer = function getSerializer(callback) {
            var serializerPromise = Promise$1.resolve(localforageSerializer);
            executeTwoCallbacks(serializerPromise, callback);
            return serializerPromise;
          };
          LocalForage2.prototype.ready = function ready(callback) {
            var self2 = this;
            var promise = self2._driverSet.then(function() {
              if (self2._ready === null) {
                self2._ready = self2._initDriver();
              }
              return self2._ready;
            });
            executeTwoCallbacks(promise, callback, callback);
            return promise;
          };
          LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {
            var self2 = this;
            if (!isArray2(drivers)) {
              drivers = [drivers];
            }
            var supportedDrivers = this._getSupportedDrivers(drivers);
            function setDriverToConfig() {
              self2._config.driver = self2.driver();
            }
            function extendSelfWithDriver(driver) {
              self2._extend(driver);
              setDriverToConfig();
              self2._ready = self2._initStorage(self2._config);
              return self2._ready;
            }
            function initDriver(supportedDrivers2) {
              return function() {
                var currentDriverIndex = 0;
                function driverPromiseLoop() {
                  while (currentDriverIndex < supportedDrivers2.length) {
                    var driverName = supportedDrivers2[currentDriverIndex];
                    currentDriverIndex++;
                    self2._dbInfo = null;
                    self2._ready = null;
                    return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop);
                  }
                  setDriverToConfig();
                  var error = new Error("No available storage method found.");
                  self2._driverSet = Promise$1.reject(error);
                  return self2._driverSet;
                }
                return driverPromiseLoop();
              };
            }
            var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() {
              return Promise$1.resolve();
            }) : Promise$1.resolve();
            this._driverSet = oldDriverSetDone.then(function() {
              var driverName = supportedDrivers[0];
              self2._dbInfo = null;
              self2._ready = null;
              return self2.getDriver(driverName).then(function(driver) {
                self2._driver = driver._driver;
                setDriverToConfig();
                self2._wrapLibraryMethodsWithReady();
                self2._initDriver = initDriver(supportedDrivers);
              });
            })["catch"](function() {
              setDriverToConfig();
              var error = new Error("No available storage method found.");
              self2._driverSet = Promise$1.reject(error);
              return self2._driverSet;
            });
            executeTwoCallbacks(this._driverSet, callback, errorCallback);
            return this._driverSet;
          };
          LocalForage2.prototype.supports = function supports2(driverName) {
            return !!DriverSupport[driverName];
          };
          LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) {
            extend(this, libraryMethodsAndProperties);
          };
          LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {
            var supportedDrivers = [];
            for (var i2 = 0, len = drivers.length; i2 < len; i2++) {
              var driverName = drivers[i2];
              if (this.supports(driverName)) {
                supportedDrivers.push(driverName);
              }
            }
            return supportedDrivers;
          };
          LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {
            for (var i2 = 0, len = LibraryMethods.length; i2 < len; i2++) {
              callWhenReady(this, LibraryMethods[i2]);
            }
          };
          LocalForage2.prototype.createInstance = function createInstance(options) {
            return new LocalForage2(options);
          };
          return LocalForage2;
        }();
        var localforage_js = new LocalForage();
        module3.exports = localforage_js;
      }, { "3": 3 }] }, {}, [4])(4);
    });
  }
});

// node_modules/ua-parser-js/src/ua-parser.js
var require_ua_parser = __commonJS({
  "node_modules/ua-parser-js/src/ua-parser.js"(exports, module) {
    (function(window2, undefined2) {
      "use strict";
      var LIBVERSION = "1.0.33", EMPTY = "", UNKNOWN = "?", FUNC_TYPE = "function", UNDEF_TYPE = "undefined", OBJ_TYPE = "object", STR_TYPE = "string", MAJOR = "major", MODEL = "model", NAME = "name", TYPE = "type", VENDOR = "vendor", VERSION2 = "version", ARCHITECTURE = "architecture", CONSOLE = "console", MOBILE = "mobile", TABLET = "tablet", SMARTTV = "smarttv", WEARABLE = "wearable", EMBEDDED = "embedded", UA_MAX_LENGTH = 350;
      var AMAZON = "Amazon", APPLE = "Apple", ASUS = "ASUS", BLACKBERRY = "BlackBerry", BROWSER = "Browser", CHROME = "Chrome", EDGE = "Edge", FIREFOX = "Firefox", GOOGLE = "Google", HUAWEI = "Huawei", LG = "LG", MICROSOFT = "Microsoft", MOTOROLA = "Motorola", OPERA = "Opera", SAMSUNG = "Samsung", SHARP = "Sharp", SONY = "Sony", XIAOMI = "Xiaomi", ZEBRA = "Zebra", FACEBOOK = "Facebook";
      var extend = function(regexes2, extensions) {
        var mergedRegexes = {};
        for (var i2 in regexes2) {
          if (extensions[i2] && extensions[i2].length % 2 === 0) {
            mergedRegexes[i2] = extensions[i2].concat(regexes2[i2]);
          } else {
            mergedRegexes[i2] = regexes2[i2];
          }
        }
        return mergedRegexes;
      }, enumerize = function(arr) {
        var enums = {};
        for (var i2 = 0; i2 < arr.length; i2++) {
          enums[arr[i2].toUpperCase()] = arr[i2];
        }
        return enums;
      }, has = function(str1, str2) {
        return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
      }, lowerize = function(str) {
        return str.toLowerCase();
      }, majorize = function(version) {
        return typeof version === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split(".")[0] : undefined2;
      }, trim = function(str, len) {
        if (typeof str === STR_TYPE) {
          str = str.replace(/^\s\s*/, EMPTY);
          return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
        }
      };
      var rgxMapper = function(ua, arrays) {
        var i2 = 0, j2, k2, p2, q2, matches, match;
        while (i2 < arrays.length && !matches) {
          var regex = arrays[i2], props = arrays[i2 + 1];
          j2 = k2 = 0;
          while (j2 < regex.length && !matches) {
            matches = regex[j2++].exec(ua);
            if (!!matches) {
              for (p2 = 0; p2 < props.length; p2++) {
                match = matches[++k2];
                q2 = props[p2];
                if (typeof q2 === OBJ_TYPE && q2.length > 0) {
                  if (q2.length === 2) {
                    if (typeof q2[1] == FUNC_TYPE) {
                      this[q2[0]] = q2[1].call(this, match);
                    } else {
                      this[q2[0]] = q2[1];
                    }
                  } else if (q2.length === 3) {
                    if (typeof q2[1] === FUNC_TYPE && !(q2[1].exec && q2[1].test)) {
                      this[q2[0]] = match ? q2[1].call(this, match, q2[2]) : undefined2;
                    } else {
                      this[q2[0]] = match ? match.replace(q2[1], q2[2]) : undefined2;
                    }
                  } else if (q2.length === 4) {
                    this[q2[0]] = match ? q2[3].call(this, match.replace(q2[1], q2[2])) : undefined2;
                  }
                } else {
                  this[q2] = match ? match : undefined2;
                }
              }
            }
          }
          i2 += 2;
        }
      }, strMapper = function(str, map2) {
        for (var i2 in map2) {
          if (typeof map2[i2] === OBJ_TYPE && map2[i2].length > 0) {
            for (var j2 = 0; j2 < map2[i2].length; j2++) {
              if (has(map2[i2][j2], str)) {
                return i2 === UNKNOWN ? undefined2 : i2;
              }
            }
          } else if (has(map2[i2], str)) {
            return i2 === UNKNOWN ? undefined2 : i2;
          }
        }
        return str;
      };
      var oldSafariMap = {
        "1.0": "/8",
        "1.2": "/1",
        "1.3": "/3",
        "2.0": "/412",
        "2.0.2": "/416",
        "2.0.3": "/417",
        "2.0.4": "/419",
        "?": "/"
      }, windowsVersionMap = {
        "ME": "4.90",
        "NT 3.11": "NT3.51",
        "NT 4.0": "NT4.0",
        "2000": "NT 5.0",
        "XP": ["NT 5.1", "NT 5.2"],
        "Vista": "NT 6.0",
        "7": "NT 6.1",
        "8": "NT 6.2",
        "8.1": "NT 6.3",
        "10": ["NT 6.4", "NT 10.0"],
        "RT": "ARM"
      };
      var regexes = {
        browser: [
          [
            /\b(?:crmo|crios)\/([\w\.]+)/i
            // Chrome for Android/iOS
          ],
          [VERSION2, [NAME, "Chrome"]],
          [
            /edg(?:e|ios|a)?\/([\w\.]+)/i
            // Microsoft Edge
          ],
          [VERSION2, [NAME, "Edge"]],
          [
            // Presto based
            /(opera mini)\/([-\w\.]+)/i,
            // Opera Mini
            /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
            // Opera Mobi/Tablet
            /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
            // Opera
          ],
          [NAME, VERSION2],
          [
            /opios[\/ ]+([\w\.]+)/i
            // Opera mini on iphone >= 8.0
          ],
          [VERSION2, [NAME, OPERA + " Mini"]],
          [
            /\bopr\/([\w\.]+)/i
            // Opera Webkit
          ],
          [VERSION2, [NAME, OPERA]],
          [
            // Mixed
            /(kindle)\/([\w\.]+)/i,
            // Kindle
            /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,
            // Lunascape/Maxthon/Netfront/Jasmine/Blazer
            // Trident based
            /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,
            // Avant/IEMobile/SlimBrowser
            /(ba?idubrowser)[\/ ]?([\w\.]+)/i,
            // Baidu Browser
            /(?:ms|\()(ie) ([\w\.]+)/i,
            // Internet Explorer
            // Webkit/KHTML based                                               // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
            /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
            // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
            /(weibo)__([\d\.]+)/i
            // Weibo
          ],
          [NAME, VERSION2],
          [
            /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
            // UCBrowser
          ],
          [VERSION2, [NAME, "UC" + BROWSER]],
          [
            /microm.+\bqbcore\/([\w\.]+)/i,
            // WeChat Desktop for Windows Built-in Browser
            /\bqbcore\/([\w\.]+).+microm/i
          ],
          [VERSION2, [NAME, "WeChat(Win) Desktop"]],
          [
            /micromessenger\/([\w\.]+)/i
            // WeChat
          ],
          [VERSION2, [NAME, "WeChat"]],
          [
            /konqueror\/([\w\.]+)/i
            // Konqueror
          ],
          [VERSION2, [NAME, "Konqueror"]],
          [
            /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
            // IE11
          ],
          [VERSION2, [NAME, "IE"]],
          [
            /yabrowser\/([\w\.]+)/i
            // Yandex
          ],
          [VERSION2, [NAME, "Yandex"]],
          [
            /(avast|avg)\/([\w\.]+)/i
            // Avast/AVG Secure Browser
          ],
          [[NAME, /(.+)/, "$1 Secure " + BROWSER], VERSION2],
          [
            /\bfocus\/([\w\.]+)/i
            // Firefox Focus
          ],
          [VERSION2, [NAME, FIREFOX + " Focus"]],
          [
            /\bopt\/([\w\.]+)/i
            // Opera Touch
          ],
          [VERSION2, [NAME, OPERA + " Touch"]],
          [
            /coc_coc\w+\/([\w\.]+)/i
            // Coc Coc Browser
          ],
          [VERSION2, [NAME, "Coc Coc"]],
          [
            /dolfin\/([\w\.]+)/i
            // Dolphin
          ],
          [VERSION2, [NAME, "Dolphin"]],
          [
            /coast\/([\w\.]+)/i
            // Opera Coast
          ],
          [VERSION2, [NAME, OPERA + " Coast"]],
          [
            /miuibrowser\/([\w\.]+)/i
            // MIUI Browser
          ],
          [VERSION2, [NAME, "MIUI " + BROWSER]],
          [
            /fxios\/([-\w\.]+)/i
            // Firefox for iOS
          ],
          [VERSION2, [NAME, FIREFOX]],
          [
            /\bqihu|(qi?ho?o?|360)browser/i
            // 360
          ],
          [[NAME, "360 " + BROWSER]],
          [
            /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
          ],
          [[NAME, /(.+)/, "$1 " + BROWSER], VERSION2],
          [
            // Oculus/Samsung/Sailfish/Huawei Browser
            /(comodo_dragon)\/([\w\.]+)/i
            // Comodo Dragon
          ],
          [[NAME, /_/g, " "], VERSION2],
          [
            /(electron)\/([\w\.]+) safari/i,
            // Electron-based App
            /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
            // Tesla
            /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i
            // QQBrowser/Baidu App/2345 Browser
          ],
          [NAME, VERSION2],
          [
            /(metasr)[\/ ]?([\w\.]+)/i,
            // SouGouBrowser
            /(lbbrowser)/i,
            // LieBao Browser
            /\[(linkedin)app\]/i
            // LinkedIn App for iOS & Android
          ],
          [NAME],
          [
            // WebView
            /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
            // Facebook App for iOS & Android
          ],
          [[NAME, FACEBOOK], VERSION2],
          [
            /safari (line)\/([\w\.]+)/i,
            // Line App for iOS
            /\b(line)\/([\w\.]+)\/iab/i,
            // Line App for Android
            /(chromium|instagram)[\/ ]([-\w\.]+)/i
            // Chromium/Instagram
          ],
          [NAME, VERSION2],
          [
            /\bgsa\/([\w\.]+) .*safari\//i
            // Google Search Appliance on iOS
          ],
          [VERSION2, [NAME, "GSA"]],
          [
            /headlesschrome(?:\/([\w\.]+)| )/i
            // Chrome Headless
          ],
          [VERSION2, [NAME, CHROME + " Headless"]],
          [
            / wv\).+(chrome)\/([\w\.]+)/i
            // Chrome WebView
          ],
          [[NAME, CHROME + " WebView"], VERSION2],
          [
            /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
            // Android Browser
          ],
          [VERSION2, [NAME, "Android " + BROWSER]],
          [
            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
            // Chrome/OmniWeb/Arora/Tizen/Nokia
          ],
          [NAME, VERSION2],
          [
            /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i
            // Mobile Safari
          ],
          [VERSION2, [NAME, "Mobile Safari"]],
          [
            /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i
            // Safari & Safari Mobile
          ],
          [VERSION2, NAME],
          [
            /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
            // Safari < 3.0
          ],
          [NAME, [VERSION2, strMapper, oldSafariMap]],
          [
            /(webkit|khtml)\/([\w\.]+)/i
          ],
          [NAME, VERSION2],
          [
            // Gecko based
            /(navigator|netscape\d?)\/([-\w\.]+)/i
            // Netscape
          ],
          [[NAME, "Netscape"], VERSION2],
          [
            /mobile vr; rv:([\w\.]+)\).+firefox/i
            // Firefox Reality
          ],
          [VERSION2, [NAME, FIREFOX + " Reality"]],
          [
            /ekiohf.+(flow)\/([\w\.]+)/i,
            // Flow
            /(swiftfox)/i,
            // Swiftfox
            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
            // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
            // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
            /(firefox)\/([\w\.]+)/i,
            // Other Firefox-based
            /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
            // Mozilla
            // Other
            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
            // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
            /(links) \(([\w\.]+)/i
            // Links
          ],
          [NAME, VERSION2],
          [
            /(cobalt)\/([\w\.]+)/i
            // Cobalt
          ],
          [NAME, [VERSION2, /master.|lts./, ""]]
        ],
        cpu: [
          [
            /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i
            // AMD64 (x64)
          ],
          [[ARCHITECTURE, "amd64"]],
          [
            /(ia32(?=;))/i
            // IA32 (quicktime)
          ],
          [[ARCHITECTURE, lowerize]],
          [
            /((?:i[346]|x)86)[;\)]/i
            // IA32 (x86)
          ],
          [[ARCHITECTURE, "ia32"]],
          [
            /\b(aarch64|arm(v?8e?l?|_?64))\b/i
            // ARM64
          ],
          [[ARCHITECTURE, "arm64"]],
          [
            /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i
            // ARMHF
          ],
          [[ARCHITECTURE, "armhf"]],
          [
            // PocketPC mistakenly identified as PowerPC
            /windows (ce|mobile); ppc;/i
          ],
          [[ARCHITECTURE, "arm"]],
          [
            /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i
            // PowerPC
          ],
          [[ARCHITECTURE, /ower/, EMPTY, lowerize]],
          [
            /(sun4\w)[;\)]/i
            // SPARC
          ],
          [[ARCHITECTURE, "sparc"]],
          [
            /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
            // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
          ],
          [[ARCHITECTURE, lowerize]]
        ],
        device: [
          [
            //////////////////////////
            // MOBILES & TABLETS
            // Ordered by popularity
            /////////////////////////
            // Samsung
            /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
          ],
          [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]],
          [
            /\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,
            /samsung[- ]([-\w]+)/i,
            /sec-(sgh\w+)/i
          ],
          [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]],
          [
            // Apple
            /\((ip(?:hone|od)[\w ]*);/i
            // iPod/iPhone
          ],
          [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]],
          [
            /\((ipad);[-\w\),; ]+apple/i,
            // iPad
            /applecoremedia\/[\w\.]+ \((ipad)/i,
            /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
          ],
          [MODEL, [VENDOR, APPLE], [TYPE, TABLET]],
          [
            /(macintosh);/i
          ],
          [MODEL, [VENDOR, APPLE]],
          [
            // Huawei
            /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
          ],
          [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]],
          [
            /(?:huawei|honor)([-\w ]+)[;\)]/i,
            /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
          ],
          [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]],
          [
            // Xiaomi
            /\b(poco[\w ]+)(?: bui|\))/i,
            // Xiaomi POCO
            /\b; (\w+) build\/hm\1/i,
            // Xiaomi Hongmi 'numeric' models
            /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
            // Xiaomi Hongmi
            /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
            // Xiaomi Redmi
            /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i
            // Xiaomi Mi
          ],
          [[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE, MOBILE]],
          [
            /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i
            // Mi Pad tablets
          ],
          [[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE, TABLET]],
          [
            // OPPO
            /; (\w+) bui.+ oppo/i,
            /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
          ],
          [MODEL, [VENDOR, "OPPO"], [TYPE, MOBILE]],
          [
            // Vivo
            /vivo (\w+)(?: bui|\))/i,
            /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
          ],
          [MODEL, [VENDOR, "Vivo"], [TYPE, MOBILE]],
          [
            // Realme
            /\b(rmx[12]\d{3})(?: bui|;|\))/i
          ],
          [MODEL, [VENDOR, "Realme"], [TYPE, MOBILE]],
          [
            // Motorola
            /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
            /\bmot(?:orola)?[- ](\w*)/i,
            /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
          ],
          [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]],
          [
            /\b(mz60\d|xoom[2 ]{0,2}) build\//i
          ],
          [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]],
          [
            // LG
            /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
          ],
          [MODEL, [VENDOR, LG], [TYPE, TABLET]],
          [
            /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
            /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
            /\blg-?([\d\w]+) bui/i
          ],
          [MODEL, [VENDOR, LG], [TYPE, MOBILE]],
          [
            // Lenovo
            /(ideatab[-\w ]+)/i,
            /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
          ],
          [MODEL, [VENDOR, "Lenovo"], [TYPE, TABLET]],
          [
            // Nokia
            /(?:maemo|nokia).*(n900|lumia \d+)/i,
            /nokia[-_ ]?([-\w\.]*)/i
          ],
          [[MODEL, /_/g, " "], [VENDOR, "Nokia"], [TYPE, MOBILE]],
          [
            // Google
            /(pixel c)\b/i
            // Google Pixel C
          ],
          [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]],
          [
            /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
            // Google Pixel
          ],
          [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]],
          [
            // Sony
            /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
          ],
          [MODEL, [VENDOR, SONY], [TYPE, MOBILE]],
          [
            /sony tablet [ps]/i,
            /\b(?:sony)?sgp\w+(?: bui|\))/i
          ],
          [[MODEL, "Xperia Tablet"], [VENDOR, SONY], [TYPE, TABLET]],
          [
            // OnePlus
            / (kb2005|in20[12]5|be20[12][59])\b/i,
            /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
          ],
          [MODEL, [VENDOR, "OnePlus"], [TYPE, MOBILE]],
          [
            // Amazon
            /(alexa)webm/i,
            /(kf[a-z]{2}wi)( bui|\))/i,
            // Kindle Fire without Silk
            /(kf[a-z]+)( bui|\)).+silk\//i
            // Kindle Fire HD
          ],
          [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]],
          [
            /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
            // Fire Phone
          ],
          [[MODEL, /(.+)/g, "Fire Phone $1"], [VENDOR, AMAZON], [TYPE, MOBILE]],
          [
            // BlackBerry
            /(playbook);[-\w\),; ]+(rim)/i
            // BlackBerry PlayBook
          ],
          [MODEL, VENDOR, [TYPE, TABLET]],
          [
            /\b((?:bb[a-f]|st[hv])100-\d)/i,
            /\(bb10; (\w+)/i
            // BlackBerry 10
          ],
          [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]],
          [
            // Asus
            /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
          ],
          [MODEL, [VENDOR, ASUS], [TYPE, TABLET]],
          [
            / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
          ],
          [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]],
          [
            // HTC
            /(nexus 9)/i
            // HTC Nexus 9
          ],
          [MODEL, [VENDOR, "HTC"], [TYPE, TABLET]],
          [
            /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
            // HTC
            // ZTE
            /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
            /(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i
            // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
          ],
          [VENDOR, [MODEL, /_/g, " "], [TYPE, MOBILE]],
          [
            // Acer
            /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
          ],
          [MODEL, [VENDOR, "Acer"], [TYPE, TABLET]],
          [
            // Meizu
            /droid.+; (m[1-5] note) bui/i,
            /\bmz-([-\w]{2,})/i
          ],
          [MODEL, [VENDOR, "Meizu"], [TYPE, MOBILE]],
          [
            // Sharp
            /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
          ],
          [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]],
          [
            // MIXED
            /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,
            // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
            /(hp) ([\w ]+\w)/i,
            // HP iPAQ
            /(asus)-?(\w+)/i,
            // Asus
            /(microsoft); (lumia[\w ]+)/i,
            // Microsoft Lumia
            /(lenovo)[-_ ]?([-\w]+)/i,
            // Lenovo
            /(jolla)/i,
            // Jolla
            /(oppo) ?([\w ]+) bui/i
            // OPPO
          ],
          [VENDOR, MODEL, [TYPE, MOBILE]],
          [
            /(archos) (gamepad2?)/i,
            // Archos
            /(hp).+(touchpad(?!.+tablet)|tablet)/i,
            // HP TouchPad
            /(kindle)\/([\w\.]+)/i,
            // Kindle
            /(nook)[\w ]+build\/(\w+)/i,
            // Nook
            /(dell) (strea[kpr\d ]*[\dko])/i,
            // Dell Streak
            /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
            // Le Pan Tablets
            /(trinity)[- ]*(t\d{3}) bui/i,
            // Trinity Tablets
            /(gigaset)[- ]+(q\w{1,9}) bui/i,
            // Gigaset Tablets
            /(vodafone) ([\w ]+)(?:\)| bui)/i
            // Vodafone
          ],
          [VENDOR, MODEL, [TYPE, TABLET]],
          [
            /(surface duo)/i
            // Surface Duo
          ],
          [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]],
          [
            /droid [\d\.]+; (fp\du?)(?: b|\))/i
            // Fairphone
          ],
          [MODEL, [VENDOR, "Fairphone"], [TYPE, MOBILE]],
          [
            /(u304aa)/i
            // AT&T
          ],
          [MODEL, [VENDOR, "AT&T"], [TYPE, MOBILE]],
          [
            /\bsie-(\w*)/i
            // Siemens
          ],
          [MODEL, [VENDOR, "Siemens"], [TYPE, MOBILE]],
          [
            /\b(rct\w+) b/i
            // RCA Tablets
          ],
          [MODEL, [VENDOR, "RCA"], [TYPE, TABLET]],
          [
            /\b(venue[\d ]{2,7}) b/i
            // Dell Venue Tablets
          ],
          [MODEL, [VENDOR, "Dell"], [TYPE, TABLET]],
          [
            /\b(q(?:mv|ta)\w+) b/i
            // Verizon Tablet
          ],
          [MODEL, [VENDOR, "Verizon"], [TYPE, TABLET]],
          [
            /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i
            // Barnes & Noble Tablet
          ],
          [MODEL, [VENDOR, "Barnes & Noble"], [TYPE, TABLET]],
          [
            /\b(tm\d{3}\w+) b/i
          ],
          [MODEL, [VENDOR, "NuVision"], [TYPE, TABLET]],
          [
            /\b(k88) b/i
            // ZTE K Series Tablet
          ],
          [MODEL, [VENDOR, "ZTE"], [TYPE, TABLET]],
          [
            /\b(nx\d{3}j) b/i
            // ZTE Nubia
          ],
          [MODEL, [VENDOR, "ZTE"], [TYPE, MOBILE]],
          [
            /\b(gen\d{3}) b.+49h/i
            // Swiss GEN Mobile
          ],
          [MODEL, [VENDOR, "Swiss"], [TYPE, MOBILE]],
          [
            /\b(zur\d{3}) b/i
            // Swiss ZUR Tablet
          ],
          [MODEL, [VENDOR, "Swiss"], [TYPE, TABLET]],
          [
            /\b((zeki)?tb.*\b) b/i
            // Zeki Tablets
          ],
          [MODEL, [VENDOR, "Zeki"], [TYPE, TABLET]],
          [
            /\b([yr]\d{2}) b/i,
            /\b(dragon[- ]+touch |dt)(\w{5}) b/i
            // Dragon Touch Tablet
          ],
          [[VENDOR, "Dragon Touch"], MODEL, [TYPE, TABLET]],
          [
            /\b(ns-?\w{0,9}) b/i
            // Insignia Tablets
          ],
          [MODEL, [VENDOR, "Insignia"], [TYPE, TABLET]],
          [
            /\b((nxa|next)-?\w{0,9}) b/i
            // NextBook Tablets
          ],
          [MODEL, [VENDOR, "NextBook"], [TYPE, TABLET]],
          [
            /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i
            // Voice Xtreme Phones
          ],
          [[VENDOR, "Voice"], MODEL, [TYPE, MOBILE]],
          [
            /\b(lvtel\-)?(v1[12]) b/i
            // LvTel Phones
          ],
          [[VENDOR, "LvTel"], MODEL, [TYPE, MOBILE]],
          [
            /\b(ph-1) /i
            // Essential PH-1
          ],
          [MODEL, [VENDOR, "Essential"], [TYPE, MOBILE]],
          [
            /\b(v(100md|700na|7011|917g).*\b) b/i
            // Envizen Tablets
          ],
          [MODEL, [VENDOR, "Envizen"], [TYPE, TABLET]],
          [
            /\b(trio[-\w\. ]+) b/i
            // MachSpeed Tablets
          ],
          [MODEL, [VENDOR, "MachSpeed"], [TYPE, TABLET]],
          [
            /\btu_(1491) b/i
            // Rotor Tablets
          ],
          [MODEL, [VENDOR, "Rotor"], [TYPE, TABLET]],
          [
            /(shield[\w ]+) b/i
            // Nvidia Shield Tablets
          ],
          [MODEL, [VENDOR, "Nvidia"], [TYPE, TABLET]],
          [
            /(sprint) (\w+)/i
            // Sprint Phones
          ],
          [VENDOR, MODEL, [TYPE, MOBILE]],
          [
            /(kin\.[onetw]{3})/i
            // Microsoft Kin
          ],
          [[MODEL, /\./g, " "], [VENDOR, MICROSOFT], [TYPE, MOBILE]],
          [
            /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
            // Zebra
          ],
          [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]],
          [
            /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
          ],
          [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]],
          [
            ///////////////////
            // CONSOLES
            ///////////////////
            /(ouya)/i,
            // Ouya
            /(nintendo) ([wids3utch]+)/i
            // Nintendo
          ],
          [VENDOR, MODEL, [TYPE, CONSOLE]],
          [
            /droid.+; (shield) bui/i
            // Nvidia
          ],
          [MODEL, [VENDOR, "Nvidia"], [TYPE, CONSOLE]],
          [
            /(playstation [345portablevi]+)/i
            // Playstation
          ],
          [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]],
          [
            /\b(xbox(?: one)?(?!; xbox))[\); ]/i
            // Microsoft Xbox
          ],
          [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]],
          [
            ///////////////////
            // SMARTTVS
            ///////////////////
            /smart-tv.+(samsung)/i
            // Samsung
          ],
          [VENDOR, [TYPE, SMARTTV]],
          [
            /hbbtv.+maple;(\d+)/i
          ],
          [[MODEL, /^/, "SmartTV"], [VENDOR, SAMSUNG], [TYPE, SMARTTV]],
          [
            /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
            // LG SmartTV
          ],
          [[VENDOR, LG], [TYPE, SMARTTV]],
          [
            /(apple) ?tv/i
            // Apple TV
          ],
          [VENDOR, [MODEL, APPLE + " TV"], [TYPE, SMARTTV]],
          [
            /crkey/i
            // Google Chromecast
          ],
          [[MODEL, CHROME + "cast"], [VENDOR, GOOGLE], [TYPE, SMARTTV]],
          [
            /droid.+aft(\w)( bui|\))/i
            // Fire TV
          ],
          [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]],
          [
            /\(dtv[\);].+(aquos)/i,
            /(aquos-tv[\w ]+)\)/i
            // Sharp
          ],
          [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],
          [
            /(bravia[\w ]+)( bui|\))/i
            // Sony
          ],
          [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]],
          [
            /(mitv-\w{5}) bui/i
            // Xiaomi
          ],
          [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]],
          [
            /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
            // Roku
            /hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i
            // HbbTV devices
          ],
          [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]],
          [
            /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
            // SmartTV from Unidentified Vendors
          ],
          [[TYPE, SMARTTV]],
          [
            ///////////////////
            // WEARABLES
            ///////////////////
            /((pebble))app/i
            // Pebble
          ],
          [VENDOR, MODEL, [TYPE, WEARABLE]],
          [
            /droid.+; (glass) \d/i
            // Google Glass
          ],
          [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]],
          [
            /droid.+; (wt63?0{2,3})\)/i
          ],
          [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]],
          [
            /(quest( 2)?)/i
            // Oculus Quest
          ],
          [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]],
          [
            ///////////////////
            // EMBEDDED
            ///////////////////
            /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
            // Tesla
          ],
          [VENDOR, [TYPE, EMBEDDED]],
          [
            ////////////////////
            // MIXED (GENERIC)
            ///////////////////
            /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i
            // Android Phones from Unidentified Vendors
          ],
          [MODEL, [TYPE, MOBILE]],
          [
            /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i
            // Android Tablets from Unidentified Vendors
          ],
          [MODEL, [TYPE, TABLET]],
          [
            /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
            // Unidentifiable Tablet
          ],
          [[TYPE, TABLET]],
          [
            /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
            // Unidentifiable Mobile
          ],
          [[TYPE, MOBILE]],
          [
            /(android[-\w\. ]{0,9});.+buil/i
            // Generic Android Device
          ],
          [MODEL, [VENDOR, "Generic"]]
        ],
        engine: [
          [
            /windows.+ edge\/([\w\.]+)/i
            // EdgeHTML
          ],
          [VERSION2, [NAME, EDGE + "HTML"]],
          [
            /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
            // Blink
          ],
          [VERSION2, [NAME, "Blink"]],
          [
            /(presto)\/([\w\.]+)/i,
            // Presto
            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
            // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
            /ekioh(flow)\/([\w\.]+)/i,
            // Flow
            /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
            // KHTML/Tasman/Links
            /(icab)[\/ ]([23]\.[\d\.]+)/i
            // iCab
          ],
          [NAME, VERSION2],
          [
            /rv\:([\w\.]{1,9})\b.+(gecko)/i
            // Gecko
          ],
          [VERSION2, NAME]
        ],
        os: [
          [
            // Windows
            /microsoft (windows) (vista|xp)/i
            // Windows (iTunes)
          ],
          [NAME, VERSION2],
          [
            /(windows) nt 6\.2; (arm)/i,
            // Windows RT
            /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,
            // Windows Phone
            /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
          ],
          [NAME, [VERSION2, strMapper, windowsVersionMap]],
          [
            /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
          ],
          [[NAME, "Windows"], [VERSION2, strMapper, windowsVersionMap]],
          [
            // iOS/macOS
            /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
            // iOS
            /cfnetwork\/.+darwin/i
          ],
          [[VERSION2, /_/g, "."], [NAME, "iOS"]],
          [
            /(mac os x) ?([\w\. ]*)/i,
            /(macintosh|mac_powerpc\b)(?!.+haiku)/i
            // Mac OS
          ],
          [[NAME, "Mac OS"], [VERSION2, /_/g, "."]],
          [
            // Mobile OSes
            /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
            // Android-x86/HarmonyOS
          ],
          [VERSION2, NAME],
          [
            // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
            /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
            /(blackberry)\w*\/([\w\.]*)/i,
            // Blackberry
            /(tizen|kaios)[\/ ]([\w\.]+)/i,
            // Tizen/KaiOS
            /\((series40);/i
            // Series 40
          ],
          [NAME, VERSION2],
          [
            /\(bb(10);/i
            // BlackBerry 10
          ],
          [VERSION2, [NAME, BLACKBERRY]],
          [
            /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i
            // Symbian
          ],
          [VERSION2, [NAME, "Symbian"]],
          [
            /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
            // Firefox OS
          ],
          [VERSION2, [NAME, FIREFOX + " OS"]],
          [
            /web0s;.+rt(tv)/i,
            /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
            // WebOS
          ],
          [VERSION2, [NAME, "webOS"]],
          [
            // Google Chromecast
            /crkey\/([\d\.]+)/i
            // Google Chromecast
          ],
          [VERSION2, [NAME, CHROME + "cast"]],
          [
            /(cros) [\w]+ ([\w\.]+\w)/i
            // Chromium OS
          ],
          [[NAME, "Chromium OS"], VERSION2],
          [
            // Console
            /(nintendo|playstation) ([wids345portablevuch]+)/i,
            // Nintendo/Playstation
            /(xbox); +xbox ([^\);]+)/i,
            // Microsoft Xbox (360, One, X, S, Series X, Series S)
            // Other
            /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
            // Joli/Palm
            /(mint)[\/\(\) ]?(\w*)/i,
            // Mint
            /(mageia|vectorlinux)[; ]/i,
            // Mageia/VectorLinux
            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
            // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
            /(hurd|linux) ?([\w\.]*)/i,
            // Hurd/Linux
            /(gnu) ?([\w\.]*)/i,
            // GNU
            /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
            // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
            /(haiku) (\w+)/i
            // Haiku
          ],
          [NAME, VERSION2],
          [
            /(sunos) ?([\w\.\d]*)/i
            // Solaris
          ],
          [[NAME, "Solaris"], VERSION2],
          [
            /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
            // Solaris
            /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
            // AIX
            /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,
            // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX
            /(unix) ?([\w\.]*)/i
            // UNIX
          ],
          [NAME, VERSION2]
        ]
      };
      var UAParser2 = function(ua, extensions) {
        if (typeof ua === OBJ_TYPE) {
          extensions = ua;
          ua = undefined2;
        }
        if (!(this instanceof UAParser2)) {
          return new UAParser2(ua, extensions).getResult();
        }
        var _ua = ua || (typeof window2 !== UNDEF_TYPE && window2.navigator && window2.navigator.userAgent ? window2.navigator.userAgent : EMPTY);
        var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
        this.getBrowser = function() {
          var _browser = {};
          _browser[NAME] = undefined2;
          _browser[VERSION2] = undefined2;
          rgxMapper.call(_browser, _ua, _rgxmap.browser);
          _browser.major = majorize(_browser.version);
          return _browser;
        };
        this.getCPU = function() {
          var _cpu = {};
          _cpu[ARCHITECTURE] = undefined2;
          rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
          return _cpu;
        };
        this.getDevice = function() {
          var _device = {};
          _device[VENDOR] = undefined2;
          _device[MODEL] = undefined2;
          _device[TYPE] = undefined2;
          rgxMapper.call(_device, _ua, _rgxmap.device);
          return _device;
        };
        this.getEngine = function() {
          var _engine = {};
          _engine[NAME] = undefined2;
          _engine[VERSION2] = undefined2;
          rgxMapper.call(_engine, _ua, _rgxmap.engine);
          return _engine;
        };
        this.getOS = function() {
          var _os = {};
          _os[NAME] = undefined2;
          _os[VERSION2] = undefined2;
          rgxMapper.call(_os, _ua, _rgxmap.os);
          return _os;
        };
        this.getResult = function() {
          return {
            ua: this.getUA(),
            browser: this.getBrowser(),
            engine: this.getEngine(),
            os: this.getOS(),
            device: this.getDevice(),
            cpu: this.getCPU()
          };
        };
        this.getUA = function() {
          return _ua;
        };
        this.setUA = function(ua2) {
          _ua = typeof ua2 === STR_TYPE && ua2.length > UA_MAX_LENGTH ? trim(ua2, UA_MAX_LENGTH) : ua2;
          return this;
        };
        this.setUA(_ua);
        return this;
      };
      UAParser2.VERSION = LIBVERSION;
      UAParser2.BROWSER = enumerize([NAME, VERSION2, MAJOR]);
      UAParser2.CPU = enumerize([ARCHITECTURE]);
      UAParser2.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
      UAParser2.ENGINE = UAParser2.OS = enumerize([NAME, VERSION2]);
      if (typeof exports !== UNDEF_TYPE) {
        if (typeof module !== UNDEF_TYPE && module.exports) {
          exports = module.exports = UAParser2;
        }
        exports.UAParser = UAParser2;
      } else {
        if (typeof define === FUNC_TYPE && define.amd) {
          define(function() {
            return UAParser2;
          });
        } else if (typeof window2 !== UNDEF_TYPE) {
          window2.UAParser = UAParser2;
        }
      }
      var $2 = typeof window2 !== UNDEF_TYPE && (window2.jQuery || window2.Zepto);
      if ($2 && !$2.ua) {
        var parser = new UAParser2();
        $2.ua = parser.getResult();
        $2.ua.get = function() {
          return parser.getUA();
        };
        $2.ua.set = function(ua) {
          parser.setUA(ua);
          var result = parser.getResult();
          for (var prop in result) {
            $2.ua[prop] = result[prop];
          }
        };
      }
    })(typeof window === "object" ? window : exports);
  }
});

// angular:jit:template:file:projects/smart-curation-viewer/src/app/datasets/datasets.component.html
var datasets_component_default = `<div class="header">
  <div class="group">
    <span>Dataset List</span>
    <aim-tag-badge-noti size="medium" [value]="filteredDatasets().length"/>
  </div>
  <aim-input size="medium">
    <aim-icon icon="search"/>
    <input [formControl]="searchControl" aimInputBase placeholder="Search Dataset Name">
  </aim-input>
</div>
<div class="control">
  <aim-select class="capitalize" [formControl]="datasetTypeControl" size="small"
              (selectionChange)="onDatasetTypeFilterChanged($event)">
    <aim-option [value]="DatasetFilterType.all">{{ DatasetFilterType.all }}</aim-option>
    <aim-option [value]="DatasetFilterType.completed">{{ DatasetFilterType.completed }}</aim-option>
    <aim-option [value]="DatasetFilterType.processing">{{ DatasetFilterType.processing }}</aim-option>
    <aim-option [value]="DatasetFilterType.failed">{{ DatasetFilterType.failed }}</aim-option>
  </aim-select>
  <div class="refresh">Last Updated : {{ summaryUpdatedAt|date: 'YY-MM-dd HH:mm:ss' }}
    <button aim-icon-button icon="reset" [useActive]="false" (click)="onRefreshDatasets()"></button>
  </div>
</div>
<div class="grid">
  @for (dataset of filteredDatasets(); track dataset.datasetId) {
    <app-dataset-card [dataset]="dataset" (download)="onDownloadDataset($event)" (delete)="onDeleteDataset($event)"/>
  }
</div>

`;

// angular:jit:style:file:projects/smart-curation-viewer/src/app/datasets/datasets.component.scss
var datasets_component_default2 = "/* projects/smart-curation-viewer/src/app/datasets/datasets.component.scss */\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  padding: 40px;\n}\n:host > *:not(:last-child) {\n  margin-bottom: 24px;\n}\n.header {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 700;\n  font-size: 20px;\n  line-height: 24px;\n  color: #dfdfdf;\n}\n.header .group {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.header .group > *:not(:last-child) {\n  margin-right: 8px;\n}\n.control {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.control > *:not(:last-child) {\n  margin-right: 24px;\n}\n.control .refresh {\n  color: #787878;\n  display: inline-flex;\n  align-items: center;\n  column-gap: 8px;\n}\n.grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, 516px);\n  gap: 24px;\n}\n.capitalize {\n  text-transform: capitalize;\n}\n";

// projects/aimmo-design-system/aim-select/src/aim-select-animations.ts
var aimSelectAnimations = {
  aimTransformPanelWrap: trigger("aimTransformPanelWrap", [
    transition("* => void", query("@aimTransformPanel", [animateChild()], { optional: true }))
  ]),
  aimTransformPanel: trigger("aimTransformPanel", [
    state("void", style({
      opacity: 0,
      transform: "scale(1, 0.8)"
    })),
    transition("void => showing", animate("120ms cubic-bezier(0, 0, 0.2, 1)", style({
      opacity: 1,
      transform: "scale(1, 1)"
    }))),
    transition("* => void", animate("100ms linear", style({ opacity: 0 })))
  ])
};

// projects/aimmo-design-system/aim-select/src/aim-select-trigger.directive.ts
var AIM_SELECT_TRIGGER = new InjectionToken(" AimSelectTrigger");
var AimSelectTrigger = class AimSelectTrigger2 {
};
AimSelectTrigger = __decorate([
  Directive({
    selector: "aim-select-trigger, [aimSelectTrigger]",
    providers: [{ provide: AIM_SELECT_TRIGGER, useExisting: AimSelectTrigger }]
  })
], AimSelectTrigger);
var AIM_SELECT_PANEL_TRIGGER = new InjectionToken(" AimSelectPanelTrigger");
var AimSelectPanelTrigger = class AimSelectPanelTrigger2 {
};
AimSelectPanelTrigger = __decorate([
  Directive({
    selector: "[aimSelectPanelTrigger]",
    providers: [{ provide: AIM_SELECT_PANEL_TRIGGER, useExisting: AimSelectPanelTrigger }]
  })
], AimSelectPanelTrigger);

// angular:jit:template:file:projects/aimmo-design-system/aim-select/src/aim-select.component.html
var aim_select_component_default = `<ng-container *ngIf="!customPanelTrigger else customPanelTriggerTmpl">
  <aim-icon *ngIf="hasHeaderIcon" [icon]="headerIcon" class="aim-select__header-icon"/>
  <div [attr.id]="_valueId" class="aim-select__value">
    <span *ngIf="empty else selectedValuesTmpl"
          class="aim-select__placeholder aim-select--ellipsis">{{ placeholder }}</span>
  </div>
  <aim-icon [icon]="triggerIcon" class="aim-select__trigger-icon"/>
</ng-container>

<!--\uC140\uB809\uD2B8 \uD328\uB110 \uCEE4\uC2A4\uD140 \uD2B8\uB9AC\uAC70-->
<ng-template #customPanelTriggerTmpl>
  <ng-content select="[aimSelectPanelTrigger]"/>
</ng-template>

<!--\uC120\uD0DD \uC635\uC158 \uD45C\uC2DC \uCEE4\uC2A4\uD140 \uD2B8\uB9AC\uAC70-->
<ng-template #selectedValuesTmpl>
  <span *ngIf="!customTrigger else customTriggerTmpl"
        class="aim-select__value-text aim-select--ellipsis">{{ triggerValue }}</span>
  <ng-template #customTriggerTmpl>
    <ng-content select="aim-select-trigger, [aimSelectTrigger]"/>
  </ng-template>
</ng-template>


<!--\uC140\uB809\uD2B8 \uD328\uB110-->
<ng-template (attach)="_onAttached()"
             (backdropClick)="close()"
             (detach)="close()"
             [cdkConnectedOverlayLockPosition]="false"
             [cdkConnectedOverlayOffsetX]="overlayOffset.x"
             [cdkConnectedOverlayOffsetY]="overlayOffset.y"
             [cdkConnectedOverlayOpen]="panelOpen"
             [cdkConnectedOverlayOrigin]="overlayOrigin"
             [cdkConnectedOverlayPanelClass]="_overlayPanelClass"
             [cdkConnectedOverlayPositions]="_positions"
             [cdkConnectedOverlayScrollStrategy]="_scrollStrategy"
             [cdkConnectedOverlayWidth]="panelWidth"
             cdk-connected-overlay
             cdkConnectedOverlayBackdropClass="aim-select__backdrop"
             cdkConnectedOverlayHasBackdrop
             cdkConnectedOverlayPush>
  <div [class.project-filter]="responsivePanel" [class.table]="isTableContext"
       [ngClass]="customPanelClass" class="aim-select__panel-wrap">
    <!--_MatSelectBase\uC5D0\uC11C 'panel' \uD15C\uD50C\uB9BF \uBCC0\uC218\uB97C \uC0AC\uC6A9\uD558\uBBC0\uB85C \uC81C\uAC70X-->
    <div #panel
         (@aimTransformPanel.done)="_panelDoneAnimatingStream.next($event.toState)"
         (keydown)="_handleKeydown($event)"
         [@aimTransformPanel]="'showing'"
         [attr.aria-label]="ariaLabel || null"
         [attr.aria-labelledby]="panelAriaLabelledby()"
         [attr.aria-multiselectable]="multiple"
         [attr.id]="id + '-panel'"
         [ngClass]="panelClass"
         class="aim-select__panel {{panelTheme}}"
         role="listbox"
         tabindex="-1">
      <ng-content select="aim-all-select-option"/>
      <ng-content/>
    </div>
  </div>
</ng-template>
`;

// angular:jit:style:file:projects/aimmo-design-system/aim-select/src/aim-select.component.scss
var aim_select_component_default2 = "/* projects/aimmo-design-system/aim-select/src/aim-select.component.scss */\n:host {\n  display: inline-flex;\n  outline: none;\n}\n:host:not(.fit-content) {\n  box-sizing: border-box;\n  outline: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  width: var(--select-field-width, 100%);\n  height: 32px;\n  padding: 0 16px;\n  align-items: center;\n  background-color: var(--aim-select-background-color, #333333);\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  color: var(--aim-select-color, #dfdfdf);\n  cursor: var(--aim-cursor-hand-pointer, pointer);\n  -webkit-user-select: none;\n  user-select: none;\n}\n:host:not(.fit-content).table {\n  width: 100%;\n  height: 24px;\n  padding: 0 12px;\n}\n:host:not(.fit-content).table {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 12px;\n  line-height: 14px;\n}\n:host:not(.fit-content):disabled,\n:host:not(.fit-content).aim-select--disabled {\n  background-color: #222222;\n  color: #545454;\n  cursor: not-allowed;\n}\n:host:not(.fit-content):disabled .aim-select__placeholder,\n:host:not(.fit-content).aim-select--disabled .aim-select__placeholder {\n  color: #545454;\n}\n:host:not(.fit-content):disabled .aim-select__trigger-icon,\n:host:not(.fit-content).aim-select--disabled .aim-select__trigger-icon {\n  color: #545454;\n}\n:host:not(.fit-content).aim-select:hover:not(:disabled, :host:not(.fit-content).aim-select--disabled, :host:not(.fit-content).aim-select--invalid, :host:not(.fit-content).aim-select--active) {\n  border-color: var(--aim-select-option-border-color-hover, #545454);\n}\n:host:not(.fit-content).aim-select:focus:not(:disabled, :host:not(.fit-content).aim-select--disabled, :host:not(.fit-content).aim-select--invalid) {\n  border-color: var(--aim-select-option-border-color-focus, #787878);\n}\n:host:not(.fit-content).aim-select--active:not(:disabled, :host:not(.fit-content).aim-select--disabled, :host:not(.fit-content).aim-select--invalid) {\n  border-color: var(--aim-select-option-border-color-active, #787878);\n}\n:host:not(.fit-content).aim-select--invalid:not(:disabled, :host:not(.fit-content).aim-select--disabled) {\n  border-color: #de6251;\n}\n.project-filter.aim-select__panel-wrap {\n  max-height: 100vh;\n  margin-left: 25px;\n}\n.project-filter.aim-select__panel-wrap ::ng-deep .aim-option__primary-text {\n  letter-spacing: -0.18px;\n}\n.aim-select--ellipsis {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.aim-select__header-icon {\n  margin-right: 8px;\n}\n.aim-select__value {\n  display: inline-flex;\n  width: 100%;\n  margin-right: 8px;\n  overflow: hidden;\n}\n.aim-select__placeholder {\n  color: #787878;\n}\n.aim-select__trigger-icon {\n  color: var(--aim-select-trigger-icon-color, #dfdfdf);\n  text-align: end;\n}\n.aim-select__panel-wrap {\n  box-sizing: border-box;\n  outline: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  border: 1px solid transparent;\n  width: 100%;\n  max-height: 154px;\n  padding: 4px 0;\n  border-color: var(--aim-select-panel-border-color, rgba(0, 0, 0, 0.35));\n  background-color: var(--aim-select-panel-background-color, #222222);\n}\n.aim-select__panel-wrap.table {\n  max-height: 116px;\n}\n.aim-select__panel {\n  height: 100%;\n  outline: none;\n  overflow-y: auto;\n  -ms-overflow-style: none;\n}\n.aim-select__panel::-webkit-scrollbar {\n  display: none;\n  width: 0 !important;\n}\n::ng-deep .aim-select__backdrop.cdk-overlay-backdrop-showing {\n  opacity: 0;\n}\n";

// node_modules/@angular/material/fesm2022/select.mjs
var matSelectAnimations = {
  /**
   * This animation ensures the select's overlay panel animation (transformPanel) is called when
   * closing the select.
   * This is needed due to https://github.com/angular/angular/issues/23302
   */
  transformPanelWrap: trigger("transformPanelWrap", [
    transition("* => void", query("@transformPanel", [animateChild()], { optional: true }))
  ]),
  /** This animation transforms the select's overlay panel on and off the page. */
  transformPanel: trigger("transformPanel", [
    state("void", style({
      opacity: 0,
      transform: "scale(1, 0.8)"
    })),
    transition("void => showing", animate("120ms cubic-bezier(0, 0, 0.2, 1)", style({
      opacity: 1,
      transform: "scale(1, 1)"
    }))),
    transition("* => void", animate("100ms linear", style({ opacity: 0 })))
  ])
};
function getMatSelectDynamicMultipleError() {
  return Error("Cannot change `multiple` mode of select after initialization.");
}
function getMatSelectNonArrayValueError() {
  return Error("Value must be an array in multiple-selection mode.");
}
function getMatSelectNonFunctionValueError() {
  return Error("`compareWith` must be a function.");
}
var nextUniqueId = 0;
var MAT_SELECT_SCROLL_STRATEGY = new InjectionToken("mat-select-scroll-strategy", {
  providedIn: "root",
  factory: () => {
    const overlay = inject(Overlay);
    return () => overlay.scrollStrategies.reposition();
  }
});
function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {
  return () => overlay.scrollStrategies.reposition();
}
var MAT_SELECT_CONFIG = new InjectionToken("MAT_SELECT_CONFIG");
var MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {
  provide: MAT_SELECT_SCROLL_STRATEGY,
  deps: [Overlay],
  useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY
};
var MAT_SELECT_TRIGGER = new InjectionToken("MatSelectTrigger");
var MatSelectChange = class {
  constructor(source, value) {
    this.source = source;
    this.value = value;
  }
};
var _MatSelect = class _MatSelect {
  /** Scrolls a particular option into the view. */
  _scrollOptionIntoView(index) {
    const option = this.options.toArray()[index];
    if (option) {
      const panel = this.panel.nativeElement;
      const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);
      const element = option._getHostElement();
      if (index === 0 && labelCount === 1) {
        panel.scrollTop = 0;
      } else {
        panel.scrollTop = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, panel.scrollTop, panel.offsetHeight);
      }
    }
  }
  /** Called when the panel has been opened and the overlay has settled on its final position. */
  _positioningSettled() {
    this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);
  }
  /** Creates a change event object that should be emitted by the select. */
  _getChangeEvent(value) {
    return new MatSelectChange(this, value);
  }
  /** Whether the select is focused. */
  get focused() {
    return this._focused || this._panelOpen;
  }
  /** Whether checkmark indicator for single-selection options is hidden. */
  get hideSingleSelectionIndicator() {
    return this._hideSingleSelectionIndicator;
  }
  set hideSingleSelectionIndicator(value) {
    this._hideSingleSelectionIndicator = value;
    this._syncParentProperties();
  }
  /** Placeholder to be shown if no value has been selected. */
  get placeholder() {
    return this._placeholder;
  }
  set placeholder(value) {
    this._placeholder = value;
    this.stateChanges.next();
  }
  /** Whether the component is required. */
  get required() {
    return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
  }
  set required(value) {
    this._required = value;
    this.stateChanges.next();
  }
  /** Whether the user should be allowed to select multiple options. */
  get multiple() {
    return this._multiple;
  }
  set multiple(value) {
    if (this._selectionModel && (typeof ngDevMode === "undefined" || ngDevMode)) {
      throw getMatSelectDynamicMultipleError();
    }
    this._multiple = value;
  }
  /**
   * Function to compare the option values with the selected values. The first argument
   * is a value from an option. The second is a value from the selection. A boolean
   * should be returned.
   */
  get compareWith() {
    return this._compareWith;
  }
  set compareWith(fn) {
    if (typeof fn !== "function" && (typeof ngDevMode === "undefined" || ngDevMode)) {
      throw getMatSelectNonFunctionValueError();
    }
    this._compareWith = fn;
    if (this._selectionModel) {
      this._initializeSelection();
    }
  }
  /** Value of the select control. */
  get value() {
    return this._value;
  }
  set value(newValue) {
    const hasAssigned = this._assignValue(newValue);
    if (hasAssigned) {
      this._onChange(newValue);
    }
  }
  /** Object used to control when error messages are shown. */
  get errorStateMatcher() {
    return this._errorStateTracker.matcher;
  }
  set errorStateMatcher(value) {
    this._errorStateTracker.matcher = value;
  }
  /** Unique id of the element. */
  get id() {
    return this._id;
  }
  set id(value) {
    this._id = value || this._uid;
    this.stateChanges.next();
  }
  /** Whether the select is in an error state. */
  get errorState() {
    return this._errorStateTracker.errorState;
  }
  set errorState(value) {
    this._errorStateTracker.errorState = value;
  }
  constructor(_viewportRuler, _changeDetectorRef, _unusedNgZone, defaultErrorStateMatcher, _elementRef, _dir, parentForm, parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, _defaultOptions) {
    this._viewportRuler = _viewportRuler;
    this._changeDetectorRef = _changeDetectorRef;
    this._elementRef = _elementRef;
    this._dir = _dir;
    this._parentFormField = _parentFormField;
    this.ngControl = ngControl;
    this._liveAnnouncer = _liveAnnouncer;
    this._defaultOptions = _defaultOptions;
    this._positions = [
      {
        originX: "start",
        originY: "bottom",
        overlayX: "start",
        overlayY: "top"
      },
      {
        originX: "end",
        originY: "bottom",
        overlayX: "end",
        overlayY: "top"
      },
      {
        originX: "start",
        originY: "top",
        overlayX: "start",
        overlayY: "bottom",
        panelClass: "mat-mdc-select-panel-above"
      },
      {
        originX: "end",
        originY: "top",
        overlayX: "end",
        overlayY: "bottom",
        panelClass: "mat-mdc-select-panel-above"
      }
    ];
    this._panelOpen = false;
    this._compareWith = (o1, o2) => o1 === o2;
    this._uid = `mat-select-${nextUniqueId++}`;
    this._triggerAriaLabelledBy = null;
    this._destroy = new Subject();
    this.stateChanges = new Subject();
    this.disableAutomaticLabeling = true;
    this._onChange = () => {
    };
    this._onTouched = () => {
    };
    this._valueId = `mat-select-value-${nextUniqueId++}`;
    this._panelDoneAnimatingStream = new Subject();
    this._overlayPanelClass = this._defaultOptions?.overlayPanelClass || "";
    this._focused = false;
    this.controlType = "mat-select";
    this.disabled = false;
    this.disableRipple = false;
    this.tabIndex = 0;
    this._hideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;
    this._multiple = false;
    this.disableOptionCentering = this._defaultOptions?.disableOptionCentering ?? false;
    this.ariaLabel = "";
    this.panelWidth = this._defaultOptions && typeof this._defaultOptions.panelWidth !== "undefined" ? this._defaultOptions.panelWidth : "auto";
    this._initialized = new Subject();
    this.optionSelectionChanges = defer(() => {
      const options = this.options;
      if (options) {
        return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map((option) => option.onSelectionChange))));
      }
      return this._initialized.pipe(switchMap(() => this.optionSelectionChanges));
    });
    this.openedChange = new EventEmitter();
    this._openedStream = this.openedChange.pipe(filter((o2) => o2), map(() => {
    }));
    this._closedStream = this.openedChange.pipe(filter((o2) => !o2), map(() => {
    }));
    this.selectionChange = new EventEmitter();
    this.valueChange = new EventEmitter();
    this._trackedModal = null;
    this._skipPredicate = (option) => {
      if (this.panelOpen) {
        return false;
      }
      return option.disabled;
    };
    if (this.ngControl) {
      this.ngControl.valueAccessor = this;
    }
    if (_defaultOptions?.typeaheadDebounceInterval != null) {
      this.typeaheadDebounceInterval = _defaultOptions.typeaheadDebounceInterval;
    }
    this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, ngControl, parentFormGroup, parentForm, this.stateChanges);
    this._scrollStrategyFactory = scrollStrategyFactory;
    this._scrollStrategy = this._scrollStrategyFactory();
    this.tabIndex = parseInt(tabIndex) || 0;
    this.id = this.id;
  }
  ngOnInit() {
    this._selectionModel = new SelectionModel(this.multiple);
    this.stateChanges.next();
    this._panelDoneAnimatingStream.pipe(distinctUntilChanged(), takeUntil(this._destroy)).subscribe(() => this._panelDoneAnimating(this.panelOpen));
    this._viewportRuler.change().pipe(takeUntil(this._destroy)).subscribe(() => {
      if (this.panelOpen) {
        this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);
        this._changeDetectorRef.detectChanges();
      }
    });
  }
  ngAfterContentInit() {
    this._initialized.next();
    this._initialized.complete();
    this._initKeyManager();
    this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe((event) => {
      event.added.forEach((option) => option.select());
      event.removed.forEach((option) => option.deselect());
    });
    this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {
      this._resetOptions();
      this._initializeSelection();
    });
  }
  ngDoCheck() {
    const newAriaLabelledby = this._getTriggerAriaLabelledby();
    const ngControl = this.ngControl;
    if (newAriaLabelledby !== this._triggerAriaLabelledBy) {
      const element = this._elementRef.nativeElement;
      this._triggerAriaLabelledBy = newAriaLabelledby;
      if (newAriaLabelledby) {
        element.setAttribute("aria-labelledby", newAriaLabelledby);
      } else {
        element.removeAttribute("aria-labelledby");
      }
    }
    if (ngControl) {
      if (this._previousControl !== ngControl.control) {
        if (this._previousControl !== void 0 && ngControl.disabled !== null && ngControl.disabled !== this.disabled) {
          this.disabled = ngControl.disabled;
        }
        this._previousControl = ngControl.control;
      }
      this.updateErrorState();
    }
  }
  ngOnChanges(changes) {
    if (changes["disabled"] || changes["userAriaDescribedBy"]) {
      this.stateChanges.next();
    }
    if (changes["typeaheadDebounceInterval"] && this._keyManager) {
      this._keyManager.withTypeAhead(this.typeaheadDebounceInterval);
    }
  }
  ngOnDestroy() {
    this._keyManager?.destroy();
    this._destroy.next();
    this._destroy.complete();
    this.stateChanges.complete();
    this._clearFromModal();
  }
  /** Toggles the overlay panel open or closed. */
  toggle() {
    this.panelOpen ? this.close() : this.open();
  }
  /** Opens the overlay panel. */
  open() {
    if (!this._canOpen()) {
      return;
    }
    if (this._parentFormField) {
      this._preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();
    }
    this._overlayWidth = this._getOverlayWidth(this._preferredOverlayOrigin);
    this._applyModalPanelOwnership();
    this._panelOpen = true;
    this._keyManager.withHorizontalOrientation(null);
    this._highlightCorrectOption();
    this._changeDetectorRef.markForCheck();
    this.stateChanges.next();
  }
  /**
   * If the autocomplete trigger is inside of an `aria-modal` element, connect
   * that modal to the options panel with `aria-owns`.
   *
   * For some browser + screen reader combinations, when navigation is inside
   * of an `aria-modal` element, the screen reader treats everything outside
   * of that modal as hidden or invisible.
   *
   * This causes a problem when the combobox trigger is _inside_ of a modal, because the
   * options panel is rendered _outside_ of that modal, preventing screen reader navigation
   * from reaching the panel.
   *
   * We can work around this issue by applying `aria-owns` to the modal with the `id` of
   * the options panel. This effectively communicates to assistive technology that the
   * options panel is part of the same interaction as the modal.
   *
   * At time of this writing, this issue is present in VoiceOver.
   * See https://github.com/angular/components/issues/20694
   */
  _applyModalPanelOwnership() {
    const modal = this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');
    if (!modal) {
      return;
    }
    const panelId = `${this.id}-panel`;
    if (this._trackedModal) {
      removeAriaReferencedId(this._trackedModal, "aria-owns", panelId);
    }
    addAriaReferencedId(modal, "aria-owns", panelId);
    this._trackedModal = modal;
  }
  /** Clears the reference to the listbox overlay element from the modal it was added to. */
  _clearFromModal() {
    if (!this._trackedModal) {
      return;
    }
    const panelId = `${this.id}-panel`;
    removeAriaReferencedId(this._trackedModal, "aria-owns", panelId);
    this._trackedModal = null;
  }
  /** Closes the overlay panel and focuses the host element. */
  close() {
    if (this._panelOpen) {
      this._panelOpen = false;
      this._keyManager.withHorizontalOrientation(this._isRtl() ? "rtl" : "ltr");
      this._changeDetectorRef.markForCheck();
      this._onTouched();
      this.stateChanges.next();
    }
  }
  /**
   * Sets the select's value. Part of the ControlValueAccessor interface
   * required to integrate with Angular's core forms API.
   *
   * @param value New value to be written to the model.
   */
  writeValue(value) {
    this._assignValue(value);
  }
  /**
   * Saves a callback function to be invoked when the select's value
   * changes from user input. Part of the ControlValueAccessor interface
   * required to integrate with Angular's core forms API.
   *
   * @param fn Callback to be triggered when the value changes.
   */
  registerOnChange(fn) {
    this._onChange = fn;
  }
  /**
   * Saves a callback function to be invoked when the select is blurred
   * by the user. Part of the ControlValueAccessor interface required
   * to integrate with Angular's core forms API.
   *
   * @param fn Callback to be triggered when the component has been touched.
   */
  registerOnTouched(fn) {
    this._onTouched = fn;
  }
  /**
   * Disables the select. Part of the ControlValueAccessor interface required
   * to integrate with Angular's core forms API.
   *
   * @param isDisabled Sets whether the component is disabled.
   */
  setDisabledState(isDisabled) {
    this.disabled = isDisabled;
    this._changeDetectorRef.markForCheck();
    this.stateChanges.next();
  }
  /** Whether or not the overlay panel is open. */
  get panelOpen() {
    return this._panelOpen;
  }
  /** The currently selected option. */
  get selected() {
    return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];
  }
  /** The value displayed in the trigger. */
  get triggerValue() {
    if (this.empty) {
      return "";
    }
    if (this._multiple) {
      const selectedOptions = this._selectionModel.selected.map((option) => option.viewValue);
      if (this._isRtl()) {
        selectedOptions.reverse();
      }
      return selectedOptions.join(", ");
    }
    return this._selectionModel.selected[0].viewValue;
  }
  /** Refreshes the error state of the select. */
  updateErrorState() {
    this._errorStateTracker.updateErrorState();
  }
  /** Whether the element is in RTL mode. */
  _isRtl() {
    return this._dir ? this._dir.value === "rtl" : false;
  }
  /** Handles all keydown events on the select. */
  _handleKeydown(event) {
    if (!this.disabled) {
      this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);
    }
  }
  /** Handles keyboard events while the select is closed. */
  _handleClosedKeydown(event) {
    const keyCode = event.keyCode;
    const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;
    const isOpenKey = keyCode === ENTER || keyCode === SPACE;
    const manager = this._keyManager;
    if (!manager.isTyping() && isOpenKey && !hasModifierKey(event) || (this.multiple || event.altKey) && isArrowKey) {
      event.preventDefault();
      this.open();
    } else if (!this.multiple) {
      const previouslySelectedOption = this.selected;
      manager.onKeydown(event);
      const selectedOption = this.selected;
      if (selectedOption && previouslySelectedOption !== selectedOption) {
        this._liveAnnouncer.announce(selectedOption.viewValue, 1e4);
      }
    }
  }
  /** Handles keyboard events when the selected is open. */
  _handleOpenKeydown(event) {
    const manager = this._keyManager;
    const keyCode = event.keyCode;
    const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
    const isTyping = manager.isTyping();
    if (isArrowKey && event.altKey) {
      event.preventDefault();
      this.close();
    } else if (!isTyping && (keyCode === ENTER || keyCode === SPACE) && manager.activeItem && !hasModifierKey(event)) {
      event.preventDefault();
      manager.activeItem._selectViaInteraction();
    } else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {
      event.preventDefault();
      const hasDeselectedOptions = this.options.some((opt) => !opt.disabled && !opt.selected);
      this.options.forEach((option) => {
        if (!option.disabled) {
          hasDeselectedOptions ? option.select() : option.deselect();
        }
      });
    } else {
      const previouslyFocusedIndex = manager.activeItemIndex;
      manager.onKeydown(event);
      if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem && manager.activeItemIndex !== previouslyFocusedIndex) {
        manager.activeItem._selectViaInteraction();
      }
    }
  }
  _onFocus() {
    if (!this.disabled) {
      this._focused = true;
      this.stateChanges.next();
    }
  }
  /**
   * Calls the touched callback only if the panel is closed. Otherwise, the trigger will
   * "blur" to the panel when it opens, causing a false positive.
   */
  _onBlur() {
    this._focused = false;
    this._keyManager?.cancelTypeahead();
    if (!this.disabled && !this.panelOpen) {
      this._onTouched();
      this._changeDetectorRef.markForCheck();
      this.stateChanges.next();
    }
  }
  /**
   * Callback that is invoked when the overlay panel has been attached.
   */
  _onAttached() {
    this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {
      this._changeDetectorRef.detectChanges();
      this._positioningSettled();
    });
  }
  /** Returns the theme to be used on the panel. */
  _getPanelTheme() {
    return this._parentFormField ? `mat-${this._parentFormField.color}` : "";
  }
  /** Whether the select has a value. */
  get empty() {
    return !this._selectionModel || this._selectionModel.isEmpty();
  }
  _initializeSelection() {
    Promise.resolve().then(() => {
      if (this.ngControl) {
        this._value = this.ngControl.value;
      }
      this._setSelectionByValue(this._value);
      this.stateChanges.next();
    });
  }
  /**
   * Sets the selected option based on a value. If no option can be
   * found with the designated value, the select trigger is cleared.
   */
  _setSelectionByValue(value) {
    this.options.forEach((option) => option.setInactiveStyles());
    this._selectionModel.clear();
    if (this.multiple && value) {
      if (!Array.isArray(value) && (typeof ngDevMode === "undefined" || ngDevMode)) {
        throw getMatSelectNonArrayValueError();
      }
      value.forEach((currentValue) => this._selectOptionByValue(currentValue));
      this._sortValues();
    } else {
      const correspondingOption = this._selectOptionByValue(value);
      if (correspondingOption) {
        this._keyManager.updateActiveItem(correspondingOption);
      } else if (!this.panelOpen) {
        this._keyManager.updateActiveItem(-1);
      }
    }
    this._changeDetectorRef.markForCheck();
  }
  /**
   * Finds and selects and option based on its value.
   * @returns Option that has the corresponding value.
   */
  _selectOptionByValue(value) {
    const correspondingOption = this.options.find((option) => {
      if (this._selectionModel.isSelected(option)) {
        return false;
      }
      try {
        return option.value != null && this._compareWith(option.value, value);
      } catch (error) {
        if (typeof ngDevMode === "undefined" || ngDevMode) {
          console.warn(error);
        }
        return false;
      }
    });
    if (correspondingOption) {
      this._selectionModel.select(correspondingOption);
    }
    return correspondingOption;
  }
  /** Assigns a specific value to the select. Returns whether the value has changed. */
  _assignValue(newValue) {
    if (newValue !== this._value || this._multiple && Array.isArray(newValue)) {
      if (this.options) {
        this._setSelectionByValue(newValue);
      }
      this._value = newValue;
      return true;
    }
    return false;
  }
  /** Gets how wide the overlay panel should be. */
  _getOverlayWidth(preferredOrigin) {
    if (this.panelWidth === "auto") {
      const refToMeasure = preferredOrigin instanceof CdkOverlayOrigin ? preferredOrigin.elementRef : preferredOrigin || this._elementRef;
      return refToMeasure.nativeElement.getBoundingClientRect().width;
    }
    return this.panelWidth === null ? "" : this.panelWidth;
  }
  /** Syncs the parent state with the individual options. */
  _syncParentProperties() {
    if (this.options) {
      for (const option of this.options) {
        option._changeDetectorRef.markForCheck();
      }
    }
  }
  /** Sets up a key manager to listen to keyboard events on the overlay panel. */
  _initKeyManager() {
    this._keyManager = new ActiveDescendantKeyManager(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl() ? "rtl" : "ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate);
    this._keyManager.tabOut.subscribe(() => {
      if (this.panelOpen) {
        if (!this.multiple && this._keyManager.activeItem) {
          this._keyManager.activeItem._selectViaInteraction();
        }
        this.focus();
        this.close();
      }
    });
    this._keyManager.change.subscribe(() => {
      if (this._panelOpen && this.panel) {
        this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);
      } else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {
        this._keyManager.activeItem._selectViaInteraction();
      }
    });
  }
  /** Drops current option subscriptions and IDs and resets from scratch. */
  _resetOptions() {
    const changedOrDestroyed = merge(this.options.changes, this._destroy);
    this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe((event) => {
      this._onSelect(event.source, event.isUserInput);
      if (event.isUserInput && !this.multiple && this._panelOpen) {
        this.close();
        this.focus();
      }
    });
    merge(...this.options.map((option) => option._stateChanges)).pipe(takeUntil(changedOrDestroyed)).subscribe(() => {
      this._changeDetectorRef.detectChanges();
      this.stateChanges.next();
    });
  }
  /** Invoked when an option is clicked. */
  _onSelect(option, isUserInput) {
    const wasSelected = this._selectionModel.isSelected(option);
    if (option.value == null && !this._multiple) {
      option.deselect();
      this._selectionModel.clear();
      if (this.value != null) {
        this._propagateChanges(option.value);
      }
    } else {
      if (wasSelected !== option.selected) {
        option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);
      }
      if (isUserInput) {
        this._keyManager.setActiveItem(option);
      }
      if (this.multiple) {
        this._sortValues();
        if (isUserInput) {
          this.focus();
        }
      }
    }
    if (wasSelected !== this._selectionModel.isSelected(option)) {
      this._propagateChanges();
    }
    this.stateChanges.next();
  }
  /** Sorts the selected values in the selected based on their order in the panel. */
  _sortValues() {
    if (this.multiple) {
      const options = this.options.toArray();
      this._selectionModel.sort((a2, b2) => {
        return this.sortComparator ? this.sortComparator(a2, b2, options) : options.indexOf(a2) - options.indexOf(b2);
      });
      this.stateChanges.next();
    }
  }
  /** Emits change event to set the model value. */
  _propagateChanges(fallbackValue) {
    let valueToEmit;
    if (this.multiple) {
      valueToEmit = this.selected.map((option) => option.value);
    } else {
      valueToEmit = this.selected ? this.selected.value : fallbackValue;
    }
    this._value = valueToEmit;
    this.valueChange.emit(valueToEmit);
    this._onChange(valueToEmit);
    this.selectionChange.emit(this._getChangeEvent(valueToEmit));
    this._changeDetectorRef.markForCheck();
  }
  /**
   * Highlights the selected item. If no option is selected, it will highlight
   * the first *enabled* option.
   */
  _highlightCorrectOption() {
    if (this._keyManager) {
      if (this.empty) {
        let firstEnabledOptionIndex = -1;
        for (let index = 0; index < this.options.length; index++) {
          const option = this.options.get(index);
          if (!option.disabled) {
            firstEnabledOptionIndex = index;
            break;
          }
        }
        this._keyManager.setActiveItem(firstEnabledOptionIndex);
      } else {
        this._keyManager.setActiveItem(this._selectionModel.selected[0]);
      }
    }
  }
  /** Whether the panel is allowed to open. */
  _canOpen() {
    return !this._panelOpen && !this.disabled && this.options?.length > 0;
  }
  /** Focuses the select element. */
  focus(options) {
    this._elementRef.nativeElement.focus(options);
  }
  /** Gets the aria-labelledby for the select panel. */
  _getPanelAriaLabelledby() {
    if (this.ariaLabel) {
      return null;
    }
    const labelId = this._parentFormField?.getLabelId();
    const labelExpression = labelId ? labelId + " " : "";
    return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;
  }
  /** Determines the `aria-activedescendant` to be set on the host. */
  _getAriaActiveDescendant() {
    if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {
      return this._keyManager.activeItem.id;
    }
    return null;
  }
  /** Gets the aria-labelledby of the select component trigger. */
  _getTriggerAriaLabelledby() {
    if (this.ariaLabel) {
      return null;
    }
    const labelId = this._parentFormField?.getLabelId();
    let value = (labelId ? labelId + " " : "") + this._valueId;
    if (this.ariaLabelledby) {
      value += " " + this.ariaLabelledby;
    }
    return value;
  }
  /** Called when the overlay panel is done animating. */
  _panelDoneAnimating(isOpen) {
    this.openedChange.emit(isOpen);
  }
  /**
   * Implemented as part of MatFormFieldControl.
   * @docs-private
   */
  setDescribedByIds(ids) {
    if (ids.length) {
      this._elementRef.nativeElement.setAttribute("aria-describedby", ids.join(" "));
    } else {
      this._elementRef.nativeElement.removeAttribute("aria-describedby");
    }
  }
  /**
   * Implemented as part of MatFormFieldControl.
   * @docs-private
   */
  onContainerClick() {
    this.focus();
    this.open();
  }
  /**
   * Implemented as part of MatFormFieldControl.
   * @docs-private
   */
  get shouldLabelFloat() {
    return this.panelOpen || !this.empty || this.focused && !!this.placeholder;
  }
};
_MatSelect.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSelect, deps: [{ token: ViewportRuler }, { token: ChangeDetectorRef }, { token: NgZone }, { token: ErrorStateMatcher }, { token: ElementRef }, { token: Directionality, optional: true }, { token: NgForm, optional: true }, { token: FormGroupDirective, optional: true }, { token: MAT_FORM_FIELD, optional: true }, { token: NgControl, optional: true, self: true }, { token: "tabindex", attribute: true }, { token: MAT_SELECT_SCROLL_STRATEGY }, { token: LiveAnnouncer }, { token: MAT_SELECT_CONFIG, optional: true }], target: FactoryTarget.Component });
_MatSelect.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "17.0.0", version: "17.2.0", type: _MatSelect, isStandalone: true, selector: "mat-select", inputs: { userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"], panelClass: "panelClass", disabled: ["disabled", "disabled", booleanAttribute], disableRipple: ["disableRipple", "disableRipple", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", (value) => value == null ? 0 : numberAttribute(value)], hideSingleSelectionIndicator: ["hideSingleSelectionIndicator", "hideSingleSelectionIndicator", booleanAttribute], placeholder: "placeholder", required: ["required", "required", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], disableOptionCentering: ["disableOptionCentering", "disableOptionCentering", booleanAttribute], compareWith: "compareWith", value: "value", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], errorStateMatcher: "errorStateMatcher", typeaheadDebounceInterval: ["typeaheadDebounceInterval", "typeaheadDebounceInterval", numberAttribute], sortComparator: "sortComparator", id: "id", panelWidth: "panelWidth" }, outputs: { openedChange: "openedChange", _openedStream: "opened", _closedStream: "closed", selectionChange: "selectionChange", valueChange: "valueChange" }, host: { attributes: { "role": "combobox", "aria-autocomplete": "none", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "_onFocus()", "blur": "_onBlur()" }, properties: { "attr.id": "id", "attr.tabindex": "disabled ? -1 : tabIndex", "attr.aria-controls": 'panelOpen ? id + "-panel" : null', "attr.aria-expanded": "panelOpen", "attr.aria-label": "ariaLabel || null", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "attr.aria-activedescendant": "_getAriaActiveDescendant()", "class.mat-mdc-select-disabled": "disabled", "class.mat-mdc-select-invalid": "errorState", "class.mat-mdc-select-required": "required", "class.mat-mdc-select-empty": "empty", "class.mat-mdc-select-multiple": "multiple" }, classAttribute: "mat-mdc-select" }, providers: [
  { provide: MatFormFieldControl, useExisting: _MatSelect },
  { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: _MatSelect }
], queries: [{ propertyName: "customTrigger", first: true, predicate: MAT_SELECT_TRIGGER, descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }, { propertyName: "optionGroups", predicate: MAT_OPTGROUP, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "_overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }], exportAs: ["matSelect"], usesOnChanges: true, ngImport: core_exports, template: `<div cdk-overlay-origin
     class="mat-mdc-select-trigger"
     (click)="open()"
     #fallbackOverlayOrigin="cdkOverlayOrigin"
     #trigger>

  <div class="mat-mdc-select-value" [attr.id]="_valueId">
    @if (empty) {
      <span class="mat-mdc-select-placeholder mat-mdc-select-min-line">{{placeholder}}</span>
    } @else {
      <span class="mat-mdc-select-value-text">
        @if (customTrigger) {
          <ng-content select="mat-select-trigger"></ng-content>
        } @else {
          <span class="mat-mdc-select-min-line">{{triggerValue}}</span>
        }
      </span>
    }
  </div>

  <div class="mat-mdc-select-arrow-wrapper">
    <div class="mat-mdc-select-arrow">
      <!-- Use an inline SVG, because it works better than a CSS triangle in high contrast mode. -->
      <svg viewBox="0 0 24 24" width="24px" height="24px" focusable="false" aria-hidden="true">
        <path d="M7 10l5 5 5-5z"/>
      </svg>
    </div>
  </div>
</div>

<ng-template
  cdk-connected-overlay
  cdkConnectedOverlayLockPosition
  cdkConnectedOverlayHasBackdrop
  cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
  [cdkConnectedOverlayPanelClass]="_overlayPanelClass"
  [cdkConnectedOverlayScrollStrategy]="_scrollStrategy"
  [cdkConnectedOverlayOrigin]="_preferredOverlayOrigin || fallbackOverlayOrigin"
  [cdkConnectedOverlayOpen]="panelOpen"
  [cdkConnectedOverlayPositions]="_positions"
  [cdkConnectedOverlayWidth]="_overlayWidth"
  (backdropClick)="close()"
  (attach)="_onAttached()"
  (detach)="close()">
  <div
    #panel
    role="listbox"
    tabindex="-1"
    class="mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open {{ _getPanelTheme() }}"
    [attr.id]="id + '-panel'"
    [attr.aria-multiselectable]="multiple"
    [attr.aria-label]="ariaLabel || null"
    [attr.aria-labelledby]="_getPanelAriaLabelledby()"
    [ngClass]="panelClass"
    [@transformPanel]="'showing'"
    (@transformPanel.done)="_panelDoneAnimatingStream.next($event.toState)"
    (keydown)="_handleKeydown($event)">
    <ng-content></ng-content>
  </div>
</ng-template>
`, styles: ['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color);font-family:var(--mat-select-trigger-text-font);line-height:var(--mat-select-trigger-text-line-height);font-size:var(--mat-select-trigger-text-size);font-weight:var(--mat-select-trigger-text-weight);letter-spacing:var(--mat-select-trigger-text-tracking)}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color)}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color)}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color)}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform)}'], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [matSelectAnimations.transformPanel], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None });
var MatSelect = _MatSelect;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatSelect, decorators: [{
  type: Component,
  args: [{ selector: "mat-select", exportAs: "matSelect", encapsulation: ViewEncapsulation$1.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
    "role": "combobox",
    "aria-autocomplete": "none",
    "aria-haspopup": "listbox",
    "class": "mat-mdc-select",
    "[attr.id]": "id",
    "[attr.tabindex]": "disabled ? -1 : tabIndex",
    "[attr.aria-controls]": 'panelOpen ? id + "-panel" : null',
    "[attr.aria-expanded]": "panelOpen",
    "[attr.aria-label]": "ariaLabel || null",
    "[attr.aria-required]": "required.toString()",
    "[attr.aria-disabled]": "disabled.toString()",
    "[attr.aria-invalid]": "errorState",
    "[attr.aria-activedescendant]": "_getAriaActiveDescendant()",
    "[class.mat-mdc-select-disabled]": "disabled",
    "[class.mat-mdc-select-invalid]": "errorState",
    "[class.mat-mdc-select-required]": "required",
    "[class.mat-mdc-select-empty]": "empty",
    "[class.mat-mdc-select-multiple]": "multiple",
    "(keydown)": "_handleKeydown($event)",
    "(focus)": "_onFocus()",
    "(blur)": "_onBlur()"
  }, animations: [matSelectAnimations.transformPanel], providers: [
    { provide: MatFormFieldControl, useExisting: MatSelect },
    { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }
  ], standalone: true, imports: [CdkOverlayOrigin, CdkConnectedOverlay, NgClass], template: `<div cdk-overlay-origin
     class="mat-mdc-select-trigger"
     (click)="open()"
     #fallbackOverlayOrigin="cdkOverlayOrigin"
     #trigger>

  <div class="mat-mdc-select-value" [attr.id]="_valueId">
    @if (empty) {
      <span class="mat-mdc-select-placeholder mat-mdc-select-min-line">{{placeholder}}</span>
    } @else {
      <span class="mat-mdc-select-value-text">
        @if (customTrigger) {
          <ng-content select="mat-select-trigger"></ng-content>
        } @else {
          <span class="mat-mdc-select-min-line">{{triggerValue}}</span>
        }
      </span>
    }
  </div>

  <div class="mat-mdc-select-arrow-wrapper">
    <div class="mat-mdc-select-arrow">
      <!-- Use an inline SVG, because it works better than a CSS triangle in high contrast mode. -->
      <svg viewBox="0 0 24 24" width="24px" height="24px" focusable="false" aria-hidden="true">
        <path d="M7 10l5 5 5-5z"/>
      </svg>
    </div>
  </div>
</div>

<ng-template
  cdk-connected-overlay
  cdkConnectedOverlayLockPosition
  cdkConnectedOverlayHasBackdrop
  cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
  [cdkConnectedOverlayPanelClass]="_overlayPanelClass"
  [cdkConnectedOverlayScrollStrategy]="_scrollStrategy"
  [cdkConnectedOverlayOrigin]="_preferredOverlayOrigin || fallbackOverlayOrigin"
  [cdkConnectedOverlayOpen]="panelOpen"
  [cdkConnectedOverlayPositions]="_positions"
  [cdkConnectedOverlayWidth]="_overlayWidth"
  (backdropClick)="close()"
  (attach)="_onAttached()"
  (detach)="close()">
  <div
    #panel
    role="listbox"
    tabindex="-1"
    class="mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open {{ _getPanelTheme() }}"
    [attr.id]="id + '-panel'"
    [attr.aria-multiselectable]="multiple"
    [attr.aria-label]="ariaLabel || null"
    [attr.aria-labelledby]="_getPanelAriaLabelledby()"
    [ngClass]="panelClass"
    [@transformPanel]="'showing'"
    (@transformPanel.done)="_panelDoneAnimatingStream.next($event.toState)"
    (keydown)="_handleKeydown($event)">
    <ng-content></ng-content>
  </div>
</ng-template>
`, styles: ['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color);font-family:var(--mat-select-trigger-text-font);line-height:var(--mat-select-trigger-text-line-height);font-size:var(--mat-select-trigger-text-size);font-weight:var(--mat-select-trigger-text-weight);letter-spacing:var(--mat-select-trigger-text-tracking)}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color)}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color)}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color)}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform)}'] }]
}], ctorParameters: () => [{ type: ViewportRuler }, { type: ChangeDetectorRef }, { type: NgZone }, { type: ErrorStateMatcher }, { type: ElementRef }, { type: Directionality, decorators: [{
  type: Optional
}] }, { type: NgForm, decorators: [{
  type: Optional
}] }, { type: FormGroupDirective, decorators: [{
  type: Optional
}] }, { type: MatFormField, decorators: [{
  type: Optional
}, {
  type: Inject,
  args: [MAT_FORM_FIELD]
}] }, { type: NgControl, decorators: [{
  type: Self
}, {
  type: Optional
}] }, { type: void 0, decorators: [{
  type: Attribute,
  args: ["tabindex"]
}] }, { type: void 0, decorators: [{
  type: Inject,
  args: [MAT_SELECT_SCROLL_STRATEGY]
}] }, { type: LiveAnnouncer }, { type: void 0, decorators: [{
  type: Optional
}, {
  type: Inject,
  args: [MAT_SELECT_CONFIG]
}] }], propDecorators: { options: [{
  type: ContentChildren,
  args: [MatOption, { descendants: true }]
}], optionGroups: [{
  type: ContentChildren,
  args: [MAT_OPTGROUP, { descendants: true }]
}], customTrigger: [{
  type: ContentChild,
  args: [MAT_SELECT_TRIGGER]
}], userAriaDescribedBy: [{
  type: Input,
  args: ["aria-describedby"]
}], trigger: [{
  type: ViewChild,
  args: ["trigger"]
}], panel: [{
  type: ViewChild,
  args: ["panel"]
}], _overlayDir: [{
  type: ViewChild,
  args: [CdkConnectedOverlay]
}], panelClass: [{
  type: Input
}], disabled: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], disableRipple: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], tabIndex: [{
  type: Input,
  args: [{
    transform: (value) => value == null ? 0 : numberAttribute(value)
  }]
}], hideSingleSelectionIndicator: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], placeholder: [{
  type: Input
}], required: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], multiple: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], disableOptionCentering: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], compareWith: [{
  type: Input
}], value: [{
  type: Input
}], ariaLabel: [{
  type: Input,
  args: ["aria-label"]
}], ariaLabelledby: [{
  type: Input,
  args: ["aria-labelledby"]
}], errorStateMatcher: [{
  type: Input
}], typeaheadDebounceInterval: [{
  type: Input,
  args: [{ transform: numberAttribute }]
}], sortComparator: [{
  type: Input
}], id: [{
  type: Input
}], panelWidth: [{
  type: Input
}], openedChange: [{
  type: Output
}], _openedStream: [{
  type: Output,
  args: ["opened"]
}], _closedStream: [{
  type: Output,
  args: ["closed"]
}], selectionChange: [{
  type: Output
}], valueChange: [{
  type: Output
}] } });
var _MatSelectTrigger = class _MatSelectTrigger {
};
_MatSelectTrigger.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSelectTrigger, deps: [], target: FactoryTarget.Directive });
_MatSelectTrigger.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: _MatSelectTrigger, isStandalone: true, selector: "mat-select-trigger", providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: _MatSelectTrigger }], ngImport: core_exports });
var MatSelectTrigger = _MatSelectTrigger;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatSelectTrigger, decorators: [{
  type: Directive,
  args: [{
    selector: "mat-select-trigger",
    providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }],
    standalone: true
  }]
}] });
var _MatSelectModule = class _MatSelectModule {
};
_MatSelectModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSelectModule, deps: [], target: FactoryTarget.NgModule });
_MatSelectModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSelectModule, imports: [
  CommonModule,
  OverlayModule,
  MatOptionModule,
  MatCommonModule,
  MatSelect,
  MatSelectTrigger
], exports: [
  CdkScrollableModule,
  MatFormFieldModule,
  MatSelect,
  MatSelectTrigger,
  MatOptionModule,
  MatCommonModule
] });
_MatSelectModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSelectModule, providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [
  CommonModule,
  OverlayModule,
  MatOptionModule,
  MatCommonModule,
  CdkScrollableModule,
  MatFormFieldModule,
  MatOptionModule,
  MatCommonModule
] });
var MatSelectModule = _MatSelectModule;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatSelectModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [
      CommonModule,
      OverlayModule,
      MatOptionModule,
      MatCommonModule,
      MatSelect,
      MatSelectTrigger
    ],
    exports: [
      CdkScrollableModule,
      MatFormFieldModule,
      MatSelect,
      MatSelectTrigger,
      MatOptionModule,
      MatCommonModule
    ],
    providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]
  }]
}] });

// projects/aimmo-design-system/aim-select/src/aim-select.component.ts
var nextUniqueId2 = 0;
var AIM_SELECT_SCROLL_STRATEGY = new InjectionToken("aim-select-scroll-strategy");
function AIM_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {
  return () => overlay.scrollStrategies.reposition();
}
var AIM_SELECT_CONFIG = new InjectionToken("AIM_SELECT_CONFIG");
var AIM_SELECT_SCROLL_STRATEGY_PROVIDER = {
  provide: AIM_SELECT_SCROLL_STRATEGY,
  deps: [Overlay],
  useFactory: AIM_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY
};
var AimSelectChange = class {
  constructor(source, value) {
    this.source = source;
    this.value = value;
  }
};
var _a;
var AimSelectComponent = (_a = class extends MatSelect {
  constructor(overlayOrigin, selectContext, document2, viewportRuler, changeDetectorRef, ngZone, defaultErrorStateMatcher, elementRef, dir, parentForm, parentFormGroup, parentFormLayout, ngCtrl, tabIdx, scrollStrategyFactory, liveAnnouncer, defaultOptions) {
    super(viewportRuler, changeDetectorRef, ngZone, defaultErrorStateMatcher, elementRef, dir, parentForm, parentFormGroup, void 0, ngCtrl, tabIdx, scrollStrategyFactory, liveAnnouncer, defaultOptions);
    this.overlayOrigin = overlayOrigin;
    this.selectContext = selectContext;
    this.document = document2;
    this.viewportRuler = viewportRuler;
    this.changeDetectorRef = changeDetectorRef;
    this.ngZone = ngZone;
    this.defaultErrorStateMatcher = defaultErrorStateMatcher;
    this.elementRef = elementRef;
    this.dir = dir;
    this.parentForm = parentForm;
    this.parentFormGroup = parentFormGroup;
    this.parentFormLayout = parentFormLayout;
    this.ngCtrl = ngCtrl;
    this.tabIdx = tabIdx;
    this.scrollStrategyFactory = scrollStrategyFactory;
    this.liveAnnouncer = liveAnnouncer;
    this.defaultOptions = defaultOptions;
    this.controlType = "aim-select";
    this.selectSizeType = AimSelectFieldSize;
    this.overlayOffset = { x: 0, y: 0 };
    this.optionSelectionChanges = this.optionSelectionChangesAction();
    this.triggerAriaLabelledby = null;
    this._positions = [
      { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top" },
      { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom" },
      { originX: "end", originY: "bottom", overlayX: "end", overlayY: "top" }
    ];
    this._onChange = (value) => {
      return new AimSelectChange(this, value);
    };
    this.responsivePanel = false;
    this.ariaLabelledby = "";
    this.viewportChangeThrottleTime = 100;
    this.isSizeChanged = false;
    this.selectHeaderIcon = "";
    this.selectSize = this.selectSizeType.fill;
    this.parentContext = AimSelectContext.normal;
    this.fixedOptionHeight = null;
    this.updateSource = new Subject();
    this.initializeStatus();
  }
  get size() {
    return this.selectSize;
  }
  set size(value) {
    if (value !== this.selectSize) {
      this.selectSize = value;
      this.stateChanges.next(void 0);
    }
  }
  get headerIcon() {
    return this.selectHeaderIcon;
  }
  set headerIcon(value) {
    this.selectHeaderIcon = value;
    this.stateChanges.next(void 0);
  }
  get selectFieldWidth() {
    return this.context !== AimSelectContext.normal ? null : AimSelectFieldWidth[this.size];
  }
  get isTableContext() {
    return this.context === AimSelectContext.table;
  }
  get hasHeaderIcon() {
    return !!this.headerIcon;
  }
  get triggerIcon() {
    return this.panelOpen ? "chevron-up" : "chevron-down";
  }
  // TODO: 테마 변경이 필요한 경우 구현.
  get panelTheme() {
    return "";
  }
  get context() {
    return this.parentContext;
  }
  get optionHeight() {
    return this.fixedOptionHeight || this.triggerRect?.height;
  }
  /** TODO: 뷰포트에 따라 패널 크기 조정 필요하면 구현, 변경 중 이벤트 다량 발생 처리 필요할 수도... */
  get viewportChangeAction$() {
    return this.viewportRuler.change(this.viewportChangeThrottleTime).pipe(filter(() => this.panelOpen), tap(() => {
      this.triggerRect = this.getTriggerRect();
      this.changeDetectorRef.markForCheck();
      this.stateChanges.next(void 0);
    }));
  }
  get updateAction$() {
    return merge(this._openedStream, this.updateSource).pipe(tap(() => this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0)));
  }
  ngOnInit() {
    super.ngOnInit();
    this.initTriggerAriaLabelledby();
    forkJoin([
      this.viewportChangeAction$,
      this.updateAction$
    ]).pipe(takeUntil(this._destroy)).subscribe();
  }
  ngOnChanges(changes) {
    super.ngOnChanges(changes);
    if (changes.size) {
      this.isSizeChanged = changes.size.previousValue !== changes.size.currentValue;
    }
  }
  ngAfterContentInit() {
    super.ngAfterContentInit();
    if (!!this.customPanelTrigger) {
      this.fixedOptionHeight = SelectOptionHeight[this.context];
    }
  }
  ngAfterViewChecked() {
    if (this.panelOpen && this.isSizeChanged) {
      this.isSizeChanged = false;
      this.triggerRect = this.getTriggerRect();
      this.changeDetectorRef.detectChanges();
      this.updateSource.next();
    } else {
      this.isSizeChanged = false;
    }
    if (!!this.customPanelTrigger) {
      const size = this.size !== AimSelectFieldSize.fill ? this.size : AimSelectFieldSize.small;
      this.panelWidth = parseInt(AimSelectFieldWidth[size], 10);
    } else {
      this.panelWidth = this.triggerRect?.width;
    }
  }
  // TODO: 수정 이유 이력 추적 중 by Rex
  //  https://app.asana.com/0/1179494858925986/1203831553868817/f
  initTriggerAriaLabelledby() {
    this.triggerAriaLabelledby = this.ariaLabel ? null : `${this.parentFormLayout?.labelId || ""} ${this._valueId} ${this.ariaLabelledby}`.trim();
    this.changeDetectorRef.detectChanges();
  }
  panelAriaLabelledby() {
    if (this.ariaLabel) {
      return null;
    }
    const labelId = this.parentFormLayout?.labelId;
    return this.ariaLabelledby ? `${labelId} ${this.ariaLabelledby}`.trim() : labelId;
  }
  open() {
    this.triggerRect = this.getTriggerRect();
    super.open();
    if (this.empty) {
      this._keyManager.setActiveItem(-1);
    }
  }
  close() {
    super.close();
  }
  _scrollOptionIntoView(index) {
    const option = this.options.toArray()[index];
    if (!option) {
      return void 0;
    }
    const panel = this.panel.nativeElement;
    const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);
    const optionHeight = this.optionHeight;
    if (index === 0 && labelCount === 1) {
      panel.scrollTop = 0;
    } else {
      panel.scrollTop = _getOptionScrollPosition((index + labelCount) * optionHeight, optionHeight, panel.scrollTop, panel.offsetHeight);
    }
  }
  initializeStatus() {
    this.id = `aim-select-${nextUniqueId2++}`;
    this._valueId = `aim-select-value-${nextUniqueId2++}`;
    this.disableOptionCentering = true;
    this.disableRipple = true;
    this.parentContext = this.selectContext?.type || AimSelectContext.normal;
  }
  getTriggerRect() {
    return this.elementRef.nativeElement.getBoundingClientRect();
  }
  optionSelectionChangesAction() {
    return defer(() => {
      const options = this.options;
      if (!isNil_default(options) && options.length !== 0) {
        return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map((option) => option.onSelectionChange))), takeUntil(options.changes));
      }
      return this.ngZone.onStable.pipe(take(1), switchMap(() => this.optionSelectionChanges));
    });
  }
}, _a.ctorParameters = () => [
  { type: CdkOverlayOrigin },
  { type: AimSelectContext, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [AIM_SELECT_CONTEXT] }] },
  { type: void 0, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT] }] },
  { type: ViewportRuler },
  { type: ChangeDetectorRef },
  { type: NgZone },
  { type: ErrorStateMatcher },
  { type: ElementRef },
  { type: Directionality, decorators: [{ type: Optional }] },
  { type: NgForm, decorators: [{ type: Optional }] },
  { type: FormGroupDirective, decorators: [{ type: Optional }] },
  { type: AimFormLayoutComponent, decorators: [{ type: Optional }, { type: Inject, args: [AIM_FORM_LAYOUT] }] },
  { type: NgControl, decorators: [{ type: Self }, { type: Optional }] },
  { type: String, decorators: [{ type: Attribute, args: ["tabindex"] }] },
  { type: Function, decorators: [{ type: Inject, args: [AIM_SELECT_SCROLL_STRATEGY] }] },
  { type: LiveAnnouncer },
  { type: void 0, decorators: [{ type: Optional }, { type: Inject, args: [AIM_SELECT_CONFIG] }] }
], _a.propDecorators = {
  responsivePanel: [{ type: Input }],
  customPanelClass: [{ type: Input }],
  ariaLabelledby: [{ type: Input, args: ["aria-labelledby"] }],
  customPanelTrigger: [{ type: ContentChild, args: [AIM_SELECT_PANEL_TRIGGER] }],
  customTrigger: [{ type: ContentChild, args: [AIM_SELECT_TRIGGER] }],
  options: [{ type: ContentChildren, args: [AimOptionComponent, { descendants: true }] }],
  optionGroups: [{ type: ContentChildren, args: [AimOptgroupComponent, { descendants: true }] }],
  size: [{ type: Input }],
  headerIcon: [{ type: Input }],
  selectFieldWidth: [{ type: HostBinding, args: ["style.--select-field-width"] }]
}, _a);
AimSelectComponent = __decorate([
  Component({
    selector: "aim-select",
    template: aim_select_component_default,
    exportAs: "aimSelect",
    inputs: ["disabled", "disableRipple", "tabIndex"],
    hostDirectives: [CdkOverlayOrigin],
    changeDetection: ChangeDetectionStrategy.OnPush,
    host: {
      role: "combobox",
      "aria-autocomplete": "none",
      "aria-haspopup": "listbox",
      class: "aim-select aim-select-trigger",
      "[attr.id]": "id",
      "[attr.tabindex]": "tabIndex",
      "[attr.aria-owns]": 'panelOpen ? id + "-panel" : null',
      "[attr.aria-controls]": 'panelOpen ? id + "-panel" : null',
      "[attr.aria-expanded]": "panelOpen",
      "[attr.aria-label]": "ariaLabel || null",
      "[attr.aria-labelledby]": "triggerAriaLabelledby",
      "[attr.aria-required]": "required.toString()",
      "[attr.aria-disabled]": "disabled.toString()",
      "[attr.aria-invalid]": "errorState",
      "[attr.aria-activedescendant]": "_getAriaActiveDescendant()",
      "[class.aim-select--disabled]": "disabled",
      "[class.aim-select--active]": "panelOpen",
      "[class.aim-select--invalid]": "errorState",
      "[class.aim-select--required]": "required",
      "[class.aim-select--empty]": "empty",
      "[class.aim-select--multiple]": "multiple",
      "[class.table]": "isTableContext",
      "[class.fit-content]": "!!customPanelTrigger",
      "(keydown)": "_handleKeydown($event)",
      "(click)": "toggle()",
      "(focus)": "_onFocus()",
      "(blur)": "_onBlur()"
    },
    animations: [aimSelectAnimations.aimTransformPanel],
    providers: [
      { provide: AimFormLayoutControl, useExisting: AimSelectComponent },
      { provide: AIM_OPTION_PARENT_COMPONENT, useExisting: AimSelectComponent }
    ],
    styles: [aim_select_component_default2]
  })
], AimSelectComponent);

// projects/aimmo-design-system/aim-select/src/aim-select.module.ts
var AimSelectModule = class AimSelectModule2 {
};
AimSelectModule = __decorate([
  NgModule({
    declarations: [
      AimSelectComponent,
      AimSelectTrigger,
      AimSelectPanelTrigger
    ],
    imports: [
      AimIconComponent,
      OverlayModule,
      CdkConnectedOverlay,
      NgClass,
      NgIf
    ],
    exports: [
      AimSelectComponent,
      AimSelectTrigger,
      AimSelectPanelTrigger,
      AimOptionModule
    ],
    providers: [AIM_SELECT_SCROLL_STRATEGY_PROVIDER]
  })
], AimSelectModule);

// angular:jit:style:file:projects/aimmo-design-system/aim-tag-badge-noti/src/aim-tag-badge-noti.component.scss
var aim_tag_badge_noti_component_default = "/* projects/aimmo-design-system/aim-tag-badge-noti/src/aim-tag-badge-noti.component.scss */\n:host {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  background-color: #444444;\n  color: #ffffff;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 700;\n  font-size: 10px;\n  line-height: 12px;\n}\n:host.small {\n  min-width: 6px;\n  height: 12px;\n  padding: 0 2.695px;\n  border-radius: 6px;\n}\n:host.medium {\n  min-width: 8px;\n  height: 16px;\n  padding: 0 4px;\n  border-radius: 8px;\n}\n:host.update {\n  background-color: #de6251;\n}\n:host.processing {\n  background-color: #5683d9;\n}\n:host.disabled {\n  background-color: #222222;\n  color: #545454;\n}\n.aim-tag-badge-noti {\n  display: inherit;\n  font-style: normal;\n}\n.aim-tag-badge-noti:after {\n  content: attr(data-value);\n}\n";

// projects/aimmo-design-system/aim-tag-badge-noti/src/aim-tag-badge-noti.component.ts
var _a2;
var AimTagBadgeNotiComponent = (_a2 = class {
  constructor() {
    this.role = BadgeNotiRole.default;
    this.size = BadgeNotiSize.small;
  }
  get small() {
    return this.size === BadgeNotiSize.small;
  }
  get medium() {
    return this.size === BadgeNotiSize.medium;
  }
  get update() {
    return this.role === BadgeNotiRole.update;
  }
  get processing() {
    return this.role === BadgeNotiRole.processing;
  }
}, _a2.propDecorators = {
  value: [{ type: Input }],
  role: [{ type: Input }],
  size: [{ type: Input }],
  small: [{ type: HostBinding, args: ["class.small"] }],
  medium: [{ type: HostBinding, args: ["class.medium"] }],
  update: [{ type: HostBinding, args: ["class.update"] }],
  processing: [{ type: HostBinding, args: ["class.processing"] }]
}, _a2);
AimTagBadgeNotiComponent = __decorate([
  Component({
    standalone: true,
    imports: [CommonModule],
    selector: "aim-tag-badge-noti",
    template: '<i class="aim-tag-badge-noti" [attr.data-value]="value"></i>',
    styles: [aim_tag_badge_noti_component_default]
  })
], AimTagBadgeNotiComponent);

// angular:jit:template:file:projects/smart-curation-viewer/src/app/datasets/dataset-card/dataset-card.component.html
var dataset_card_component_default = `<aim-menu #menu="aimMenu" size="small">
  <button (click)="onDownloadDataset(dataset.datasetId)" aim-menu-item>Download</button>
  <button (click)="onDeleteDataset(dataset.datasetId)" aim-menu-item><span class="red-text">Delete</span></button>
</aim-menu>
<div class="header">
  <div class="name">
    <aim-icon icon="folder"/>
    <span class="ellipsis" [aimTooltipEllipsis]="dataset.datasetName">{{ dataset.datasetName }}</span>
  </div>
  <button aim-icon-button icon="more-vertical" [useActive]="false" [aimMenuTriggerFor]="menu" [disabled]="inValid"
          (click)="onClickCardMenu($event)"></button>
</div>
<aim-divider class="divider"/>
<div class="row">
  <div class="key">Status</div>
  <div class="value status" [ngClass]="dataset.status.toLowerCase()">
    <span class="dot"></span>
    <span>{{ dataset.status }}</span>
  </div>
</div>
<div class="row">
  <div class="key">Created Time</div>
  <div class="value">{{ dataset.createdAt | date:'yyyy.MM.dd HH:mm:ss' }}</div>
</div>
<div class="row">
  <div class="key">Applied Meta</div>
  <div class="value chips" [aimTooltip]="dataset.appliedMetas.join(', ')">
    @for (meta of dataset.appliedMetas; track $index) {
      <aim-tag-chip>{{ meta }}</aim-tag-chip>
    }
  </div>
</div>
<div class="row">
  <div class="key">Embedding Model</div>
  <div class="value">{{ dataset.embeddingModel }}</div>
</div>
<div class="row">
  <div class="key">Number of Files</div>
  <div class="value">{{ dataset.fileCount | number }}</div>
</div>
<div class="row">
  <div class="key">Dataset source</div>
  <div class="value ellipsis" [aimTooltipEllipsis]="dataset.datasetSource">{{ dataset.datasetSource }}</div>
</div>
`;

// angular:jit:style:file:projects/smart-curation-viewer/src/app/datasets/dataset-card/dataset-card.component.scss
var dataset_card_component_default2 = "/* projects/smart-curation-viewer/src/app/datasets/dataset-card/dataset-card.component.scss */\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 12px;\n  line-height: 14px;\n  padding: 24px;\n  border-radius: 4px;\n  border: 1px solid #333333;\n  background: #222222;\n  cursor: pointer;\n  width: 516px;\n}\n:host:hover {\n  border-color: #787878;\n}\n:host.inValid {\n  cursor: progress;\n}\n.header {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.header .name {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 700;\n  font-size: 14px;\n  line-height: 18px;\n  overflow: hidden;\n}\n.header .name > *:not(:last-child) {\n  margin-right: 4px;\n}\n.divider {\n  margin: 24px 0;\n}\n.row {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  height: 24px;\n}\n.row > *:not(:last-child) {\n  margin-right: 12px;\n}\n.row:not(:last-child) {\n  margin-bottom: 4px;\n}\n.row .key {\n  min-width: 100px;\n  color: #787878;\n}\n.row .value {\n  display: inline-block;\n}\n.row .value.status {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.row .value.status > *:not(:last-child) {\n  margin-right: 4px;\n}\n.row .value.status .dot {\n  width: 8px;\n  height: 8px;\n  border-radius: 8px;\n  margin-bottom: 2px;\n  margin-right: 8px;\n}\n.row .value.status.completed {\n  color: #49ab65;\n}\n.row .value.status.completed .dot {\n  background-color: #49ab65;\n}\n.row .value.status.processing {\n  color: #5683d9;\n}\n.row .value.status.processing .dot {\n  background-color: #5683d9;\n}\n.row .value.status.failed {\n  color: #de6251;\n}\n.row .value.status.failed .dot {\n  background-color: #de6251;\n}\n.row .value.chips {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  overflow-x: hidden;\n}\n.row .value.chips > *:not(:last-child) {\n  margin-right: 4px;\n}\n.ellipsis {\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n}\n.red-text {\n  color: #de6251;\n}\n";

// angular:jit:template:file:projects/aimmo-design-system/aim-menu/aim-menu-item/aim-menu-item.component.html
var aim_menu_item_component_default = '<div class="aim-menu-item__label">\n  <ng-content/>\n</div>\n<div [matRippleDisabled]="disableRipple || disabled" [matRippleTrigger]="_getHostElement()"\n     class="aim-menu-item--ripple"\n     matRipple>\n</div>\n\n<aim-icon *ngIf="_triggersSubmenu" class="aim-menu-item__submenu-icon" icon="chevron-right"/>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-menu/aim-menu-item/aim-menu-item.component.scss
var aim_menu_item_component_default2 = "/* projects/aimmo-design-system/aim-menu/aim-menu-item/aim-menu-item.component.scss */\n:host(.aim-menu-item) {\n  box-sizing: border-box;\n  outline: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  width: 100%;\n  min-height: 32px;\n  height: 32px;\n  padding: 0 16px;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  min-height: 0;\n  background-color: transparent;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  --mat-menu-item-label-text-color: #dfdfdf;\n  color: var(--mat-menu-item-label-text-color);\n  text-decoration: none;\n  overflow: hidden;\n  -webkit-user-select: none;\n  user-select: none;\n  cursor: pointer;\n  transition: background-color 0.1s linear;\n}\n:host(.aim-menu-item).table {\n  min-height: 24px;\n  height: 24px;\n  padding: 0 12px;\n}\n:host(.aim-menu-item):disabled,\n:host(.aim-menu-item).aim-menu-item--disabled {\n  --mat-menu-item-label-text-color: #545454;\n  cursor: not-allowed;\n}\n:host(.aim-menu-item).cdk-keyboard-focused:not([disabled]),\n:host(.aim-menu-item):hover:not(:disabled) {\n  border-color: #545454;\n  background: transparent;\n}\n:host(.aim-menu-item):active:not(:disabled) {\n  background-color: #444444;\n}\n:host(.aim-menu-item).aim-menu-item--selected:not(:disabled) {\n  background-color: #444444;\n}\n.aim-menu-item__label {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.aim-menu-item--ripple {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  pointer-events: none;\n}\n";

// node_modules/@angular/material/fesm2022/menu.mjs
var MAT_MENU_PANEL = new InjectionToken("MAT_MENU_PANEL");
var _MatMenuItem = class _MatMenuItem {
  constructor(_elementRef, _document, _focusMonitor, _parentMenu, _changeDetectorRef) {
    this._elementRef = _elementRef;
    this._document = _document;
    this._focusMonitor = _focusMonitor;
    this._parentMenu = _parentMenu;
    this._changeDetectorRef = _changeDetectorRef;
    this.role = "menuitem";
    this.disabled = false;
    this.disableRipple = false;
    this._hovered = new Subject();
    this._focused = new Subject();
    this._highlighted = false;
    this._triggersSubmenu = false;
    _parentMenu?.addItem?.(this);
  }
  /** Focuses the menu item. */
  focus(origin, options) {
    if (this._focusMonitor && origin) {
      this._focusMonitor.focusVia(this._getHostElement(), origin, options);
    } else {
      this._getHostElement().focus(options);
    }
    this._focused.next(this);
  }
  ngAfterViewInit() {
    if (this._focusMonitor) {
      this._focusMonitor.monitor(this._elementRef, false);
    }
  }
  ngOnDestroy() {
    if (this._focusMonitor) {
      this._focusMonitor.stopMonitoring(this._elementRef);
    }
    if (this._parentMenu && this._parentMenu.removeItem) {
      this._parentMenu.removeItem(this);
    }
    this._hovered.complete();
    this._focused.complete();
  }
  /** Used to set the `tabindex`. */
  _getTabIndex() {
    return this.disabled ? "-1" : "0";
  }
  /** Returns the host DOM element. */
  _getHostElement() {
    return this._elementRef.nativeElement;
  }
  /** Prevents the default element actions if it is disabled. */
  _checkDisabled(event) {
    if (this.disabled) {
      event.preventDefault();
      event.stopPropagation();
    }
  }
  /** Emits to the hover stream. */
  _handleMouseEnter() {
    this._hovered.next(this);
  }
  /** Gets the label to be used when determining whether the option should be focused. */
  getLabel() {
    const clone = this._elementRef.nativeElement.cloneNode(true);
    const icons = clone.querySelectorAll("mat-icon, .material-icons");
    for (let i2 = 0; i2 < icons.length; i2++) {
      icons[i2].remove();
    }
    return clone.textContent?.trim() || "";
  }
  _setHighlighted(isHighlighted) {
    this._highlighted = isHighlighted;
    this._changeDetectorRef?.markForCheck();
  }
  _setTriggersSubmenu(triggersSubmenu) {
    this._triggersSubmenu = triggersSubmenu;
    this._changeDetectorRef?.markForCheck();
  }
  _hasFocus() {
    return this._document && this._document.activeElement === this._getHostElement();
  }
};
_MatMenuItem.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenuItem, deps: [{ token: ElementRef }, { token: DOCUMENT }, { token: FocusMonitor }, { token: MAT_MENU_PANEL, optional: true }, { token: ChangeDetectorRef }], target: FactoryTarget.Component });
_MatMenuItem.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "17.0.0", version: "17.2.0", type: _MatMenuItem, isStandalone: true, selector: "[mat-menu-item]", inputs: { role: "role", disabled: ["disabled", "disabled", booleanAttribute], disableRipple: ["disableRipple", "disableRipple", booleanAttribute] }, host: { listeners: { "click": "_checkDisabled($event)", "mouseenter": "_handleMouseEnter()" }, properties: { "attr.role": "role", "class.mat-mdc-menu-item-highlighted": "_highlighted", "class.mat-mdc-menu-item-submenu-trigger": "_triggersSubmenu", "attr.tabindex": "_getTabIndex()", "attr.aria-disabled": "disabled", "attr.disabled": "disabled || null" }, classAttribute: "mat-mdc-menu-item mat-mdc-focus-indicator" }, exportAs: ["matMenuItem"], ngImport: core_exports, template: '<ng-content select="mat-icon, [matMenuItemIcon]"></ng-content>\n<span class="mat-mdc-menu-item-text"><ng-content></ng-content></span>\n<div class="mat-mdc-menu-ripple" matRipple\n     [matRippleDisabled]="disableRipple || disabled"\n     [matRippleTrigger]="_getHostElement()">\n</div>\n\n@if (_triggersSubmenu) {\n     <svg\n       class="mat-mdc-menu-submenu-icon"\n       viewBox="0 0 5 10"\n       focusable="false"\n       aria-hidden="true"><polygon points="0,0 5,5 0,10"/></svg>\n}\n', dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None });
var MatMenuItem = _MatMenuItem;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatMenuItem, decorators: [{
  type: Component,
  args: [{ selector: "[mat-menu-item]", exportAs: "matMenuItem", host: {
    "[attr.role]": "role",
    "class": "mat-mdc-menu-item mat-mdc-focus-indicator",
    "[class.mat-mdc-menu-item-highlighted]": "_highlighted",
    "[class.mat-mdc-menu-item-submenu-trigger]": "_triggersSubmenu",
    "[attr.tabindex]": "_getTabIndex()",
    "[attr.aria-disabled]": "disabled",
    "[attr.disabled]": "disabled || null",
    "(click)": "_checkDisabled($event)",
    "(mouseenter)": "_handleMouseEnter()"
  }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None, standalone: true, imports: [MatRipple], template: '<ng-content select="mat-icon, [matMenuItemIcon]"></ng-content>\n<span class="mat-mdc-menu-item-text"><ng-content></ng-content></span>\n<div class="mat-mdc-menu-ripple" matRipple\n     [matRippleDisabled]="disableRipple || disabled"\n     [matRippleTrigger]="_getHostElement()">\n</div>\n\n@if (_triggersSubmenu) {\n     <svg\n       class="mat-mdc-menu-submenu-icon"\n       viewBox="0 0 5 10"\n       focusable="false"\n       aria-hidden="true"><polygon points="0,0 5,5 0,10"/></svg>\n}\n' }]
}], ctorParameters: () => [{ type: ElementRef }, { type: void 0, decorators: [{
  type: Inject,
  args: [DOCUMENT]
}] }, { type: FocusMonitor }, { type: void 0, decorators: [{
  type: Inject,
  args: [MAT_MENU_PANEL]
}, {
  type: Optional
}] }, { type: ChangeDetectorRef }], propDecorators: { role: [{
  type: Input
}], disabled: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], disableRipple: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}] } });
function throwMatMenuInvalidPositionX() {
  throw Error(`xPosition value must be either 'before' or after'.
      Example: <mat-menu xPosition="before" #menu="matMenu"></mat-menu>`);
}
function throwMatMenuInvalidPositionY() {
  throw Error(`yPosition value must be either 'above' or below'.
      Example: <mat-menu yPosition="above" #menu="matMenu"></mat-menu>`);
}
function throwMatMenuRecursiveError() {
  throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is not a parent of the trigger or move the trigger outside of the menu.`);
}
var MAT_MENU_CONTENT = new InjectionToken("MatMenuContent");
var _MatMenuContent = class _MatMenuContent {
  constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {
    this._template = _template;
    this._componentFactoryResolver = _componentFactoryResolver;
    this._appRef = _appRef;
    this._injector = _injector;
    this._viewContainerRef = _viewContainerRef;
    this._document = _document;
    this._changeDetectorRef = _changeDetectorRef;
    this._attached = new Subject();
  }
  /**
   * Attaches the content with a particular context.
   * @docs-private
   */
  attach(context = {}) {
    if (!this._portal) {
      this._portal = new TemplatePortal(this._template, this._viewContainerRef);
    }
    this.detach();
    if (!this._outlet) {
      this._outlet = new DomPortalOutlet(this._document.createElement("div"), this._componentFactoryResolver, this._appRef, this._injector);
    }
    const element = this._template.elementRef.nativeElement;
    element.parentNode.insertBefore(this._outlet.outletElement, element);
    this._changeDetectorRef?.markForCheck();
    this._portal.attach(this._outlet, context);
    this._attached.next();
  }
  /**
   * Detaches the content.
   * @docs-private
   */
  detach() {
    if (this._portal.isAttached) {
      this._portal.detach();
    }
  }
  ngOnDestroy() {
    if (this._outlet) {
      this._outlet.dispose();
    }
  }
};
_MatMenuContent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenuContent, deps: [{ token: TemplateRef }, { token: ComponentFactoryResolver$1 }, { token: ApplicationRef }, { token: Injector }, { token: ViewContainerRef }, { token: DOCUMENT }, { token: ChangeDetectorRef }], target: FactoryTarget.Directive });
_MatMenuContent.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: _MatMenuContent, isStandalone: true, selector: "ng-template[matMenuContent]", providers: [{ provide: MAT_MENU_CONTENT, useExisting: _MatMenuContent }], ngImport: core_exports });
var MatMenuContent = _MatMenuContent;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatMenuContent, decorators: [{
  type: Directive,
  args: [{
    selector: "ng-template[matMenuContent]",
    providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }],
    standalone: true
  }]
}], ctorParameters: () => [{ type: TemplateRef }, { type: ComponentFactoryResolver$1 }, { type: ApplicationRef }, { type: Injector }, { type: ViewContainerRef }, { type: void 0, decorators: [{
  type: Inject,
  args: [DOCUMENT]
}] }, { type: ChangeDetectorRef }] });
var matMenuAnimations = {
  /**
   * This animation controls the menu panel's entry and exit from the page.
   *
   * When the menu panel is added to the DOM, it scales in and fades in its border.
   *
   * When the menu panel is removed from the DOM, it simply fades out after a brief
   * delay to display the ripple.
   */
  transformMenu: trigger("transformMenu", [
    state("void", style({
      opacity: 0,
      transform: "scale(0.8)"
    })),
    transition("void => enter", animate("120ms cubic-bezier(0, 0, 0.2, 1)", style({
      opacity: 1,
      transform: "scale(1)"
    }))),
    transition("* => void", animate("100ms 25ms linear", style({ opacity: 0 })))
  ]),
  /**
   * This animation fades in the background color and content of the menu panel
   * after its containing element is scaled in.
   */
  fadeInItems: trigger("fadeInItems", [
    // TODO(crisbeto): this is inside the `transformMenu`
    // now. Remove next time we do breaking changes.
    state("showing", style({ opacity: 1 })),
    transition("void => *", [
      style({ opacity: 0 }),
      animate("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")
    ])
  ])
};
var fadeInItems = matMenuAnimations.fadeInItems;
var transformMenu = matMenuAnimations.transformMenu;
var menuPanelUid = 0;
var MAT_MENU_DEFAULT_OPTIONS = new InjectionToken("mat-menu-default-options", {
  providedIn: "root",
  factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY
});
function MAT_MENU_DEFAULT_OPTIONS_FACTORY() {
  return {
    overlapTrigger: false,
    xPosition: "after",
    yPosition: "below",
    backdropClass: "cdk-overlay-transparent-backdrop"
  };
}
var _MatMenu = class _MatMenu {
  /** Position of the menu in the X axis. */
  get xPosition() {
    return this._xPosition;
  }
  set xPosition(value) {
    if (value !== "before" && value !== "after" && (typeof ngDevMode === "undefined" || ngDevMode)) {
      throwMatMenuInvalidPositionX();
    }
    this._xPosition = value;
    this.setPositionClasses();
  }
  /** Position of the menu in the Y axis. */
  get yPosition() {
    return this._yPosition;
  }
  set yPosition(value) {
    if (value !== "above" && value !== "below" && (typeof ngDevMode === "undefined" || ngDevMode)) {
      throwMatMenuInvalidPositionY();
    }
    this._yPosition = value;
    this.setPositionClasses();
  }
  /**
   * This method takes classes set on the host mat-menu element and applies them on the
   * menu template that displays in the overlay container.  Otherwise, it's difficult
   * to style the containing menu from outside the component.
   * @param classes list of class names
   */
  set panelClass(classes) {
    const previousPanelClass = this._previousPanelClass;
    const newClassList = __spreadValues({}, this._classList);
    if (previousPanelClass && previousPanelClass.length) {
      previousPanelClass.split(" ").forEach((className) => {
        newClassList[className] = false;
      });
    }
    this._previousPanelClass = classes;
    if (classes && classes.length) {
      classes.split(" ").forEach((className) => {
        newClassList[className] = true;
      });
      this._elementRef.nativeElement.className = "";
    }
    this._classList = newClassList;
  }
  /**
   * This method takes classes set on the host mat-menu element and applies them on the
   * menu template that displays in the overlay container.  Otherwise, it's difficult
   * to style the containing menu from outside the component.
   * @deprecated Use `panelClass` instead.
   * @breaking-change 8.0.0
   */
  get classList() {
    return this.panelClass;
  }
  set classList(classes) {
    this.panelClass = classes;
  }
  constructor(_elementRef, _ngZone, defaultOptions, _changeDetectorRef) {
    this._elementRef = _elementRef;
    this._ngZone = _ngZone;
    this._changeDetectorRef = _changeDetectorRef;
    this._elevationPrefix = "mat-elevation-z";
    this._baseElevation = 8;
    this._directDescendantItems = new QueryList();
    this._classList = {};
    this._panelAnimationState = "void";
    this._animationDone = new Subject();
    this.closed = new EventEmitter();
    this.close = this.closed;
    this.panelId = `mat-menu-panel-${menuPanelUid++}`;
    this.overlayPanelClass = defaultOptions.overlayPanelClass || "";
    this._xPosition = defaultOptions.xPosition;
    this._yPosition = defaultOptions.yPosition;
    this.backdropClass = defaultOptions.backdropClass;
    this.overlapTrigger = defaultOptions.overlapTrigger;
    this.hasBackdrop = defaultOptions.hasBackdrop;
  }
  ngOnInit() {
    this.setPositionClasses();
  }
  ngAfterContentInit() {
    this._updateDirectDescendants();
    this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd();
    this._keyManager.tabOut.subscribe(() => this.closed.emit("tab"));
    this._directDescendantItems.changes.pipe(startWith(this._directDescendantItems), switchMap((items) => merge(...items.map((item) => item._focused)))).subscribe((focusedItem) => this._keyManager.updateActiveItem(focusedItem));
    this._directDescendantItems.changes.subscribe((itemsList) => {
      const manager = this._keyManager;
      if (this._panelAnimationState === "enter" && manager.activeItem?._hasFocus()) {
        const items = itemsList.toArray();
        const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));
        if (items[index] && !items[index].disabled) {
          manager.setActiveItem(index);
        } else {
          manager.setNextItemActive();
        }
      }
    });
  }
  ngOnDestroy() {
    this._keyManager?.destroy();
    this._directDescendantItems.destroy();
    this.closed.complete();
    this._firstItemFocusSubscription?.unsubscribe();
  }
  /** Stream that emits whenever the hovered menu item changes. */
  _hovered() {
    const itemChanges = this._directDescendantItems.changes;
    return itemChanges.pipe(startWith(this._directDescendantItems), switchMap((items) => merge(...items.map((item) => item._hovered))));
  }
  /*
   * Registers a menu item with the menu.
   * @docs-private
   * @deprecated No longer being used. To be removed.
   * @breaking-change 9.0.0
   */
  addItem(_item) {
  }
  /**
   * Removes an item from the menu.
   * @docs-private
   * @deprecated No longer being used. To be removed.
   * @breaking-change 9.0.0
   */
  removeItem(_item) {
  }
  /** Handle a keyboard event from the menu, delegating to the appropriate action. */
  _handleKeydown(event) {
    const keyCode = event.keyCode;
    const manager = this._keyManager;
    switch (keyCode) {
      case ESCAPE:
        if (!hasModifierKey(event)) {
          event.preventDefault();
          this.closed.emit("keydown");
        }
        break;
      case LEFT_ARROW:
        if (this.parentMenu && this.direction === "ltr") {
          this.closed.emit("keydown");
        }
        break;
      case RIGHT_ARROW:
        if (this.parentMenu && this.direction === "rtl") {
          this.closed.emit("keydown");
        }
        break;
      default:
        if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {
          manager.setFocusOrigin("keyboard");
        }
        manager.onKeydown(event);
        return;
    }
    event.stopPropagation();
  }
  /**
   * Focus the first item in the menu.
   * @param origin Action from which the focus originated. Used to set the correct styling.
   */
  focusFirstItem(origin = "program") {
    this._firstItemFocusSubscription?.unsubscribe();
    this._firstItemFocusSubscription = this._ngZone.onStable.pipe(take(1)).subscribe(() => {
      let menuPanel = null;
      if (this._directDescendantItems.length) {
        menuPanel = this._directDescendantItems.first._getHostElement().closest('[role="menu"]');
      }
      if (!menuPanel || !menuPanel.contains(document.activeElement)) {
        const manager = this._keyManager;
        manager.setFocusOrigin(origin).setFirstItemActive();
        if (!manager.activeItem && menuPanel) {
          menuPanel.focus();
        }
      }
    });
  }
  /**
   * Resets the active item in the menu. This is used when the menu is opened, allowing
   * the user to start from the first option when pressing the down arrow.
   */
  resetActiveItem() {
    this._keyManager.setActiveItem(-1);
  }
  /**
   * Sets the menu panel elevation.
   * @param depth Number of parent menus that come before the menu.
   */
  setElevation(depth) {
    const elevation = Math.min(this._baseElevation + depth, 24);
    const newElevation = `${this._elevationPrefix}${elevation}`;
    const customElevation = Object.keys(this._classList).find((className) => {
      return className.startsWith(this._elevationPrefix);
    });
    if (!customElevation || customElevation === this._previousElevation) {
      const newClassList = __spreadValues({}, this._classList);
      if (this._previousElevation) {
        newClassList[this._previousElevation] = false;
      }
      newClassList[newElevation] = true;
      this._previousElevation = newElevation;
      this._classList = newClassList;
    }
  }
  /**
   * Adds classes to the menu panel based on its position. Can be used by
   * consumers to add specific styling based on the position.
   * @param posX Position of the menu along the x axis.
   * @param posY Position of the menu along the y axis.
   * @docs-private
   */
  setPositionClasses(posX = this.xPosition, posY = this.yPosition) {
    this._classList = __spreadProps(__spreadValues({}, this._classList), {
      ["mat-menu-before"]: posX === "before",
      ["mat-menu-after"]: posX === "after",
      ["mat-menu-above"]: posY === "above",
      ["mat-menu-below"]: posY === "below"
    });
    this._changeDetectorRef?.markForCheck();
  }
  /** Starts the enter animation. */
  _startAnimation() {
    this._panelAnimationState = "enter";
  }
  /** Resets the panel animation to its initial state. */
  _resetAnimation() {
    this._panelAnimationState = "void";
  }
  /** Callback that is invoked when the panel animation completes. */
  _onAnimationDone(event) {
    this._animationDone.next(event);
    this._isAnimating = false;
  }
  _onAnimationStart(event) {
    this._isAnimating = true;
    if (event.toState === "enter" && this._keyManager.activeItemIndex === 0) {
      event.element.scrollTop = 0;
    }
  }
  /**
   * Sets up a stream that will keep track of any newly-added menu items and will update the list
   * of direct descendants. We collect the descendants this way, because `_allItems` can include
   * items that are part of child menus, and using a custom way of registering items is unreliable
   * when it comes to maintaining the item order.
   */
  _updateDirectDescendants() {
    this._allItems.changes.pipe(startWith(this._allItems)).subscribe((items) => {
      this._directDescendantItems.reset(items.filter((item) => item._parentMenu === this));
      this._directDescendantItems.notifyOnChanges();
    });
  }
};
_MatMenu.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenu, deps: [{ token: ElementRef }, { token: NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: ChangeDetectorRef }], target: FactoryTarget.Component });
_MatMenu.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "16.1.0", version: "17.2.0", type: _MatMenu, isStandalone: true, selector: "mat-menu", inputs: { backdropClass: "backdropClass", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], xPosition: "xPosition", yPosition: "yPosition", overlapTrigger: ["overlapTrigger", "overlapTrigger", booleanAttribute], hasBackdrop: ["hasBackdrop", "hasBackdrop", (value) => value == null ? null : booleanAttribute(value)], panelClass: ["class", "panelClass"], classList: "classList" }, outputs: { closed: "closed", close: "close" }, host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: _MatMenu }], queries: [{ propertyName: "lazyContent", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: "_allItems", predicate: MatMenuItem, descendants: true }, { propertyName: "items", predicate: MatMenuItem }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["matMenu"], ngImport: core_exports, template: `<ng-template>
  <div
    class="mat-mdc-menu-panel mat-mdc-elevation-specific"
    [id]="panelId"
    [class]="_classList"
    (keydown)="_handleKeydown($event)"
    (click)="closed.emit('click')"
    [@transformMenu]="_panelAnimationState"
    (@transformMenu.start)="_onAnimationStart($event)"
    (@transformMenu.done)="_onAnimationDone($event)"
    tabindex="-1"
    role="menu"
    [attr.aria-label]="ariaLabel || null"
    [attr.aria-labelledby]="ariaLabelledby || null"
    [attr.aria-describedby]="ariaDescribedby || null">
    <div class="mat-mdc-menu-content">
      <ng-content></ng-content>
    </div>
  </div>
</ng-template>
`, styles: ['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font);line-height:var(--mat-menu-item-label-text-line-height);font-size:var(--mat-menu-item-label-text-size);letter-spacing:var(--mat-menu-item-label-text-tracking);font-weight:var(--mat-menu-item-label-text-weight)}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape);background-color:var(--mat-menu-container-color);will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-divider{color:var(--mat-menu-divider-color);margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;align-items:center;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:var(--mat-menu-item-trailing-spacing);padding-right:var(--mat-menu-item-leading-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]),.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon])[dir=rtl]{padding-left:var(--mat-menu-item-with-icon-trailing-spacing);padding-right:var(--mat-menu-item-with-icon-leading-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color)}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color)}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None });
var MatMenu = _MatMenu;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatMenu, decorators: [{
  type: Component,
  args: [{ selector: "mat-menu", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None, exportAs: "matMenu", host: {
    "[attr.aria-label]": "null",
    "[attr.aria-labelledby]": "null",
    "[attr.aria-describedby]": "null"
  }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], standalone: true, template: `<ng-template>
  <div
    class="mat-mdc-menu-panel mat-mdc-elevation-specific"
    [id]="panelId"
    [class]="_classList"
    (keydown)="_handleKeydown($event)"
    (click)="closed.emit('click')"
    [@transformMenu]="_panelAnimationState"
    (@transformMenu.start)="_onAnimationStart($event)"
    (@transformMenu.done)="_onAnimationDone($event)"
    tabindex="-1"
    role="menu"
    [attr.aria-label]="ariaLabel || null"
    [attr.aria-labelledby]="ariaLabelledby || null"
    [attr.aria-describedby]="ariaDescribedby || null">
    <div class="mat-mdc-menu-content">
      <ng-content></ng-content>
    </div>
  </div>
</ng-template>
`, styles: ['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font);line-height:var(--mat-menu-item-label-text-line-height);font-size:var(--mat-menu-item-label-text-size);letter-spacing:var(--mat-menu-item-label-text-tracking);font-weight:var(--mat-menu-item-label-text-weight)}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape);background-color:var(--mat-menu-container-color);will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-divider{color:var(--mat-menu-divider-color);margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;align-items:center;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:var(--mat-menu-item-trailing-spacing);padding-right:var(--mat-menu-item-leading-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]),.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon])[dir=rtl]{padding-left:var(--mat-menu-item-with-icon-trailing-spacing);padding-right:var(--mat-menu-item-with-icon-leading-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color)}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color)}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'] }]
}], ctorParameters: () => [{ type: ElementRef }, { type: NgZone }, { type: void 0, decorators: [{
  type: Inject,
  args: [MAT_MENU_DEFAULT_OPTIONS]
}] }, { type: ChangeDetectorRef }], propDecorators: { _allItems: [{
  type: ContentChildren,
  args: [MatMenuItem, { descendants: true }]
}], backdropClass: [{
  type: Input
}], ariaLabel: [{
  type: Input,
  args: ["aria-label"]
}], ariaLabelledby: [{
  type: Input,
  args: ["aria-labelledby"]
}], ariaDescribedby: [{
  type: Input,
  args: ["aria-describedby"]
}], xPosition: [{
  type: Input
}], yPosition: [{
  type: Input
}], templateRef: [{
  type: ViewChild,
  args: [TemplateRef]
}], items: [{
  type: ContentChildren,
  args: [MatMenuItem, { descendants: false }]
}], lazyContent: [{
  type: ContentChild,
  args: [MAT_MENU_CONTENT]
}], overlapTrigger: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], hasBackdrop: [{
  type: Input,
  args: [{ transform: (value) => value == null ? null : booleanAttribute(value) }]
}], panelClass: [{
  type: Input,
  args: ["class"]
}], classList: [{
  type: Input
}], closed: [{
  type: Output
}], close: [{
  type: Output
}] } });
var MAT_MENU_SCROLL_STRATEGY = new InjectionToken("mat-menu-scroll-strategy", {
  providedIn: "root",
  factory: () => {
    const overlay = inject(Overlay);
    return () => overlay.scrollStrategies.reposition();
  }
});
function MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {
  return () => overlay.scrollStrategies.reposition();
}
var MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {
  provide: MAT_MENU_SCROLL_STRATEGY,
  deps: [Overlay],
  useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY
};
var passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });
var _MatMenuTrigger = class _MatMenuTrigger {
  /**
   * @deprecated
   * @breaking-change 8.0.0
   */
  get _deprecatedMatMenuTriggerFor() {
    return this.menu;
  }
  set _deprecatedMatMenuTriggerFor(v2) {
    this.menu = v2;
  }
  /** References the menu instance that the trigger is associated with. */
  get menu() {
    return this._menu;
  }
  set menu(menu) {
    if (menu === this._menu) {
      return;
    }
    this._menu = menu;
    this._menuCloseSubscription.unsubscribe();
    if (menu) {
      if (menu === this._parentMaterialMenu && (typeof ngDevMode === "undefined" || ngDevMode)) {
        throwMatMenuRecursiveError();
      }
      this._menuCloseSubscription = menu.close.subscribe((reason) => {
        this._destroyMenu(reason);
        if ((reason === "click" || reason === "tab") && this._parentMaterialMenu) {
          this._parentMaterialMenu.closed.emit(reason);
        }
      });
    }
    this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu());
  }
  constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu, _menuItemInstance, _dir, _focusMonitor, _ngZone) {
    this._overlay = _overlay;
    this._element = _element;
    this._viewContainerRef = _viewContainerRef;
    this._menuItemInstance = _menuItemInstance;
    this._dir = _dir;
    this._focusMonitor = _focusMonitor;
    this._ngZone = _ngZone;
    this._overlayRef = null;
    this._menuOpen = false;
    this._closingActionsSubscription = Subscription.EMPTY;
    this._hoverSubscription = Subscription.EMPTY;
    this._menuCloseSubscription = Subscription.EMPTY;
    this._changeDetectorRef = inject(ChangeDetectorRef);
    this._handleTouchStart = (event) => {
      if (!isFakeTouchstartFromScreenReader(event)) {
        this._openedBy = "touch";
      }
    };
    this._openedBy = void 0;
    this.restoreFocus = true;
    this.menuOpened = new EventEmitter();
    this.onMenuOpen = this.menuOpened;
    this.menuClosed = new EventEmitter();
    this.onMenuClose = this.menuClosed;
    this._scrollStrategy = scrollStrategy;
    this._parentMaterialMenu = parentMenu instanceof MatMenu ? parentMenu : void 0;
    _element.nativeElement.addEventListener("touchstart", this._handleTouchStart, passiveEventListenerOptions);
  }
  ngAfterContentInit() {
    this._handleHover();
  }
  ngOnDestroy() {
    if (this._overlayRef) {
      this._overlayRef.dispose();
      this._overlayRef = null;
    }
    this._element.nativeElement.removeEventListener("touchstart", this._handleTouchStart, passiveEventListenerOptions);
    this._menuCloseSubscription.unsubscribe();
    this._closingActionsSubscription.unsubscribe();
    this._hoverSubscription.unsubscribe();
  }
  /** Whether the menu is open. */
  get menuOpen() {
    return this._menuOpen;
  }
  /** The text direction of the containing app. */
  get dir() {
    return this._dir && this._dir.value === "rtl" ? "rtl" : "ltr";
  }
  /** Whether the menu triggers a sub-menu or a top-level one. */
  triggersSubmenu() {
    return !!(this._menuItemInstance && this._parentMaterialMenu && this.menu);
  }
  /** Toggles the menu between the open and closed states. */
  toggleMenu() {
    return this._menuOpen ? this.closeMenu() : this.openMenu();
  }
  /** Opens the menu. */
  openMenu() {
    const menu = this.menu;
    if (this._menuOpen || !menu) {
      return;
    }
    const overlayRef = this._createOverlay(menu);
    const overlayConfig = overlayRef.getConfig();
    const positionStrategy = overlayConfig.positionStrategy;
    this._setPosition(menu, positionStrategy);
    overlayConfig.hasBackdrop = menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop;
    overlayRef.attach(this._getPortal(menu));
    if (menu.lazyContent) {
      menu.lazyContent.attach(this.menuData);
    }
    this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());
    this._initMenu(menu);
    if (menu instanceof MatMenu) {
      menu._startAnimation();
      menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {
        positionStrategy.withLockedPosition(false).reapplyLastPosition();
        positionStrategy.withLockedPosition(true);
      });
    }
  }
  /** Closes the menu. */
  closeMenu() {
    this.menu?.close.emit();
  }
  /**
   * Focuses the menu trigger.
   * @param origin Source of the menu trigger's focus.
   */
  focus(origin, options) {
    if (this._focusMonitor && origin) {
      this._focusMonitor.focusVia(this._element, origin, options);
    } else {
      this._element.nativeElement.focus(options);
    }
  }
  /**
   * Updates the position of the menu to ensure that it fits all options within the viewport.
   */
  updatePosition() {
    this._overlayRef?.updatePosition();
  }
  /** Closes the menu and does the necessary cleanup. */
  _destroyMenu(reason) {
    if (!this._overlayRef || !this.menuOpen) {
      return;
    }
    const menu = this.menu;
    this._closingActionsSubscription.unsubscribe();
    this._overlayRef.detach();
    if (this.restoreFocus && (reason === "keydown" || !this._openedBy || !this.triggersSubmenu())) {
      this.focus(this._openedBy);
    }
    this._openedBy = void 0;
    if (menu instanceof MatMenu) {
      menu._resetAnimation();
      if (menu.lazyContent) {
        menu._animationDone.pipe(
          filter((event) => event.toState === "void"),
          take(1),
          // Interrupt if the content got re-attached.
          takeUntil(menu.lazyContent._attached)
        ).subscribe({
          next: () => menu.lazyContent.detach(),
          // No matter whether the content got re-attached, reset the menu.
          complete: () => this._setIsMenuOpen(false)
        });
      } else {
        this._setIsMenuOpen(false);
      }
    } else {
      this._setIsMenuOpen(false);
      menu?.lazyContent?.detach();
    }
  }
  /**
   * This method sets the menu state to open and focuses the first item if
   * the menu was opened via the keyboard.
   */
  _initMenu(menu) {
    menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : void 0;
    menu.direction = this.dir;
    this._setMenuElevation(menu);
    menu.focusFirstItem(this._openedBy || "program");
    this._setIsMenuOpen(true);
  }
  /** Updates the menu elevation based on the amount of parent menus that it has. */
  _setMenuElevation(menu) {
    if (menu.setElevation) {
      let depth = 0;
      let parentMenu = menu.parentMenu;
      while (parentMenu) {
        depth++;
        parentMenu = parentMenu.parentMenu;
      }
      menu.setElevation(depth);
    }
  }
  // set state rather than toggle to support triggers sharing a menu
  _setIsMenuOpen(isOpen) {
    if (isOpen !== this._menuOpen) {
      this._menuOpen = isOpen;
      this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();
      if (this.triggersSubmenu()) {
        this._menuItemInstance._setHighlighted(isOpen);
      }
      this._changeDetectorRef.markForCheck();
    }
  }
  /**
   * This method creates the overlay from the provided menu's template and saves its
   * OverlayRef so that it can be attached to the DOM when openMenu is called.
   */
  _createOverlay(menu) {
    if (!this._overlayRef) {
      const config = this._getOverlayConfig(menu);
      this._subscribeToPositions(menu, config.positionStrategy);
      this._overlayRef = this._overlay.create(config);
      this._overlayRef.keydownEvents().subscribe();
    }
    return this._overlayRef;
  }
  /**
   * This method builds the configuration object needed to create the overlay, the OverlayState.
   * @returns OverlayConfig
   */
  _getOverlayConfig(menu) {
    return new OverlayConfig({
      positionStrategy: this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),
      backdropClass: menu.backdropClass || "cdk-overlay-transparent-backdrop",
      panelClass: menu.overlayPanelClass,
      scrollStrategy: this._scrollStrategy(),
      direction: this._dir
    });
  }
  /**
   * Listens to changes in the position of the overlay and sets the correct classes
   * on the menu based on the new position. This ensures the animation origin is always
   * correct, even if a fallback position is used for the overlay.
   */
  _subscribeToPositions(menu, position) {
    if (menu.setPositionClasses) {
      position.positionChanges.subscribe((change) => {
        const posX = change.connectionPair.overlayX === "start" ? "after" : "before";
        const posY = change.connectionPair.overlayY === "top" ? "below" : "above";
        if (this._ngZone) {
          this._ngZone.run(() => menu.setPositionClasses(posX, posY));
        } else {
          menu.setPositionClasses(posX, posY);
        }
      });
    }
  }
  /**
   * Sets the appropriate positions on a position strategy
   * so the overlay connects with the trigger correctly.
   * @param positionStrategy Strategy whose position to update.
   */
  _setPosition(menu, positionStrategy) {
    let [originX, originFallbackX] = menu.xPosition === "before" ? ["end", "start"] : ["start", "end"];
    let [overlayY, overlayFallbackY] = menu.yPosition === "above" ? ["bottom", "top"] : ["top", "bottom"];
    let [originY, originFallbackY] = [overlayY, overlayFallbackY];
    let [overlayX, overlayFallbackX] = [originX, originFallbackX];
    let offsetY = 0;
    if (this.triggersSubmenu()) {
      overlayFallbackX = originX = menu.xPosition === "before" ? "start" : "end";
      originFallbackX = overlayX = originX === "end" ? "start" : "end";
      if (this._parentMaterialMenu) {
        if (this._parentInnerPadding == null) {
          const firstItem = this._parentMaterialMenu.items.first;
          this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;
        }
        offsetY = overlayY === "bottom" ? this._parentInnerPadding : -this._parentInnerPadding;
      }
    } else if (!menu.overlapTrigger) {
      originY = overlayY === "top" ? "bottom" : "top";
      originFallbackY = overlayFallbackY === "top" ? "bottom" : "top";
    }
    positionStrategy.withPositions([
      { originX, originY, overlayX, overlayY, offsetY },
      { originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY },
      {
        originX,
        originY: originFallbackY,
        overlayX,
        overlayY: overlayFallbackY,
        offsetY: -offsetY
      },
      {
        originX: originFallbackX,
        originY: originFallbackY,
        overlayX: overlayFallbackX,
        overlayY: overlayFallbackY,
        offsetY: -offsetY
      }
    ]);
  }
  /** Returns a stream that emits whenever an action that should close the menu occurs. */
  _menuClosingActions() {
    const backdrop = this._overlayRef.backdropClick();
    const detachments = this._overlayRef.detachments();
    const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();
    const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter((active) => active !== this._menuItemInstance), filter(() => this._menuOpen)) : of();
    return merge(backdrop, parentClose, hover, detachments);
  }
  /** Handles mouse presses on the trigger. */
  _handleMousedown(event) {
    if (!isFakeMousedownFromScreenReader(event)) {
      this._openedBy = event.button === 0 ? "mouse" : void 0;
      if (this.triggersSubmenu()) {
        event.preventDefault();
      }
    }
  }
  /** Handles key presses on the trigger. */
  _handleKeydown(event) {
    const keyCode = event.keyCode;
    if (keyCode === ENTER || keyCode === SPACE) {
      this._openedBy = "keyboard";
    }
    if (this.triggersSubmenu() && (keyCode === RIGHT_ARROW && this.dir === "ltr" || keyCode === LEFT_ARROW && this.dir === "rtl")) {
      this._openedBy = "keyboard";
      this.openMenu();
    }
  }
  /** Handles click events on the trigger. */
  _handleClick(event) {
    if (this.triggersSubmenu()) {
      event.stopPropagation();
      this.openMenu();
    } else {
      this.toggleMenu();
    }
  }
  /** Handles the cases where the user hovers over the trigger. */
  _handleHover() {
    if (!this.triggersSubmenu() || !this._parentMaterialMenu) {
      return;
    }
    this._hoverSubscription = this._parentMaterialMenu._hovered().pipe(filter((active) => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler)).subscribe(() => {
      this._openedBy = "mouse";
      if (this.menu instanceof MatMenu && this.menu._isAnimating) {
        this.menu._animationDone.pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered())).subscribe(() => this.openMenu());
      } else {
        this.openMenu();
      }
    });
  }
  /** Gets the portal that should be attached to the overlay. */
  _getPortal(menu) {
    if (!this._portal || this._portal.templateRef !== menu.templateRef) {
      this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);
    }
    return this._portal;
  }
};
_MatMenuTrigger.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenuTrigger, deps: [{ token: Overlay }, { token: ElementRef }, { token: ViewContainerRef }, { token: MAT_MENU_SCROLL_STRATEGY }, { token: MAT_MENU_PANEL, optional: true }, { token: MatMenuItem, optional: true, self: true }, { token: Directionality, optional: true }, { token: FocusMonitor }, { token: NgZone }], target: FactoryTarget.Directive });
_MatMenuTrigger.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: _MatMenuTrigger, isStandalone: true, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: { _deprecatedMatMenuTriggerFor: ["mat-menu-trigger-for", "_deprecatedMatMenuTriggerFor"], menu: ["matMenuTriggerFor", "menu"], menuData: ["matMenuTriggerData", "menuData"], restoreFocus: ["matMenuTriggerRestoreFocus", "restoreFocus"] }, outputs: { menuOpened: "menuOpened", onMenuOpen: "onMenuOpen", menuClosed: "menuClosed", onMenuClose: "onMenuClose" }, host: { listeners: { "click": "_handleClick($event)", "mousedown": "_handleMousedown($event)", "keydown": "_handleKeydown($event)" }, properties: { "attr.aria-haspopup": 'menu ? "menu" : null', "attr.aria-expanded": "menuOpen", "attr.aria-controls": "menuOpen ? menu.panelId : null" }, classAttribute: "mat-mdc-menu-trigger" }, exportAs: ["matMenuTrigger"], ngImport: core_exports });
var MatMenuTrigger = _MatMenuTrigger;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatMenuTrigger, decorators: [{
  type: Directive,
  args: [{
    selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,
    host: {
      "class": "mat-mdc-menu-trigger",
      "[attr.aria-haspopup]": 'menu ? "menu" : null',
      "[attr.aria-expanded]": "menuOpen",
      "[attr.aria-controls]": "menuOpen ? menu.panelId : null",
      "(click)": "_handleClick($event)",
      "(mousedown)": "_handleMousedown($event)",
      "(keydown)": "_handleKeydown($event)"
    },
    exportAs: "matMenuTrigger",
    standalone: true
  }]
}], ctorParameters: () => [{ type: Overlay }, { type: ElementRef }, { type: ViewContainerRef }, { type: void 0, decorators: [{
  type: Inject,
  args: [MAT_MENU_SCROLL_STRATEGY]
}] }, { type: void 0, decorators: [{
  type: Inject,
  args: [MAT_MENU_PANEL]
}, {
  type: Optional
}] }, { type: MatMenuItem, decorators: [{
  type: Optional
}, {
  type: Self
}] }, { type: Directionality, decorators: [{
  type: Optional
}] }, { type: FocusMonitor }, { type: NgZone }], propDecorators: { _deprecatedMatMenuTriggerFor: [{
  type: Input,
  args: ["mat-menu-trigger-for"]
}], menu: [{
  type: Input,
  args: ["matMenuTriggerFor"]
}], menuData: [{
  type: Input,
  args: ["matMenuTriggerData"]
}], restoreFocus: [{
  type: Input,
  args: ["matMenuTriggerRestoreFocus"]
}], menuOpened: [{
  type: Output
}], onMenuOpen: [{
  type: Output
}], menuClosed: [{
  type: Output
}], onMenuClose: [{
  type: Output
}] } });
var _MatMenuModule = class _MatMenuModule {
};
_MatMenuModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenuModule, deps: [], target: FactoryTarget.NgModule });
_MatMenuModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenuModule, imports: [
  CommonModule,
  MatRippleModule,
  MatCommonModule,
  OverlayModule,
  MatMenu,
  MatMenuItem,
  MatMenuContent,
  MatMenuTrigger
], exports: [
  CdkScrollableModule,
  MatMenu,
  MatCommonModule,
  MatMenuItem,
  MatMenuContent,
  MatMenuTrigger
] });
_MatMenuModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [
  CommonModule,
  MatRippleModule,
  MatCommonModule,
  OverlayModule,
  CdkScrollableModule,
  MatCommonModule
] });
var MatMenuModule = _MatMenuModule;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatMenuModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [
      CommonModule,
      MatRippleModule,
      MatCommonModule,
      OverlayModule,
      MatMenu,
      MatMenuItem,
      MatMenuContent,
      MatMenuTrigger
    ],
    exports: [
      CdkScrollableModule,
      MatMenu,
      MatCommonModule,
      MatMenuItem,
      MatMenuContent,
      MatMenuTrigger
    ],
    providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]
  }]
}] });

// projects/aimmo-design-system/aim-menu/aim-menu-item/aim-menu-item.component.ts
var _a3;
var AimMenuItemComponent = (_a3 = class extends MatMenuItem {
  constructor(elementRef, document2, focusMonitor, parentMenu, changeDetectorRef) {
    super(elementRef, document2, focusMonitor, parentMenu, changeDetectorRef);
    this.elementRef = elementRef;
    this.document = document2;
    this.focusMonitor = focusMonitor;
    this.parentMenu = parentMenu;
    this.changeDetectorRef = changeDetectorRef;
    this.disableRipple = true;
    this.isSelected = false;
  }
  get selected() {
    return this.isSelected;
  }
  set selected(value) {
    this.isSelected = coerceBooleanProperty(value);
  }
}, _a3.ctorParameters = () => [
  { type: ElementRef },
  { type: void 0, decorators: [{ type: Inject, args: [DOCUMENT] }] },
  { type: FocusMonitor },
  { type: void 0, decorators: [{ type: Inject, args: [MAT_MENU_PANEL] }, { type: Optional }] },
  { type: ChangeDetectorRef }
], _a3.propDecorators = {
  disableRipple: [{ type: Input }],
  selected: [{ type: Input }]
}, _a3);
AimMenuItemComponent = __decorate([
  Component({
    selector: "[aim-menu-item]",
    exportAs: "aimMenuItem",
    template: aim_menu_item_component_default,
    changeDetection: ChangeDetectionStrategy.OnPush,
    host: {
      class: "aim-menu-item aim-focus-indicator",
      "[class.aim-menu-item--highlighted]": "_highlighted",
      "[class.aim-menu-item--selected]": "selected",
      "[class.aim-menu-item--disabled]": "disabled",
      "[class.aim-menu-item__submenu-trigger]": "_triggersSubmenu"
    },
    standalone: true,
    imports: [
      MatRippleModule,
      NgIf,
      AimIconComponent
    ],
    styles: [aim_menu_item_component_default2]
  })
], AimMenuItemComponent);

// projects/aimmo-design-system/aim-menu/directive/aim-menu-trigger.directive.ts
var AIM_MENU_SCROLL_STRATEGY = new InjectionToken("aim-menu-scroll-strategy", {
  providedIn: "root",
  factory: () => AIM_MENU_SCROLL_STRATEGY_FACTORY(inject(Overlay))
});
function AIM_MENU_SCROLL_STRATEGY_FACTORY(overlay) {
  return () => overlay.scrollStrategies.reposition();
}
var _a4;
var AimMenuTriggerDirective = (_a4 = class extends MatMenuTrigger {
  constructor(overlay, elementRef, viewContainerRef, scrollStrategy, parentMenu, menuItemInstance, directionality, focusMonitor, ngZone) {
    super(overlay, elementRef, viewContainerRef, scrollStrategy, parentMenu, menuItemInstance, directionality, focusMonitor, ngZone);
    this.overlay = overlay;
    this.elementRef = elementRef;
    this.viewContainerRef = viewContainerRef;
    this.scrollStrategy = scrollStrategy;
    this.parentMenu = parentMenu;
    this.menuItemInstance = menuItemInstance;
    this.directionality = directionality;
    this.focusMonitor = focusMonitor;
    this.ngZone = ngZone;
    this.restoreFocus = true;
  }
  get menu() {
    return super.menu;
  }
  set menu(menu) {
    super.menu = menu;
  }
  get hostElement() {
    return this.elementRef.nativeElement;
  }
}, _a4.ctorParameters = () => [
  { type: Overlay },
  { type: ElementRef },
  { type: ViewContainerRef },
  { type: Function, decorators: [{ type: Inject, args: [AIM_MENU_SCROLL_STRATEGY] }] },
  { type: void 0, decorators: [{ type: Inject, args: [MAT_MENU_PANEL] }, { type: Optional }] },
  { type: AimMenuItemComponent, decorators: [{ type: Optional }, { type: Self }] },
  { type: Directionality, decorators: [{ type: Optional }] },
  { type: FocusMonitor },
  { type: NgZone }
], _a4.propDecorators = {
  menuData: [{ type: Input, args: ["aimMenuTriggerData"] }],
  restoreFocus: [{ type: Input, args: ["aimMenuTriggerRestoreFocus"] }],
  menu: [{ type: Input, args: ["aimMenuTriggerFor"] }]
}, _a4);
AimMenuTriggerDirective = __decorate([
  Directive({
    selector: "[aim-menu-trigger-for], [aimMenuTriggerFor]",
    host: { class: "aim-menu-trigger" },
    exportAs: "aimMenuTrigger",
    standalone: true
  })
], AimMenuTriggerDirective);

// projects/aimmo-design-system/aim-menu/directive/aim-menu-content.directive.ts
var AimMenuContentDirective = class AimMenuContentDirective2 extends MatMenuContent {
};
AimMenuContentDirective = __decorate([
  Directive({
    selector: "ng-template[aimMenuContent]",
    providers: [{ provide: MAT_MENU_CONTENT, useExisting: AimMenuContentDirective }],
    standalone: true
  })
], AimMenuContentDirective);

// angular:jit:template:file:projects/aimmo-design-system/aim-menu/src/aim-menu.component.html
var aim_menu_component_default = '<ng-template>\n  <div (@transformMenu.done)="_onAnimationDone($event)"\n       (@transformMenu.start)="_onAnimationStart($event)"\n       (click)="onPanelClick($event)"\n       (keydown)="_handleKeydown($event)"\n       [@transformMenu]="_panelAnimationState"\n       [attr.aria-describedby]="ariaDescribedby || null"\n       [attr.aria-label]="ariaLabel || null"\n       [attr.aria-labelledby]="ariaLabelledby || null"\n       [class.small]="isSmall"\n       [id]="panelId"\n       [ngClass]="_classList"\n       class="aim-menu__panel"\n       role="menu"\n       tabindex="-1">\n    <div class="aim-menu__content">\n      <ng-content/>\n    </div>\n  </div>\n</ng-template>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-menu/src/aim-menu.component.scss
var aim_menu_component_default2 = "/* projects/aimmo-design-system/aim-menu/src/aim-menu.component.scss */\n.aim-menu__panel {\n  box-sizing: border-box;\n  outline: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  border: 1px solid transparent;\n  width: 100%;\n  max-height: 154px;\n  padding: 4px 0;\n  border-color: rgba(0, 0, 0, 0.35);\n  width: 260px;\n  background-color: #222222;\n  box-shadow: none;\n  max-height: 100%;\n}\n.aim-menu__panel.table {\n  max-height: 116px;\n}\n.aim-menu__panel.small {\n  width: 180px;\n}\n.aim-menu__content {\n  height: 100%;\n  overflow-y: auto;\n  -ms-overflow-style: none;\n}\n.aim-menu__content::-webkit-scrollbar {\n  display: none;\n  width: 0 !important;\n}\n::ng-deep .aim-menu__backdrop.cdk-overlay-backdrop-showing {\n  opacity: 0;\n}\n";

// projects/aimmo-design-system/aim-menu/model/index.ts
var AimMenuSize = {
  small: "small",
  large: "large"
};

// projects/aimmo-design-system/aim-menu/src/aim-menu.component.ts
var _a5;
var AimMenuComponent = (_a5 = class extends MatMenu {
  constructor(elementRef, ngZone, defaultOptions, changeDetectorRef) {
    super(elementRef, ngZone, defaultOptions);
    this.elementRef = elementRef;
    this.ngZone = ngZone;
    this.defaultOptions = defaultOptions;
    this.changeDetectorRef = changeDetectorRef;
    this._directDescendantItems = new QueryList();
    this.size = AimMenuSize.large;
    this.backdropClass = "aim-menu__backdrop";
  }
  get isSmall() {
    return this.size === AimMenuSize.small;
  }
  onPanelClick(event) {
    event.stopPropagation();
    this.closed.emit("click");
  }
}, _a5.ctorParameters = () => [
  { type: ElementRef },
  { type: NgZone },
  { type: void 0, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS] }] },
  { type: ChangeDetectorRef }
], _a5.propDecorators = {
  size: [{ type: Input }],
  _allItems: [{ type: ContentChildren, args: [AimMenuItemComponent, { descendants: true }] }],
  lazyContent: [{ type: ContentChild, args: [MAT_MENU_CONTENT] }]
}, _a5);
AimMenuComponent = __decorate([
  Component({
    selector: "aim-menu",
    template: aim_menu_component_default,
    changeDetection: ChangeDetectionStrategy.OnPush,
    exportAs: "aimMenu",
    host: { class: "aim-menu" },
    animations: [
      matMenuAnimations.transformMenu,
      matMenuAnimations.fadeInItems
    ],
    providers: [{ provide: MAT_MENU_PANEL, useExisting: AimMenuComponent }],
    standalone: true,
    imports: [NgClass],
    styles: [aim_menu_component_default2]
  })
], AimMenuComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/attribute-config-dialog/attribute-config-dialog.component.html
var attribute_config_dialog_component_default = `<aim-dialog-header>
  <ng-container *ngIf="isPointType">{{ '@\uD3EC\uC778\uD2B8@'| translate }}</ng-container>
  {{ '@\uC18D\uC131_\uC138\uBD80_\uC124\uC815@' | translate }}
</aim-dialog-header>
<aim-dialog-content [formGroup]="attributeConfigFormGroup" class="attribute__container">
  <div class="attribute-top__container">
    <aim-form-layout class="attribute-top__form-layout">
      <aim-label>{{ '@\uC18D\uC131_\uBA85@' | translate }}</aim-label>
      <aim-input>
        <input aimInputBase trimFormValue [formControl]="keyFormControl" [maxlength]="attributeKeyMaxLength">
      </aim-input>
      <aim-count *ngIf="!keyFormControl.errors?.pattern"
                 [max]="attributeKeyMaxLength" [value]="keyFormControl.value?.length ?? 0"
                 class="attribute-top__form-layout__desc-container__count"/>
      <aim-desc-and-count *ngIf="keyFormControl.errors?.pattern">
        <aim-count [max]="attributeKeyMaxLength"
                   [value]="keyFormControl.value?.length ?? 0"
                   class="attribute-top__form-layout__desc-container__count"/>
        <aim-description state="error">{{ '@\uC18D\uC131_\uBA85\uC5D0_\uD5C8\uC6A9\uB418\uC9C0_\uC54A\uB294_\uD2B9\uC218\uBB38\uC790\uAC00_\uD3EC\uD568\uB418\uC5B4_\uC788\uC2B5\uB2C8\uB2E4@'|translate }}</aim-description>
      </aim-desc-and-count>
    </aim-form-layout>
    <aim-form-layout class="attribute-top__form-layout">
      <aim-label>{{ '@\uD45C\uC2DC\uB420_\uC18D\uC131_\uBA85@' | translate }}</aim-label>
      <aim-input>
        <input aimInputBase trimFormValue [formControl]="nameFormControl" [maxlength]="attributeKeyMaxLength">
      </aim-input>
      <aim-count [max]="attributeKeyMaxLength" [value]="nameFormControl.value?.length ?? 0"/>
    </aim-form-layout>
  </div>
  <eimmo-common-choices *ngIf="showChoicesForm"
                        [attributeConfigFormGroup]="attributeConfigFormGroup"
                        [editable]="editable"/>
  <div *ngIf="showMultiChoiceForm || showInputForm">
    <aim-form-layout *ngIf="showInputForm" class="attribute-center__toggle-container">
      <aim-label>{{ '@\uC785\uB825_\uC720\uD615@' | translate }}</aim-label>
      <aim-text-toggle-group [formControlName]="AttributeConfigFormName.format" size="lg">
        <aim-text-toggle [value]="InputFormat.number">{{ '@\uC22B\uC790@' | translate }}</aim-text-toggle>
        <aim-text-toggle [value]="InputFormat.string">{{ '@\uAE00\uC790@' | translate }}</aim-text-toggle>
      </aim-text-toggle-group>
    </aim-form-layout>
    <ng-container [formGroupName]="AttributeConfigFormName.validation">
      <div class="attribute-bottom__numeric-container">
        <aim-form-layout class="attribute-bottom__numeric-layout">
          <aim-label>
            <ng-container *ngIf="showMultiChoiceForm; else inputMinLabel">{{ '@\uCD5C\uC18C_\uC120\uD0DD_\uC218@' | translate }}</ng-container>
            <ng-template
              #inputMinLabel>{{ (isLengthValidation ? '@\uCD5C\uC18C_\uC785\uB825_\uAE00\uC790_\uC218@' : '@\uCD5C\uC18C_\uC785\uB825_\uAC12@') | translate }}
            </ng-template>
          </aim-label>
          <aim-input-numeric
              [formControl]="showMultiChoiceForm ? validationMinCountFormControl : validationMinFormControl" [min]="0"
              required/>
        </aim-form-layout>
        <aim-form-layout class="attribute-bottom__numeric-layout">
          <aim-label>
            <ng-container *ngIf="showMultiChoiceForm; else inputMaxLabel">{{ '@\uCD5C\uB300_\uC120\uD0DD_\uC218@' | translate }}</ng-container>
            <ng-template
              #inputMaxLabel>{{ (isLengthValidation ? '@\uCD5C\uB300_\uC785\uB825_\uAE00\uC790_\uC218@' : '@\uCD5C\uB300_\uC785\uB825_\uAC12@') | translate }}
            </ng-template>
          </aim-label>
          <aim-input-numeric
              [formControl]="showMultiChoiceForm ? validationMaxCountFormControl : validationMaxFormControl" [min]="0"
              required/>
        </aim-form-layout>
      </div>
    </ng-container>
  </div>
  <div class="attribute-bottom__container">
    <div class="attribute-bottom__input-container">
      <aim-form-layout>
        <aim-label>
          {{ '@Default@' | translate }}
          <aim-icon [aimTooltip]="'@\uB77C\uBCA8\uB9C1_\uC791\uC5C5_\uC2DC__\uD574\uB2F9_\uC18D\uC131\uC774_\uAE30\uBCF8\uC801\uC73C\uB85C_\uC124\uC815\uB418\uC5B4_\uC788\uB3C4\uB85D_\uD569\uB2C8\uB2E4_T@' | translate" icon="info"/>
        </aim-label>
      </aim-form-layout>
      <aim-select *ngIf="showChoicesForm"
                  [formControlName]="AttributeConfigFormName.defaultValue"
                  [multiple]="showMultiChoiceForm"
                  [placeholder]="'('+('@\uAE30\uBCF8\uAC12_\uC5C6\uC74C@' | translate)+')'">
        <aim-option *ngIf="!showMultiChoiceForm">({{ '@\uAE30\uBCF8\uAC12_\uC5C6\uC74C@' | translate }})</aim-option>
        <aim-option *ngFor="let choiceFormGroup of choiceFormArray?.controls"
                    [value]="choiceFormGroup.value.value">{{ choiceFormGroup.value | choiceName }}
        </aim-option>
      </aim-select>
      <ng-container *ngIf="showInputForm">
        <aim-input *ngIf="isLengthValidation">
          <input aimInputBase trimFormValue [formControl]="defaultValueFormControl">
        </aim-input>
        <aim-input-numeric *ngIf="!isLengthValidation" [formControl]="defaultValueFormControl" [min]="0"
                           placeholder=" "/>
      </ng-container>
    </div>
    <div>
      <span class="attribute-bottom__toggle-text">{{ '@\uD544\uC218@' | translate }}
        <aim-icon [aimTooltip]="'@Off_\uC0C1\uD0DC\uB85C_\uC801\uC6A9_\uC2DC_\uD574\uB2F9_\uC18D\uC131\uC744_\uC120\uD0DD\uD558\uC9C0__@' | translate" class="attribute-bottom__info-icon"
                  icon="info"/></span>
      <aim-onoff-toggle [formControl]="requiredFormControl" [size]="AimOnOffToggleSize.MEDIUM"/>
    </div>
    <div>
      <span class="attribute-bottom__toggle-text">{{ '@\uACE0\uC720\uC18D\uC131@' | translate }}
        <aim-icon [aimTooltip]="'@Sequence_image\uC5D0\uC11C_\uC0AC\uC6A9\uB418\uB294_\uC124\uC815\uC73C\uB85C__\uB2E4\uC74C_\uD30C\uC77C\uC5D0\uC11C\uB3C4_\uD574\uB2F9_\uC18D\uC131\uC744_\uC720\uC9C0\uD560_\uC218_\uC788\uB3C4\uB85D_\uD569\uB2C8\uB2E4_T@' | translate"
                  class="attribute-bottom__info-icon"
                  icon="info"/></span>
      <aim-onoff-toggle [formControlName]="AttributeConfigFormName.uniqueness"
                        [size]="AimOnOffToggleSize.MEDIUM"/>
    </div>
    <div *ngIf="showInputForm">
      <span class="attribute-bottom__toggle-text">{{ '@\uAE00\uC790_\uC218\uC5D0_\uB744\uC5B4\uC4F0\uAE30_\uD3EC\uD568@' | translate }}</span>
      <aim-onoff-toggle [formControlName]="AttributeConfigFormName.includeWhiteSpace"
                        [size]="AimOnOffToggleSize.MEDIUM"/>
    </div>
  </div>
</aim-dialog-content>
<aim-dialog-actions class="dialog-footer attribute-config-dialog__footer">
  <ng-container *ngIf="editable; else notEditable">
    <button (click)="onClickSave()" aim-button buttonSize="large" buttonTheme="outline"
            type="button">{{ '@\uC800\uC7A5_L@' | translate }}
    </button>
  </ng-container>
  <ng-template #notEditable>
    <button [aim-dialog-close]="" aim-button buttonSize="large" buttonTheme="ghost"
            type="button">{{ '@\uB2EB\uAE30_L@' | translate }}
    </button>
  </ng-template>
</aim-dialog-actions>

`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/attribute-config-dialog/attribute-config-dialog.component.scss
var attribute_config_dialog_component_default2 = "/* projects/eimmo-common/dialogs/src/attribute-config-dialog/attribute-config-dialog.component.scss */\n.attribute__container ::ng-deep .mat-dialog-content {\n  overflow: inherit;\n}\n.attribute-top__container {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.attribute-top__container > *:not(:last-child) {\n  margin-right: 16px;\n}\n.attribute-top__form-layout {\n  width: 100%;\n}\n.attribute-center__toggle-container {\n  margin-bottom: 24px;\n}\n.attribute-bottom__numeric-container {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  margin-bottom: 24px;\n}\n.attribute-bottom__numeric-container > *:not(:last-child) {\n  margin-right: 16px;\n}\n.attribute-bottom__numeric-layout {\n  width: 100%;\n}\n.attribute-bottom__container {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  margin-bottom: 24px;\n}\n.attribute-bottom__container > *:not(:last-child) {\n  margin-right: 24px;\n}\n.attribute-bottom__input-container {\n  max-width: 392px;\n  min-width: 392px;\n}\n.attribute-bottom__info-icon {\n  margin-left: 4px;\n}\n.attribute-bottom__toggle-text {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  color: #999999;\n  margin-bottom: 8px;\n}\n.attribute-bottom__toggle-text > *:not(:last-child) {\n  margin-right: 4px;\n}\n";

// angular:jit:style:file:projects/aimmo-design-system/aim-form-layout/form-layout-items/aim-desc-and-count.component.scss
var aim_desc_and_count_component_default = "/* projects/aimmo-design-system/aim-form-layout/form-layout-items/aim-desc-and-count.component.scss */\n:host {\n  display: flex;\n}\n";

// projects/aimmo-design-system/aim-form-layout/form-layout-items/aim-desc-and-count.component.ts
var AimDescAndCountComponent = class AimDescAndCountComponent2 {
};
AimDescAndCountComponent = __decorate([
  Component({
    selector: "aim-desc-and-count",
    template: '<ng-content select="aim-description"/><ng-content select="aim-count"/>',
    host: { class: "aim-desc-and-count" },
    standalone: true,
    styles: [aim_desc_and_count_component_default]
  })
], AimDescAndCountComponent);

// angular:jit:template:file:projects/aimmo-design-system/aim-input-numeric/src/aim-input-numeric.component.html
var aim_input_numeric_component_default = '<input (focusout)="reprocessingOverflowValue(min, max)" (keydown)="onKeydown($event)"\n       (keyup.enter)="reprocessingOverflowValue(min, max)"\n       [class.center]="isOptionCenter"\n       [class.default]="isOptionDefault" [class.error]="isError" [class.numeric-spinner]="isOptionSpinner"\n       [class.warning]="isWarning" [formControl]="formControl"\n       [max]="max"\n       [min]="min"\n       [placeholder]="placeholder"\n       [readonly]="readonly" [step]="step" autocomplete="off"\n       class="design-system-numeric-input"\n       matInput\n       type="number"/>\n<aim-icon *ngIf="isDefaultAndErrorSpinner" [class.disabled]="formControl.disabled" class="up-down-button"\n          icon="chevron-updown"/>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-input-numeric/src/aim-input-numeric.component.scss
var aim_input_numeric_component_default2 = "/* projects/aimmo-design-system/aim-input-numeric/src/aim-input-numeric.component.scss */\n:host {\n  position: relative;\n  display: block;\n  height: var(--aim-input-numeric-height, 32px);\n}\n:host.small {\n  width: 180px;\n}\n:host.small.center {\n  width: 40px;\n  height: 20px;\n}\n:host.small.center .design-system-numeric-input {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 12px;\n  line-height: 14px;\n  padding: 0;\n}\n:host.medium {\n  width: 260px;\n}\n:host.medium.center {\n  width: 180px;\n}\n:host.fill {\n  width: var(--aim-input-numeric-width, 100%);\n}\n:host ::ng-deep .design-system-numeric-input.mat-mdc-input-element {\n  margin: 0;\n}\n.design-system-numeric-input {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  background-color: var(--aim-input-numeric-background-color, #333333);\n  box-sizing: border-box;\n  border-radius: 4px;\n  border: 1px solid var(--aim-input-numeric-border-color, #333333);\n  color: var(--aim-input-numeric-color, #dfdfdf);\n  padding: 0 16px;\n  caret-color: var(--aim-input-numeric-caret-color, #dfdfdf);\n  margin: 0;\n  width: 100%;\n  height: 100%;\n  outline: none;\n}\n.design-system-numeric-input:placeholder-shown {\n  text-overflow: ellipsis;\n}\n.design-system-numeric-input::-webkit-inner-spin-button {\n  -webkit-appearance: none;\n  background: transparent;\n  height: 32px;\n  width: 32px;\n  opacity: 1;\n  z-index: 1;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n}\n.design-system-numeric-input:hover {\n  border: 1px solid var(--aim-input-numeric-border-color-hover, #545454);\n}\n.design-system-numeric-input:focus {\n  border: 1px solid var(--aim-input-numeric-border-color-focus, #787878);\n}\n.design-system-numeric-input:focus:hover {\n  border: 1px solid var(--aim-input-numeric-border-color-focus-hover, #787878);\n}\n.design-system-numeric-input::placeholder {\n  color: var(--aim-input-numeric-placeholder-color, #787878);\n}\n.design-system-numeric-input.center {\n  text-align: center;\n}\n.design-system-numeric-input.center::-webkit-inner-spin-button {\n  display: none;\n}\n.design-system-numeric-input.warning:not(:read-only):not(:disabled) {\n  border: 1px solid #f17f1f;\n  color: #f17f1f;\n  caret-color: #f17f1f;\n}\n.design-system-numeric-input.warning:not(:read-only):not(:disabled):hover {\n  border: 1px solid #f17f1f;\n}\n.design-system-numeric-input.warning:not(:read-only):not(:disabled):focus {\n  border: 1px solid #f17f1f;\n}\n.design-system-numeric-input.error:not(:read-only):not(:disabled) {\n  border: 1px solid #de6251;\n  color: #de6251;\n  caret-color: #de6251;\n}\n.design-system-numeric-input.error:not(:read-only):not(:disabled):hover {\n  border: 1px solid #de6251;\n}\n.design-system-numeric-input.error:not(:read-only):not(:disabled):focus {\n  border: 1px solid #de6251;\n}\n.design-system-numeric-input:disabled {\n  background-color: #222222;\n  color: var(--aim-input-numeric-color-disabled, #545454);\n  border: 1px solid var(--aim-input-numeric-border-color-disalbed, #545454);\n}\n.design-system-numeric-input:disabled::placeholder {\n  color: var(--aim-input-numeric-placeholder-color-disalbed, #545454);\n}\n.design-system-numeric-input:read-only:not(:disabled) {\n  background-color: #1A1A1A;\n  border: 1px solid #333333;\n  color: #787878;\n}\n.up-down-button {\n  position: absolute;\n  color: #dfdfdf;\n  right: 0;\n  width: 32px;\n  height: 32px;\n  background-color: transparent;\n  align-items: center;\n  pointer-events: none;\n}\n.up-down-button.disabled {\n  color: #545454;\n  cursor: default;\n}\n";

// projects/aimmo-design-system/aim-input-numeric/src/aim-input-numeric.component.ts
var _a6;
var AimInputNumericComponent = (_a6 = class {
  constructor(parentFormLayout, ngControl) {
    this.parentFormLayout = parentFormLayout;
    this.ngControl = ngControl;
    this.option = NumericInputOption.spinner;
    this.size = AimInputSize.fill;
    this.state = AimInputState.default;
    this.readonly = false;
    this.placeholder = "";
    this.formControl = new FormControl();
    this.disabledSource = new BehaviorSubject(null);
    this.useClampValue = false;
    this.allowSigned = true;
    this.errorState = true;
    this.required = false;
    this.ngModelChange = new EventEmitter();
    this.onChange = noop_default;
    this.destroyRef = inject(DestroyRef);
    this.blur = new EventEmitter();
    if (this.ngControl != null) {
      this.ngControl.valueAccessor = this;
    }
  }
  set _formControl(abstractControl) {
    this.formControl = abstractControl;
  }
  set ngModel(value) {
    this.formControl.setValue(value);
  }
  set disabled(value) {
    this.disabledSource.next(value);
  }
  get isDefaultAndErrorSpinner() {
    return this.isOptionSpinner && !this.readonly;
  }
  get isOptionCenter() {
    return this.option === NumericInputOption.center;
  }
  get isOptionSpinner() {
    return this.option === NumericInputOption.spinner;
  }
  get isOptionDefault() {
    return this.option === NumericInputOption.default;
  }
  get isError() {
    return this.formControl.invalid;
  }
  // ToDo warning 기준 정의 안됨.
  get isWarning() {
    return false;
  }
  get isSizeSmall() {
    return this.size === AimInputSize.small;
  }
  get isSizeMedium() {
    return this.size === AimInputSize.medium;
  }
  get isSizeFill() {
    return this.size === AimInputSize.fill;
  }
  get valueChangeAction$() {
    return this.formControl.valueChanges.pipe(debounceTime(300), tap((val) => {
      this.onChange(val);
      this.checkValid(val, this.min, this.max);
      if (this.useClampValue && this.min && this.max) {
        this.ngModelChange.emit(clamp_default(val, this.min, this.max).toString());
        return;
      }
      this.ngModelChange.emit(val);
    }));
  }
  get statusChangesAction$() {
    return this.matInput.ngControl.statusChanges.pipe(tap((status) => this.errorState = status !== "VALID"));
  }
  writeValue(obj) {
  }
  registerOnChange(fn) {
  }
  registerOnTouched(fn) {
  }
  ngOnInit() {
    if (isEmpty_default(this.placeholder)) {
      this.initializeFormControl(this.min);
    }
    if (this.formControl.validator) {
      this.required = this.formControl.validator({})?.required;
    }
    this.ngControl = this.matInput.ngControl;
  }
  ngAfterViewInit() {
    forkJoin([
      this.valueChangeAction$,
      this.statusChangesAction$,
      this.disabledAction$()
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  focus() {
    this.matInput.focus();
  }
  onKeydown(event) {
    if (!this.allowSigned && [
      EXPONENT,
      NEGATIVE_SIGN,
      POSITIVE_SIGN
    ].some((key) => event.key?.toLowerCase() === key)) {
      event.preventDefault();
    }
  }
  disabledAction$() {
    return this.disabledSource.pipe(filter((v2) => v2 !== null), debounceTime(0), tap((disabled) => {
      if (disabled) {
        this.formControl.disable();
      } else {
        this.formControl.enable();
      }
    }));
  }
  reprocessingOverflowValue(min, max) {
    if (!isEmpty_default(this.placeholder)) {
      return;
    }
    if (!isNil_default(min)) {
      if (this.formControl.value === null || this.formControl.value < min) {
        this.formControl.setValue(min);
      }
    }
    if (!isNil_default(max) && max < this.formControl.value) {
      this.formControl.setValue(max);
    }
    this.blur.emit();
  }
  checkValid(value, min, max) {
    if (!isNil_default(min) && value !== null && value < min || !isNil_default(max) && max < value) {
      this.formControl.setErrors({ overflow: true });
    }
  }
  initializeFormControl(min) {
    if (this.formControl.value) {
      return;
    }
    if (!isNil_default(min)) {
      this.formControl.setValue(min);
    } else {
      this.formControl.setValue(0);
    }
  }
}, _a6.ctorParameters = () => [
  { type: AimFormLayoutComponent, decorators: [{ type: Optional }, { type: Host }, { type: Inject, args: [AIM_FORM_LAYOUT] }] },
  { type: NgControl, decorators: [{ type: Host }, { type: Inject, args: [NgControl] }] }
], _a6.propDecorators = {
  option: [{ type: Input }],
  size: [{ type: Input }],
  state: [{ type: Input }],
  min: [{ type: Input }],
  max: [{ type: Input }],
  step: [{ type: Input }],
  readonly: [{ type: Input }],
  placeholder: [{ type: Input }],
  formControl: [{ type: Input }],
  disabledSource: [{ type: Input }],
  useClampValue: [{ type: Input }],
  allowSigned: [{ type: Input }],
  matInput: [{ type: ViewChild, args: [MatInput, { static: true }] }],
  ngModelChange: [{ type: Output }],
  blur: [{ type: Output }],
  _formControl: [{ type: Input, args: ["formControl"] }],
  ngModel: [{ type: Input }],
  disabled: [{ type: Input }],
  isOptionCenter: [{ type: HostBinding, args: ["class.center"] }],
  isSizeSmall: [{ type: HostBinding, args: ["class.small"] }],
  isSizeMedium: [{ type: HostBinding, args: ["class.medium"] }],
  isSizeFill: [{ type: HostBinding, args: ["class.fill"] }]
}, _a6);
AimInputNumericComponent = __decorate([
  Component({
    selector: "aim-input-numeric",
    template: aim_input_numeric_component_default,
    providers: [
      { provide: AimFormLayoutControl, useExisting: AimInputNumericComponent }
    ],
    changeDetection: ChangeDetectionStrategy.OnPush,
    standalone: true,
    imports: [
      CommonModule,
      ReactiveFormsModule,
      FormsModule,
      MatInputModule,
      NgIf,
      AimIconComponent
    ],
    styles: [aim_input_numeric_component_default2]
  })
], AimInputNumericComponent);

// angular:jit:template:file:projects/aimmo-design-system/aim-input-numeric/src/autocomplete/aim-input-numeric-autocomplete.component.html
var aim_input_numeric_autocomplete_component_default = '<input matAutocompleteTrigger [autocomplete]="autocomplete" [class.center]="isOptionCenter"\n       [class.default]="isOptionDefault"\n       [class.error]="isError"\n       [class.numeric-spinner]="isOptionSpinner" [class.warning]="isWarning" [formControl]="formControl"\n       [matAutocomplete]="matAutocomplete" [max]="max"\n       [min]="min"\n       [placeholder]="placeholder"\n       [readonly]="readonly"\n       [step]="step"\n       autocomplete="off"\n       class="design-system-numeric-input" matInput type="number"/>\n\n<aim-icon *ngIf="isDefaultAndErrorSpinner" [class.disabled]="formControl.disabled" class="up-down-button"\n          icon="chevron-updown"/>\n';

// projects/aimmo-design-system/aim-input-numeric/src/autocomplete/aim-input-numeric-autocomplete.component.ts
var _a7;
var AimInputNumericAutocompleteComponent = (_a7 = class extends AimInputNumericComponent {
}, _a7.propDecorators = {
  autoCompleteTrigger: [{ type: ViewChild, args: [MatAutocompleteTrigger, { static: true }] }],
  matAutocomplete: [{ type: Input }],
  autocomplete: [{ type: Input }]
}, _a7);
AimInputNumericAutocompleteComponent = __decorate([
  Component({
    selector: "aim-input-numeric-autocomplete",
    template: aim_input_numeric_autocomplete_component_default,
    providers: [
      { provide: AimFormLayoutControl, useExisting: AimInputNumericAutocompleteComponent }
    ],
    changeDetection: ChangeDetectionStrategy.OnPush,
    standalone: true,
    imports: [
      MatInputModule,
      FormsModule,
      MatAutocompleteModule,
      ReactiveFormsModule,
      NgIf,
      AimIconComponent
    ],
    styles: [aim_input_numeric_component_default2]
  })
], AimInputNumericAutocompleteComponent);

// projects/aimmo-design-system/aim-input-numeric/src/aim-input-numeric.module.ts
var AimInputNumericModule = class AimInputNumericModule2 {
};
AimInputNumericModule = __decorate([
  NgModule({
    imports: [
      CommonModule,
      ReactiveFormsModule,
      MatInputModule,
      MatAutocompleteModule,
      AimInputNumericComponent,
      AimInputNumericAutocompleteComponent
    ],
    exports: [
      AimInputNumericComponent,
      AimInputNumericAutocompleteComponent
    ]
  })
], AimInputNumericModule);

// projects/aimmo-design-system/aim-onoff-toggle/model/index.ts
var AimOnOffToggleSize;
(function(AimOnOffToggleSize2) {
  AimOnOffToggleSize2["SMALL"] = "sm";
  AimOnOffToggleSize2["MEDIUM"] = "md";
})(AimOnOffToggleSize || (AimOnOffToggleSize = {}));

// angular:jit:template:file:projects/aimmo-design-system/aim-onoff-toggle/src/aim-onoff-toggle.component.html
var aim_onoff_toggle_component_default = '<mat-slide-toggle disableRipple class="aim-onoff-button" [disabled]="disabled" [checked]="value"\n                  (change)="handleToggle($event)"/>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-onoff-toggle/src/aim-onoff-toggle.component.scss
var aim_onoff_toggle_component_default2 = "/* projects/aimmo-design-system/aim-onoff-toggle/src/aim-onoff-toggle.component.scss */\n:host {\n  display: flex;\n}\n:host .mat-mdc-slide-toggle ::ng-deep .mdc-switch__ripple {\n  display: none;\n}\n:host .mat-mdc-slide-toggle ::ng-deep .mdc-switch__icons {\n  display: none;\n}\n:host .mat-mdc-slide-toggle ::ng-deep .mdc-switch__shadow {\n  --mdc-switch-handle-elevation: #ffffff;\n}\n:host .mat-mdc-slide-toggle ::ng-deep .mdc-form-field > label {\n  display: none;\n}\n::ng-deep html .mat-mdc-slide-toggle.mat-accent {\n  --mdc-switch-track-shape: 12px;\n  --mdc-switch-handle-shape: 50%;\n  --mdc-elevation-overlay-opacity: 1;\n  --mdc-elevation-overlay-color: #dfdfdf;\n  --mdc-switch-selected-track-color: #8e47ff;\n  --mdc-switch-selected-hover-track-color: #8e47ff;\n  --mdc-switch-selected-focus-track-color: #8e47ff;\n  --mdc-switch-selected-pressed-track-color: #8e47ff;\n  --mdc-switch-unselected-focus-track-color: #545454;\n  --mdc-switch-unselected-hover-track-color: #545454;\n  --mdc-switch-unselected-pressed-track-color: #545454;\n  --mdc-switch-unselected-track-color: #545454;\n  --mdc-switch-disabled-selected-handle-color: #787878;\n  --mdc-switch-disabled-unselected-handle-color: #424242;\n  --mdc-switch-disabled-selected-track-color: #444444;\n  --mdc-switch-disabled-unselected-track-color: #444444;\n  --mdc-switch-disabled-track-opacity: 1;\n}\n::ng-deep html .mat-mdc-slide-toggle.mat-accent.mat-mdc-slide-toggle-checked {\n  --mdc-elevation-overlay-color: #ffffff;\n  --mdc-switch-disabled-selected-handle-color: #787878;\n}\n:host(.sm) .aim-onoff-button ::ng-deep .mdc-switch {\n  --mdc-switch-track-height: 14px;\n  --mdc-switch-track-width: 26px;\n  --mat-switch-with-icon-handle-size: 8px;\n  --mat-switch-pressed-handle-size: 8px;\n}\n:host(.sm) .mat-mdc-slide-toggle ::ng-deep .mdc-switch__handle-track {\n  width: 12px;\n  margin-left: 3px;\n}\n:host(.md) .aim-onoff-button ::ng-deep .mdc-switch {\n  --mdc-switch-track-height: 24px;\n  --mdc-switch-track-width: 44px;\n  --mat-switch-with-icon-handle-size: 14px;\n  --mat-switch-pressed-handle-size: 14px;\n  --mdc-switch-track-shape: 12px;\n}\n:host(.md) .mat-mdc-slide-toggle ::ng-deep .mdc-switch__handle-track {\n  width: 20px;\n  margin-left: 5px;\n}\n:host(.disabled) .aim-onoff-button {\n  --mdc-elevation-overlay-color: #787878;\n}\n";

// node_modules/@angular/material/fesm2022/slide-toggle.mjs
var MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = new InjectionToken("mat-slide-toggle-default-options", {
  providedIn: "root",
  factory: () => ({ disableToggleValue: false, hideIcon: false })
});
var MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = {
  provide: NG_VALUE_ACCESSOR,
  useExisting: forwardRef(() => MatSlideToggle),
  multi: true
};
var MatSlideToggleChange = class {
  constructor(source, checked) {
    this.source = source;
    this.checked = checked;
  }
};
var nextUniqueId3 = 0;
var _MatSlideToggle = class _MatSlideToggle {
  _createChangeEvent(isChecked) {
    return new MatSlideToggleChange(this, isChecked);
  }
  /** Returns the unique id for the visual hidden button. */
  get buttonId() {
    return `${this.id || this._uniqueId}-button`;
  }
  /** Focuses the slide-toggle. */
  focus() {
    this._switchElement.nativeElement.focus();
  }
  /** Whether the slide-toggle element is checked or not. */
  get checked() {
    return this._checked;
  }
  set checked(value) {
    this._checked = value;
    this._changeDetectorRef.markForCheck();
  }
  /** Returns the unique id for the visual hidden input. */
  get inputId() {
    return `${this.id || this._uniqueId}-input`;
  }
  constructor(_elementRef, _focusMonitor, _changeDetectorRef, tabIndex, defaults, animationMode) {
    this._elementRef = _elementRef;
    this._focusMonitor = _focusMonitor;
    this._changeDetectorRef = _changeDetectorRef;
    this.defaults = defaults;
    this._onChange = (_3) => {
    };
    this._onTouched = () => {
    };
    this._validatorOnChange = () => {
    };
    this._checked = false;
    this.name = null;
    this.labelPosition = "after";
    this.ariaLabel = null;
    this.ariaLabelledby = null;
    this.disabled = false;
    this.disableRipple = false;
    this.tabIndex = 0;
    this.change = new EventEmitter();
    this.toggleChange = new EventEmitter();
    this.tabIndex = parseInt(tabIndex) || 0;
    this.color = defaults.color || "accent";
    this._noopAnimations = animationMode === "NoopAnimations";
    this.id = this._uniqueId = `mat-mdc-slide-toggle-${++nextUniqueId3}`;
    this.hideIcon = defaults.hideIcon ?? false;
    this._labelId = this._uniqueId + "-label";
  }
  ngAfterContentInit() {
    this._focusMonitor.monitor(this._elementRef, true).subscribe((focusOrigin) => {
      if (focusOrigin === "keyboard" || focusOrigin === "program") {
        this._focused = true;
        this._changeDetectorRef.markForCheck();
      } else if (!focusOrigin) {
        Promise.resolve().then(() => {
          this._focused = false;
          this._onTouched();
          this._changeDetectorRef.markForCheck();
        });
      }
    });
  }
  ngOnChanges(changes) {
    if (changes["required"]) {
      this._validatorOnChange();
    }
  }
  ngOnDestroy() {
    this._focusMonitor.stopMonitoring(this._elementRef);
  }
  /** Implemented as part of ControlValueAccessor. */
  writeValue(value) {
    this.checked = !!value;
  }
  /** Implemented as part of ControlValueAccessor. */
  registerOnChange(fn) {
    this._onChange = fn;
  }
  /** Implemented as part of ControlValueAccessor. */
  registerOnTouched(fn) {
    this._onTouched = fn;
  }
  /** Implemented as a part of Validator. */
  validate(control) {
    return this.required && control.value !== true ? { "required": true } : null;
  }
  /** Implemented as a part of Validator. */
  registerOnValidatorChange(fn) {
    this._validatorOnChange = fn;
  }
  /** Implemented as a part of ControlValueAccessor. */
  setDisabledState(isDisabled) {
    this.disabled = isDisabled;
    this._changeDetectorRef.markForCheck();
  }
  /** Toggles the checked state of the slide-toggle. */
  toggle() {
    this.checked = !this.checked;
    this._onChange(this.checked);
  }
  /**
   * Emits a change event on the `change` output. Also notifies the FormControl about the change.
   */
  _emitChangeEvent() {
    this._onChange(this.checked);
    this.change.emit(this._createChangeEvent(this.checked));
  }
  /** Method being called whenever the underlying button is clicked. */
  _handleClick() {
    this.toggleChange.emit();
    if (!this.defaults.disableToggleValue) {
      this.checked = !this.checked;
      this._onChange(this.checked);
      this.change.emit(new MatSlideToggleChange(this, this.checked));
    }
  }
  _getAriaLabelledBy() {
    if (this.ariaLabelledby) {
      return this.ariaLabelledby;
    }
    return this.ariaLabel ? null : this._labelId;
  }
};
_MatSlideToggle.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSlideToggle, deps: [{ token: ElementRef }, { token: FocusMonitor }, { token: ChangeDetectorRef }, { token: "tabindex", attribute: true }, { token: MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: FactoryTarget.Component });
_MatSlideToggle.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "17.0.0", version: "17.2.0", type: _MatSlideToggle, isStandalone: true, selector: "mat-slide-toggle", inputs: { name: "name", id: "id", labelPosition: "labelPosition", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], required: ["required", "required", booleanAttribute], color: "color", disabled: ["disabled", "disabled", booleanAttribute], disableRipple: ["disableRipple", "disableRipple", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", (value) => value == null ? 0 : numberAttribute(value)], checked: ["checked", "checked", booleanAttribute], hideIcon: ["hideIcon", "hideIcon", booleanAttribute] }, outputs: { change: "change", toggleChange: "toggleChange" }, host: { properties: { "id": "id", "attr.tabindex": "null", "attr.aria-label": "null", "attr.name": "null", "attr.aria-labelledby": "null", "class.mat-mdc-slide-toggle-focused": "_focused", "class.mat-mdc-slide-toggle-checked": "checked", "class._mat-animation-noopable": "_noopAnimations", "class": 'color ? "mat-" + color : ""' }, classAttribute: "mat-mdc-slide-toggle" }, providers: [
  MAT_SLIDE_TOGGLE_VALUE_ACCESSOR,
  {
    provide: NG_VALIDATORS,
    useExisting: _MatSlideToggle,
    multi: true
  }
], viewQueries: [{ propertyName: "_switchElement", first: true, predicate: ["switch"], descendants: true }], exportAs: ["matSlideToggle"], usesOnChanges: true, ngImport: core_exports, template: `<div mat-internal-form-field [labelPosition]="labelPosition">
  <button
    class="mdc-switch"
    role="switch"
    type="button"
    [class.mdc-switch--selected]="checked"
    [class.mdc-switch--unselected]="!checked"
    [class.mdc-switch--checked]="checked"
    [class.mdc-switch--disabled]="disabled"
    [tabIndex]="disabled ? -1 : tabIndex"
    [disabled]="disabled"
    [attr.id]="buttonId"
    [attr.name]="name"
    [attr.aria-label]="ariaLabel"
    [attr.aria-labelledby]="_getAriaLabelledBy()"
    [attr.aria-describedby]="ariaDescribedby"
    [attr.aria-required]="required || null"
    [attr.aria-checked]="checked"
    (click)="_handleClick()"
    #switch>
    <div class="mdc-switch__track"></div>
    <div class="mdc-switch__handle-track">
      <div class="mdc-switch__handle">
        <div class="mdc-switch__shadow">
          <div class="mdc-elevation-overlay"></div>
        </div>
        <div class="mdc-switch__ripple">
          <div class="mat-mdc-slide-toggle-ripple mat-mdc-focus-indicator" mat-ripple
            [matRippleTrigger]="switch"
            [matRippleDisabled]="disableRipple || disabled"
            [matRippleCentered]="true"></div>
        </div>
        @if (!hideIcon) {
          <div class="mdc-switch__icons">
            <svg
              class="mdc-switch__icon mdc-switch__icon--on"
              viewBox="0 0 24 24"
              aria-hidden="true">
              <path d="M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z" />
            </svg>
            <svg
              class="mdc-switch__icon mdc-switch__icon--off"
              viewBox="0 0 24 24"
              aria-hidden="true">
              <path d="M20 13H4v-2h16v2z" />
            </svg>
          </div>
        }
      </div>
    </div>
  </button>

  <!--
    Clicking on the label will trigger another click event from the button.
    Stop propagation here so other listeners further up in the DOM don't execute twice.
  -->
  <label class="mdc-label" [for]="buttonId" [attr.id]="_labelId" (click)="$event.stopPropagation()">
    <ng-content></ng-content>
  </label>
</div>
`, styles: ['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--mdc-elevation-overlay-color)}.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative}.mdc-switch[hidden]{display:none}.mdc-switch:disabled{cursor:default;pointer-events:none}.mdc-switch__track{overflow:hidden;position:relative;width:100%}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%}@media screen and (forced-colors: active){.mdc-switch__track::before,.mdc-switch__track::after{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(-100%)}[dir=rtl] .mdc-switch__track::after,.mdc-switch__track[dir=rtl]::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track[dir=rtl]::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0)}[dir=rtl] .mdc-switch__handle-track,.mdc-switch__handle-track[dir=rtl]{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track,.mdc-switch--selected .mdc-switch__handle-track[dir=rtl]{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto}[dir=rtl] .mdc-switch__handle,.mdc-switch__handle[dir=rtl]{left:auto;right:0}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media screen and (forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-elevation-overlay{bottom:0;left:0;right:0;top:0}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1}.mdc-switch:disabled .mdc-switch__ripple{display:none}.mdc-switch__icons{height:100%;position:relative;width:100%;z-index:1}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mdc-switch-disabled-label-text-color)}.mdc-switch{width:var(--mdc-switch-track-width)}.mdc-switch.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-selected-handle-color)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-hover-handle-color)}.mdc-switch.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-focus-handle-color)}.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-selected-pressed-handle-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-selected-handle-color)}.mdc-switch.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-unselected-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-hover-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-focus-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-unselected-pressed-handle-color)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-unselected-handle-color)}.mdc-switch .mdc-switch__handle::before{background:var(--mdc-switch-handle-surface-color)}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation)}.mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation)}.mdc-switch .mdc-switch__focus-ring-wrapper,.mdc-switch .mdc-switch__handle{height:var(--mdc-switch-handle-height)}.mdc-switch .mdc-switch__handle{border-radius:var(--mdc-switch-handle-shape)}.mdc-switch .mdc-switch__handle{width:var(--mdc-switch-handle-width)}.mdc-switch .mdc-switch__handle-track{width:calc(100% - var(--mdc-switch-handle-width))}.mdc-switch.mdc-switch--selected:enabled .mdc-switch__icon{fill:var(--mdc-switch-selected-icon-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-selected-icon-color)}.mdc-switch.mdc-switch--unselected:enabled .mdc-switch__icon{fill:var(--mdc-switch-unselected-icon-color)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-unselected-icon-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-selected-icon-opacity)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-unselected-icon-opacity)}.mdc-switch.mdc-switch--selected .mdc-switch__icon{width:var(--mdc-switch-selected-icon-size);height:var(--mdc-switch-selected-icon-size)}.mdc-switch.mdc-switch--unselected .mdc-switch__icon{width:var(--mdc-switch-unselected-icon-size);height:var(--mdc-switch-unselected-icon-size)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-hover-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-focus-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-pressed-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-hover-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-focus-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-pressed-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-selected-hover-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-selected-focus-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-selected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-selected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-unselected-hover-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-unselected-focus-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity)}.mdc-switch .mdc-switch__ripple{height:var(--mdc-switch-state-layer-size);width:var(--mdc-switch-state-layer-size)}.mdc-switch .mdc-switch__track{height:var(--mdc-switch-track-height)}.mdc-switch:disabled .mdc-switch__track{opacity:var(--mdc-switch-disabled-track-opacity)}.mdc-switch:enabled .mdc-switch__track::after{background:var(--mdc-switch-selected-track-color)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-hover-track-color)}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-focus-track-color)}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mdc-switch-selected-pressed-track-color)}.mdc-switch:disabled .mdc-switch__track::after{background:var(--mdc-switch-disabled-selected-track-color)}.mdc-switch:enabled .mdc-switch__track::before{background:var(--mdc-switch-unselected-track-color)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-hover-track-color)}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-focus-track-color)}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mdc-switch-unselected-pressed-track-color)}.mdc-switch:disabled .mdc-switch__track::before{background:var(--mdc-switch-disabled-unselected-track-color)}.mdc-switch .mdc-switch__track{border-radius:var(--mdc-switch-track-shape)}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation-shadow)}.mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation-shadow)}.mat-mdc-slide-toggle{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle .mdc-switch__ripple::after{content:"";opacity:0}.mat-mdc-slide-toggle .mdc-switch:hover .mdc-switch__ripple::after{opacity:.04;transition:opacity 75ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch .mdc-switch__ripple::after{opacity:.12}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-mdc-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-elevation-overlay,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mdc-switch__handle{transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-switch-hidden-track-opacity);transition:var(--mat-switch-hidden-track-transition)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-switch-visible-track-opacity);transition:var(--mat-switch-visible-track-transition)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-switch-visible-track-opacity);transition:var(--mat-switch-visible-track-transition)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-switch-hidden-track-opacity);transition:var(--mat-switch-hidden-track-transition)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-switch-unselected-handle-size);height:var(--mat-switch-unselected-handle-size)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-switch-selected-handle-size);height:var(--mat-switch-selected-handle-size)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-switch-with-icon-handle-size);height:var(--mat-switch-with-icon-handle-size)}.mat-mdc-slide-toggle:active .mdc-switch:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-switch-pressed-handle-size);height:var(--mat-switch-pressed-handle-size)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{margin:var(--mat-switch-selected-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-switch-selected-with-icon-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{margin:var(--mat-switch-unselected-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-switch-unselected-with-icon-handle-horizontal-margin)}.mat-mdc-slide-toggle:active .mdc-switch--selected:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-switch-selected-pressed-handle-horizontal-margin)}.mat-mdc-slide-toggle:active .mdc-switch--unselected:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-switch-unselected-pressed-handle-horizontal-margin)}.mdc-switch__track::after,.mdc-switch__track::before{border-width:var(--mat-switch-track-outline-width);border-color:var(--mat-switch-track-outline-color)}.mdc-switch--selected .mdc-switch__track::after,.mdc-switch--selected .mdc-switch__track::before{border-width:var(--mat-switch-selected-track-outline-width)}.mdc-switch--disabled .mdc-switch__track::after,.mdc-switch--disabled .mdc-switch__track::before{border-width:var(--mat-switch-disabled-unselected-track-outline-width);border-color:var(--mat-switch-disabled-unselected-track-outline-color)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-switch-disabled-selected-handle-opacity)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-switch-disabled-unselected-handle-opacity)}'], dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: _MatInternalFormField, selector: "div[mat-internal-form-field]", inputs: ["labelPosition"] }], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None });
var MatSlideToggle = _MatSlideToggle;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatSlideToggle, decorators: [{
  type: Component,
  args: [{ selector: "mat-slide-toggle", host: {
    "class": "mat-mdc-slide-toggle",
    "[id]": "id",
    // Needs to be removed since it causes some a11y issues (see #21266).
    "[attr.tabindex]": "null",
    "[attr.aria-label]": "null",
    "[attr.name]": "null",
    "[attr.aria-labelledby]": "null",
    "[class.mat-mdc-slide-toggle-focused]": "_focused",
    "[class.mat-mdc-slide-toggle-checked]": "checked",
    "[class._mat-animation-noopable]": "_noopAnimations",
    "[class]": 'color ? "mat-" + color : ""'
  }, exportAs: "matSlideToggle", encapsulation: ViewEncapsulation$1.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
    MAT_SLIDE_TOGGLE_VALUE_ACCESSOR,
    {
      provide: NG_VALIDATORS,
      useExisting: MatSlideToggle,
      multi: true
    }
  ], standalone: true, imports: [MatRipple, _MatInternalFormField], template: `<div mat-internal-form-field [labelPosition]="labelPosition">
  <button
    class="mdc-switch"
    role="switch"
    type="button"
    [class.mdc-switch--selected]="checked"
    [class.mdc-switch--unselected]="!checked"
    [class.mdc-switch--checked]="checked"
    [class.mdc-switch--disabled]="disabled"
    [tabIndex]="disabled ? -1 : tabIndex"
    [disabled]="disabled"
    [attr.id]="buttonId"
    [attr.name]="name"
    [attr.aria-label]="ariaLabel"
    [attr.aria-labelledby]="_getAriaLabelledBy()"
    [attr.aria-describedby]="ariaDescribedby"
    [attr.aria-required]="required || null"
    [attr.aria-checked]="checked"
    (click)="_handleClick()"
    #switch>
    <div class="mdc-switch__track"></div>
    <div class="mdc-switch__handle-track">
      <div class="mdc-switch__handle">
        <div class="mdc-switch__shadow">
          <div class="mdc-elevation-overlay"></div>
        </div>
        <div class="mdc-switch__ripple">
          <div class="mat-mdc-slide-toggle-ripple mat-mdc-focus-indicator" mat-ripple
            [matRippleTrigger]="switch"
            [matRippleDisabled]="disableRipple || disabled"
            [matRippleCentered]="true"></div>
        </div>
        @if (!hideIcon) {
          <div class="mdc-switch__icons">
            <svg
              class="mdc-switch__icon mdc-switch__icon--on"
              viewBox="0 0 24 24"
              aria-hidden="true">
              <path d="M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z" />
            </svg>
            <svg
              class="mdc-switch__icon mdc-switch__icon--off"
              viewBox="0 0 24 24"
              aria-hidden="true">
              <path d="M20 13H4v-2h16v2z" />
            </svg>
          </div>
        }
      </div>
    </div>
  </button>

  <!--
    Clicking on the label will trigger another click event from the button.
    Stop propagation here so other listeners further up in the DOM don't execute twice.
  -->
  <label class="mdc-label" [for]="buttonId" [attr.id]="_labelId" (click)="$event.stopPropagation()">
    <ng-content></ng-content>
  </label>
</div>
`, styles: ['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--mdc-elevation-overlay-color)}.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative}.mdc-switch[hidden]{display:none}.mdc-switch:disabled{cursor:default;pointer-events:none}.mdc-switch__track{overflow:hidden;position:relative;width:100%}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%}@media screen and (forced-colors: active){.mdc-switch__track::before,.mdc-switch__track::after{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(-100%)}[dir=rtl] .mdc-switch__track::after,.mdc-switch__track[dir=rtl]::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track[dir=rtl]::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0)}[dir=rtl] .mdc-switch__handle-track,.mdc-switch__handle-track[dir=rtl]{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track,.mdc-switch--selected .mdc-switch__handle-track[dir=rtl]{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto}[dir=rtl] .mdc-switch__handle,.mdc-switch__handle[dir=rtl]{left:auto;right:0}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media screen and (forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-elevation-overlay{bottom:0;left:0;right:0;top:0}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1}.mdc-switch:disabled .mdc-switch__ripple{display:none}.mdc-switch__icons{height:100%;position:relative;width:100%;z-index:1}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mdc-switch-disabled-label-text-color)}.mdc-switch{width:var(--mdc-switch-track-width)}.mdc-switch.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-selected-handle-color)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-hover-handle-color)}.mdc-switch.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-focus-handle-color)}.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-selected-pressed-handle-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-selected-handle-color)}.mdc-switch.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-unselected-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-hover-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-focus-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-unselected-pressed-handle-color)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-unselected-handle-color)}.mdc-switch .mdc-switch__handle::before{background:var(--mdc-switch-handle-surface-color)}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation)}.mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation)}.mdc-switch .mdc-switch__focus-ring-wrapper,.mdc-switch .mdc-switch__handle{height:var(--mdc-switch-handle-height)}.mdc-switch .mdc-switch__handle{border-radius:var(--mdc-switch-handle-shape)}.mdc-switch .mdc-switch__handle{width:var(--mdc-switch-handle-width)}.mdc-switch .mdc-switch__handle-track{width:calc(100% - var(--mdc-switch-handle-width))}.mdc-switch.mdc-switch--selected:enabled .mdc-switch__icon{fill:var(--mdc-switch-selected-icon-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-selected-icon-color)}.mdc-switch.mdc-switch--unselected:enabled .mdc-switch__icon{fill:var(--mdc-switch-unselected-icon-color)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-unselected-icon-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-selected-icon-opacity)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-unselected-icon-opacity)}.mdc-switch.mdc-switch--selected .mdc-switch__icon{width:var(--mdc-switch-selected-icon-size);height:var(--mdc-switch-selected-icon-size)}.mdc-switch.mdc-switch--unselected .mdc-switch__icon{width:var(--mdc-switch-unselected-icon-size);height:var(--mdc-switch-unselected-icon-size)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-hover-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-focus-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-pressed-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-hover-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-focus-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-pressed-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-selected-hover-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-selected-focus-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-selected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-selected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-unselected-hover-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-unselected-focus-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity)}.mdc-switch .mdc-switch__ripple{height:var(--mdc-switch-state-layer-size);width:var(--mdc-switch-state-layer-size)}.mdc-switch .mdc-switch__track{height:var(--mdc-switch-track-height)}.mdc-switch:disabled .mdc-switch__track{opacity:var(--mdc-switch-disabled-track-opacity)}.mdc-switch:enabled .mdc-switch__track::after{background:var(--mdc-switch-selected-track-color)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-hover-track-color)}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-focus-track-color)}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mdc-switch-selected-pressed-track-color)}.mdc-switch:disabled .mdc-switch__track::after{background:var(--mdc-switch-disabled-selected-track-color)}.mdc-switch:enabled .mdc-switch__track::before{background:var(--mdc-switch-unselected-track-color)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-hover-track-color)}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-focus-track-color)}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mdc-switch-unselected-pressed-track-color)}.mdc-switch:disabled .mdc-switch__track::before{background:var(--mdc-switch-disabled-unselected-track-color)}.mdc-switch .mdc-switch__track{border-radius:var(--mdc-switch-track-shape)}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation-shadow)}.mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation-shadow)}.mat-mdc-slide-toggle{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle .mdc-switch__ripple::after{content:"";opacity:0}.mat-mdc-slide-toggle .mdc-switch:hover .mdc-switch__ripple::after{opacity:.04;transition:opacity 75ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch .mdc-switch__ripple::after{opacity:.12}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-mdc-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-elevation-overlay,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mdc-switch__handle{transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-switch-hidden-track-opacity);transition:var(--mat-switch-hidden-track-transition)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-switch-visible-track-opacity);transition:var(--mat-switch-visible-track-transition)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-switch-visible-track-opacity);transition:var(--mat-switch-visible-track-transition)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-switch-hidden-track-opacity);transition:var(--mat-switch-hidden-track-transition)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-switch-unselected-handle-size);height:var(--mat-switch-unselected-handle-size)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-switch-selected-handle-size);height:var(--mat-switch-selected-handle-size)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-switch-with-icon-handle-size);height:var(--mat-switch-with-icon-handle-size)}.mat-mdc-slide-toggle:active .mdc-switch:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-switch-pressed-handle-size);height:var(--mat-switch-pressed-handle-size)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{margin:var(--mat-switch-selected-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-switch-selected-with-icon-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{margin:var(--mat-switch-unselected-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-switch-unselected-with-icon-handle-horizontal-margin)}.mat-mdc-slide-toggle:active .mdc-switch--selected:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-switch-selected-pressed-handle-horizontal-margin)}.mat-mdc-slide-toggle:active .mdc-switch--unselected:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-switch-unselected-pressed-handle-horizontal-margin)}.mdc-switch__track::after,.mdc-switch__track::before{border-width:var(--mat-switch-track-outline-width);border-color:var(--mat-switch-track-outline-color)}.mdc-switch--selected .mdc-switch__track::after,.mdc-switch--selected .mdc-switch__track::before{border-width:var(--mat-switch-selected-track-outline-width)}.mdc-switch--disabled .mdc-switch__track::after,.mdc-switch--disabled .mdc-switch__track::before{border-width:var(--mat-switch-disabled-unselected-track-outline-width);border-color:var(--mat-switch-disabled-unselected-track-outline-color)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-switch-disabled-selected-handle-opacity)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-switch-disabled-unselected-handle-opacity)}'] }]
}], ctorParameters: () => [{ type: ElementRef }, { type: FocusMonitor }, { type: ChangeDetectorRef }, { type: void 0, decorators: [{
  type: Attribute,
  args: ["tabindex"]
}] }, { type: void 0, decorators: [{
  type: Inject,
  args: [MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS]
}] }, { type: void 0, decorators: [{
  type: Optional
}, {
  type: Inject,
  args: [ANIMATION_MODULE_TYPE]
}] }], propDecorators: { _switchElement: [{
  type: ViewChild,
  args: ["switch"]
}], name: [{
  type: Input
}], id: [{
  type: Input
}], labelPosition: [{
  type: Input
}], ariaLabel: [{
  type: Input,
  args: ["aria-label"]
}], ariaLabelledby: [{
  type: Input,
  args: ["aria-labelledby"]
}], ariaDescribedby: [{
  type: Input,
  args: ["aria-describedby"]
}], required: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], color: [{
  type: Input
}], disabled: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], disableRipple: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], tabIndex: [{
  type: Input,
  args: [{ transform: (value) => value == null ? 0 : numberAttribute(value) }]
}], checked: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], hideIcon: [{
  type: Input,
  args: [{ transform: booleanAttribute }]
}], change: [{
  type: Output
}], toggleChange: [{
  type: Output
}] } });
var MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR = {
  provide: NG_VALIDATORS,
  useExisting: forwardRef(() => MatSlideToggleRequiredValidator),
  multi: true
};
var _MatSlideToggleRequiredValidator = class _MatSlideToggleRequiredValidator extends CheckboxRequiredValidator {
};
_MatSlideToggleRequiredValidator.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSlideToggleRequiredValidator, deps: null, target: FactoryTarget.Directive });
_MatSlideToggleRequiredValidator.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: _MatSlideToggleRequiredValidator, isStandalone: true, selector: "mat-slide-toggle[required][formControlName],\n             mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]", providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: core_exports });
var MatSlideToggleRequiredValidator = _MatSlideToggleRequiredValidator;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatSlideToggleRequiredValidator, decorators: [{
  type: Directive,
  args: [{
    selector: `mat-slide-toggle[required][formControlName],
             mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]`,
    providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR],
    standalone: true
  }]
}] });
var __MatSlideToggleRequiredValidatorModule = class __MatSlideToggleRequiredValidatorModule {
};
__MatSlideToggleRequiredValidatorModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: __MatSlideToggleRequiredValidatorModule, deps: [], target: FactoryTarget.NgModule });
__MatSlideToggleRequiredValidatorModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.0", ngImport: core_exports, type: __MatSlideToggleRequiredValidatorModule, imports: [MatSlideToggleRequiredValidator], exports: [MatSlideToggleRequiredValidator] });
__MatSlideToggleRequiredValidatorModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: __MatSlideToggleRequiredValidatorModule });
var _MatSlideToggleRequiredValidatorModule = __MatSlideToggleRequiredValidatorModule;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSlideToggleRequiredValidatorModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [MatSlideToggleRequiredValidator],
    exports: [MatSlideToggleRequiredValidator]
  }]
}] });
var _MatSlideToggleModule = class _MatSlideToggleModule {
};
_MatSlideToggleModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSlideToggleModule, deps: [], target: FactoryTarget.NgModule });
_MatSlideToggleModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSlideToggleModule, imports: [MatSlideToggle, MatCommonModule], exports: [MatSlideToggle, MatCommonModule] });
_MatSlideToggleModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatSlideToggleModule, imports: [MatSlideToggle, MatCommonModule, MatCommonModule] });
var MatSlideToggleModule = _MatSlideToggleModule;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatSlideToggleModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [MatSlideToggle, MatCommonModule],
    exports: [MatSlideToggle, MatCommonModule]
  }]
}] });

// projects/aimmo-design-system/aim-onoff-toggle/src/aim-onoff-toggle.abstract.ts
var AbstractValueAccessor = class AbstractValueAccessor2 {
  constructor() {
    this.onChange = noop_default;
    this.onTouched = noop_default;
  }
  registerOnChange(fn) {
    this.onChange = fn;
  }
  registerOnTouched(fn) {
    this.onTouched = fn;
  }
};
AbstractValueAccessor = __decorate([
  Directive()
], AbstractValueAccessor);

// projects/aimmo-design-system/aim-onoff-toggle/src/aim-onoff-toggle.component.ts
var _a8;
var AimOnOffToggleComponent = (_a8 = class extends AbstractValueAccessor {
  constructor(changeDetectorRef) {
    super();
    this.changeDetectorRef = changeDetectorRef;
    this.disabled = false;
    this.size = AimOnOffToggleSize.SMALL;
    this.toggleChange = new EventEmitter();
  }
  get value() {
    return this.innerValueSource;
  }
  set value(v2) {
    if (v2 !== this.innerValueSource) {
      this.innerValueSource = v2;
      this.onChange(v2);
    }
  }
  get sizeSmall() {
    return this.size === AimOnOffToggleSize.SMALL;
  }
  get sizeMedium() {
    return this.size === AimOnOffToggleSize.MEDIUM;
  }
  handleToggle(event) {
    this.value = event.checked;
    this.toggleChange.emit(event);
  }
  writeValue(value) {
    if (this.innerValueSource !== value) {
      this.innerValueSource = value;
      this.changeDetectorRef.markForCheck();
      this.onChange(value);
    }
  }
  setDisabledState(isDisabled) {
    if (this.disabled !== isDisabled) {
      this.disabled = isDisabled;
      this.changeDetectorRef.markForCheck();
    }
  }
}, _a8.ctorParameters = () => [
  { type: ChangeDetectorRef }
], _a8.propDecorators = {
  disabled: [{ type: HostBinding, args: ["class.disabled"] }, { type: Input }],
  size: [{ type: Input }],
  toggleChange: [{ type: Output }],
  value: [{ type: Input }],
  sizeSmall: [{ type: HostBinding, args: ["class.sm"] }],
  sizeMedium: [{ type: HostBinding, args: ["class.md"] }]
}, _a8);
AimOnOffToggleComponent = __decorate([
  Component({
    selector: "aim-onoff-toggle",
    template: aim_onoff_toggle_component_default,
    providers: [
      {
        provide: NG_VALUE_ACCESSOR,
        multi: true,
        useExisting: forwardRef(() => AimOnOffToggleComponent)
      }
    ],
    standalone: true,
    imports: [MatSlideToggleModule],
    styles: [aim_onoff_toggle_component_default2]
  })
], AimOnOffToggleComponent);

// projects/eimmo-common/components/model/src/annotation-configs/annotation-config.model.ts
function getNotAllowKeyValueValidator() {
  return Validators.pattern("^[^.$%]*$");
}

// projects/eimmo-common/components/model/src/annotation-configs/attribute-configs-panel/attribute-config/attribute-config.model.ts
function makeAttributeConfigFormGroup(formBuilder) {
  return formBuilder.group({
    [AttributeConfigFormName.id]: [`id-${Date.now()}-${uniqueId_default()}`, Validators.required],
    [AttributeConfigFormName.type]: [null, Validators.required],
    [AttributeConfigFormName.key]: [null, [Validators.required, getNotAllowKeyValueValidator()]],
    [AttributeConfigFormName.name]: [null],
    [AttributeConfigFormName.choicesSourceType]: [null],
    [AttributeConfigFormName.fileMetadataChoicesKey]: [null],
    [AttributeConfigFormName.choices]: formBuilder.array([]),
    [AttributeConfigFormName.format]: [null],
    [AttributeConfigFormName.validation]: formBuilder.group({
      [ValidationFormName.min]: [null],
      [ValidationFormName.max]: [null],
      [ValidationFormName.minCount]: [null],
      [ValidationFormName.maxCount]: [null]
    }),
    [AttributeConfigFormName.defaultValue]: [null],
    [AttributeConfigFormName.optional]: [false],
    [AttributeConfigFormName.uniqueness]: [null],
    [AttributeConfigFormName.includeWhiteSpace]: [null]
  });
}
function setAttributeConfigFormData(formBuilder, attributeConfigFormGroup, data) {
  attributeConfigFormGroup.get(AttributeConfigFormName.id)?.setValue(data.id);
  attributeConfigFormGroup.get(AttributeConfigFormName.type)?.setValue(data.type);
  attributeConfigFormGroup.get(AttributeConfigFormName.key)?.reset();
  attributeConfigFormGroup.get(AttributeConfigFormName.key)?.setValue(data.key);
  attributeConfigFormGroup.get(AttributeConfigFormName.name)?.setValue(data.name || data.key);
  setChoicesSourceData(attributeConfigFormGroup, data);
  setChoiceFormArrayData(formBuilder, attributeConfigFormGroup.get(AttributeConfigFormName.choices), data);
  setFormatFormControlData(attributeConfigFormGroup.get(AttributeConfigFormName.format), data);
  setValidationFormGroupData(attributeConfigFormGroup.get(AttributeConfigFormName.validation), data);
  attributeConfigFormGroup.get(AttributeConfigFormName.defaultValue)?.setValue(isEmpty_default(data.defaultValue?.toString()) ? null : data.defaultValue);
  attributeConfigFormGroup.get(AttributeConfigFormName.optional)?.setValue(data.optional);
  attributeConfigFormGroup.get(AttributeConfigFormName.uniqueness)?.setValue(data.uniqueness);
  if (data.type !== AttributeConfigType.input) {
    attributeConfigFormGroup.removeControl(AttributeConfigFormName.includeWhiteSpace);
  } else {
    attributeConfigFormGroup.get(AttributeConfigFormName.includeWhiteSpace)?.setValue(data.includeWhiteSpace);
  }
}
function setChoiceFormArrayData(formBuilder, choiceFormArray, data) {
  if (isChoiceAttributeConfig(data) || isMultiChoiceAttributeConfig(data)) {
    if (isDirectSourceType(data.choicesSourceType)) {
      choiceFormArray.clear();
      data.choices.forEach((choice) => choiceFormArray.push(makeChoiceForm(formBuilder, choice)));
    } else {
      choiceFormArray.reset();
      choiceFormArray.clearValidators();
      choiceFormArray.disable();
    }
  } else {
    choiceFormArray.disable();
  }
}
function setFormatFormControlData(formatFormControl, data) {
  if (isInputAttributeConfig(data)) {
    formatFormControl.setValue(data.format);
  } else {
    formatFormControl.disable();
  }
}
function setValidationFormGroupData(validationFormGroup, data) {
  if (isMultiChoiceAttributeConfig(data)) {
    validationFormGroup.get(ValidationFormName.min)?.disable();
    validationFormGroup.get(ValidationFormName.max)?.disable();
    validationFormGroup.get(ValidationFormName.minCount)?.setValue(data.validation.minCount);
    validationFormGroup.get(ValidationFormName.maxCount)?.setValue(data.validation.maxCount);
  } else if (isInputAttributeConfig(data)) {
    validationFormGroup.get(ValidationFormName.min)?.setValue(data.validation.min);
    validationFormGroup.get(ValidationFormName.max)?.setValue(data.validation.max);
    validationFormGroup.get(ValidationFormName.minCount)?.disable();
    validationFormGroup.get(ValidationFormName.maxCount)?.disable();
  } else {
    validationFormGroup.disable();
  }
}
function makeChoiceForm(formBuilder, { name, value }) {
  return formBuilder.group({
    [ChoiceFormName.value]: [value, [Validators.required, getNotAllowKeyValueValidator()]],
    [ChoiceFormName.name]: [name || value, [Validators.required]]
  });
}
function hasValidation(attributeConfig) {
  const type2 = attributeConfig[AttributeConfigFormName.type];
  return [AttributeConfigType.input, AttributeConfigType.multiChoice].includes(type2);
}
function getValidationInfo(attributeConfig) {
  if (attributeConfig.type === AttributeConfigType.multiChoice) {
    const multiChoiceAttributeConfig = attributeConfig;
    const validation = multiChoiceAttributeConfig.validation;
    const choices = multiChoiceAttributeConfig.choices;
    const choicesSourceType = multiChoiceAttributeConfig.choicesSourceType;
    return {
      type: AttributeConfigType.multiChoice,
      min: validation?.minCount,
      max: validation?.maxCount,
      choicesSourceType,
      choiceSize: choicesSourceType === AttributeChoicesSourceType.direct ? choices?.length : 1
    };
  } else {
    const inputAttributeConfig = attributeConfig;
    const validation = inputAttributeConfig.validation;
    const format = inputAttributeConfig.format;
    return {
      type: AttributeConfigType.input,
      min: validation?.min,
      max: validation?.max,
      format
    };
  }
}
function checkExceedLimitInputValue(value) {
  return !isNil_default(value) && value > INPUT_MAX_VALUE;
}
function getMultiChoiceValidation(choiceSize, min, max) {
  const calculatedMinCount = isNil_default(min) ? 1 : Math.max(min, 1);
  const calculatedMaxCount = isNil_default(max) ? choiceSize : Math.min(max, choiceSize);
  return [
    [Validators.required, Validators.min(1), Validators.max(Math.max(calculatedMaxCount, 1))],
    [Validators.required, Validators.min(calculatedMinCount), Validators.max(Math.max(choiceSize, 1))]
  ];
}
function getInputValidation(isTextFormat, min, max) {
  const minValidators = [Validators.required];
  const maxValidators = [Validators.required];
  if (isTextFormat) {
    minValidators.push(Validators.min(0));
    maxValidators.push(Validators.min(isNil_default(min) ? 0 : Math.max(min, 0)));
  } else if (!isNil_default(min)) {
    maxValidators.push(Validators.min(min));
  }
  if (!isNil_default(max) && !(isTextFormat && max < 0)) {
    minValidators.push(Validators.max(max));
  }
  return [minValidators, maxValidators];
}
function setChoicesSourceData(attributeConfigFormGroup, data) {
  if (isChoiceAttributeConfig(data) || isMultiChoiceAttributeConfig(data)) {
    attributeConfigFormGroup.get(AttributeConfigFormName.choicesSourceType)?.setValue(data.choicesSourceType);
    attributeConfigFormGroup.get(AttributeConfigFormName.fileMetadataChoicesKey)?.setValue(data.fileMetadataChoicesKey);
  } else {
    attributeConfigFormGroup.get(AttributeConfigFormName.choicesSourceType)?.disable();
    attributeConfigFormGroup.get(AttributeConfigFormName.fileMetadataChoicesKey)?.disable();
  }
}
function isDirectSourceType(sourceType) {
  return sourceType === AttributeChoicesSourceType.direct;
}

// projects/eimmo-common/components/model/src/stage-configs/stage-configs.model.ts
var StageConfigFormName;
(function(StageConfigFormName2) {
  StageConfigFormName2["annotationConfigSelectors"] = "annotationConfigSelectors";
  StageConfigFormName2["id"] = "id";
  StageConfigFormName2["name"] = "name";
})(StageConfigFormName || (StageConfigFormName = {}));

// projects/eimmo-common/components/model/src/annotation-configs/attribute-configs-panel/attribute-configs-panel.model.ts
var AttributeConfigsPanelTab;
(function(AttributeConfigsPanelTab2) {
  AttributeConfigsPanelTab2[AttributeConfigsPanelTab2["commonAttributes"] = 0] = "commonAttributes";
  AttributeConfigsPanelTab2[AttributeConfigsPanelTab2["classItemAttributes"] = 1] = "classItemAttributes";
})(AttributeConfigsPanelTab || (AttributeConfigsPanelTab = {}));

// projects/eimmo-common/components/model/src/annotation-configs/class-panel/class-panel.model.ts
function getUniqueRandomColor(usedColors) {
  let color = null;
  while (isNil_default(color)) {
    color = `#${("000000" + Math.floor(16777216 * Math.random()).toString(16)).slice(-6)}`;
    if (usedColors.some((usedColor) => isEqual_default(usedColor, color))) {
      color = null;
    }
  }
  return color;
}

// projects/eimmo-common/directives/src/text-overflow-tooltip/text-overflow-tooltip.directive.ts
var _a9;
var TextOverflowTooltipDirective = (_a9 = class extends MatTooltip {
  constructor(overlay, elementRef, scrollDispatcher, viewContainerRef, ngZone, platform, ariaDescriber, focusMonitor, scrollStrategy, dir, defaultOptions) {
    super(overlay, elementRef, scrollDispatcher, viewContainerRef, ngZone, platform, ariaDescriber, focusMonitor, scrollStrategy, dir, defaultOptions, null);
    this.elementRef = elementRef;
    this.destroyRef = inject(DestroyRef);
    this.checkTextOverflowSource = new Subject();
  }
  onResizeWindow() {
    this.checkTextOverflowSource.next();
  }
  ngOnInit() {
    this.checkTextOverflowSource.pipe(debounceTime(300), tap(() => this.checkTextOverflow()), takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  ngAfterViewInit() {
    super.ngAfterViewInit();
    this.checkTextOverflowSource.next();
    setTimeout(() => this.checkTextOverflow(), 0);
  }
  checkTextOverflow() {
    const { offsetWidth: offsetWidth2, scrollWidth, innerText } = this.elementRef.nativeElement;
    if (offsetWidth2 < scrollWidth) {
      this.message = innerText;
      this.disabled = false;
    } else {
      this.disabled = true;
    }
  }
}, _a9.ctorParameters = () => [
  { type: Overlay },
  { type: ElementRef },
  { type: ScrollDispatcher },
  { type: ViewContainerRef },
  { type: NgZone },
  { type: Platform },
  { type: AriaDescriber },
  { type: FocusMonitor },
  { type: void 0, decorators: [{ type: Inject, args: [MAT_TOOLTIP_SCROLL_STRATEGY] }] },
  { type: Directionality, decorators: [{ type: Optional }] },
  { type: void 0, decorators: [{ type: Optional }, { type: Inject, args: [MAT_TOOLTIP_DEFAULT_OPTIONS] }] }
], _a9.propDecorators = {
  onResizeWindow: [{ type: HostListener, args: ["window:resize"] }]
}, _a9);
TextOverflowTooltipDirective = __decorate([
  Directive({
    selector: "[appTextOverflowTooltip]",
    standalone: true
  })
], TextOverflowTooltipDirective);

// projects/eimmo-common/directives/src/trim-form-value/trim-form-value.directive.ts
var _a10;
var TrimFormValueDirective = (_a10 = class {
  constructor(controlDir) {
    this.controlDir = controlDir;
  }
  get control() {
    return this.controlDir.control;
  }
  ngOnDestroy() {
    clearTimeout(this.timeoutId);
  }
  trimFormControlValue(target) {
    if (target instanceof HTMLTextAreaElement) {
      return;
    }
    this.timeoutId = setTimeout(() => {
      const value = this.control?.value;
      if (value && typeof value === "string") {
        const trimmedValue = value.trim();
        if (value.length !== trimmedValue.length) {
          this.control?.setValue(trimmedValue);
        }
      }
    });
  }
}, _a10.ctorParameters = () => [
  { type: NgControl }
], _a10.propDecorators = {
  trimFormControlValue: [{ type: HostListener, args: ["blur"] }, { type: HostListener, args: ["keyup.enter", ["$event.target"]] }]
}, _a10);
TrimFormValueDirective = __decorate([
  Directive({
    selector: `
  input[trimFormValue].[formControl],
  input[trimFormValue].[formControlName],
  aim-input-text[trimFormValue].[formControl],
  aim-input-text[trimFormValue].[formControlName],
  aim-input-search[trimFormValue].[formControl],
  aim-input-search[trimFormValue].[formControlName],
  textarea[trimFormValue].[formControl],
  textarea[trimFormValue].[formControlName],
  aim-textarea[trimFormValue].[formControl],
  aim-textarea[trimFormValue].[formControlName]`,
    standalone: true
  })
], TrimFormValueDirective);

// projects/eimmo-common/directives/src/regxp-form-value/regexp-form-value.directive.ts
var _a11;
var RegExpFormValueDirective = (_a11 = class {
  constructor(controlDir) {
    this.controlDir = controlDir;
  }
  get control() {
    return this.controlDir.control;
  }
  ngOnDestroy() {
    clearTimeout(this.timeoutId);
  }
  regexpFormControlValue() {
    this.timeoutId = setTimeout(() => {
      const value = this.control?.value;
      if (this.regExp && value && typeof value === "string") {
        this.control?.setValue(value.replace(this.regExp, ""));
      }
    });
  }
}, _a11.ctorParameters = () => [
  { type: NgControl }
], _a11.propDecorators = {
  regExp: [{ type: Input }],
  regexpFormControlValue: [{ type: HostListener, args: ["blur"] }, { type: HostListener, args: ["keyup.enter"] }]
}, _a11);
RegExpFormValueDirective = __decorate([
  Directive({
    selector: `
  input[regexpFormValue].[formControl],
  input[regexpFormValue].[formControlName],
  aim-input-text[regexpFormValue].[formControl],
  aim-input-text[regexpFormValue].[formControlName],
  aim-input-search[regexpFormValue].[formControl],
  aim-input-search[regexpFormValue].[formControlName]`,
    standalone: true
  })
], RegExpFormValueDirective);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/confirm-dialog/confirm-dialog.component.html
var confirm_dialog_component_default = `<aim-dialog-header *ngIf="title()">
  <span [innerHTML]="title()|safe:'html'"></span>
</aim-dialog-header>

<aim-dialog-content *ngIf="message()">
  <p class="message" [innerHTML]="message()|safe:'html'"></p>
  <p *ngIf="subMessage()" class="message sub" [innerHTML]="subMessage()|safe:'html'"></p>
</aim-dialog-content>

<aim-dialog-actions class="dialog-actions">
  <div class="inner-wrap" [class.alert-with-checkbox]="isAlertWithCheckbox">
    <aim-checkbox-v2 *ngIf="isAlertWithCheckbox" (change)="onCheckNoMore($event)">{{checkboxText()}}</aim-checkbox-v2>
    <aim-button-group>
      <button *ngIf="negativeButtonText()"
              aim-button [buttonTheme]="ButtonTheme.ghost"
              [attr.cdkFocusInitial]="cancelFocus() || null"
              (click)="onCancel()">{{negativeButtonText()}}</button>
      <button aim-button [buttonTheme]="positiveButtonTheme()"
              [attr.cdkFocusInitial]="!cancelFocus() || null"
              (click)="onConfirm()">{{positiveButtonText()}}</button>
    </aim-button-group>
  </div>
</aim-dialog-actions>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/confirm-dialog/confirm-dialog.component.scss
var confirm_dialog_component_default2 = "/* projects/eimmo-common/dialogs/src/confirm-dialog/confirm-dialog.component.scss */\n:host {\n  display: block;\n}\n.message {\n  margin: 0;\n}\n.message.sub {\n  margin-top: 8px;\n  color: #999999;\n}\n.dialog-actions {\n  margin-top: 32px;\n}\n.dialog-actions .inner-wrap {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-end;\n  align-content: stretch;\n  align-items: stretch;\n  max-height: 100%;\n  width: 100%;\n}\n.dialog-actions .inner-wrap.alert-with-checkbox {\n  justify-content: space-between;\n}\n";

// projects/aimmo-pipes/safe/src/safe.pipe.ts
var _a12;
var SafePipe = (_a12 = class {
  constructor(sanitizer) {
    this.sanitizer = sanitizer;
  }
  transform(value, type2) {
    if (!value) {
      return void 0;
    }
    switch (type2) {
      case "html":
        return this.sanitizer.bypassSecurityTrustHtml(value);
      case "style":
        return this.sanitizer.bypassSecurityTrustStyle(value);
      case "script":
        return this.sanitizer.bypassSecurityTrustScript(value);
      case "url":
        return this.sanitizer.bypassSecurityTrustUrl(value);
      case "resourceUrl":
        return this.sanitizer.bypassSecurityTrustResourceUrl(value);
      case "backgroundUrl":
        return this.sanitizer.bypassSecurityTrustStyle(`url(${value})`);
      default:
        throw new Error(`Invalid safe type specified: ${type2}`);
    }
  }
}, _a12.ctorParameters = () => [
  { type: DomSanitizer }
], _a12);
SafePipe = __decorate([
  Pipe({
    name: "safe",
    standalone: true
  })
], SafePipe);

// projects/eimmo-common/dialogs/src/confirm-dialog/confirm-dialog.model.ts
var ConfirmDialogType;
(function(ConfirmDialogType2) {
  ConfirmDialogType2["alert"] = "alert";
  ConfirmDialogType2["confirm"] = "confirm";
  ConfirmDialogType2["alertWithCheckbox"] = "alert-with-checkbox";
})(ConfirmDialogType || (ConfirmDialogType = {}));
function makeDialogConfig(type2, title, message, positiveButtonText, negativeButtonText, checkboxText, cancelFocus = false) {
  return {
    minWidth: "256px",
    maxWidth: "640px",
    data: { type: type2, title, message, positiveButtonText, negativeButtonText, checkboxText, cancelFocus }
  };
}
function makeAlertDialogConfig(title, message, positiveButtonText) {
  return makeDialogConfig(ConfirmDialogType.alert, title, message, positiveButtonText, void 0, void 0);
}
function makeOnlyTitleAlertDialogConfig(title, positiveButtonText) {
  return makeDialogConfig(ConfirmDialogType.alert, title, void 0, positiveButtonText, void 0, void 0);
}
function makeConfirmDialogConfig(title, message, positiveButtonText, negativeButtonText, cancelFocus = false) {
  return makeDialogConfig(ConfirmDialogType.confirm, title, message, positiveButtonText, negativeButtonText, void 0, cancelFocus);
}
function makeOnlyTitleConfirmDialogConfig(title, positiveButtonText, negativeButtonText, cancelFocus = false) {
  return makeDialogConfig(ConfirmDialogType.confirm, title, void 0, positiveButtonText, negativeButtonText, void 0, cancelFocus);
}

// projects/eimmo-common/dialogs/src/confirm-dialog/confirm-dialog.component.ts
var _a13;
var ConfirmDialogComponent = (_a13 = class {
  constructor(data, dialogRef) {
    this.data = data;
    this.dialogRef = dialogRef;
    this.ButtonTheme = ButtonTheme;
    this.isAlertWithCheckbox = false;
    this.title = signal("");
    this.message = signal("");
    this.subMessage = signal("");
    this.positiveButtonText = signal("");
    this.positiveButtonTheme = signal(ButtonTheme.outline);
    this.negativeButtonText = signal("");
    this.checkboxText = signal("");
    this.cancelFocus = signal(false);
    this.destroyRef = inject(DestroyRef);
    this.noMoreCheck = false;
  }
  get dialogBeforeClosedAction$() {
    return this.dialogRef.beforeClosed().pipe(filter(() => this.data.type === ConfirmDialogType.alertWithCheckbox), tap(() => this.dialogRef.close(this.noMoreCheck)));
  }
  ngOnInit() {
    this.initializeParams();
    forkJoin([
      this.dialogBeforeClosedAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
    this.isAlertWithCheckbox = this.data.type === ConfirmDialogType.alertWithCheckbox;
  }
  onCheckNoMore(checkbox) {
    this.noMoreCheck = checkbox.checked;
  }
  onConfirm() {
    this.dialogRef.close(true);
  }
  onCancel() {
    this.dialogRef.close(false);
  }
  initializeParams() {
    this.title.set(this.data.title);
    this.message.set(this.data.message);
    this.subMessage.set(this.data.subMessage);
    this.positiveButtonText.set(this.data?.positiveButtonText);
    this.negativeButtonText.set(this.data?.negativeButtonText);
    this.cancelFocus.set(this.data.cancelFocus);
    if (!!this.data.positiveButtonTheme) {
      this.positiveButtonTheme.set(this.data.positiveButtonTheme);
    }
    if (this.data.type === ConfirmDialogType.alertWithCheckbox) {
      this.checkboxText.set(this.data?.checkboxText);
    }
  }
}, _a13.ctorParameters = () => [
  { type: void 0, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] },
  { type: MatDialogRef }
], _a13);
ConfirmDialogComponent = __decorate([
  Component({
    selector: "eimmo-common-confirm-dialog",
    template: confirm_dialog_component_default,
    standalone: true,
    imports: [
      NgIf,
      AimDialogModule,
      AimCheckboxV2Component,
      AimButtonGroupComponent,
      AimButtonHostingDirective,
      AimButtonComponent,
      SafePipe
    ],
    styles: [confirm_dialog_component_default2]
  })
], ConfirmDialogComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choices.component.html
var choices_component_default = `<ng-container *ngIf="AttributeChoicesSourceType.direct === choicesSourceTypeControl.value">

  <ng-container *ngIf="editable">
    <aim-form-layout class="choices__header">
      <aim-label>{{ '@\uD558\uC704_\uC18D\uC131_\uCD94\uAC00@' | translate }}</aim-label>
      <aim-input-text (keyup.enter)="onAddNewChoice()" [activeValidationError]="choiceFormArray?.controls?.length === 0"
                      [formControl]="newChoiceValueFormControl"
                      [maxlength]="choiceValueMaxLength" [placeholder]="'@\uC791\uC131_\uD6C4_Enter\uB97C_\uB20C\uB7EC_\uCD94\uAC00\uD558\uC138\uC694_P@' | translate"
                      trimFormValue/>
      <aim-desc-and-count>
        <aim-description>{{ '@\uD50C\uB7AB\uD3FC_\uB0B4\uC5D0\uC11C_\uBCF4\uC5EC\uC9C0\uB294_\uD558\uC704_\uC18D\uC131\uC740_\uC544\uB798\uC5D0\uC11C_\uC124\uC815\uD560_\uC218_\uC788\uC2B5\uB2C8\uB2E4@'|translate }}</aim-description>
        <aim-count [max]="choiceValueMaxLength" [value]="newChoiceValueFormControl.value?.length ?? 0"/>
      </aim-desc-and-count>
    </aim-form-layout>
  </ng-container>
  <div [class.has-actions]="editable" class="choices__table-header">
    <span class="choices__cell-text choices__cell">{{ '@\uD558\uC704_\uC18D\uC131@' | translate }}</span>
    <div class="choices__cell-text choices__cell--center">
      <span class="choices__item-header__name__label">{{ '@\uD45C\uC2DC\uB420_\uD558\uC704_\uC18D\uC131@' | translate }}</span>
      <aim-icon [aimTooltip]="'@\uD50C\uB7AB\uD3FC_\uB0B4\uC5D0\uC11C_\uD45C\uC2DC\uB420_\uB54C_\uC0AC\uC6A9\uB418\uB294_\uD558\uC704_\uC18D\uC131_\uC785\uB2C8\uB2E4_T@' | translate" icon="info"/>
    </div>
    <div class="choices__cell-text--close"></div>
  </div>
  <div class="choices__table-wrapper">
    <aim-scroll>
      <eimmo-common-choice (clickDelete)="onRemoveChoice(i)"
                           *ngFor="let choiceFormGroup of choiceFormArray?.controls; let i = index"
                           [choiceFormGroup]="choiceFormGroup"
                           [editable]="editable"
                           class="choices__table-row"/>
      <span *ngIf="choiceFormArray?.controls?.length===null || choiceFormArray?.controls?.length===0"
            class="choices__table--empty">
      {{ '@\uBAA9\uB85D\uC774_\uC5C6\uC2B5\uB2C8\uB2E4@'|translate }}
    </span>
    </aim-scroll>
  </div>
</ng-container>

<ng-container *ngIf="AttributeChoicesSourceType.fileMetadata === choicesSourceTypeControl.value">
  <ng-container *ngIf="editable">
    <aim-form-layout>
      <aim-label>{{ '@\uBA54\uD0C0_\uB370\uC774\uD130_\uC785\uB825_L@' | translate }}</aim-label>
      <aim-input-text (keyup.enter)="onAddNewChoice()" [formControl]="fileMetadataChoicesKeyControl"
                      [placeholder]="'@key\uB97C_\uC785\uB825\uD574\uC8FC\uC138\uC694_P@' | translate"
                      class="choices__input"
                      trimFormValue/>
    </aim-form-layout>
  </ng-container>
</ng-container>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choices.component.scss
var choices_component_default2 = "/* projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choices.component.scss */\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n}\n.choices__header {\n  margin-bottom: 24px;\n}\n.choices__table-header {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  border: 1px solid #333333;\n  border-left: none;\n  border-right: none;\n  height: 40px;\n}\n.choices__table--empty {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: center;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  height: 100%;\n  border-bottom: 1px solid #333333;\n}\n.choices__table-wrapper {\n  height: 256px;\n  max-height: 256px;\n  margin-bottom: 24px;\n}\n.choices__cell--center {\n  border-right: 1px solid #333333;\n  border-left: 1px solid #333333;\n}\n.choices__cell-text {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  height: 100%;\n  flex-grow: 1;\n  max-width: 370px;\n  min-width: 370px;\n  color: #dfdfdf;\n  padding: 0 16px;\n}\n.choices__cell-text--close {\n  width: 60px;\n}\n";

// angular:jit:template:file:projects/aimmo-design-system/aim-input-text/src/aim-input-text.component.html
var aim_input_text_component_default = '<aim-icon *ngIf="useIcon" [icon]="icon" class="icon"/>\n<input (blur)="onBlur($event)" (focus)="onFocus($event)" [attr.maxlength]="maxlength" [class.error]="isError"\n       [class.useIcon]="useIcon" [class.warning]="isWarning" [formControl]="formControl"\n       [placeholder]="placeholder" [readonly]="readonly" autocomplete="off" class="design-system-text-input"\n       matInput type="search"/>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-input-text/src/aim-input-text.component.scss
var aim_input_text_component_default2 = '/* projects/aimmo-design-system/aim-input-text/src/aim-input-text.component.scss */\n:host {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  position: relative;\n  display: block;\n}\n:host.medium {\n  width: 260px;\n}\n:host.small {\n  width: 180px;\n}\n:host.fill {\n  width: 100%;\n}\n:host.fill-large {\n  height: 40px;\n}\n:host ::ng-deep .design-system-text-input.mat-mdc-input-element {\n  margin: 0;\n}\n.design-system-text-input {\n  background-color: #333333;\n  box-sizing: border-box;\n  border-radius: 4px;\n  padding: 0 16px;\n  margin: 0;\n  width: 100%;\n  height: 32px;\n  border: 1px solid #333333;\n  color: #dfdfdf;\n  caret-color: #dfdfdf;\n  outline: none;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.design-system-text-input::-webkit-search-cancel-button {\n  display: none;\n}\n.design-system-text-input.useIcon {\n  padding-left: 40px;\n}\n.design-system-text-input:hover {\n  border: 1px solid #545454;\n}\n.design-system-text-input:focus {\n  border: 1px solid #787878;\n}\n.design-system-text-input:focus::-webkit-search-cancel-button {\n  display: block;\n}\n.design-system-text-input:focus:hover {\n  border: 1px solid #787878;\n}\n.design-system-text-input::placeholder {\n  color: #787878;\n  overflow: visible;\n}\n.design-system-text-input.warning:not(:read-only):not(:disabled) {\n  border: 1px solid #f17f1f;\n  color: #f17f1f;\n  caret-color: #f17f1f;\n}\n.design-system-text-input.warning:not(:read-only):not(:disabled):hover {\n  border: 1px solid #f17f1f;\n}\n.design-system-text-input.warning:not(:read-only):not(:disabled):focus {\n  border: 1px solid #f17f1f;\n}\n.design-system-text-input.error:not(:read-only):not(:disabled) {\n  border: 1px solid #de6251;\n  color: #de6251;\n  caret-color: #de6251;\n}\n.design-system-text-input.error:not(:read-only):not(:disabled):hover {\n  border: 1px solid #de6251;\n}\n.design-system-text-input.error:not(:read-only):not(:disabled):focus {\n  border: 1px solid #de6251;\n}\n.design-system-text-input:disabled {\n  background-color: #222222;\n  color: #545454;\n  border: 1px solid #222222;\n}\n.design-system-text-input:disabled::placeholder {\n  color: #545454;\n}\n.design-system-text-input:read-only:not(:disabled) {\n  background-color: transparent;\n  border: 1px solid #333333;\n  color: #787878;\n}\n.design-system-text-input::-webkit-search-cancel-button {\n  margin-right: -8px;\n  cursor: pointer;\n  -webkit-appearance: none;\n  background-color: #dfdfdf;\n  width: 16px;\n  height: 16px;\n  padding: 8px;\n  -webkit-mask-repeat: no-repeat;\n  mask-repeat: no-repeat;\n  -webkit-mask-image: url("./media/aim-icon-clear.svg");\n  mask-image: url("./media/aim-icon-clear.svg");\n  -webkit-mask-position: 50% 50%;\n  mask-position: 50% 50%;\n}\n@supports (-ms-ime-align: auto) {\n  .design-system-text-input::-webkit-search-cancel-button {\n    background: url("./media/aim-icon-clear.svg") no-repeat 50% 50%;\n  }\n}\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n  .design-system-text-input::-webkit-search-cancel-button {\n    background: url("./media/aim-icon-clear.svg") no-repeat 50% 50%;\n  }\n}\n.icon {\n  position: absolute;\n  top: 8px;\n  left: 16px;\n  color: #dfdfdf;\n}\n';

// projects/aimmo-design-system/aim-input-text/src/aim-input-text.component.ts
var _a14;
var AimInputTextComponent = (_a14 = class {
  constructor(elementRef, parentFormLayout, ngControl, changeDetectorRef) {
    this.elementRef = elementRef;
    this.parentFormLayout = parentFormLayout;
    this.ngControl = ngControl;
    this.changeDetectorRef = changeDetectorRef;
    this.size = AimInputSize.fill;
    this.readonly = false;
    this.placeholder = "";
    this.useIcon = false;
    this.activeValidationError = true;
    this.onChange = noop_default;
    this.formControl = new FormControl("");
    this.errorState = true;
    this.required = false;
    this.ngModelChange = new EventEmitter();
    this.blur = new EventEmitter();
    this.focus = new EventEmitter();
    this.clearValue = new EventEmitter();
    this.useBlur = false;
    this.destroyRef = inject(DestroyRef);
    if (this.ngControl != null) {
      this.ngControl.valueAccessor = this;
    }
  }
  set _formControl(abstractControl) {
    this.formControl = abstractControl;
  }
  set ngModel(value) {
    this.formControl.setValue(value);
  }
  get isError() {
    return this.formControl.dirty && this.formControl.invalid && this.activeValidationError;
  }
  // ToDo warning 기준 정의 안됨.
  get isWarning() {
    return false;
  }
  get ref() {
    return this.elementRef;
  }
  get isSizeSmall() {
    return this.size === AimInputSize.small;
  }
  get isSizeMedium() {
    return this.size === AimInputSize.medium;
  }
  get isSizeFill() {
    return this.size === AimInputSize.fill;
  }
  get valueChangeAction$() {
    return this.formControl.valueChanges.pipe(tap((val) => {
      this.onChange(val);
      this.ngModelChange.emit(val);
    }));
  }
  get statusChangesAction$() {
    return this.matInput.ngControl.statusChanges.pipe(tap((status) => this.errorState = status !== "VALID"));
  }
  ngOnInit() {
    this.required = this.formControl.errors?.required;
    this.ngControl = this.matInput.ngControl;
    if (this.value) {
      this.writeValue(this.value);
    }
  }
  ngAfterViewInit() {
    forkJoin([
      this.valueChangeAction$,
      this.statusChangesAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  writeValue(value) {
    this.formControl.markAsUntouched();
    this.changeDetectorRef.detectChanges();
  }
  registerOnChange(fn) {
  }
  registerOnTouched(fn) {
  }
  onFocus(event) {
    this.useBlur = false;
    this.focus.emit(event);
  }
  onBlur(event) {
    this.useBlur = true;
    this.blur.emit(event);
  }
}, _a14.ctorParameters = () => [
  { type: ElementRef },
  { type: AimFormLayoutComponent, decorators: [{ type: Optional }, { type: Host }, { type: Inject, args: [AIM_FORM_LAYOUT] }] },
  { type: NgControl, decorators: [{ type: Host }, { type: Inject, args: [NgControl] }] },
  { type: ChangeDetectorRef }
], _a14.propDecorators = {
  size: [{ type: Input }],
  readonly: [{ type: Input }],
  placeholder: [{ type: Input }],
  maxlength: [{ type: Input }],
  value: [{ type: Input }],
  icon: [{ type: Input }],
  useIcon: [{ type: Input }],
  activeValidationError: [{ type: Input }],
  matInput: [{ type: ViewChild, args: [MatInput, { static: true }] }],
  ngModelChange: [{ type: Output }],
  blur: [{ type: Output }],
  focus: [{ type: Output }],
  clearValue: [{ type: Output }],
  _formControl: [{ type: Input, args: ["formControl"] }],
  ngModel: [{ type: Input }],
  isSizeSmall: [{ type: HostBinding, args: ["class.small"] }],
  isSizeMedium: [{ type: HostBinding, args: ["class.medium"] }],
  isSizeFill: [{ type: HostBinding, args: ["class.fill"] }]
}, _a14);
AimInputTextComponent = __decorate([
  Component({
    selector: "aim-input-text",
    template: aim_input_text_component_default,
    providers: [
      {
        provide: AimFormLayoutControl,
        useExisting: AimInputTextComponent
      }
    ],
    changeDetection: ChangeDetectionStrategy.OnPush,
    standalone: true,
    imports: [
      NgIf,
      AimIconComponent,
      MatInputModule,
      FormsModule,
      ReactiveFormsModule
    ],
    styles: [aim_input_text_component_default2]
  })
], AimInputTextComponent);

// angular:jit:template:file:projects/aimmo-design-system/aim-scroll/src/aim-scroll.component.html
var aim_scroll_component_default = '<overlay-scrollbars [options]="options" class="overlay-scroll">\n  <ng-content/>\n</overlay-scrollbars>\n<aim-divider *ngIf="useBottomDivider && hasOverflowY"/>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-scroll/src/aim-scroll.component.scss
var aim_scroll_component_default2 = '/* projects/aimmo-design-system/aim-scroll/src/aim-scroll.component.scss */\n.aim-scroll-theme.os-scrollbar {\n  box-sizing: border-box;\n  padding: 4px;\n  background: transparent;\n}\n.aim-scroll-theme.os-scrollbar-horizontal {\n  right: 8px;\n  height: var(--aim-scroll-scrollbar-height-horizontal, 16px);\n}\n.aim-scroll-theme.os-scrollbar-vertical {\n  bottom: 8px;\n  width: var(--aim-scroll-scrollbar-width-vertical, 16px);\n}\n.aim-scroll-theme.os-scrollbar-rtl.os-scrollbar-horizontal {\n  left: 8px;\n  right: 0;\n}\n.aim-scroll-theme.os-scrollbar-unusable {\n  background: transparent;\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track {\n  background: transparent;\n}\n.aim-scroll-theme.os-scrollbar-horizontal > .os-scrollbar-track > .os-scrollbar-handle {\n  box-sizing: border-box;\n  min-width: var(--aim-scroll-scrollbar-handle-min-width-horizontal, 24px);\n}\n.aim-scroll-theme.os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle {\n  box-sizing: border-box;\n  min-height: var(--aim-scroll-scrollbar-handle-min-height-vertical, 24px);\n}\n.aim-scroll-theme.os-scrollbar-transition > .os-scrollbar-track > .os-scrollbar-handle {\n  transition: background-color 0.3s;\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle,\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track {\n  border-radius: 100px;\n  border: 1px solid #545454;\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle {\n  background: rgba(84, 84, 84, 0.5);\n}\n.aim-scroll-theme.os-scrollbar:hover > .os-scrollbar-track > .os-scrollbar-handle {\n  background: rgba(84, 84, 84, 0.5);\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle.active {\n  background: rgba(84, 84, 84, 0.5);\n}\n.aim-scroll-theme.os-scrollbar-horizontal .os-scrollbar-handle:before,\n.aim-scroll-theme.os-scrollbar-vertical .os-scrollbar-handle:before {\n  content: "";\n  position: absolute;\n  left: 0;\n  right: 0;\n  top: 0;\n  bottom: 0;\n  display: block;\n}\n.aim-scroll-theme.os-host-scrollbar-hidden > .os-scrollbar-handle:before {\n  display: none;\n}\n.aim-scroll-theme.os-scrollbar-horizontal .os-scrollbar-handle:before {\n  top: -8px;\n  bottom: -4px;\n}\n.aim-scroll-theme.os-scrollbar-vertical .os-scrollbar-handle:before {\n  left: -8px;\n  right: -4px;\n}\n.aim-scroll-theme.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle:before {\n  right: -8px;\n  left: -4px;\n}\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  box-sizing: border-box;\n  width: 100%;\n  height: 100%;\n  min-width: inherit;\n  min-height: inherit;\n  max-width: inherit;\n  max-height: inherit;\n}\n:host.large {\n  --aim-scroll-scrollbar-height-horizontal: 20px;\n  --aim-scroll-scrollbar-handle-min-width-horizontal: calc(var(--aim-scroll-scrollbar-height-horizontal) + 8px);\n  --aim-scroll-scrollbar-width-vertical: 20px;\n  --aim-scroll-scrollbar-handle-min-height-vertical: calc(var(--aim-scroll-scrollbar-width-vertical) + 8px);\n}\n:host .overlay-scroll {\n  box-sizing: border-box;\n  width: 100%;\n  height: 100%;\n  min-width: inherit;\n  min-height: inherit;\n  max-width: inherit;\n  max-height: inherit;\n}\n';

// node_modules/overlayscrollbars/overlayscrollbars.mjs
function each(t2, n2) {
  if (isArrayLike(t2)) {
    for (let o2 = 0; o2 < t2.length; o2++) {
      if (false === n2(t2[o2], o2, t2)) {
        break;
      }
    }
  } else if (t2) {
    each(Object.keys(t2), (o2) => n2(t2[o2], o2, t2));
  }
  return t2;
}
function style2(t2, n2) {
  const o2 = isString(n2);
  const s2 = isArray(n2) || o2;
  if (s2) {
    let s3 = o2 ? "" : {};
    if (t2) {
      const e2 = window.getComputedStyle(t2, null);
      s3 = o2 ? getCSSVal(t2, e2, n2) : n2.reduce((n3, o3) => {
        n3[o3] = getCSSVal(t2, e2, o3);
        return n3;
      }, s3);
    }
    return s3;
  }
  t2 && each(keys(n2), (o3) => setCSSVal(t2, o3, n2[o3]));
}
var createCache = (t2, n2) => {
  const { o: o2, u: s2, _: e2 } = t2;
  let c2 = o2;
  let r2;
  const cacheUpdateContextual = (t3, n3) => {
    const o3 = c2;
    const i2 = t3;
    const l2 = n3 || (s2 ? !s2(o3, i2) : o3 !== i2);
    if (l2 || e2) {
      c2 = i2;
      r2 = o3;
    }
    return [c2, l2, r2];
  };
  const cacheUpdateIsolated = (t3) => cacheUpdateContextual(n2(c2, r2), t3);
  const getCurrentCache = (t3) => [c2, !!t3, r2];
  return [n2 ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache];
};
var isClient = () => "undefined" !== typeof window;
var t = isClient() && Node.ELEMENT_NODE;
var { toString: n, hasOwnProperty: o } = Object.prototype;
var isUndefined = (t2) => void 0 === t2;
var isNull = (t2) => null === t2;
var type = (t2) => isUndefined(t2) || isNull(t2) ? `${t2}` : n.call(t2).replace(/^\[object (.+)\]$/, "$1").toLowerCase();
var isNumber = (t2) => "number" === typeof t2;
var isString = (t2) => "string" === typeof t2;
var isBoolean = (t2) => "boolean" === typeof t2;
var isFunction = (t2) => "function" === typeof t2;
var isArray = (t2) => Array.isArray(t2);
var isObject = (t2) => "object" === typeof t2 && !isArray(t2) && !isNull(t2);
var isArrayLike = (t2) => {
  const n2 = !!t2 && t2.length;
  const o2 = isNumber(n2) && n2 > -1 && n2 % 1 == 0;
  return isArray(t2) || !isFunction(t2) && o2 ? n2 > 0 && isObject(t2) ? n2 - 1 in t2 : true : false;
};
var isPlainObject = (t2) => {
  if (!t2 || !isObject(t2) || "object" !== type(t2)) {
    return false;
  }
  let n2;
  const s2 = "constructor";
  const e2 = t2[s2];
  const c2 = e2 && e2.prototype;
  const r2 = o.call(t2, s2);
  const i2 = c2 && o.call(c2, "isPrototypeOf");
  if (e2 && !r2 && !i2) {
    return false;
  }
  for (n2 in t2) {
  }
  return isUndefined(n2) || o.call(t2, n2);
};
var isHTMLElement = (n2) => {
  const o2 = HTMLElement;
  return n2 ? o2 ? n2 instanceof o2 : n2.nodeType === t : false;
};
var isElement = (n2) => {
  const o2 = Element;
  return n2 ? o2 ? n2 instanceof o2 : n2.nodeType === t : false;
};
var indexOf = (t2, n2, o2) => t2.indexOf(n2, o2);
var push = (t2, n2, o2) => {
  !o2 && !isString(n2) && isArrayLike(n2) ? Array.prototype.push.apply(t2, n2) : t2.push(n2);
  return t2;
};
var from = (t2) => {
  const n2 = Array.from;
  const o2 = [];
  if (n2 && t2) {
    return n2(t2);
  }
  if (t2 instanceof Set) {
    t2.forEach((t3) => {
      push(o2, t3);
    });
  } else {
    each(t2, (t3) => {
      push(o2, t3);
    });
  }
  return o2;
};
var isEmptyArray = (t2) => !!t2 && 0 === t2.length;
var runEachAndClear = (t2, n2, o2) => {
  const runFn = (t3) => t3 && t3.apply(void 0, n2 || []);
  each(t2, runFn);
  !o2 && (t2.length = 0);
};
var hasOwnProperty = (t2, n2) => Object.prototype.hasOwnProperty.call(t2, n2);
var keys = (t2) => t2 ? Object.keys(t2) : [];
var assignDeep = (t2, n2, o2, s2, e2, c2, r2) => {
  const i2 = [n2, o2, s2, e2, c2, r2];
  if (("object" !== typeof t2 || isNull(t2)) && !isFunction(t2)) {
    t2 = {};
  }
  each(i2, (n3) => {
    each(keys(n3), (o3) => {
      const s3 = n3[o3];
      if (t2 === s3) {
        return true;
      }
      const e3 = isArray(s3);
      if (s3 && (isPlainObject(s3) || e3)) {
        const n4 = t2[o3];
        let c3 = n4;
        if (e3 && !isArray(n4)) {
          c3 = [];
        } else if (!e3 && !isPlainObject(n4)) {
          c3 = {};
        }
        t2[o3] = assignDeep(c3, s3);
      } else {
        t2[o3] = s3;
      }
    });
  });
  return t2;
};
var isEmptyObject = (t2) => {
  for (const n2 in t2) {
    return false;
  }
  return true;
};
var getSetProp = (t2, n2, o2, s2) => {
  if (isUndefined(s2)) {
    return o2 ? o2[t2] : n2;
  }
  o2 && (isString(s2) || isNumber(s2)) && (o2[t2] = s2);
};
var attr = (t2, n2, o2) => {
  if (isUndefined(o2)) {
    return t2 ? t2.getAttribute(n2) : null;
  }
  t2 && t2.setAttribute(n2, o2);
};
var attrClass = (t2, n2, o2, s2) => {
  if (o2) {
    const e2 = attr(t2, n2) || "";
    const c2 = new Set(e2.split(" "));
    c2[s2 ? "add" : "delete"](o2);
    attr(t2, n2, from(c2).join(" ").trim());
  }
};
var hasAttrClass = (t2, n2, o2) => {
  const s2 = attr(t2, n2) || "";
  const e2 = new Set(s2.split(" "));
  return e2.has(o2);
};
var removeAttr = (t2, n2) => {
  t2 && t2.removeAttribute(n2);
};
var scrollLeft = (t2, n2) => getSetProp("scrollLeft", 0, t2, n2);
var scrollTop = (t2, n2) => getSetProp("scrollTop", 0, t2, n2);
var s = isClient() && Element.prototype;
var find = (t2, n2) => {
  const o2 = [];
  const s2 = n2 ? isElement(n2) ? n2 : null : document;
  return s2 ? push(o2, s2.querySelectorAll(t2)) : o2;
};
var findFirst = (t2, n2) => {
  const o2 = n2 ? isElement(n2) ? n2 : null : document;
  return o2 ? o2.querySelector(t2) : null;
};
var is = (t2, n2) => {
  if (isElement(t2)) {
    const o2 = s.matches || s.msMatchesSelector;
    return o2.call(t2, n2);
  }
  return false;
};
var contents = (t2) => t2 ? from(t2.childNodes) : [];
var parent = (t2) => t2 ? t2.parentElement : null;
var closest = (t2, n2) => {
  if (isElement(t2)) {
    const o2 = s.closest;
    if (o2) {
      return o2.call(t2, n2);
    }
    do {
      if (is(t2, n2)) {
        return t2;
      }
      t2 = parent(t2);
    } while (t2);
  }
  return null;
};
var liesBetween = (t2, n2, o2) => {
  const s2 = t2 && closest(t2, n2);
  const e2 = t2 && findFirst(o2, s2);
  const c2 = closest(e2, n2) === s2;
  return s2 && e2 ? s2 === t2 || e2 === t2 || c2 && closest(closest(t2, o2), n2) !== s2 : false;
};
var before = (t2, n2, o2) => {
  if (o2 && t2) {
    let s2 = n2;
    let e2;
    if (isArrayLike(o2)) {
      e2 = document.createDocumentFragment();
      each(o2, (t3) => {
        if (t3 === s2) {
          s2 = t3.previousSibling;
        }
        e2.appendChild(t3);
      });
    } else {
      e2 = o2;
    }
    if (n2) {
      if (!s2) {
        s2 = t2.firstChild;
      } else if (s2 !== n2) {
        s2 = s2.nextSibling;
      }
    }
    t2.insertBefore(e2, s2 || null);
  }
};
var appendChildren = (t2, n2) => {
  before(t2, null, n2);
};
var insertBefore = (t2, n2) => {
  before(parent(t2), t2, n2);
};
var insertAfter = (t2, n2) => {
  before(parent(t2), t2 && t2.nextSibling, n2);
};
var removeElements = (t2) => {
  if (isArrayLike(t2)) {
    each(from(t2), (t3) => removeElements(t3));
  } else if (t2) {
    const n2 = parent(t2);
    if (n2) {
      n2.removeChild(t2);
    }
  }
};
var createDiv = (t2) => {
  const n2 = document.createElement("div");
  if (t2) {
    attr(n2, "class", t2);
  }
  return n2;
};
var createDOM = (t2) => {
  const n2 = createDiv();
  n2.innerHTML = t2.trim();
  return each(contents(n2), (t3) => removeElements(t3));
};
var firstLetterToUpper = (t2) => t2.charAt(0).toUpperCase() + t2.slice(1);
var getDummyStyle = () => createDiv().style;
var e = ["-webkit-", "-moz-", "-o-", "-ms-"];
var c = ["WebKit", "Moz", "O", "MS", "webkit", "moz", "o", "ms"];
var r = {};
var i = {};
var cssProperty = (t2) => {
  let n2 = i[t2];
  if (hasOwnProperty(i, t2)) {
    return n2;
  }
  const o2 = firstLetterToUpper(t2);
  const s2 = getDummyStyle();
  each(e, (e2) => {
    const c2 = e2.replace(/-/g, "");
    const r2 = [t2, e2 + t2, c2 + o2, firstLetterToUpper(c2) + o2];
    return !(n2 = r2.find((t3) => void 0 !== s2[t3]));
  });
  return i[t2] = n2 || "";
};
var jsAPI = (t2) => {
  if (isClient()) {
    let n2 = r[t2] || window[t2];
    if (hasOwnProperty(r, t2)) {
      return n2;
    }
    each(c, (o2) => {
      n2 = n2 || window[o2 + firstLetterToUpper(t2)];
      return !n2;
    });
    r[t2] = n2;
    return n2;
  }
};
var l = jsAPI("MutationObserver");
var a = jsAPI("IntersectionObserver");
var u = jsAPI("ResizeObserver");
var d = jsAPI("cancelAnimationFrame");
var f = jsAPI("requestAnimationFrame");
var _ = isClient() && window.setTimeout;
var h = isClient() && window.clearTimeout;
var equal = (t2, n2, o2, s2) => {
  if (t2 && n2) {
    let e2 = true;
    each(o2, (o3) => {
      const c2 = s2 ? s2(t2[o3]) : t2[o3];
      const r2 = s2 ? s2(n2[o3]) : n2[o3];
      if (c2 !== r2) {
        e2 = false;
      }
    });
    return e2;
  }
  return false;
};
var equalWH = (t2, n2) => equal(t2, n2, ["w", "h"]);
var equalXY = (t2, n2) => equal(t2, n2, ["x", "y"]);
var equalTRBL = (t2, n2) => equal(t2, n2, ["t", "r", "b", "l"]);
var equalBCRWH = (t2, n2, o2) => equal(t2, n2, ["width", "height"], o2 && ((t3) => Math.round(t3)));
var noop = () => {
};
var selfClearTimeout = (t2) => {
  let n2;
  const o2 = t2 ? _ : f;
  const s2 = t2 ? h : d;
  return [(e2) => {
    s2(n2);
    n2 = o2(e2, isFunction(t2) ? t2() : t2);
  }, () => s2(n2)];
};
var debounce = (t2, n2) => {
  let o2;
  let s2;
  let e2;
  let c2 = noop;
  const { g: r2, v: i2, p: l2 } = n2 || {};
  const a2 = function invokeFunctionToDebounce(n3) {
    c2();
    h(o2);
    o2 = s2 = void 0;
    c2 = noop;
    t2.apply(this, n3);
  };
  const mergeParms = (t3) => l2 && s2 ? l2(s2, t3) : t3;
  const flush = () => {
    if (c2 !== noop) {
      a2(mergeParms(e2) || e2);
    }
  };
  const u2 = function debouncedFn() {
    const t3 = from(arguments);
    const n3 = isFunction(r2) ? r2() : r2;
    const l3 = isNumber(n3) && n3 >= 0;
    if (l3) {
      const r3 = isFunction(i2) ? i2() : i2;
      const l4 = isNumber(r3) && r3 >= 0;
      const u3 = n3 > 0 ? _ : f;
      const g2 = n3 > 0 ? h : d;
      const v2 = mergeParms(t3);
      const w2 = v2 || t3;
      const p2 = a2.bind(0, w2);
      c2();
      const b2 = u3(p2, n3);
      c2 = () => g2(b2);
      if (l4 && !o2) {
        o2 = _(flush, r3);
      }
      s2 = e2 = w2;
    } else {
      a2(t3);
    }
  };
  u2.m = flush;
  return u2;
};
var { max: g } = Math;
var v = /[^\x20\t\r\n\f]+/g;
var classListAction = (t2, n2, o2) => {
  const s2 = t2 && t2.classList;
  let e2;
  let c2 = 0;
  let r2 = false;
  if (s2 && n2 && isString(n2)) {
    const t3 = n2.match(v) || [];
    r2 = t3.length > 0;
    while (e2 = t3[c2++]) {
      r2 = !!o2(s2, e2) && r2;
    }
  }
  return r2;
};
var hasClass = (t2, n2) => classListAction(t2, n2, (t3, n3) => t3.contains(n3));
var removeClass = (t2, n2) => {
  classListAction(t2, n2, (t3, n3) => t3.remove(n3));
};
var addClass = (t2, n2) => {
  classListAction(t2, n2, (t3, n3) => t3.add(n3));
  return removeClass.bind(0, t2, n2);
};
var w = {
  opacity: 1,
  zindex: 1
};
var parseToZeroOrNumber = (t2, n2) => {
  const o2 = n2 ? parseFloat(t2) : parseInt(t2, 10);
  return o2 === o2 ? o2 : 0;
};
var adaptCSSVal = (t2, n2) => !w[t2.toLowerCase()] && isNumber(n2) ? `${n2}px` : n2;
var getCSSVal = (t2, n2, o2) => null != n2 ? n2[o2] || n2.getPropertyValue(o2) : t2.style[o2];
var setCSSVal = (t2, n2, o2) => {
  try {
    const { style: s2 } = t2;
    if (!isUndefined(s2[n2])) {
      s2[n2] = adaptCSSVal(n2, o2);
    } else {
      s2.setProperty(n2, o2);
    }
  } catch (s2) {
  }
};
var directionIsRTL = (t2) => "rtl" === style2(t2, "direction");
var topRightBottomLeft = (t2, n2, o2) => {
  const s2 = n2 ? `${n2}-` : "";
  const e2 = o2 ? `-${o2}` : "";
  const c2 = `${s2}top${e2}`;
  const r2 = `${s2}right${e2}`;
  const i2 = `${s2}bottom${e2}`;
  const l2 = `${s2}left${e2}`;
  const a2 = style2(t2, [c2, r2, i2, l2]);
  return {
    t: parseToZeroOrNumber(a2[c2], true),
    r: parseToZeroOrNumber(a2[r2], true),
    b: parseToZeroOrNumber(a2[i2], true),
    l: parseToZeroOrNumber(a2[l2], true)
  };
};
var { round: p } = Math;
var b = {
  w: 0,
  h: 0
};
var offsetSize = (t2) => t2 ? {
  w: t2.offsetWidth,
  h: t2.offsetHeight
} : b;
var clientSize = (t2) => t2 ? {
  w: t2.clientWidth,
  h: t2.clientHeight
} : b;
var scrollSize = (t2) => t2 ? {
  w: t2.scrollWidth,
  h: t2.scrollHeight
} : b;
var fractionalSize = (t2) => {
  const n2 = parseFloat(style2(t2, "height")) || 0;
  const o2 = parseFloat(style2(t2, "width")) || 0;
  return {
    w: o2 - p(o2),
    h: n2 - p(n2)
  };
};
var getBoundingClientRect = (t2) => t2.getBoundingClientRect();
var m;
var supportPassiveEvents = () => {
  if (isUndefined(m)) {
    m = false;
    try {
      window.addEventListener("test", null, Object.defineProperty({}, "passive", {
        get() {
          m = true;
        }
      }));
    } catch (t2) {
    }
  }
  return m;
};
var splitEventNames = (t2) => t2.split(" ");
var off = (t2, n2, o2, s2) => {
  each(splitEventNames(n2), (n3) => {
    t2.removeEventListener(n3, o2, s2);
  });
};
var on = (t2, n2, o2, s2) => {
  var e2;
  const c2 = supportPassiveEvents();
  const r2 = null != (e2 = c2 && s2 && s2.S) ? e2 : c2;
  const i2 = s2 && s2.$ || false;
  const l2 = s2 && s2.C || false;
  const a2 = [];
  const u2 = c2 ? {
    passive: r2,
    capture: i2
  } : i2;
  each(splitEventNames(n2), (n3) => {
    const s3 = l2 ? (e3) => {
      t2.removeEventListener(n3, s3, i2);
      o2 && o2(e3);
    } : o2;
    push(a2, off.bind(null, t2, n3, s3, i2));
    t2.addEventListener(n3, s3, u2);
  });
  return runEachAndClear.bind(0, a2);
};
var stopPropagation = (t2) => t2.stopPropagation();
var preventDefault = (t2) => t2.preventDefault();
var y = {
  x: 0,
  y: 0
};
var absoluteCoordinates = (t2) => {
  const n2 = t2 ? getBoundingClientRect(t2) : 0;
  return n2 ? {
    x: n2.left + window.pageYOffset,
    y: n2.top + window.pageXOffset
  } : y;
};
var manageListener = (t2, n2) => {
  each(isArray(n2) ? n2 : [n2], t2);
};
var createEventListenerHub = (t2) => {
  const n2 = /* @__PURE__ */ new Map();
  const removeEvent = (t3, o2) => {
    if (t3) {
      const s2 = n2.get(t3);
      manageListener((t4) => {
        if (s2) {
          s2[t4 ? "delete" : "clear"](t4);
        }
      }, o2);
    } else {
      n2.forEach((t4) => {
        t4.clear();
      });
      n2.clear();
    }
  };
  const addEvent = (t3, o2) => {
    if (isString(t3)) {
      const s3 = n2.get(t3) || /* @__PURE__ */ new Set();
      n2.set(t3, s3);
      manageListener((t4) => {
        isFunction(t4) && s3.add(t4);
      }, o2);
      return removeEvent.bind(0, t3, o2);
    }
    if (isBoolean(o2) && o2) {
      removeEvent();
    }
    const s2 = keys(t3);
    const e2 = [];
    each(s2, (n3) => {
      const o3 = t3[n3];
      o3 && push(e2, addEvent(n3, o3));
    });
    return runEachAndClear.bind(0, e2);
  };
  const triggerEvent = (t3, o2) => {
    const s2 = n2.get(t3);
    each(from(s2), (t4) => {
      if (o2 && !isEmptyArray(o2)) {
        t4.apply(0, o2);
      } else {
        t4();
      }
    });
  };
  addEvent(t2 || {});
  return [addEvent, removeEvent, triggerEvent];
};
var opsStringify = (t2) => JSON.stringify(t2, (t3, n2) => {
  if (isFunction(n2)) {
    throw new Error();
  }
  return n2;
});
var S = {
  paddingAbsolute: false,
  showNativeOverlaidScrollbars: false,
  update: {
    elementEvents: [["img", "load"]],
    debounce: [0, 33],
    attributes: null,
    ignoreMutation: null
  },
  overflow: {
    x: "scroll",
    y: "scroll"
  },
  scrollbars: {
    theme: "os-theme-dark",
    visibility: "auto",
    autoHide: "never",
    autoHideDelay: 1300,
    dragScroll: true,
    clickScroll: false,
    pointers: ["mouse", "touch", "pen"]
  }
};
var getOptionsDiff = (t2, n2) => {
  const o2 = {};
  const s2 = keys(n2).concat(keys(t2));
  each(s2, (s3) => {
    const e2 = t2[s3];
    const c2 = n2[s3];
    if (isObject(e2) && isObject(c2)) {
      assignDeep(o2[s3] = {}, getOptionsDiff(e2, c2));
      if (isEmptyObject(o2[s3])) {
        delete o2[s3];
      }
    } else if (hasOwnProperty(n2, s3) && c2 !== e2) {
      let t3 = true;
      if (isArray(e2) || isArray(c2)) {
        try {
          if (opsStringify(e2) === opsStringify(c2)) {
            t3 = false;
          }
        } catch (r2) {
        }
      }
      if (t3) {
        o2[s3] = c2;
      }
    }
  });
  return o2;
};
var x = "os-environment";
var $ = `${x}-flexbox-glue`;
var C = `${$}-max`;
var O = "data-overlayscrollbars";
var z = "data-overlayscrollbars-initialize";
var T = `${O}-overflow-x`;
var E = `${O}-overflow-y`;
var I = "overflowVisible";
var A2 = "scrollbarHidden";
var L = "updating";
var H = "os-padding";
var M = "os-viewport";
var P = `${M}-arrange`;
var D = "os-content";
var R = `${M}-scrollbar-hidden`;
var k = `os-overflow-visible`;
var B = "os-size-observer";
var V = `${B}-appear`;
var Y = `${B}-listener`;
var j = `${Y}-scroll`;
var N = `${Y}-item`;
var q = `${N}-final`;
var F = "os-trinsic-observer";
var G = "os-theme-none";
var X = "os-scrollbar";
var U = `${X}-rtl`;
var W = `${X}-horizontal`;
var Z = `${X}-vertical`;
var J = `${X}-track`;
var K = `${X}-handle`;
var Q = `${X}-visible`;
var tt = `${X}-cornerless`;
var nt = `${X}-transitionless`;
var ot = `${X}-interaction`;
var st = `${X}-unusable`;
var et = `${X}-auto-hidden`;
var ct = `${X}-wheel`;
var rt = `${J}-interactive`;
var it = `${K}-interactive`;
var lt = {};
var getPlugins = () => lt;
var addPlugin = (t2) => {
  const n2 = [];
  each(isArray(t2) ? t2 : [t2], (t3) => {
    const o2 = keys(t3);
    each(o2, (o3) => {
      push(n2, lt[o3] = t3[o3]);
    });
  });
  return n2;
};
var at = {
  boolean: "__TPL_boolean_TYPE__",
  number: "__TPL_number_TYPE__",
  string: "__TPL_string_TYPE__",
  array: "__TPL_array_TYPE__",
  object: "__TPL_object_TYPE__",
  function: "__TPL_function_TYPE__",
  null: "__TPL_null_TYPE__"
};
var ut = at.number;
var dt = at.boolean;
var ft = [at.array, at.null];
var _t = "hidden scroll visible visible-hidden";
var ht = "visible hidden auto";
var gt = "never scroll leavemove";
({
  paddingAbsolute: dt,
  showNativeOverlaidScrollbars: dt,
  update: {
    elementEvents: ft,
    attributes: ft,
    debounce: [at.number, at.array, at.null],
    ignoreMutation: [at.function, at.null]
  },
  overflow: {
    x: _t,
    y: _t
  },
  scrollbars: {
    theme: [at.string, at.null],
    visibility: ht,
    autoHide: gt,
    autoHideDelay: ut,
    dragScroll: dt,
    clickScroll: dt,
    pointers: [at.array, at.null]
  }
});
var vt = "__osOptionsValidationPlugin";
var bt = "__osSizeObserverPlugin";
var { round: St, abs: xt } = Math;
var $t = "__osScrollbarsHidingPlugin";
var Ot = "__osClickScrollPlugin";
var Tt;
var getNativeScrollbarSize = (t2, n2, o2, s2) => {
  appendChildren(t2, n2);
  const e2 = clientSize(n2);
  const c2 = offsetSize(n2);
  const r2 = fractionalSize(o2);
  s2 && removeElements(n2);
  return {
    x: c2.h - e2.h + r2.h,
    y: c2.w - e2.w + r2.w
  };
};
var getNativeScrollbarsHiding = (t2) => {
  let n2 = false;
  const o2 = addClass(t2, R);
  try {
    n2 = "none" === style2(t2, cssProperty("scrollbar-width")) || "none" === window.getComputedStyle(t2, "::-webkit-scrollbar").getPropertyValue("display");
  } catch (s2) {
  }
  o2();
  return n2;
};
var getRtlScrollBehavior = (t2, n2) => {
  const o2 = "hidden";
  style2(t2, {
    overflowX: o2,
    overflowY: o2,
    direction: "rtl"
  });
  scrollLeft(t2, 0);
  const s2 = absoluteCoordinates(t2);
  const e2 = absoluteCoordinates(n2);
  scrollLeft(t2, -999);
  const c2 = absoluteCoordinates(n2);
  return {
    i: s2.x === e2.x,
    n: e2.x !== c2.x
  };
};
var getFlexboxGlue = (t2, n2) => {
  const o2 = addClass(t2, $);
  const s2 = getBoundingClientRect(t2);
  const e2 = getBoundingClientRect(n2);
  const c2 = equalBCRWH(e2, s2, true);
  const r2 = addClass(t2, C);
  const i2 = getBoundingClientRect(t2);
  const l2 = getBoundingClientRect(n2);
  const a2 = equalBCRWH(l2, i2, true);
  o2();
  r2();
  return c2 && a2;
};
var createEnvironment = () => {
  const { body: t2 } = document;
  const n2 = createDOM(`<div class="${x}"><div></div></div>`);
  const o2 = n2[0];
  const s2 = o2.firstChild;
  const [e2, , c2] = createEventListenerHub();
  const [r2, i2] = createCache({
    o: getNativeScrollbarSize(t2, o2, s2),
    u: equalXY
  }, getNativeScrollbarSize.bind(0, t2, o2, s2, true));
  const [l2] = i2();
  const a2 = getNativeScrollbarsHiding(o2);
  const u2 = {
    x: 0 === l2.x,
    y: 0 === l2.y
  };
  const d2 = {
    elements: {
      host: null,
      padding: !a2,
      viewport: (t3) => a2 && t3 === t3.ownerDocument.body && t3,
      content: false
    },
    scrollbars: {
      slot: true
    },
    cancel: {
      nativeScrollbarsOverlaid: false,
      body: null
    }
  };
  const f2 = assignDeep({}, S);
  const _3 = assignDeep.bind(0, {}, f2);
  const h2 = assignDeep.bind(0, {}, d2);
  const g2 = {
    k: l2,
    A: u2,
    I: a2,
    L: "-1" === style2(o2, "zIndex"),
    B: getRtlScrollBehavior(o2, s2),
    V: getFlexboxGlue(o2, s2),
    Y: e2.bind(0, "z"),
    j: e2.bind(0, "r"),
    N: h2,
    q: (t3) => assignDeep(d2, t3) && h2(),
    F: _3,
    G: (t3) => assignDeep(f2, t3) && _3(),
    X: assignDeep({}, d2),
    U: assignDeep({}, f2)
  };
  const v2 = window.addEventListener;
  const w2 = debounce((t3) => c2(t3 ? "z" : "r"), {
    g: 33,
    v: 99
  });
  removeAttr(o2, "style");
  removeElements(o2);
  v2("resize", w2.bind(0, false));
  if (!a2 && (!u2.x || !u2.y)) {
    let t3;
    v2("resize", () => {
      const n3 = getPlugins()[$t];
      t3 = t3 || n3 && n3.R();
      t3 && t3(g2, r2, w2.bind(0, true));
    });
  }
  return g2;
};
var getEnvironment = () => {
  if (!Tt) {
    Tt = createEnvironment();
  }
  return Tt;
};
var resolveInitialization = (t2, n2) => isFunction(n2) ? n2.apply(0, t2) : n2;
var staticInitializationElement = (t2, n2, o2, s2) => {
  const e2 = isUndefined(s2) ? o2 : s2;
  const c2 = resolveInitialization(t2, e2);
  return c2 || n2.apply(0, t2);
};
var dynamicInitializationElement = (t2, n2, o2, s2) => {
  const e2 = isUndefined(s2) ? o2 : s2;
  const c2 = resolveInitialization(t2, e2);
  return !!c2 && (isHTMLElement(c2) ? c2 : n2.apply(0, t2));
};
var cancelInitialization = (t2, n2, o2) => {
  const { nativeScrollbarsOverlaid: s2, body: e2 } = o2 || {};
  const { A: c2, I: r2 } = getEnvironment();
  const { nativeScrollbarsOverlaid: i2, body: l2 } = n2;
  const a2 = null != s2 ? s2 : i2;
  const u2 = isUndefined(e2) ? l2 : e2;
  const d2 = (c2.x || c2.y) && a2;
  const f2 = t2 && (isNull(u2) ? !r2 : u2);
  return !!d2 || !!f2;
};
var Et = /* @__PURE__ */ new WeakMap();
var addInstance = (t2, n2) => {
  Et.set(t2, n2);
};
var removeInstance = (t2) => {
  Et.delete(t2);
};
var getInstance = (t2) => Et.get(t2);
var getPropByPath = (t2, n2) => t2 ? n2.split(".").reduce((t3, n3) => t3 && hasOwnProperty(t3, n3) ? t3[n3] : void 0, t2) : void 0;
var createOptionCheck = (t2, n2, o2) => (s2) => [getPropByPath(t2, s2), o2 || void 0 !== getPropByPath(n2, s2)];
var createState = (t2) => {
  let n2 = t2;
  return [() => n2, (t3) => {
    n2 = assignDeep({}, n2, t3);
  }];
};
var It = "tabindex";
var At = createDiv.bind(0, "");
var unwrap = (t2) => {
  appendChildren(parent(t2), contents(t2));
  removeElements(t2);
};
var createStructureSetupElements = (t2) => {
  const n2 = getEnvironment();
  const { N: o2, I: s2 } = n2;
  const e2 = getPlugins()[$t];
  const c2 = e2 && e2.T;
  const { elements: r2 } = o2();
  const { host: i2, padding: l2, viewport: a2, content: u2 } = r2;
  const d2 = isHTMLElement(t2);
  const f2 = d2 ? {} : t2;
  const { elements: _3 } = f2;
  const { host: h2, padding: g2, viewport: v2, content: w2 } = _3 || {};
  const p2 = d2 ? t2 : f2.target;
  const b2 = is(p2, "textarea");
  const m2 = p2.ownerDocument;
  const y2 = m2.documentElement;
  const S2 = p2 === m2.body;
  const x2 = m2.defaultView;
  const $2 = staticInitializationElement.bind(0, [p2]);
  const C2 = dynamicInitializationElement.bind(0, [p2]);
  const I2 = resolveInitialization.bind(0, [p2]);
  const A3 = $2.bind(0, At, a2);
  const L2 = C2.bind(0, At, u2);
  const P2 = A3(v2);
  const k2 = P2 === p2;
  const B2 = k2 && S2;
  const V2 = !k2 && L2(w2);
  const Y2 = !k2 && isHTMLElement(P2) && P2 === V2;
  const j2 = Y2 && !!I2(u2);
  const N2 = j2 ? A3() : P2;
  const q2 = j2 ? V2 : L2();
  const F2 = Y2 ? N2 : P2;
  const G2 = B2 ? y2 : F2;
  const X2 = b2 ? $2(At, i2, h2) : p2;
  const U2 = B2 ? G2 : X2;
  const W2 = Y2 ? q2 : V2;
  const Z2 = m2.activeElement;
  const J2 = !k2 && x2.top === x2 && Z2 === p2;
  const K2 = {
    W: p2,
    Z: U2,
    J: G2,
    K: !k2 && C2(At, l2, g2),
    tt: W2,
    nt: !k2 && !s2 && c2 && c2(n2),
    ot: B2 ? y2 : G2,
    st: B2 ? m2 : G2,
    et: x2,
    ct: m2,
    rt: b2,
    it: S2,
    lt: d2,
    ut: k2,
    dt: Y2,
    ft: (t3, n3) => k2 ? hasAttrClass(G2, O, n3) : hasClass(G2, t3),
    _t: (t3, n3, o3) => k2 ? attrClass(G2, O, n3, o3) : (o3 ? addClass : removeClass)(G2, t3)
  };
  const Q2 = keys(K2).reduce((t3, n3) => {
    const o3 = K2[n3];
    return push(t3, o3 && !parent(o3) ? o3 : false);
  }, []);
  const elementIsGenerated = (t3) => t3 ? indexOf(Q2, t3) > -1 : null;
  const { W: tt2, Z: nt2, K: ot2, J: st2, tt: et2, nt: ct2 } = K2;
  const rt2 = [() => {
    removeAttr(nt2, O);
    removeAttr(nt2, z);
    removeAttr(tt2, z);
    if (S2) {
      removeAttr(y2, O);
      removeAttr(y2, z);
    }
  }];
  const it2 = b2 && elementIsGenerated(nt2);
  let lt2 = b2 ? tt2 : contents([et2, st2, ot2, nt2, tt2].find((t3) => false === elementIsGenerated(t3)));
  const at2 = B2 ? tt2 : et2 || st2;
  const appendElements = () => {
    attr(nt2, O, k2 ? "viewport" : "host");
    const t3 = addClass(ot2, H);
    const n3 = addClass(st2, !k2 && M);
    const o3 = addClass(et2, D);
    const e3 = S2 && !k2 ? addClass(parent(p2), R) : noop;
    if (it2) {
      insertAfter(tt2, nt2);
      push(rt2, () => {
        insertAfter(nt2, tt2);
        removeElements(nt2);
      });
    }
    appendChildren(at2, lt2);
    appendChildren(nt2, ot2);
    appendChildren(ot2 || nt2, !k2 && st2);
    appendChildren(st2, et2);
    push(rt2, () => {
      e3();
      removeAttr(st2, T);
      removeAttr(st2, E);
      if (elementIsGenerated(et2)) {
        unwrap(et2);
      }
      if (elementIsGenerated(st2)) {
        unwrap(st2);
      }
      if (elementIsGenerated(ot2)) {
        unwrap(ot2);
      }
      t3();
      n3();
      o3();
    });
    if (s2 && !k2) {
      push(rt2, removeClass.bind(0, st2, R));
    }
    if (ct2) {
      insertBefore(st2, ct2);
      push(rt2, removeElements.bind(0, ct2));
    }
    if (J2) {
      const t4 = attr(st2, It);
      attr(st2, It, "-1");
      st2.focus();
      const revertViewportTabIndex = () => t4 ? attr(st2, It, t4) : removeAttr(st2, It);
      const n4 = on(m2, "pointerdown keydown", () => {
        revertViewportTabIndex();
        n4();
      });
      push(rt2, [revertViewportTabIndex, n4]);
    } else if (Z2 && Z2.focus) {
      Z2.focus();
    }
    lt2 = 0;
  };
  return [K2, appendElements, runEachAndClear.bind(0, rt2)];
};
var createTrinsicUpdateSegment = (t2, n2) => {
  const { tt: o2 } = t2;
  const [s2] = n2;
  return (t3) => {
    const { V: n3 } = getEnvironment();
    const { ht: e2 } = s2();
    const { gt: c2 } = t3;
    const r2 = (o2 || !n3) && c2;
    if (r2) {
      style2(o2, {
        height: e2 ? "" : "100%"
      });
    }
    return {
      vt: r2,
      wt: r2
    };
  };
};
var createPaddingUpdateSegment = (t2, n2) => {
  const [o2, s2] = n2;
  const { Z: e2, K: c2, J: r2, ut: i2 } = t2;
  const [l2, a2] = createCache({
    u: equalTRBL,
    o: topRightBottomLeft()
  }, topRightBottomLeft.bind(0, e2, "padding", ""));
  return (t3, n3, e3) => {
    let [u2, d2] = a2(e3);
    const { I: f2, V: _3 } = getEnvironment();
    const { bt: h2 } = o2();
    const { vt: g2, wt: v2, yt: w2 } = t3;
    const [p2, b2] = n3("paddingAbsolute");
    const m2 = !_3 && v2;
    if (g2 || d2 || m2) {
      [u2, d2] = l2(e3);
    }
    const y2 = !i2 && (b2 || w2 || d2);
    if (y2) {
      const t4 = !p2 || !c2 && !f2;
      const n4 = u2.r + u2.l;
      const o3 = u2.t + u2.b;
      const e4 = {
        marginRight: t4 && !h2 ? -n4 : 0,
        marginBottom: t4 ? -o3 : 0,
        marginLeft: t4 && h2 ? -n4 : 0,
        top: t4 ? -u2.t : 0,
        right: t4 ? h2 ? -u2.r : "auto" : 0,
        left: t4 ? h2 ? "auto" : -u2.l : 0,
        width: t4 ? `calc(100% + ${n4}px)` : ""
      };
      const i3 = {
        paddingTop: t4 ? u2.t : 0,
        paddingRight: t4 ? u2.r : 0,
        paddingBottom: t4 ? u2.b : 0,
        paddingLeft: t4 ? u2.l : 0
      };
      style2(c2 || r2, e4);
      style2(r2, i3);
      s2({
        K: u2,
        St: !t4,
        M: c2 ? i3 : assignDeep({}, e4, i3)
      });
    }
    return {
      xt: y2
    };
  };
};
var { max: Lt } = Math;
var Ht = Lt.bind(0, 0);
var Mt = "visible";
var Pt = "hidden";
var Dt = 42;
var Rt = {
  u: equalWH,
  o: {
    w: 0,
    h: 0
  }
};
var kt = {
  u: equalXY,
  o: {
    x: Pt,
    y: Pt
  }
};
var getOverflowAmount = (t2, n2) => {
  const o2 = window.devicePixelRatio % 1 !== 0 ? 1 : 0;
  const s2 = {
    w: Ht(t2.w - n2.w),
    h: Ht(t2.h - n2.h)
  };
  return {
    w: s2.w > o2 ? s2.w : 0,
    h: s2.h > o2 ? s2.h : 0
  };
};
var conditionalClass = (t2, n2, o2) => o2 ? addClass(t2, n2) : removeClass(t2, n2);
var overflowIsVisible = (t2) => 0 === t2.indexOf(Mt);
var createOverflowUpdateSegment = (t2, n2) => {
  const [o2, s2] = n2;
  const { Z: e2, K: c2, J: r2, nt: i2, ut: l2, _t: a2, it: u2, et: d2 } = t2;
  const { k: f2, V: _3, I: h2, A: g2 } = getEnvironment();
  const v2 = getPlugins()[$t];
  const w2 = !l2 && !h2 && (g2.x || g2.y);
  const p2 = u2 && l2;
  const [b2, m2] = createCache(Rt, fractionalSize.bind(0, r2));
  const [y2, S2] = createCache(Rt, scrollSize.bind(0, r2));
  const [x2, $2] = createCache(Rt);
  const [C2, z2] = createCache(Rt);
  const [L2] = createCache(kt);
  const fixFlexboxGlue = (t3, n3) => {
    style2(r2, {
      height: ""
    });
    if (n3) {
      const { St: n4, K: s3 } = o2();
      const { $t: c3, P: i3 } = t3;
      const l3 = fractionalSize(e2);
      const a3 = clientSize(e2);
      const u3 = "content-box" === style2(r2, "boxSizing");
      const d3 = n4 || u3 ? s3.b + s3.t : 0;
      const f3 = !(g2.x && u3);
      style2(r2, {
        height: a3.h + l3.h + (c3.x && f3 ? i3.x : 0) - d3
      });
    }
  };
  const getViewportOverflowState = (t3, n3) => {
    const o3 = !h2 && !t3 ? Dt : 0;
    const getStatePerAxis = (t4, s4, e4) => {
      const c4 = style2(r2, t4);
      const i4 = n3 ? n3[t4] : c4;
      const l4 = "scroll" === i4;
      const a4 = s4 ? o3 : e4;
      const u4 = l4 && !h2 ? a4 : 0;
      const d4 = s4 && !!o3;
      return [c4, l4, u4, d4];
    };
    const [s3, e3, c3, i3] = getStatePerAxis("overflowX", g2.x, f2.x);
    const [l3, a3, u3, d3] = getStatePerAxis("overflowY", g2.y, f2.y);
    return {
      Ct: {
        x: s3,
        y: l3
      },
      $t: {
        x: e3,
        y: a3
      },
      P: {
        x: c3,
        y: u3
      },
      D: {
        x: i3,
        y: d3
      }
    };
  };
  const setViewportOverflowState = (t3, n3, o3, s3) => {
    const setAxisOverflowStyle = (t4, n4) => {
      const o4 = overflowIsVisible(t4);
      const s4 = n4 && o4 && t4.replace(`${Mt}-`, "") || "";
      return [n4 && !o4 ? t4 : "", overflowIsVisible(s4) ? "hidden" : s4];
    };
    const [e3, c3] = setAxisOverflowStyle(o3.x, n3.x);
    const [r3, i3] = setAxisOverflowStyle(o3.y, n3.y);
    s3.overflowX = c3 && r3 ? c3 : e3;
    s3.overflowY = i3 && e3 ? i3 : r3;
    return getViewportOverflowState(t3, s3);
  };
  const hideNativeScrollbars = (t3, n3, s3, e3) => {
    const { P: c3, D: r3 } = t3;
    const { x: i3, y: l3 } = r3;
    const { x: a3, y: u3 } = c3;
    const { M: d3 } = o2();
    const f3 = n3 ? "marginLeft" : "marginRight";
    const _4 = n3 ? "paddingLeft" : "paddingRight";
    const h3 = d3[f3];
    const g3 = d3.marginBottom;
    const v3 = d3[_4];
    const w3 = d3.paddingBottom;
    e3.width = `calc(100% + ${u3 + -1 * h3}px)`;
    e3[f3] = -u3 + h3;
    e3.marginBottom = -a3 + g3;
    if (s3) {
      e3[_4] = v3 + (l3 ? u3 : 0);
      e3.paddingBottom = w3 + (i3 ? a3 : 0);
    }
  };
  const [H2, M2] = v2 ? v2.H(w2, _3, r2, i2, o2, getViewportOverflowState, hideNativeScrollbars) : [() => w2, () => [noop]];
  return (t3, n3, i3) => {
    const { vt: u3, Ot: f3, wt: v3, xt: w3, gt: P2, yt: D2 } = t3;
    const { ht: B2, bt: V2 } = o2();
    const [Y2, j2] = n3("showNativeOverlaidScrollbars");
    const [N2, q2] = n3("overflow");
    const F2 = Y2 && g2.x && g2.y;
    const G2 = !l2 && !_3 && (u3 || v3 || f3 || j2 || P2);
    const X2 = overflowIsVisible(N2.x);
    const U2 = overflowIsVisible(N2.y);
    const W2 = X2 || U2;
    let Z2 = m2(i3);
    let J2 = S2(i3);
    let K2 = $2(i3);
    let Q2 = z2(i3);
    let tt2;
    if (j2 && h2) {
      a2(R, A2, !F2);
    }
    if (G2) {
      tt2 = getViewportOverflowState(F2);
      fixFlexboxGlue(tt2, B2);
    }
    if (u3 || w3 || v3 || D2 || j2) {
      if (W2) {
        a2(k, I, false);
      }
      const [t4, n4] = M2(F2, V2, tt2);
      const [o3, s3] = Z2 = b2(i3);
      const [e3, c3] = J2 = y2(i3);
      const l3 = clientSize(r2);
      let u4 = e3;
      let f4 = l3;
      t4();
      if ((c3 || s3 || j2) && n4 && !F2 && H2(n4, e3, o3, V2)) {
        f4 = clientSize(r2);
        u4 = scrollSize(r2);
      }
      const _4 = {
        w: Ht(Lt(e3.w, u4.w) + o3.w),
        h: Ht(Lt(e3.h, u4.h) + o3.h)
      };
      const h3 = {
        w: Ht((p2 ? d2.innerWidth : f4.w + Ht(l3.w - e3.w)) + o3.w),
        h: Ht((p2 ? d2.innerHeight + o3.h : f4.h + Ht(l3.h - e3.h)) + o3.h)
      };
      Q2 = C2(h3);
      K2 = x2(getOverflowAmount(_4, h3), i3);
    }
    const [nt2, ot2] = Q2;
    const [st2, et2] = K2;
    const [ct2, rt2] = J2;
    const [it2, lt2] = Z2;
    const at2 = {
      x: st2.w > 0,
      y: st2.h > 0
    };
    const ut2 = X2 && U2 && (at2.x || at2.y) || X2 && at2.x && !at2.y || U2 && at2.y && !at2.x;
    if (w3 || D2 || lt2 || rt2 || ot2 || et2 || q2 || j2 || G2) {
      const t4 = {
        marginRight: 0,
        marginBottom: 0,
        marginLeft: 0,
        width: "",
        overflowY: "",
        overflowX: ""
      };
      const n4 = setViewportOverflowState(F2, at2, N2, t4);
      const o3 = H2(n4, ct2, it2, V2);
      if (!l2) {
        hideNativeScrollbars(n4, V2, o3, t4);
      }
      if (G2) {
        fixFlexboxGlue(n4, B2);
      }
      if (l2) {
        attr(e2, T, t4.overflowX);
        attr(e2, E, t4.overflowY);
      } else {
        style2(r2, t4);
      }
    }
    attrClass(e2, O, I, ut2);
    conditionalClass(c2, k, ut2);
    !l2 && conditionalClass(r2, k, W2);
    const [dt2, ft2] = L2(getViewportOverflowState(F2).Ct);
    s2({
      Ct: dt2,
      zt: {
        x: nt2.w,
        y: nt2.h
      },
      Tt: {
        x: st2.w,
        y: st2.h
      },
      Et: at2
    });
    return {
      It: ft2,
      At: ot2,
      Lt: et2
    };
  };
};
var prepareUpdateHints = (t2, n2, o2) => {
  const s2 = {};
  const e2 = n2 || {};
  const c2 = keys(t2).concat(keys(e2));
  each(c2, (n3) => {
    const c3 = t2[n3];
    const r2 = e2[n3];
    s2[n3] = !!(o2 || c3 || r2);
  });
  return s2;
};
var createStructureSetupUpdate = (t2, n2) => {
  const { W: o2, J: s2, _t: e2, ut: c2 } = t2;
  const { I: r2, A: i2, V: l2 } = getEnvironment();
  const a2 = !r2 && (i2.x || i2.y);
  const u2 = [createTrinsicUpdateSegment(t2, n2), createPaddingUpdateSegment(t2, n2), createOverflowUpdateSegment(t2, n2)];
  return (t3, n3, r3) => {
    const i3 = prepareUpdateHints(assignDeep({
      vt: false,
      xt: false,
      yt: false,
      gt: false,
      At: false,
      Lt: false,
      It: false,
      Ot: false,
      wt: false
    }, n3), {}, r3);
    const d2 = a2 || !l2;
    const f2 = d2 && scrollLeft(s2);
    const _3 = d2 && scrollTop(s2);
    e2("", L, true);
    let h2 = i3;
    each(u2, (n4) => {
      h2 = prepareUpdateHints(h2, n4(h2, t3, !!r3) || {}, r3);
    });
    scrollLeft(s2, f2);
    scrollTop(s2, _3);
    e2("", L);
    if (!c2) {
      scrollLeft(o2, 0);
      scrollTop(o2, 0);
    }
    return h2;
  };
};
var createEventContentChange = (t2, n2, o2) => {
  let s2;
  let e2 = false;
  const destroy = () => {
    e2 = true;
  };
  const updateElements = (c2) => {
    if (o2) {
      const r2 = o2.reduce((n3, o3) => {
        if (o3) {
          const [s3, e3] = o3;
          const r3 = e3 && s3 && (c2 ? c2(s3) : find(s3, t2));
          if (r3 && r3.length && e3 && isString(e3)) {
            push(n3, [r3, e3.trim()], true);
          }
        }
        return n3;
      }, []);
      each(r2, (o3) => each(o3[0], (c3) => {
        const r3 = o3[1];
        const i2 = s2.get(c3) || [];
        const l2 = t2.contains(c3);
        if (l2) {
          const t3 = on(c3, r3, (o4) => {
            if (e2) {
              t3();
              s2.delete(c3);
            } else {
              n2(o4);
            }
          });
          s2.set(c3, push(i2, t3));
        } else {
          runEachAndClear(i2);
          s2.delete(c3);
        }
      }));
    }
  };
  if (o2) {
    s2 = /* @__PURE__ */ new WeakMap();
    updateElements();
  }
  return [destroy, updateElements];
};
var createDOMObserver = (t2, n2, o2, s2) => {
  let e2 = false;
  const { Ht: c2, Mt: r2, Pt: i2, Dt: a2, Rt: u2, kt: d2 } = s2 || {};
  const f2 = debounce(() => {
    if (e2) {
      o2(true);
    }
  }, {
    g: 33,
    v: 99
  });
  const [_3, h2] = createEventContentChange(t2, f2, i2);
  const g2 = c2 || [];
  const v2 = r2 || [];
  const w2 = g2.concat(v2);
  const observerCallback = (e3, c3) => {
    const r3 = u2 || noop;
    const i3 = d2 || noop;
    const l2 = /* @__PURE__ */ new Set();
    const f3 = /* @__PURE__ */ new Set();
    let _4 = false;
    let g3 = false;
    each(e3, (o3) => {
      const { attributeName: e4, target: c4, type: u3, oldValue: d3, addedNodes: h3, removedNodes: w3 } = o3;
      const p3 = "attributes" === u3;
      const b2 = "childList" === u3;
      const m2 = t2 === c4;
      const y2 = p3 && isString(e4) ? attr(c4, e4) : 0;
      const S2 = 0 !== y2 && d3 !== y2;
      const x2 = indexOf(v2, e4) > -1 && S2;
      if (n2 && (b2 || !m2)) {
        const n3 = !p3;
        const u4 = p3 && S2;
        const f4 = u4 && a2 && is(c4, a2);
        const _5 = f4 ? !r3(c4, e4, d3, y2) : n3 || u4;
        const v3 = _5 && !i3(o3, !!f4, t2, s2);
        each(h3, (t3) => l2.add(t3));
        each(w3, (t3) => l2.add(t3));
        g3 = g3 || v3;
      }
      if (!n2 && m2 && S2 && !r3(c4, e4, d3, y2)) {
        f3.add(e4);
        _4 = _4 || x2;
      }
    });
    if (l2.size > 0) {
      h2((t3) => from(l2).reduce((n3, o3) => {
        push(n3, find(t3, o3));
        return is(o3, t3) ? push(n3, o3) : n3;
      }, []));
    }
    if (n2) {
      !c3 && g3 && o2(false);
      return [false];
    }
    if (f3.size > 0 || _4) {
      const t3 = [from(f3), _4];
      !c3 && o2.apply(0, t3);
      return t3;
    }
  };
  const p2 = new l((t3) => observerCallback(t3));
  p2.observe(t2, {
    attributes: true,
    attributeOldValue: true,
    attributeFilter: w2,
    subtree: n2,
    childList: n2,
    characterData: n2
  });
  e2 = true;
  return [() => {
    if (e2) {
      _3();
      p2.disconnect();
      e2 = false;
    }
  }, () => {
    if (e2) {
      f2.m();
      const t3 = p2.takeRecords();
      return !isEmptyArray(t3) && observerCallback(t3, true);
    }
  }];
};
var Bt = 3333333;
var domRectHasDimensions = (t2) => t2 && (t2.height || t2.width);
var createSizeObserver = (t2, n2, o2) => {
  const { Bt: s2 = false, Vt: e2 = false } = o2 || {};
  const c2 = getPlugins()[bt];
  const { B: r2 } = getEnvironment();
  const i2 = createDOM(`<div class="${B}"><div class="${Y}"></div></div>`);
  const l2 = i2[0];
  const a2 = l2.firstChild;
  const d2 = directionIsRTL.bind(0, t2);
  const [f2] = createCache({
    o: void 0,
    _: true,
    u: (t3, n3) => !(!t3 || !domRectHasDimensions(t3) && domRectHasDimensions(n3))
  });
  const onSizeChangedCallbackProxy = (t3) => {
    const o3 = isArray(t3) && t3.length > 0 && isObject(t3[0]);
    const e3 = !o3 && isBoolean(t3[0]);
    let c3 = false;
    let i3 = false;
    let a3 = true;
    if (o3) {
      const [n3, , o4] = f2(t3.pop().contentRect);
      const s3 = domRectHasDimensions(n3);
      const e4 = domRectHasDimensions(o4);
      c3 = !o4 || !s3;
      i3 = !e4 && s3;
      a3 = !c3;
    } else if (e3) {
      [, a3] = t3;
    } else {
      i3 = true === t3;
    }
    if (s2 && a3) {
      const n3 = e3 ? t3[0] : directionIsRTL(l2);
      scrollLeft(l2, n3 ? r2.n ? -Bt : r2.i ? 0 : Bt : Bt);
      scrollTop(l2, Bt);
    }
    if (!c3) {
      n2({
        vt: !e3,
        Yt: e3 ? t3 : void 0,
        Vt: !!i3
      });
    }
  };
  const _3 = [];
  let h2 = e2 ? onSizeChangedCallbackProxy : false;
  return [() => {
    runEachAndClear(_3);
    removeElements(l2);
  }, () => {
    if (u) {
      const t3 = new u(onSizeChangedCallbackProxy);
      t3.observe(a2);
      push(_3, () => {
        t3.disconnect();
      });
    } else if (c2) {
      const [t3, n3] = c2.O(a2, onSizeChangedCallbackProxy, e2);
      h2 = t3;
      push(_3, n3);
    }
    if (s2) {
      const [t3] = createCache({
        o: !d2()
      }, d2);
      push(_3, on(l2, "scroll", (n3) => {
        const o3 = t3();
        const [s3, e3] = o3;
        if (e3) {
          removeClass(a2, "ltr rtl");
          if (s3) {
            addClass(a2, "rtl");
          } else {
            addClass(a2, "ltr");
          }
          onSizeChangedCallbackProxy(o3);
        }
        stopPropagation(n3);
      }));
    }
    if (h2) {
      addClass(l2, V);
      push(_3, on(l2, "animationstart", h2, {
        C: !!u
      }));
    }
    if (u || c2) {
      appendChildren(t2, l2);
    }
  }];
};
var isHeightIntrinsic = (t2) => 0 === t2.h || t2.isIntersecting || t2.intersectionRatio > 0;
var createTrinsicObserver = (t2, n2) => {
  let o2;
  const s2 = createDiv(F);
  const e2 = [];
  const [c2] = createCache({
    o: false
  });
  const triggerOnTrinsicChangedCallback = (t3, o3) => {
    if (t3) {
      const s3 = c2(isHeightIntrinsic(t3));
      const [, e3] = s3;
      if (e3) {
        !o3 && n2(s3);
        return [s3];
      }
    }
  };
  const intersectionObserverCallback = (t3, n3) => {
    if (t3 && t3.length > 0) {
      return triggerOnTrinsicChangedCallback(t3.pop(), n3);
    }
  };
  return [() => {
    runEachAndClear(e2);
    removeElements(s2);
  }, () => {
    if (a) {
      o2 = new a((t3) => intersectionObserverCallback(t3), {
        root: t2
      });
      o2.observe(s2);
      push(e2, () => {
        o2.disconnect();
      });
    } else {
      const onSizeChanged = () => {
        const t4 = offsetSize(s2);
        triggerOnTrinsicChangedCallback(t4);
      };
      const [t3, n3] = createSizeObserver(s2, onSizeChanged);
      push(e2, t3);
      n3();
      onSizeChanged();
    }
    appendChildren(t2, s2);
  }, () => {
    if (o2) {
      return intersectionObserverCallback(o2.takeRecords(), true);
    }
  }];
};
var Vt = `[${O}]`;
var Yt = `.${M}`;
var jt = ["tabindex"];
var Nt = ["wrap", "cols", "rows"];
var qt = ["id", "class", "style", "open"];
var createStructureSetupObservers = (t2, n2, o2) => {
  let s2;
  let e2;
  let c2;
  const { Z: r2, J: i2, tt: l2, rt: a2, ut: d2, ft: f2, _t: _3 } = t2;
  const { V: h2 } = getEnvironment();
  const [g2] = createCache({
    u: equalWH,
    o: {
      w: 0,
      h: 0
    }
  }, () => {
    const t3 = f2(k, I);
    const n3 = f2(P, "");
    const o3 = n3 && scrollLeft(i2);
    const s3 = n3 && scrollTop(i2);
    _3(k, I);
    _3(P, "");
    _3("", L, true);
    const e3 = scrollSize(l2);
    const c3 = scrollSize(i2);
    const r3 = fractionalSize(i2);
    _3(k, I, t3);
    _3(P, "", n3);
    _3("", L);
    scrollLeft(i2, o3);
    scrollTop(i2, s3);
    return {
      w: c3.w + e3.w + r3.w,
      h: c3.h + e3.h + r3.h
    };
  });
  const v2 = a2 ? Nt : qt.concat(Nt);
  const w2 = debounce(o2, {
    g: () => s2,
    v: () => e2,
    p(t3, n3) {
      const [o3] = t3;
      const [s3] = n3;
      return [keys(o3).concat(keys(s3)).reduce((t4, n4) => {
        t4[n4] = o3[n4] || s3[n4];
        return t4;
      }, {})];
    }
  });
  const updateViewportAttrsFromHost = (t3) => {
    each(t3 || jt, (t4) => {
      if (indexOf(jt, t4) > -1) {
        const n3 = attr(r2, t4);
        if (isString(n3)) {
          attr(i2, t4, n3);
        } else {
          removeAttr(i2, t4);
        }
      }
    });
  };
  const onTrinsicChanged = (t3, s3) => {
    const [e3, c3] = t3;
    const r3 = {
      gt: c3
    };
    n2({
      ht: e3
    });
    !s3 && o2(r3);
    return r3;
  };
  const onSizeChanged = ({ vt: t3, Yt: s3, Vt: e3 }) => {
    const c3 = !t3 || e3 ? o2 : w2;
    let r3 = false;
    if (s3) {
      const [t4, o3] = s3;
      r3 = o3;
      n2({
        bt: t4
      });
    }
    c3({
      vt: t3,
      yt: r3
    });
  };
  const onContentMutation = (t3, n3) => {
    const [, s3] = g2();
    const e3 = {
      wt: s3
    };
    const c3 = t3 ? o2 : w2;
    if (s3) {
      !n3 && c3(e3);
    }
    return e3;
  };
  const onHostMutation = (t3, n3, o3) => {
    const s3 = {
      Ot: n3
    };
    if (n3) {
      !o3 && w2(s3);
    } else if (!d2) {
      updateViewportAttrsFromHost(t3);
    }
    return s3;
  };
  const [p2, b2, m2] = l2 || !h2 ? createTrinsicObserver(r2, onTrinsicChanged) : [noop, noop, noop];
  const [y2, S2] = !d2 ? createSizeObserver(r2, onSizeChanged, {
    Vt: true,
    Bt: true
  }) : [noop, noop];
  const [x2, $2] = createDOMObserver(r2, false, onHostMutation, {
    Mt: qt,
    Ht: qt.concat(jt)
  });
  const C2 = d2 && u && new u(onSizeChanged.bind(0, {
    vt: true
  }));
  C2 && C2.observe(r2);
  updateViewportAttrsFromHost();
  return [() => {
    p2();
    y2();
    c2 && c2[0]();
    C2 && C2.disconnect();
    x2();
  }, () => {
    S2();
    b2();
  }, () => {
    const t3 = {};
    const n3 = $2();
    const o3 = m2();
    const s3 = c2 && c2[1]();
    if (n3) {
      assignDeep(t3, onHostMutation.apply(0, push(n3, true)));
    }
    if (o3) {
      assignDeep(t3, onTrinsicChanged.apply(0, push(o3, true)));
    }
    if (s3) {
      assignDeep(t3, onContentMutation.apply(0, push(s3, true)));
    }
    return t3;
  }, (t3) => {
    const [n3] = t3("update.ignoreMutation");
    const [o3, r3] = t3("update.attributes");
    const [a3, u2] = t3("update.elementEvents");
    const [f3, _4] = t3("update.debounce");
    const h3 = u2 || r3;
    const ignoreMutationFromOptions = (t4) => isFunction(n3) && n3(t4);
    if (h3) {
      if (c2) {
        c2[1]();
        c2[0]();
      }
      c2 = createDOMObserver(l2 || i2, true, onContentMutation, {
        Ht: v2.concat(o3 || []),
        Pt: a3,
        Dt: Vt,
        kt: (t4, n4) => {
          const { target: o4, attributeName: s3 } = t4;
          const e3 = !n4 && s3 && !d2 ? liesBetween(o4, Vt, Yt) : false;
          return e3 || !!closest(o4, `.${X}`) || !!ignoreMutationFromOptions(t4);
        }
      });
    }
    if (_4) {
      w2.m();
      if (isArray(f3)) {
        const t4 = f3[0];
        const n4 = f3[1];
        s2 = isNumber(t4) && t4;
        e2 = isNumber(n4) && n4;
      } else if (isNumber(f3)) {
        s2 = f3;
        e2 = false;
      } else {
        s2 = false;
        e2 = false;
      }
    }
  }];
};
var Ft = {
  x: 0,
  y: 0
};
var Gt = {
  K: {
    t: 0,
    r: 0,
    b: 0,
    l: 0
  },
  St: false,
  M: {
    marginRight: 0,
    marginBottom: 0,
    marginLeft: 0,
    paddingTop: 0,
    paddingRight: 0,
    paddingBottom: 0,
    paddingLeft: 0
  },
  zt: Ft,
  Tt: Ft,
  Ct: {
    x: "hidden",
    y: "hidden"
  },
  Et: {
    x: false,
    y: false
  },
  ht: false,
  bt: false
};
var createStructureSetup = (t2, n2) => {
  const o2 = createOptionCheck(n2, {});
  const s2 = createState(Gt);
  const [e2, c2, r2] = createEventListenerHub();
  const [i2, l2] = s2;
  const [a2, u2, d2] = createStructureSetupElements(t2);
  const f2 = createStructureSetupUpdate(a2, s2);
  const triggerUpdateEvent = (t3, n3, o3) => {
    const s3 = keys(t3).some((n4) => t3[n4]);
    const e3 = s3 || !isEmptyObject(n3) || o3;
    if (e3) {
      r2("u", [t3, n3, o3]);
    }
    return e3;
  };
  const [_3, h2, g2, v2] = createStructureSetupObservers(a2, l2, (t3) => triggerUpdateEvent(f2(o2, t3), {}, false));
  const w2 = i2.bind(0);
  w2.jt = (t3) => e2("u", t3);
  w2.Nt = () => {
    const { W: t3, J: n3 } = a2;
    const o3 = scrollLeft(t3);
    const s3 = scrollTop(t3);
    h2();
    u2();
    scrollLeft(n3, o3);
    scrollTop(n3, s3);
  };
  w2.qt = a2;
  return [(t3, o3) => {
    const s3 = createOptionCheck(n2, t3, o3);
    v2(s3);
    return triggerUpdateEvent(f2(s3, g2(), o3), t3, !!o3);
  }, w2, () => {
    c2();
    _3();
    d2();
  }];
};
var { round: Xt } = Math;
var getScale = (t2) => {
  const { width: n2, height: o2 } = getBoundingClientRect(t2);
  const { w: s2, h: e2 } = offsetSize(t2);
  return {
    x: Xt(n2) / s2 || 1,
    y: Xt(o2) / e2 || 1
  };
};
var continuePointerDown = (t2, n2, o2) => {
  const s2 = n2.scrollbars;
  const { button: e2, isPrimary: c2, pointerType: r2 } = t2;
  const { pointers: i2 } = s2;
  return 0 === e2 && c2 && s2[o2 ? "dragScroll" : "clickScroll"] && (i2 || []).includes(r2);
};
var createRootClickStopPropagationEvents = (t2, n2) => on(t2, "mousedown", on.bind(0, n2, "click", stopPropagation, {
  C: true,
  $: true
}), {
  $: true
});
var createInteractiveScrollEvents = (t2, n2, o2, s2, e2, c2) => {
  const { B: r2 } = getEnvironment();
  const { Ft: i2, Gt: l2, Xt: a2 } = o2;
  const u2 = `scroll${c2 ? "Left" : "Top"}`;
  const d2 = `client${c2 ? "X" : "Y"}`;
  const f2 = c2 ? "width" : "height";
  const _3 = c2 ? "left" : "top";
  const h2 = c2 ? "w" : "h";
  const g2 = c2 ? "x" : "y";
  const createRelativeHandleMove = (t3, n3) => (o3) => {
    const { Tt: d3 } = e2();
    const f3 = offsetSize(l2)[h2] - offsetSize(i2)[h2];
    const _4 = n3 * o3 / f3;
    const v2 = _4 * d3[g2];
    const w2 = directionIsRTL(a2);
    const p2 = w2 && c2 ? r2.n || r2.i ? 1 : -1 : 1;
    s2[u2] = t3 + v2 * p2;
  };
  return on(l2, "pointerdown", (o3) => {
    const e3 = closest(o3.target, `.${K}`) === i2;
    if (continuePointerDown(o3, t2, e3)) {
      const t3 = !e3 && o3.shiftKey;
      const getHandleRect = () => getBoundingClientRect(i2);
      const getTrackRect = () => getBoundingClientRect(l2);
      const getHandleOffset = (t4, n3) => (t4 || getHandleRect())[_3] - (n3 || getTrackRect())[_3];
      const c3 = createRelativeHandleMove(s2[u2] || 0, 1 / getScale(s2)[g2]);
      const r3 = o3[d2];
      const a3 = getHandleRect();
      const h3 = getTrackRect();
      const v2 = a3[f2];
      const w2 = getHandleOffset(a3, h3) + v2 / 2;
      const p2 = r3 - h3[_3];
      const b2 = e3 ? 0 : p2 - w2;
      const m2 = [on(n2, "selectstart", (t4) => preventDefault(t4), {
        S: false
      }), on(l2, "pointermove", (n3) => {
        const o4 = n3[d2] - r3;
        if (e3 || t3) {
          c3(b2 + o4);
        }
      })];
      if (t3) {
        c3(b2);
      } else if (!e3) {
        const t4 = getPlugins()[Ot];
        if (t4) {
          push(m2, t4.O(c3, getHandleOffset, b2, v2, p2));
        }
      }
      on(l2, "pointerup", (t4) => {
        runEachAndClear(m2);
        l2.releasePointerCapture(t4.pointerId);
      }, {
        C: true
      });
      l2.setPointerCapture(o3.pointerId);
    }
  });
};
var createScrollbarsSetupEvents = (t2, n2) => (o2, s2, e2, c2, r2, i2) => {
  const { Xt: l2 } = o2;
  const [a2, u2] = selfClearTimeout(333);
  const d2 = !!r2.scrollBy;
  let f2 = true;
  return runEachAndClear.bind(0, [on(l2, "pointerenter", () => {
    s2(ot, true);
  }), on(l2, "pointerleave pointercancel", () => {
    s2(ot);
  }), on(l2, "wheel", (t3) => {
    const { deltaX: n3, deltaY: o3, deltaMode: e3 } = t3;
    if (d2 && f2 && 0 === e3 && parent(l2) === c2) {
      r2.scrollBy({
        left: n3,
        top: o3,
        behavior: "smooth"
      });
    }
    f2 = false;
    s2(ct, true);
    a2(() => {
      f2 = true;
      s2(ct);
    });
    preventDefault(t3);
  }, {
    S: false,
    $: true
  }), createRootClickStopPropagationEvents(l2, e2), createInteractiveScrollEvents(t2, e2, o2, r2, n2, i2), u2]);
};
var { min: Ut, max: Wt, abs: Zt, round: Jt } = Math;
var getScrollbarHandleLengthRatio = (t2, n2, o2, s2) => {
  if (s2) {
    const t3 = o2 ? "x" : "y";
    const { Tt: n3, zt: e3 } = s2;
    const c3 = e3[t3];
    const r3 = n3[t3];
    return Wt(0, Ut(1, c3 / (c3 + r3)));
  }
  const e2 = o2 ? "w" : "h";
  const c2 = offsetSize(t2)[e2];
  const r2 = offsetSize(n2)[e2];
  return Wt(0, Ut(1, c2 / r2));
};
var getScrollbarHandleOffsetRatio = (t2, n2, o2, s2, e2, c2) => {
  const { B: r2 } = getEnvironment();
  const i2 = c2 ? "x" : "y";
  const l2 = c2 ? "Left" : "Top";
  const { Tt: a2 } = s2;
  const u2 = Jt(a2[i2]);
  const d2 = Zt(o2[`scroll${l2}`]);
  const f2 = c2 && e2;
  const _3 = r2.i ? d2 : u2 - d2;
  const h2 = f2 ? _3 : d2;
  const g2 = Ut(1, h2 / u2);
  const v2 = getScrollbarHandleLengthRatio(t2, n2, c2);
  return 1 / v2 * (1 - v2) * g2;
};
var createScrollbarsSetupElements = (t2, n2, o2) => {
  const { N: s2 } = getEnvironment();
  const { scrollbars: e2 } = s2();
  const { slot: c2 } = e2;
  const { ct: r2, W: i2, Z: l2, J: a2, lt: u2, ot: d2, it: f2, ut: h2 } = n2;
  const { scrollbars: g2 } = u2 ? {} : t2;
  const { slot: v2 } = g2 || {};
  const w2 = dynamicInitializationElement([i2, l2, a2], () => h2 && f2 ? i2 : l2, c2, v2);
  const scrollbarStructureAddRemoveClass = (t3, n3, o3) => {
    const s3 = o3 ? addClass : removeClass;
    each(t3, (t4) => {
      s3(t4.Xt, n3);
    });
  };
  const scrollbarsHandleStyle = (t3, n3) => {
    each(t3, (t4) => {
      const [o3, s3] = n3(t4);
      style2(o3, s3);
    });
  };
  const scrollbarStructureRefreshHandleLength = (t3, n3, o3) => {
    scrollbarsHandleStyle(t3, (t4) => {
      const { Ft: s3, Gt: e3 } = t4;
      return [s3, {
        [o3 ? "width" : "height"]: `${(100 * getScrollbarHandleLengthRatio(s3, e3, o3, n3)).toFixed(3)}%`
      }];
    });
  };
  const scrollbarStructureRefreshHandleOffset = (t3, n3, o3) => {
    const s3 = o3 ? "X" : "Y";
    scrollbarsHandleStyle(t3, (t4) => {
      const { Ft: e3, Gt: c3, Xt: r3 } = t4;
      const i3 = getScrollbarHandleOffsetRatio(e3, c3, d2, n3, directionIsRTL(r3), o3);
      const l3 = i3 === i3;
      return [e3, {
        transform: l3 ? `translate${s3}(${(100 * i3).toFixed(3)}%)` : ""
      }];
    });
  };
  const p2 = [];
  const b2 = [];
  const m2 = [];
  const scrollbarsAddRemoveClass = (t3, n3, o3) => {
    const s3 = isBoolean(o3);
    const e3 = s3 ? o3 : true;
    const c3 = s3 ? !o3 : true;
    e3 && scrollbarStructureAddRemoveClass(b2, t3, n3);
    c3 && scrollbarStructureAddRemoveClass(m2, t3, n3);
  };
  const refreshScrollbarsHandleLength = (t3) => {
    scrollbarStructureRefreshHandleLength(b2, t3, true);
    scrollbarStructureRefreshHandleLength(m2, t3);
  };
  const refreshScrollbarsHandleOffset = (t3) => {
    scrollbarStructureRefreshHandleOffset(b2, t3, true);
    scrollbarStructureRefreshHandleOffset(m2, t3);
  };
  const generateScrollbarDOM = (t3) => {
    const n3 = t3 ? W : Z;
    const s3 = t3 ? b2 : m2;
    const e3 = isEmptyArray(s3) ? nt : "";
    const c3 = createDiv(`${X} ${n3} ${e3}`);
    const i3 = createDiv(J);
    const a3 = createDiv(K);
    const u3 = {
      Xt: c3,
      Gt: i3,
      Ft: a3
    };
    appendChildren(c3, i3);
    appendChildren(i3, a3);
    push(s3, u3);
    push(p2, [removeElements.bind(0, c3), o2(u3, scrollbarsAddRemoveClass, r2, l2, d2, t3)]);
    return u3;
  };
  const y2 = generateScrollbarDOM.bind(0, true);
  const S2 = generateScrollbarDOM.bind(0, false);
  const appendElements = () => {
    appendChildren(w2, b2[0].Xt);
    appendChildren(w2, m2[0].Xt);
    _(() => {
      scrollbarsAddRemoveClass(nt);
    }, 300);
  };
  y2();
  S2();
  return [{
    Ut: refreshScrollbarsHandleLength,
    Wt: refreshScrollbarsHandleOffset,
    Zt: scrollbarsAddRemoveClass,
    Jt: {
      Kt: b2,
      Qt: y2,
      tn: scrollbarsHandleStyle.bind(0, b2)
    },
    nn: {
      Kt: m2,
      Qt: S2,
      tn: scrollbarsHandleStyle.bind(0, m2)
    }
  }, appendElements, runEachAndClear.bind(0, p2)];
};
var createScrollbarsSetup = (t2, n2, o2, s2) => {
  let e2;
  let c2;
  let r2;
  let i2;
  let l2;
  let a2 = 0;
  const u2 = createState({});
  const [d2] = u2;
  const [f2, _3] = selfClearTimeout();
  const [h2, g2] = selfClearTimeout();
  const [v2, w2] = selfClearTimeout(100);
  const [p2, b2] = selfClearTimeout(100);
  const [m2, y2] = selfClearTimeout(() => a2);
  const [S2, x2, $2] = createScrollbarsSetupElements(t2, o2.qt, createScrollbarsSetupEvents(n2, o2));
  const { Z: C2, J: O2, ot: z2, st: T2, ut: E2, it: I2 } = o2.qt;
  const { Jt: A3, nn: L2, Zt: H2, Ut: M2, Wt: P2 } = S2;
  const { tn: D2 } = A3;
  const { tn: R2 } = L2;
  const styleScrollbarPosition = (t3) => {
    const { Xt: n3 } = t3;
    const o3 = E2 && !I2 && parent(n3) === O2 && n3;
    return [o3, {
      transform: o3 ? `translate(${scrollLeft(z2)}px, ${scrollTop(z2)}px)` : ""
    }];
  };
  const manageScrollbarsAutoHide = (t3, n3) => {
    y2();
    if (t3) {
      H2(et);
    } else {
      const hide = () => H2(et, true);
      if (a2 > 0 && !n3) {
        m2(hide);
      } else {
        hide();
      }
    }
  };
  const onHostMouseEnter = () => {
    i2 = c2;
    i2 && manageScrollbarsAutoHide(true);
  };
  const k2 = [w2, y2, b2, g2, _3, $2, on(C2, "pointerover", onHostMouseEnter, {
    C: true
  }), on(C2, "pointerenter", onHostMouseEnter), on(C2, "pointerleave", () => {
    i2 = false;
    c2 && manageScrollbarsAutoHide(false);
  }), on(C2, "pointermove", () => {
    e2 && f2(() => {
      w2();
      manageScrollbarsAutoHide(true);
      p2(() => {
        e2 && manageScrollbarsAutoHide(false);
      });
    });
  }), on(T2, "scroll", (t3) => {
    h2(() => {
      P2(o2());
      r2 && manageScrollbarsAutoHide(true);
      v2(() => {
        r2 && !i2 && manageScrollbarsAutoHide(false);
      });
    });
    s2(t3);
    E2 && D2(styleScrollbarPosition);
    E2 && R2(styleScrollbarPosition);
  })];
  const B2 = d2.bind(0);
  B2.qt = S2;
  B2.Nt = x2;
  return [(t3, s3, i3) => {
    const { At: u3, Lt: d3, It: f3, yt: _4 } = i3;
    const { A: h3 } = getEnvironment();
    const g3 = createOptionCheck(n2, t3, s3);
    const v3 = o2();
    const { Tt: w3, Ct: p3, bt: b3 } = v3;
    const [m3, y3] = g3("showNativeOverlaidScrollbars");
    const [S3, x3] = g3("scrollbars.theme");
    const [$3, C3] = g3("scrollbars.visibility");
    const [O3, z3] = g3("scrollbars.autoHide");
    const [T3] = g3("scrollbars.autoHideDelay");
    const [E3, A4] = g3("scrollbars.dragScroll");
    const [L3, D3] = g3("scrollbars.clickScroll");
    const R3 = u3 || d3 || _4;
    const k3 = f3 || C3;
    const B3 = m3 && h3.x && h3.y;
    const setScrollbarVisibility = (t4, n3) => {
      const o3 = "visible" === $3 || "auto" === $3 && "scroll" === t4;
      H2(Q, o3, n3);
      return o3;
    };
    a2 = T3;
    if (y3) {
      H2(G, B3);
    }
    if (x3) {
      H2(l2);
      H2(S3, true);
      l2 = S3;
    }
    if (z3) {
      e2 = "move" === O3;
      c2 = "leave" === O3;
      r2 = "never" !== O3;
      manageScrollbarsAutoHide(!r2, true);
    }
    if (A4) {
      H2(it, E3);
    }
    if (D3) {
      H2(rt, L3);
    }
    if (k3) {
      const t4 = setScrollbarVisibility(p3.x, true);
      const n3 = setScrollbarVisibility(p3.y, false);
      const o3 = t4 && n3;
      H2(tt, !o3);
    }
    if (R3) {
      M2(v3);
      P2(v3);
      H2(st, !w3.x, true);
      H2(st, !w3.y, false);
      H2(U, b3 && !I2);
    }
  }, B2, runEachAndClear.bind(0, k2)];
};
var invokePluginInstance = (t2, n2, o2) => {
  if (isFunction(t2)) {
    t2(n2 || void 0, o2 || void 0);
  }
};
var OverlayScrollbars = (t2, n2, o2) => {
  const { F: s2, N: e2, Y: c2, j: r2 } = getEnvironment();
  const i2 = getPlugins();
  const l2 = isHTMLElement(t2);
  const a2 = l2 ? t2 : t2.target;
  const u2 = getInstance(a2);
  if (n2 && !u2) {
    let u3 = false;
    const validateOptions = (t3) => {
      const n3 = getPlugins()[vt];
      const o3 = n3 && n3.O;
      return o3 ? o3(t3, true) : t3;
    };
    const d2 = assignDeep({}, s2(), validateOptions(n2));
    const [f2, _3, h2] = createEventListenerHub(o2);
    const [g2, v2, w2] = createStructureSetup(t2, d2);
    const [p2, b2, m2] = createScrollbarsSetup(t2, d2, v2, (t3) => h2("scroll", [$2, t3]));
    const update = (t3, n3) => g2(t3, !!n3);
    const y2 = update.bind(0, {}, true);
    const S2 = c2(y2);
    const x2 = r2(y2);
    const destroy = (t3) => {
      removeInstance(a2);
      S2();
      x2();
      m2();
      w2();
      u3 = true;
      h2("destroyed", [$2, !!t3]);
      _3();
    };
    const $2 = {
      options(t3, n3) {
        if (t3) {
          const o3 = n3 ? s2() : {};
          const e3 = getOptionsDiff(d2, assignDeep(o3, validateOptions(t3)));
          if (!isEmptyObject(e3)) {
            assignDeep(d2, e3);
            update(e3);
          }
        }
        return assignDeep({}, d2);
      },
      on: f2,
      off: (t3, n3) => {
        t3 && n3 && _3(t3, n3);
      },
      state() {
        const { zt: t3, Tt: n3, Ct: o3, Et: s3, K: e3, St: c3, bt: r3 } = v2();
        return assignDeep({}, {
          overflowEdge: t3,
          overflowAmount: n3,
          overflowStyle: o3,
          hasOverflow: s3,
          padding: e3,
          paddingAbsolute: c3,
          directionRTL: r3,
          destroyed: u3
        });
      },
      elements() {
        const { W: t3, Z: n3, K: o3, J: s3, tt: e3, ot: c3, st: r3 } = v2.qt;
        const { Jt: i3, nn: l3 } = b2.qt;
        const translateScrollbarStructure = (t4) => {
          const { Ft: n4, Gt: o4, Xt: s4 } = t4;
          return {
            scrollbar: s4,
            track: o4,
            handle: n4
          };
        };
        const translateScrollbarsSetupElement = (t4) => {
          const { Kt: n4, Qt: o4 } = t4;
          const s4 = translateScrollbarStructure(n4[0]);
          return assignDeep({}, s4, {
            clone: () => {
              const t5 = translateScrollbarStructure(o4());
              p2({}, true, {});
              return t5;
            }
          });
        };
        return assignDeep({}, {
          target: t3,
          host: n3,
          padding: o3 || s3,
          viewport: s3,
          content: e3 || s3,
          scrollOffsetElement: c3,
          scrollEventElement: r3,
          scrollbarHorizontal: translateScrollbarsSetupElement(i3),
          scrollbarVertical: translateScrollbarsSetupElement(l3)
        });
      },
      update: (t3) => update({}, t3),
      destroy: destroy.bind(0)
    };
    v2.jt((t3, n3, o3) => {
      p2(n3, o3, t3);
    });
    addInstance(a2, $2);
    each(keys(i2), (t3) => invokePluginInstance(i2[t3], 0, $2));
    if (cancelInitialization(v2.qt.it, e2().cancel, !l2 && t2.cancel)) {
      destroy(true);
      return $2;
    }
    v2.Nt();
    b2.Nt();
    h2("initialized", [$2]);
    v2.jt((t3, n3, o3) => {
      const { vt: s3, yt: e3, gt: c3, At: r3, Lt: i3, It: l3, wt: a3, Ot: u4 } = t3;
      h2("updated", [$2, {
        updateHints: {
          sizeChanged: s3,
          directionChanged: e3,
          heightIntrinsicChanged: c3,
          overflowEdgeChanged: r3,
          overflowAmountChanged: i3,
          overflowStyleChanged: l3,
          contentMutation: a3,
          hostMutation: u4
        },
        changedOptions: n3,
        force: o3
      }]);
    });
    $2.update(true);
    return $2;
  }
  return u2;
};
OverlayScrollbars.plugin = (t2) => {
  each(addPlugin(t2), (t3) => invokePluginInstance(t3, OverlayScrollbars));
};
OverlayScrollbars.valid = (t2) => {
  const n2 = t2 && t2.elements;
  const o2 = isFunction(n2) && n2();
  return isPlainObject(o2) && !!getInstance(o2.target);
};
OverlayScrollbars.env = () => {
  const { k: t2, A: n2, I: o2, B: s2, V: e2, L: c2, X: r2, U: i2, N: l2, q: a2, F: u2, G: d2 } = getEnvironment();
  return assignDeep({}, {
    scrollbarsSize: t2,
    scrollbarsOverlaid: n2,
    scrollbarsHiding: o2,
    rtlScrollBehavior: s2,
    flexboxGlue: e2,
    cssCustomProperties: c2,
    staticDefaultInitialization: r2,
    staticDefaultOptions: i2,
    getDefaultInitialization: l2,
    setDefaultInitialization: a2,
    getDefaultOptions: u2,
    setDefaultOptions: d2
  });
};

// node_modules/overlayscrollbars-ngx/fesm2015/overlayscrollbars-ngx.js
var OverlayScrollbarsDirective = class {
  constructor(ngZone) {
    this.ngZone = ngZone;
    this.instanceRef = null;
  }
  osInitialize(target) {
    this.ngZone.runOutsideAngular(() => {
      this.instanceRef = OverlayScrollbars(
        target,
        this.options || {},
        /* istanbul ignore next */
        this.events || {}
      );
    });
    return this.instanceRef;
  }
  osInstance() {
    return this.instanceRef;
  }
  ngOnChanges(changes) {
    const optionsChange = changes.options;
    const eventsChange = changes.events;
    if (optionsChange) {
      const curr = optionsChange.currentValue;
      this.options = curr;
      if (OverlayScrollbars.valid(this.instanceRef)) {
        this.instanceRef.options(curr || {}, true);
      }
    }
    if (eventsChange) {
      const curr = eventsChange.currentValue;
      this.events = curr;
      if (OverlayScrollbars.valid(this.instanceRef)) {
        this.instanceRef.on(
          /* istanbul ignore next */
          curr || {},
          true
        );
      }
    }
  }
};
OverlayScrollbarsDirective.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayScrollbarsDirective, deps: [{ token: NgZone }], target: FactoryTarget.Directive });
OverlayScrollbarsDirective.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: OverlayScrollbarsDirective, selector: "[overlayScrollbars]", inputs: { options: "options", events: "events" }, usesOnChanges: true, ngImport: core_exports });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayScrollbarsDirective, decorators: [{
  type: Directive,
  args: [{
    selector: "[overlayScrollbars]"
    // https://angular.io/guide/styleguide#directive-selectors
  }]
}], ctorParameters: function() {
  return [{ type: NgZone }];
}, propDecorators: { options: [{
  type: Input,
  args: ["options"]
}], events: [{
  type: Input,
  args: ["events"]
}] } });
var mergeEventListeners = (emits, events) => Object.keys(emits).reduce((obj, name) => {
  const emitListener = emits[name];
  const eventListener = events[name];
  obj[name] = [
    emitListener,
    ...(Array.isArray(eventListener) ? eventListener : [eventListener]).filter(Boolean)
  ];
  return obj;
}, {});
var OverlayScrollbarsComponent = class {
  constructor(targetRef) {
    this.targetRef = targetRef;
    this.onInitialized = new EventEmitter();
    this.onUpdated = new EventEmitter();
    this.onDestroyed = new EventEmitter();
    this.onScroll = new EventEmitter();
  }
  osInstance() {
    return this.osDirective.osInstance();
  }
  getElement() {
    return this.targetRef.nativeElement;
  }
  ngAfterViewInit() {
    const targetElm = this.getElement();
    const contentElm = this.contentRef.nativeElement;
    if (targetElm && contentElm) {
      this.osDirective.osInitialize({
        target: targetElm,
        elements: {
          viewport: contentElm,
          content: contentElm
        }
      });
    }
  }
  ngOnDestroy() {
    var _a47;
    (_a47 = this.osDirective) === null || _a47 === void 0 ? void 0 : _a47.osInstance().destroy();
  }
  mergeEvents(originalEvents) {
    return mergeEventListeners({
      initialized: (...args) => this.onInitialized.emit(args),
      updated: (...args) => this.onUpdated.emit(args),
      destroyed: (...args) => this.onDestroyed.emit(args),
      scroll: (...args) => this.onScroll.emit(args)
    }, originalEvents || {});
  }
};
OverlayScrollbarsComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayScrollbarsComponent, deps: [{ token: ElementRef }], target: FactoryTarget.Component });
OverlayScrollbarsComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: OverlayScrollbarsComponent, selector: "overlay-scrollbars, [overlay-scrollbars]", inputs: { options: "options", events: "events" }, outputs: { onInitialized: "osInitialized", onUpdated: "osUpdated", onDestroyed: "osDestroyed", onScroll: "osScroll" }, host: { attributes: { "data-overlayscrollbars-initialize": "" } }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true }, { propertyName: "osDirective", first: true, predicate: ["content"], descendants: true, read: OverlayScrollbarsDirective }], ngImport: core_exports, template: `<div overlayScrollbars [options]="options" [events]="mergeEvents(events)" #content>
    <ng-content></ng-content>
  </div>`, isInline: true, directives: [{ type: OverlayScrollbarsDirective, selector: "[overlayScrollbars]", inputs: ["options", "events"] }] });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayScrollbarsComponent, decorators: [{
  type: Component,
  args: [{
    selector: "overlay-scrollbars, [overlay-scrollbars]",
    host: { "data-overlayscrollbars-initialize": "" },
    template: `<div overlayScrollbars [options]="options" [events]="mergeEvents(events)" #content>
    <ng-content></ng-content>
  </div>`
  }]
}], ctorParameters: function() {
  return [{ type: ElementRef }];
}, propDecorators: { options: [{
  type: Input,
  args: ["options"]
}], events: [{
  type: Input,
  args: ["events"]
}], onInitialized: [{
  type: Output,
  args: ["osInitialized"]
}], onUpdated: [{
  type: Output,
  args: ["osUpdated"]
}], onDestroyed: [{
  type: Output,
  args: ["osDestroyed"]
}], onScroll: [{
  type: Output,
  args: ["osScroll"]
}], contentRef: [{
  type: ViewChild,
  args: ["content"]
}], osDirective: [{
  type: ViewChild,
  args: ["content", { read: OverlayScrollbarsDirective }]
}] } });
var OverlayscrollbarsModule = class {
};
OverlayscrollbarsModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayscrollbarsModule, deps: [], target: FactoryTarget.NgModule });
OverlayscrollbarsModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayscrollbarsModule, declarations: [OverlayScrollbarsComponent, OverlayScrollbarsDirective], exports: [OverlayScrollbarsComponent, OverlayScrollbarsDirective] });
OverlayscrollbarsModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayscrollbarsModule });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: core_exports, type: OverlayscrollbarsModule, decorators: [{
  type: NgModule,
  args: [{
    declarations: [OverlayScrollbarsComponent, OverlayScrollbarsDirective],
    exports: [OverlayScrollbarsComponent, OverlayScrollbarsDirective]
  }]
}] });

// projects/aimmo-design-system/aim-scroll/model/index.ts
var AimScrollbarSize = {
  medium: "medium",
  large: "large"
};

// projects/aimmo-design-system/aim-scroll/src/aim-scroll.component.ts
var AIM_SCROLL = new InjectionToken("AIM SCROLL");
var _a15;
var AimScrollComponent = (_a15 = class {
  constructor(elementRef, zone) {
    this.elementRef = elementRef;
    this.zone = zone;
    this.aimScrollbarSize = AimScrollbarSize;
    this.scrollbarSize = AimScrollbarSize.medium;
    this.useBottomDivider = false;
    this.destroySource = new Subject();
    this.scrollOverflowX = false;
    this.scrollOverflowY = false;
    this.defaultOptions = {
      scrollbars: {
        theme: "aim-scroll-theme",
        // clickScroll: true, // TODO: v2 동작X -> 'ClickScrollPlugin' 적용해야함.
        autoHide: "leave",
        autoHideDelay: 100
      }
    };
  }
  get options() {
    return this.defaultOptions;
  }
  set options(options) {
    this.defaultOptions = __spreadValues(__spreadValues({}, this.defaultOptions), options);
  }
  set disabled(value) {
    const overflowBehavior = coerceBooleanProperty(value) ? "hidden" : "scroll";
    this.defaultOptions = __spreadProps(__spreadValues({}, this.defaultOptions), { overflow: { x: overflowBehavior, y: overflowBehavior } });
  }
  get hasOverflowX() {
    return this.scrollOverflowX;
  }
  get hasOverflowY() {
    return this.scrollOverflowY;
  }
  get hostElement() {
    return this.elementRef.nativeElement;
  }
  get scrollElement() {
    return this.scrollbars?.getElement();
  }
  get scrollContentElement() {
    return this.scrollbarInstance?.elements().content;
  }
  get scrollbarInstance() {
    return this.scrollbars?.osInstance();
  }
  get overflowXUpdateAction$() {
    return this.scrollbars.onUpdated.pipe(map(([instance]) => instance.state().hasOverflow.x), filter((hasOverflowX) => hasOverflowX !== this.scrollOverflowX), debounceTime(0), tap((hasOverflowX) => this.zone.run(() => this.scrollOverflowX = hasOverflowX)));
  }
  get overflowYUpdateAction$() {
    return this.scrollbars.onUpdated.pipe(map(([instance]) => instance.state().hasOverflow.y), filter((hasOverflowY) => hasOverflowY !== this.scrollOverflowY), debounceTime(0), tap((hasOverflowY) => this.zone.run(() => this.scrollOverflowY = hasOverflowY)));
  }
  ngAfterViewInit() {
    forkJoin([
      this.overflowXUpdateAction$,
      this.overflowYUpdateAction$
    ]).pipe(takeUntil(this.destroySource)).subscribe();
    this.scrollOverflowX = this.scrollbarInstance?.state().hasOverflow.x;
    this.scrollOverflowY = this.scrollbarInstance?.state().hasOverflow.y;
  }
  ngOnDestroy() {
    this.destroySource.next();
  }
  scrollTo(options) {
    this.scrollbarInstance?.elements().viewport.scrollTo(options);
  }
  /** if force === true, ignore cache */
  update(force) {
    this.scrollbarInstance?.update(force);
  }
}, _a15.ctorParameters = () => [
  { type: ElementRef },
  { type: NgZone }
], _a15.propDecorators = {
  scrollbarSize: [{ type: Input }],
  useBottomDivider: [{ type: Input }],
  scrollbars: [{ type: ViewChild, args: [OverlayScrollbarsComponent, { static: false }] }],
  options: [{ type: Input }],
  disabled: [{ type: Input }]
}, _a15);
AimScrollComponent = __decorate([
  Component({
    selector: "aim-scroll",
    template: aim_scroll_component_default,
    exportAs: "aimScroll",
    providers: [{ provide: AIM_SCROLL, useExisting: AimScrollComponent }],
    host: {
      class: "aim-scroll",
      "[class.large]": "scrollbarSize === aimScrollbarSize.large"
    },
    standalone: true,
    imports: [
      OverlayscrollbarsModule,
      NgIf,
      AimDividerComponent
    ],
    styles: [aim_scroll_component_default2]
  })
], AimScrollComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choice/choice.component.html
var choice_component_default = `<aim-input-text [formControl]="valueFormControl" [maxlength]="attributeKeyMaxLength"
                [placeholder]="'@\uB0B4\uC6A9\uC744_\uCD94\uAC00\uD574\uC8FC\uC138\uC694@' | translate" class="choice__input"
                trimFormValue/>
<aim-input-text [formControl]="nameFormControl" [maxlength]="attributeKeyMaxLength"
                [placeholder]="'@\uB0B4\uC6A9\uC744_\uCD94\uAC00\uD574\uC8FC\uC138\uC694@' | translate"
                class="choice__input choice__input--center" trimFormValue/>
<aim-icon (click)="onClickDelete()" *ngIf="editable" class="choice__icon" icon="close"/>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choice/choice.component.scss
var choice_component_default2 = "/* projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choice/choice.component.scss */\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  height: 48px;\n  border-bottom: 1px solid #333333;\n}\n:host ::ng-deep .design-system-text-input.mat-mdc-input-element {\n  background: transparent;\n  border: none;\n}\n:host ::ng-deep .design-system-text-input.mat-mdc-input-element:hover,\n:host ::ng-deep .design-system-text-input.mat-mdc-input-element:focus {\n  border: none;\n}\n:host ::ng-deep .design-system-text-input.mat-mdc-input-element.error {\n  border: none;\n}\n:host ::ng-deep .clear-button-wrapper {\n  display: none;\n}\n.choice__input {\n  flex-grow: 1;\n  width: auto;\n  max-width: 370px;\n  height: 100%;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.choice__input--center {\n  border-right: 1px solid #333333;\n  border-left: 1px solid #333333;\n}\n.choice__icon {\n  width: 60px;\n  flex-basis: 60px;\n  justify-content: center;\n  cursor: pointer;\n}\n";

// projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choice/choice.component.ts
var _a16;
var ChoiceComponent = (_a16 = class {
  constructor() {
    this.attributeKeyMaxLength = ATTRIBUTE_KEY_MAX_LENGTH;
    this.clickDelete = new EventEmitter();
  }
  ngOnInit() {
    this.initializeForm();
  }
  onClickDelete() {
    this.clickDelete.emit();
  }
  initializeForm() {
    this.valueFormControl = this.choiceFormGroup.get(ChoiceFormName.value);
    this.nameFormControl = this.choiceFormGroup.get(ChoiceFormName.name);
  }
}, _a16.propDecorators = {
  editable: [{ type: Input }],
  choiceFormGroup: [{ type: Input }],
  clickDelete: [{ type: Output }]
}, _a16);
ChoiceComponent = __decorate([
  Component({
    selector: "eimmo-common-choice",
    template: choice_component_default,
    standalone: true,
    imports: [
      AimInputTextComponent,
      TrimFormValueDirective,
      FormsModule,
      ReactiveFormsModule,
      NgIf,
      AimIconComponent,
      TranslateModule
    ],
    styles: [choice_component_default2]
  })
], ChoiceComponent);

// projects/eimmo-common/dialogs/src/attribute-config-dialog/choices/choices.component.ts
var _a17;
var ChoicesComponent = (_a17 = class {
  constructor(formBuilder, dialog, translateService) {
    this.formBuilder = formBuilder;
    this.dialog = dialog;
    this.translateService = translateService;
    this.AttributeChoicesSourceType = AttributeChoicesSourceType;
    this.choiceValueMaxLength = CHOICE_VALUE_MAX_LENGTH;
    this.destroyRef = inject(DestroyRef);
    this.deleteChoiceSource = new Subject();
  }
  get deleteChoiceAction$() {
    return this.deleteChoiceSource.pipe(exhaustMap((index) => this.deleteChoice(index)));
  }
  onAddNewChoice() {
    if (this.newChoiceValueFormControl.valid) {
      const newChoiceValue = this.newChoiceValueFormControl.value;
      if (this.choiceFormArray.value.some(({ value }) => isEqual_default(value, newChoiceValue))) {
        this.newChoiceValueFormControl.setErrors({ [AttributeConfigErrorKey.duplicateChoiceValue]: newChoiceValue });
      } else if (this.choiceFormArray.value.some(({ name }) => isEqual_default(name, newChoiceValue))) {
        this.newChoiceValueFormControl.setErrors({ [AttributeConfigErrorKey.duplicateChoiceName]: newChoiceValue });
      } else {
        this.addNewChoice(newChoiceValue);
        this.newChoiceValueFormControl.reset();
      }
    }
  }
  onRemoveChoice(index) {
    this.deleteChoiceSource.next(index);
  }
  ngOnInit() {
    this.initializeForm();
    this.setSourceType();
    forkJoin([
      this.deleteChoiceAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  initializeForm() {
    this.choiceFormArray = this.attributeConfigFormGroup.get(AttributeConfigFormName.choices);
    this.newChoiceValueFormControl = this.formBuilder.control(null, Validators.required);
    this.choicesSourceTypeControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.choicesSourceType);
    this.fileMetadataChoicesKeyControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.fileMetadataChoicesKey);
  }
  addNewChoice(value) {
    this.choiceFormArray.insert(this.choiceFormArray.controls.length, makeChoiceForm(this.formBuilder, { value, name: value }));
  }
  deleteChoice(index) {
    return this.dialog.open(ConfirmDialogComponent, makeOnlyTitleConfirmDialogConfig(this.translateService.instant("@\uC815\uB9D0_\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C_M@"), this.translateService.instant("@\uC608_L@"), this.translateService.instant("@\uC544\uB2C8\uC624_L@"))).afterClosed().pipe(filter((result) => !!result), tap(() => this.choiceFormArray.removeAt(index)));
  }
  setSourceType() {
    const sourceType = this.choicesSourceTypeControl.value ?? AttributeChoicesSourceType.direct;
    this.choicesSourceTypeControl.setValue(sourceType);
    this.changeAttributeSourceType(sourceType);
  }
  changeAttributeSourceType(type2) {
    switch (type2) {
      case AttributeChoicesSourceType.direct:
        this.showDirectSourceType = true;
        this.showFileMetadataSourceType = false;
        if (this.editable) {
          this.enableChoiceFormArray();
          this.disableFileMetadataControl();
        }
        break;
      case AttributeChoicesSourceType.fileMetadata:
        this.showDirectSourceType = false;
        this.showFileMetadataSourceType = true;
        if (this.editable) {
          this.disableChoiceFormArray();
          this.enableFileMetadataControl();
        }
        break;
    }
  }
  enableFileMetadataControl() {
    this.fileMetadataChoicesKeyControl.setValidators(Validators.required);
    this.fileMetadataChoicesKeyControl.setValue(this.fileMetadataChoicesKeyControl.value);
    this.fileMetadataChoicesKeyControl.enable();
  }
  disableFileMetadataControl() {
    this.fileMetadataChoicesKeyControl.clearValidators();
    this.fileMetadataChoicesKeyControl.reset();
    this.fileMetadataChoicesKeyControl.disable();
  }
  enableChoiceFormArray() {
    this.choiceFormArray.setValidators([
      Validators.required,
      this.getChoicesValidator()
    ]);
    this.choiceFormArray.enable();
  }
  disableChoiceFormArray() {
    this.choiceFormArray.clearValidators();
    this.choiceFormArray.clear();
    this.choiceFormArray.disable();
  }
  getChoicesValidator() {
    return (choiceFormArray) => {
      const choiceValues = [];
      const choiceNames = [];
      choiceFormArray.value.forEach(({ value, name }) => {
        choiceValues.push(value);
        choiceNames.push(name);
      });
      if (!isEqual_default(choiceValues.length, uniq_default(choiceValues).length)) {
        return { [AttributeConfigErrorKey.duplicateChoiceValue]: true };
      }
      if (!isEqual_default(choiceNames.length, uniq_default(choiceNames).length)) {
        return { [AttributeConfigErrorKey.duplicateChoiceName]: true };
      }
      return null;
    };
  }
}, _a17.ctorParameters = () => [
  { type: UntypedFormBuilder },
  { type: AimDialogService },
  { type: TranslateService }
], _a17.propDecorators = {
  editable: [{ type: Input }],
  attributeConfigFormGroup: [{ type: Input }]
}, _a17);
__decorate([
  GlobalCatchError
], ChoicesComponent.prototype, "deleteChoice", null);
ChoicesComponent = __decorate([
  Component({
    selector: "eimmo-common-choices",
    template: choices_component_default,
    standalone: true,
    imports: [
      NgIf,
      AimInputTextComponent,
      TrimFormValueDirective,
      FormsModule,
      ReactiveFormsModule,
      AimIconComponent,
      AimScrollComponent,
      NgForOf,
      ChoiceComponent,
      TranslateModule,
      AimLabelComponent,
      AimCountComponent,
      AimDescriptionComponent,
      AimDescAndCountComponent,
      AimFormLayoutComponent,
      AimTooltipModule
    ],
    styles: [choices_component_default2]
  })
], ChoicesComponent);

// projects/eimmo-common/dialogs/src/attribute-config-dialog/attribute-config-dialog.component.ts
var _a18;
var AttributeConfigDialogComponent = (_a18 = class {
  constructor(data, formBuilder, dialog, dialogRef, t2) {
    this.data = data;
    this.formBuilder = formBuilder;
    this.dialog = dialog;
    this.dialogRef = dialogRef;
    this.t = t2;
    this.AttributeConfigFormName = AttributeConfigFormName;
    this.InputFormat = InputFormat;
    this.AimOnOffToggleSize = AimOnOffToggleSize;
    this.attributeKeyMaxLength = ATTRIBUTE_KEY_MAX_LENGTH;
    this.showChoicesForm = false;
    this.showMultiChoiceForm = false;
    this.showInputForm = false;
    this.isLengthValidation = false;
    this.isPointType = false;
    this.destroyRef = inject(DestroyRef);
    this.errorAlertSource = new Subject();
  }
  get validationAction$() {
    return this.attributeConfigFormGroup.valueChanges.pipe(filter((attributeConfig) => hasValidation(attributeConfig)), map((attributeConfig) => getValidationInfo(attributeConfig)), distinctUntilChanged((prev, next) => isEqual_default(prev, next)), tap(({ type: type2, min, max, choiceSize, format, choicesSourceType }) => this.updateValidation(type2, min, max, choiceSize, format, choicesSourceType)));
  }
  get choicesAction$() {
    return this.choiceFormArray.valueChanges.pipe(tap((choices) => {
      const type2 = this.typeFormControl.value;
      if (type2 === AttributeConfigType.multiChoice) {
        const defaultValues = this.defaultValueFormControl.value;
        const newDefaultValues = [];
        defaultValues?.forEach((defaultValue) => {
          if (!isNil_default(defaultValue) && choices.some((choice) => isEqual_default(choice?.value, defaultValue))) {
            newDefaultValues.push(defaultValue);
          }
        });
        this.defaultValueFormControl.setValue(isEmpty_default(newDefaultValues) ? null : newDefaultValues);
      } else {
        const defaultValue = this.defaultValueFormControl.value;
        if (!isNil_default(defaultValue) && !choices.some((choice) => isEqual_default(choice?.value, defaultValue))) {
          this.defaultValueFormControl.setValue(null);
        }
      }
    }));
  }
  get formatAction$() {
    return this.formatFormControl.valueChanges.pipe(tap(() => this.defaultValueFormControl.setValue(null)));
  }
  get requiredAction$() {
    return this.requiredFormControl.valueChanges.pipe(tap((required) => this.optionalFormControl.setValue(!required)));
  }
  get setFormGroupErrorHandler$() {
    return this.t.onLangChange.pipe(startWith(0), tap(() => this.attributeConfigFormGroupErrorHandler = getAttributeConfigFormGroupErrorHandler({
      keyRequired: this.t.instant("@\uC18D\uC131_\uBA85\uC744_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@"),
      choicesRequired: this.t.instant("@\uD558\uC704_\uC18D\uC131\uC744_\uCD94\uAC00\uD574\uC8FC\uC138\uC694_M@"),
      notAllowedKeyValue: this.t.instant("@\uC18D\uC131_\uBA85\uC5D0_\uD5C8\uC6A9\uB418\uC9C0_\uC54A\uB294_\uD2B9\uC218\uBB38\uC790\uAC00_\uD3EC\uD568\uB418\uC5B4_\uC788\uC2B5\uB2C8\uB2E4@"),
      fileMetadataChoicesKeyRequired: this.t.instant("@\uBA54\uD0C0\uB370\uC774\uD130_key\uB97C_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@"),
      duplicateChoiceValue: this.t.instant("@\uC911\uBCF5\uB41C_\uD558\uC704_\uC18D\uC131_\uAC12\uC774_\uC874\uC7AC\uD569\uB2C8\uB2E4_M@"),
      duplicateChoiceName: this.t.instant("@\uC911\uBCF5\uB41C_\uD45C\uC2DC\uB420_\uD558\uC704_\uC18D\uC131_\uAC12\uC774_\uC874\uC7AC\uD569\uB2C8\uB2E4_M@"),
      choiceValueRequired: this.t.instant("@\uD558\uC704_\uC18D\uC131_\uAC12\uC744_\uC785\uB825\uD574\uC8FC\uC138\uC694@"),
      choiceNameRequired: this.t.instant("@\uD45C\uC2DC\uB420_\uD558\uC704_\uC18D\uC131_\uAC12\uC744_\uC785\uB825\uD574\uC8FC\uC138\uC694@"),
      validationMinRequired: this.t.instant("@\uCD5C\uC19F\uAC12\uC744_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@"),
      validationMinMin: ({ min }) => this.t.instant("@\uCD5C\uC19F\uAC12\uC744_min_\uC774\uC0C1\uC73C\uB85C_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@", { min }),
      validationMinMax: ({ max }) => this.t.instant("@\uCD5C\uC19F\uAC12\uC744_max_\uC774\uD558\uB85C_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@", { max }),
      validationMaxRequired: this.t.instant("@\uCD5C\uB313\uAC12\uC744_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@"),
      validationMaxMin: ({ min }) => this.t.instant("@\uCD5C\uB313\uAC12\uC744_min_\uC774\uC0C1\uC73C\uB85C_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@", { min }),
      validationMaxMax: ({ max }) => this.t.instant("@\uCD5C\uB313\uAC12\uC744_max_\uC774\uD558\uB85C_\uC785\uB825\uD574\uC8FC\uC138\uC694_M@", { max })
    })));
  }
  get errorAlertAction$() {
    return this.errorAlertSource.pipe(filterNotEmpty(), exhaustMap(({ message, title }) => this.showAlertDialog(message, title)));
  }
  onClickSave() {
    if (this.attributeConfigFormGroup.valid) {
      this.dialogRef.close(this.attributeConfigFormGroup.value);
    } else {
      this.keyFormControl.errors?.pattern ? this.errorAlertSource.next({
        title: this.t.instant("@\uC18D\uC131\uBA85_\uC624\uB958@"),
        message: this.attributeConfigFormGroupErrorHandler?.getErrorMessage(this.attributeConfigFormGroup)
      }) : this.errorAlertSource.next({
        title: this.attributeConfigFormGroupErrorHandler?.getErrorMessage(this.attributeConfigFormGroup),
        message: ""
      });
    }
  }
  ngOnInit() {
    this.initializeForm();
    this.setAttributeConfigDialogData(this.data);
    forkJoin([
      this.setFormGroupErrorHandler$,
      this.validationAction$,
      this.choicesAction$,
      this.formatAction$,
      this.requiredAction$,
      this.errorAlertAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  initializeForm() {
    this.attributeConfigFormGroup = makeAttributeConfigFormGroup(this.formBuilder);
    this.keyFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.key);
    this.nameFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.name);
    this.typeFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.type);
    this.choiceFormArray = this.attributeConfigFormGroup.get(AttributeConfigFormName.choices);
    this.formatFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.format);
    this.validationFormGroup = this.attributeConfigFormGroup.get(AttributeConfigFormName.validation);
    this.validationMinFormControl = this.validationFormGroup.get(ValidationFormName.min);
    this.validationMaxFormControl = this.validationFormGroup.get(ValidationFormName.max);
    this.validationMinCountFormControl = this.validationFormGroup.get(ValidationFormName.minCount);
    this.validationMaxCountFormControl = this.validationFormGroup.get(ValidationFormName.maxCount);
    this.defaultValueFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.defaultValue);
    this.optionalFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.optional);
    this.includeWhiteSpaceFormControl = this.attributeConfigFormGroup.get(AttributeConfigFormName.includeWhiteSpace);
    this.requiredFormControl = this.formBuilder.control(true);
  }
  setAttributeConfigDialogData({ editable, attributeConfig, isPointType }) {
    this.editable = editable;
    this.isPointType = isPointType;
    setAttributeConfigFormData(this.formBuilder, this.attributeConfigFormGroup, attributeConfig);
    this.isLengthValidation = this.formatFormControl.value === InputFormat.string;
    const type2 = this.typeFormControl.value ?? AttributeConfigType.choice;
    this.typeFormControl.setValue(type2);
    this.changeAttributeConfigType(type2);
    this.requiredFormControl.setValue(!attributeConfig.optional);
    editable ? this.attributeConfigFormGroup.enable() : this.attributeConfigFormGroup.disable();
    editable ? this.requiredFormControl.enable() : this.requiredFormControl.disable();
  }
  changeAttributeConfigType(type2) {
    switch (type2) {
      case AttributeConfigType.choice: {
        this.setChoiceForm();
        break;
      }
      case AttributeConfigType.multiChoice: {
        this.setMultiChoiceForm();
        break;
      }
      case AttributeConfigType.input: {
        this.setInputForm();
        break;
      }
    }
  }
  enableChoiceFormArray() {
    this.choiceFormArray.setValidators([
      Validators.required,
      this.getChoicesValidator()
    ]);
    this.choiceFormArray.enable();
  }
  disableChoiceFormArray() {
    this.choiceFormArray.clearValidators();
    this.choiceFormArray.clear();
    this.choiceFormArray.disable();
  }
  enableFormatFormControl() {
    this.formatFormControl.setValidators(Validators.required);
    this.formatFormControl.setValue(this.formatFormControl.value || InputFormat.number);
    this.formatFormControl.enable();
  }
  disableFormatFormControl() {
    this.formatFormControl.clearValidators();
    this.formatFormControl.reset();
    this.formatFormControl.disable();
  }
  enableMultiChoiceValidationFormGroup() {
    this.validationFormGroup.enable();
    this.validationMinFormControl.disable();
    this.validationMaxFormControl.disable();
  }
  enableInputValidationFormGroup() {
    this.validationFormGroup.enable();
    this.validationMinCountFormControl.disable();
    this.validationMaxCountFormControl.disable();
  }
  disableValidationFormGroup() {
    this.validationFormGroup.clearValidators();
    this.validationFormGroup.reset();
    this.validationFormGroup.disable();
  }
  setChoiceForm() {
    this.showChoicesForm = true;
    this.showMultiChoiceForm = false;
    this.showInputForm = false;
    if (this.editable) {
      this.enableChoiceFormArray();
      this.disableFormatFormControl();
      this.disableValidationFormGroup();
    }
  }
  setMultiChoiceForm() {
    this.showChoicesForm = true;
    this.showMultiChoiceForm = true;
    this.showInputForm = false;
    if (this.editable) {
      this.enableChoiceFormArray();
      this.disableFormatFormControl();
      this.enableMultiChoiceValidationFormGroup();
    }
  }
  setInputForm() {
    this.showChoicesForm = false;
    this.showMultiChoiceForm = false;
    this.showInputForm = true;
    if (this.editable) {
      this.disableChoiceFormArray();
      this.enableFormatFormControl();
      this.enableInputValidationFormGroup();
    }
  }
  updateValidation(type2, min, max, choiceSize, format, choicesSourceType) {
    if (type2 === AttributeConfigType.multiChoice) {
      this.updateMultiChoiceValidation(min, max, choiceSize, choicesSourceType);
    } else {
      if (checkExceedLimitInputValue(min)) {
        this.validationMinFormControl.setValue(INPUT_MAX_VALUE);
        return;
      } else if (checkExceedLimitInputValue(max)) {
        this.validationMaxFormControl.setValue(INPUT_MAX_VALUE);
        return;
      } else {
        this.updateInputValidation(min, max, format);
      }
    }
  }
  updateMultiChoiceValidation(min, max, choiceSize, choicesSourceType) {
    const needToCheckMinMaxValidator = choicesSourceType === AttributeChoicesSourceType.direct;
    this.validationMinCountFormControl.clearValidators();
    this.validationMaxCountFormControl.clearValidators();
    if (needToCheckMinMaxValidator) {
      const [minValidators, maxValidators] = getMultiChoiceValidation(choiceSize ?? 0, min, max);
      this.validationMinCountFormControl.setValidators(minValidators);
      this.validationMaxCountFormControl.setValidators(maxValidators);
    }
    this.validationMinCountFormControl.updateValueAndValidity();
    this.validationMaxCountFormControl.updateValueAndValidity();
  }
  updateInputValidation(min, max, format) {
    const isTextFormat = format === InputFormat.string;
    this.isLengthValidation = isTextFormat;
    const [minValidators, maxValidators] = getInputValidation(isTextFormat, min, max);
    this.validationMinFormControl.clearValidators();
    this.validationMaxFormControl.clearValidators();
    this.validationMinFormControl.setValidators(minValidators);
    this.validationMaxFormControl.setValidators(maxValidators);
    this.validationMinFormControl.updateValueAndValidity();
    this.validationMaxFormControl.updateValueAndValidity();
  }
  getChoicesValidator() {
    return (choiceFormArray) => {
      const choiceValues = [];
      const choiceNames = [];
      choiceFormArray.value.forEach(({ value, name }) => {
        choiceValues.push(value);
        choiceNames.push(name);
      });
      if (!isEqual_default(choiceValues.length, uniq_default(choiceValues).length)) {
        return { [AttributeConfigErrorKey.duplicateChoiceValue]: true };
      }
      if (!isEqual_default(choiceNames.length, uniq_default(choiceNames).length)) {
        return { [AttributeConfigErrorKey.duplicateChoiceName]: true };
      }
      return null;
    };
  }
  showAlertDialog(message, title) {
    if (title) {
      return this.dialog.open(ConfirmDialogComponent, __spreadProps(__spreadValues({}, makeAlertDialogConfig(title, message, this.t.instant("@\uD655\uC778_L@"))), { hasBackdrop: true })).afterClosed();
    } else {
      return this.dialog.open(ConfirmDialogComponent, __spreadProps(__spreadValues({}, makeOnlyTitleConfirmDialogConfig(title, this.t.instant("@\uD655\uC778_L@"))), { hasBackdrop: true })).afterClosed();
    }
  }
}, _a18.ctorParameters = () => [
  { type: void 0, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] },
  { type: UntypedFormBuilder },
  { type: AimDialogService },
  { type: MatDialogRef },
  { type: TranslateService }
], _a18);
__decorate([
  GlobalCatchError
], AttributeConfigDialogComponent.prototype, "showAlertDialog", null);
AttributeConfigDialogComponent = __decorate([
  Component({
    selector: "eimmo-common-attribute-config-dialog",
    template: attribute_config_dialog_component_default,
    standalone: true,
    imports: [
      AimDialogModule,
      FormsModule,
      ReactiveFormsModule,
      TrimFormValueDirective,
      NgIf,
      ChoicesComponent,
      AimTextToggleComponent,
      AimTextToggleGroupComponent,
      AimInputNumericModule,
      AimIconComponent,
      CdkOverlayOrigin,
      AimSelectModule,
      AimOptionModule,
      NgForOf,
      AimOnOffToggleComponent,
      AimButtonHostingDirective,
      AimButtonComponent,
      ChoiceNamePipe,
      TranslateModule,
      AimCountComponent,
      AimDescriptionComponent,
      AimLabelComponent,
      AimFormLayoutComponent,
      AimTooltipModule,
      AimInputBaseDirective,
      AimInputComponent
    ],
    styles: [attribute_config_dialog_component_default2]
  })
], AttributeConfigDialogComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/class-items-dialog.component.html
var class_items_dialog_component_default = `<aim-dialog-header [doNotCloseDialog]="true"
                   (closeButtonClicked)="onClose()">
  <ng-container *ngIf="isPointType">{{ '@\uD3EC\uC778\uD2B8@'|translate }}</ng-container>
  {{ '@\uD074\uB798\uC2A4_\uC138\uBD80_\uC124\uC815@' | translate }}
</aim-dialog-header>
<aim-dialog-content>
  <ag-grid-angular class="ag-theme-alpine-dark class-item-v2 class-table"
                   domLayout="autoHeight"
                   rowSelection="single"
                   [columnDefs]="classItemsColDefs"
                   [rowData]="classItemsRowData"
                   [defaultColDef]="defaultColDef"
                   [modules]="modules"
                   [tabToNextCell]="setNextCell"
                   (gridReady)="onGridReady($event)"
                   (cellMouseOver)="onCellMouseOver($event)"
                   (cellMouseOut)="onCellMouseOut($event)"
                   (cellKeyDown)="onCellKeyDown($event)">
  </ag-grid-angular>
</aim-dialog-content>
<aim-dialog-actions class="class-items-dialog__footer">
  <ng-container *ngIf="editable; else notEditable">
    <button aim-button type="button" buttonSize="large" buttonTheme="outline" [disabled]="!isEdited()"
            (click)="onClickSave()">{{'@\uC800\uC7A5_L@' | translate}}</button>
  </ng-container>
  <ng-template #notEditable>
    <button aim-button type="button" buttonSize="large" buttonTheme="outline"
            [aim-dialog-close]="null">{{'@\uB2EB\uAE30_L@' | translate}}</button>
  </ng-template>
</aim-dialog-actions>

`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/class-items-dialog.component.scss
var class_items_dialog_component_default2 = '/* projects/eimmo-common/dialogs/src/class-items-dialog/class-items-dialog.component.scss */\n.aim-scroll-theme.os-scrollbar {\n  box-sizing: border-box;\n  padding: 4px;\n  background: transparent;\n}\n.aim-scroll-theme.os-scrollbar-horizontal {\n  right: 8px;\n  height: var(--aim-scroll-scrollbar-height-horizontal, 16px);\n}\n.aim-scroll-theme.os-scrollbar-vertical {\n  bottom: 8px;\n  width: var(--aim-scroll-scrollbar-width-vertical, 16px);\n}\n.aim-scroll-theme.os-scrollbar-rtl.os-scrollbar-horizontal {\n  left: 8px;\n  right: 0;\n}\n.aim-scroll-theme.os-scrollbar-unusable {\n  background: transparent;\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track {\n  background: transparent;\n}\n.aim-scroll-theme.os-scrollbar-horizontal > .os-scrollbar-track > .os-scrollbar-handle {\n  box-sizing: border-box;\n  min-width: var(--aim-scroll-scrollbar-handle-min-width-horizontal, 24px);\n}\n.aim-scroll-theme.os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle {\n  box-sizing: border-box;\n  min-height: var(--aim-scroll-scrollbar-handle-min-height-vertical, 24px);\n}\n.aim-scroll-theme.os-scrollbar-transition > .os-scrollbar-track > .os-scrollbar-handle {\n  transition: background-color 0.3s;\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle,\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track {\n  border-radius: 100px;\n  border: 1px solid #545454;\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle {\n  background: rgba(84, 84, 84, 0.5);\n}\n.aim-scroll-theme.os-scrollbar:hover > .os-scrollbar-track > .os-scrollbar-handle {\n  background: rgba(84, 84, 84, 0.5);\n}\n.aim-scroll-theme.os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle.active {\n  background: rgba(84, 84, 84, 0.5);\n}\n.aim-scroll-theme.os-scrollbar-horizontal .os-scrollbar-handle:before,\n.aim-scroll-theme.os-scrollbar-vertical .os-scrollbar-handle:before {\n  content: "";\n  position: absolute;\n  left: 0;\n  right: 0;\n  top: 0;\n  bottom: 0;\n  display: block;\n}\n.aim-scroll-theme.os-host-scrollbar-hidden > .os-scrollbar-handle:before {\n  display: none;\n}\n.aim-scroll-theme.os-scrollbar-horizontal .os-scrollbar-handle:before {\n  top: -8px;\n  bottom: -4px;\n}\n.aim-scroll-theme.os-scrollbar-vertical .os-scrollbar-handle:before {\n  left: -8px;\n  right: -4px;\n}\n.aim-scroll-theme.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle:before {\n  right: -8px;\n  left: -4px;\n}\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  max-height: 100%;\n  min-width: 551px;\n  width: 770px;\n  margin: auto;\n  pointer-events: auto;\n  position: relative;\n  display: block;\n}\n.class-items-dialog__footer {\n  margin-top: 32px;\n}\n.class-table {\n  white-space: initial;\n  max-height: 500px;\n  overflow: auto;\n}\n.class-table::-webkit-scrollbar {\n  width: 18px;\n  height: 18px;\n}\n.class-table::-webkit-scrollbar-track {\n  background-color: rgba(0, 0, 0, 0);\n}\n.class-table::-webkit-scrollbar-thumb {\n  background: #333333;\n  border-radius: 100px;\n  background-clip: padding-box;\n  border: 4px solid transparent;\n}\n.class-table::-webkit-scrollbar-corner {\n  background-color: rgba(0, 0, 0, 0);\n}\n.class-table ::ng-deep .ag-row-selected:before {\n  background-color: rgba(142, 71, 255, 0.2);\n  background-image: unset;\n}\n';

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/generic.js
var generic_exports = {};
__export(generic_exports, {
  attrToBoolean: () => attrToBoolean,
  attrToNumber: () => attrToNumber,
  attrToString: () => attrToString,
  defaultComparator: () => defaultComparator,
  exists: () => exists,
  jsonEquals: () => jsonEquals,
  makeNull: () => makeNull,
  missing: () => missing,
  missingOrEmpty: () => missingOrEmpty,
  referenceCompare: () => referenceCompare,
  toStringOrNull: () => toStringOrNull,
  values: () => values
});
function makeNull(value) {
  if (value == null || value === "") {
    return null;
  }
  return value;
}
function exists(value, allowEmptyString) {
  if (allowEmptyString === void 0) {
    allowEmptyString = false;
  }
  return value != null && (value !== "" || allowEmptyString);
}
function missing(value) {
  return !exists(value);
}
function missingOrEmpty(value) {
  return value == null || value.length === 0;
}
function toStringOrNull(value) {
  return value != null && typeof value.toString === "function" ? value.toString() : null;
}
function attrToNumber(value) {
  if (value === void 0) {
    return;
  }
  if (value === null || value === "") {
    return null;
  }
  if (typeof value === "number") {
    return isNaN(value) ? void 0 : value;
  }
  var valueParsed = parseInt(value, 10);
  return isNaN(valueParsed) ? void 0 : valueParsed;
}
function attrToBoolean(value) {
  if (value === void 0) {
    return;
  }
  if (value === null || value === "") {
    return false;
  }
  if (typeof value === "boolean") {
    return value;
  }
  return /true/i.test(value);
}
function attrToString(value) {
  if (value == null || value === "") {
    return;
  }
  return value;
}
function referenceCompare(left, right) {
  if (left == null && right == null) {
    return true;
  }
  if (left == null && right != null) {
    return false;
  }
  if (left != null && right == null) {
    return false;
  }
  return left === right;
}
function jsonEquals(val1, val2) {
  var val1Json = val1 ? JSON.stringify(val1) : null;
  var val2Json = val2 ? JSON.stringify(val2) : null;
  return val1Json === val2Json;
}
function defaultComparator(valueA, valueB, accentedCompare) {
  if (accentedCompare === void 0) {
    accentedCompare = false;
  }
  var valueAMissing = valueA == null;
  var valueBMissing = valueB == null;
  if (valueA && valueA.toNumber) {
    valueA = valueA.toNumber();
  }
  if (valueB && valueB.toNumber) {
    valueB = valueB.toNumber();
  }
  if (valueAMissing && valueBMissing) {
    return 0;
  }
  if (valueAMissing) {
    return -1;
  }
  if (valueBMissing) {
    return 1;
  }
  function doQuickCompare(a2, b2) {
    return a2 > b2 ? 1 : a2 < b2 ? -1 : 0;
  }
  if (typeof valueA !== "string") {
    return doQuickCompare(valueA, valueB);
  }
  if (!accentedCompare) {
    return doQuickCompare(valueA, valueB);
  }
  try {
    return valueA.localeCompare(valueB);
  } catch (e2) {
    return doQuickCompare(valueA, valueB);
  }
}
function values(object) {
  if (object instanceof Set || object instanceof Map) {
    var arr_1 = [];
    object.forEach(function(value) {
      return arr_1.push(value);
    });
    return arr_1;
  }
  return Object.values(object);
}

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnKeyCreator.js
var ColumnKeyCreator = (
  /** @class */
  function() {
    function ColumnKeyCreator2() {
      this.existingKeys = {};
    }
    ColumnKeyCreator2.prototype.addExistingKeys = function(keys3) {
      for (var i2 = 0; i2 < keys3.length; i2++) {
        this.existingKeys[keys3[i2]] = true;
      }
    };
    ColumnKeyCreator2.prototype.getUniqueKey = function(colId, colField) {
      colId = toStringOrNull(colId);
      var count = 0;
      while (true) {
        var idToTry = void 0;
        if (colId) {
          idToTry = colId;
          if (count !== 0) {
            idToTry += "_" + count;
          }
        } else if (colField) {
          idToTry = colField;
          if (count !== 0) {
            idToTry += "_" + count;
          }
        } else {
          idToTry = "" + count;
        }
        if (!this.existingKeys[idToTry]) {
          this.existingKeys[idToTry] = true;
          return idToTry;
        }
        count++;
      }
    };
    return ColumnKeyCreator2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/object.js
var object_exports = {};
__export(object_exports, {
  cloneObject: () => cloneObject,
  copyPropertiesIfPresent: () => copyPropertiesIfPresent,
  copyPropertyIfPresent: () => copyPropertyIfPresent,
  deepCloneDefinition: () => deepCloneDefinition,
  deepCloneObject: () => deepCloneObject,
  deepFreeze: () => deepFreeze,
  get: () => get,
  getAllKeysInObjects: () => getAllKeysInObjects,
  getAllValuesInObject: () => getAllValuesInObject,
  getProperty: () => getProperty,
  getValueUsingField: () => getValueUsingField,
  isNonNullObject: () => isNonNullObject,
  iterateObject: () => iterateObject,
  mergeDeep: () => mergeDeep,
  missingOrEmptyObject: () => missingOrEmptyObject,
  removeAllReferences: () => removeAllReferences,
  set: () => set,
  setProperty: () => setProperty
});
function iterateObject(object, callback) {
  if (object == null) {
    return;
  }
  if (Array.isArray(object)) {
    object.forEach(function(value, index) {
      return callback("" + index, value);
    });
  } else {
    Object.keys(object).forEach(function(key) {
      return callback(key, object[key]);
    });
  }
}
function cloneObject(object) {
  var copy = {};
  var keys3 = Object.keys(object);
  for (var i2 = 0; i2 < keys3.length; i2++) {
    var key = keys3[i2];
    var value = object[key];
    copy[key] = value;
  }
  return copy;
}
function deepCloneObject(object) {
  return JSON.parse(JSON.stringify(object));
}
function deepCloneDefinition(object, keysToSkip) {
  if (!object) {
    return;
  }
  var obj = object;
  var res = {};
  Object.keys(obj).forEach(function(key) {
    if (keysToSkip && keysToSkip.indexOf(key) >= 0) {
      return;
    }
    var value = obj[key];
    var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;
    if (sourceIsSimpleObject) {
      res[key] = deepCloneDefinition(value);
    } else {
      res[key] = value;
    }
  });
  return res;
}
function getProperty(object, key) {
  return object[key];
}
function setProperty(object, key, value) {
  object[key] = value;
}
function copyPropertiesIfPresent(source, target) {
  var properties = [];
  for (var _i = 2; _i < arguments.length; _i++) {
    properties[_i - 2] = arguments[_i];
  }
  properties.forEach(function(p2) {
    return copyPropertyIfPresent(source, target, p2);
  });
}
function copyPropertyIfPresent(source, target, property, transform) {
  var value = getProperty(source, property);
  if (value !== void 0) {
    setProperty(target, property, transform ? transform(value) : value);
  }
}
function getAllKeysInObjects(objects) {
  var allValues = {};
  objects.filter(function(obj) {
    return obj != null;
  }).forEach(function(obj) {
    Object.keys(obj).forEach(function(key) {
      return allValues[key] = null;
    });
  });
  return Object.keys(allValues);
}
function getAllValuesInObject(obj) {
  if (!obj) {
    return [];
  }
  var anyObject = Object;
  if (typeof anyObject.values === "function") {
    return anyObject.values(obj);
  }
  var ret = [];
  for (var key in obj) {
    if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {
      ret.push(obj[key]);
    }
  }
  return ret;
}
function mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {
  if (copyUndefined === void 0) {
    copyUndefined = true;
  }
  if (makeCopyOfSimpleObjects === void 0) {
    makeCopyOfSimpleObjects = false;
  }
  if (!exists(source)) {
    return;
  }
  iterateObject(source, function(key, sourceValue) {
    var destValue = dest[key];
    if (destValue === sourceValue) {
      return;
    }
    if (makeCopyOfSimpleObjects) {
      var objectIsDueToBeCopied = destValue == null && sourceValue != null;
      if (objectIsDueToBeCopied) {
        var sourceIsSimpleObject = typeof sourceValue === "object" && sourceValue.constructor === Object;
        var dontCopy = sourceIsSimpleObject;
        if (dontCopy) {
          destValue = {};
          dest[key] = destValue;
        }
      }
    }
    if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {
      mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);
    } else if (copyUndefined || sourceValue !== void 0) {
      dest[key] = sourceValue;
    }
  });
}
function missingOrEmptyObject(value) {
  return missing(value) || Object.keys(value).length === 0;
}
function get(source, expression, defaultValue) {
  if (source == null) {
    return defaultValue;
  }
  var keys3 = expression.split(".");
  var objectToRead = source;
  while (keys3.length > 1) {
    objectToRead = objectToRead[keys3.shift()];
    if (objectToRead == null) {
      return defaultValue;
    }
  }
  var value = objectToRead[keys3[0]];
  return value != null ? value : defaultValue;
}
function set(target, expression, value) {
  if (target == null) {
    return;
  }
  var keys3 = expression.split(".");
  var objectToUpdate = target;
  keys3.forEach(function(key, i2) {
    if (!objectToUpdate[key]) {
      objectToUpdate[key] = {};
    }
    if (i2 < keys3.length - 1) {
      objectToUpdate = objectToUpdate[key];
    }
  });
  objectToUpdate[keys3[keys3.length - 1]] = value;
}
function deepFreeze(object) {
  Object.freeze(object);
  values(object).forEach(function(v2) {
    if (isNonNullObject(v2) || typeof v2 === "function") {
      deepFreeze(v2);
    }
  });
  return object;
}
function getValueUsingField(data, field, fieldContainsDots) {
  if (!field || !data) {
    return;
  }
  if (!fieldContainsDots) {
    return data[field];
  }
  var fields = field.split(".");
  var currentObject = data;
  for (var i2 = 0; i2 < fields.length; i2++) {
    if (currentObject == null) {
      return void 0;
    }
    currentObject = currentObject[fields[i2]];
  }
  return currentObject;
}
function removeAllReferences(obj, objectName) {
  Object.keys(obj).forEach(function(key) {
    var value = obj[key];
    if (typeof value === "object") {
      obj[key] = void 0;
    }
  });
  var proto = Object.getPrototypeOf(obj);
  var properties = {};
  Object.keys(proto).forEach(function(key) {
    var value = proto[key];
    if (typeof value === "function") {
      var func = function() {
        console.warn("AG Grid: " + objectName + " function " + key + "() cannot be called as the grid has been destroyed.\n                     Please don't call grid API functions on destroyed grids - as a matter of fact you shouldn't\n                     be keeping the API reference, your application has a memory leak! Remove the API reference\n                     when the grid is destroyed.");
      };
      properties[key] = { value: func, writable: true };
    }
  });
  Object.defineProperties(obj, properties);
}
function isNonNullObject(value) {
  return typeof value === "object" && value !== null;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/function.js
var function_exports = {};
__export(function_exports, {
  callIfPresent: () => callIfPresent,
  compose: () => compose,
  debounce: () => debounce2,
  doOnce: () => doOnce,
  executeAfter: () => executeAfter,
  executeInAWhile: () => executeInAWhile,
  executeNextVMTurn: () => executeNextVMTurn,
  getFunctionName: () => getFunctionName,
  isFunction: () => isFunction2,
  noop: () => noop2,
  throttle: () => throttle,
  waitUntil: () => waitUntil
});
var doOnceFlags = {};
function doOnce(func, key) {
  if (doOnceFlags[key]) {
    return;
  }
  func();
  doOnceFlags[key] = true;
}
function getFunctionName(funcConstructor) {
  if (funcConstructor.name) {
    return funcConstructor.name;
  }
  var matches = /function\s+([^\(]+)/.exec(funcConstructor.toString());
  return matches && matches.length === 2 ? matches[1].trim() : null;
}
function isFunction2(val) {
  return !!(val && val.constructor && val.call && val.apply);
}
function executeInAWhile(funcs) {
  executeAfter(funcs, 400);
}
var executeNextVMTurnFuncs = [];
var executeNextVMTurnPending = false;
function executeNextVMTurn(func) {
  executeNextVMTurnFuncs.push(func);
  if (executeNextVMTurnPending) {
    return;
  }
  executeNextVMTurnPending = true;
  window.setTimeout(function() {
    var funcsCopy = executeNextVMTurnFuncs.slice();
    executeNextVMTurnFuncs.length = 0;
    executeNextVMTurnPending = false;
    funcsCopy.forEach(function(func2) {
      return func2();
    });
  }, 0);
}
function executeAfter(funcs, milliseconds) {
  if (milliseconds === void 0) {
    milliseconds = 0;
  }
  if (funcs.length > 0) {
    window.setTimeout(function() {
      return funcs.forEach(function(func) {
        return func();
      });
    }, milliseconds);
  }
}
function debounce2(func, delay2) {
  var timeout;
  return function() {
    var args = [];
    for (var _i = 0; _i < arguments.length; _i++) {
      args[_i] = arguments[_i];
    }
    var context = this;
    window.clearTimeout(timeout);
    timeout = window.setTimeout(function() {
      func.apply(context, args);
    }, delay2);
  };
}
function throttle(func, wait) {
  var previousCall = 0;
  return function() {
    var args = [];
    for (var _i = 0; _i < arguments.length; _i++) {
      args[_i] = arguments[_i];
    }
    var context = this;
    var currentCall = (/* @__PURE__ */ new Date()).getTime();
    if (currentCall - previousCall < wait) {
      return;
    }
    previousCall = currentCall;
    func.apply(context, args);
  };
}
function waitUntil(condition, callback, timeout, timeoutMessage) {
  if (timeout === void 0) {
    timeout = 100;
  }
  var timeStamp = (/* @__PURE__ */ new Date()).getTime();
  var interval = null;
  var executed = false;
  var internalCallback = function() {
    var reachedTimeout = (/* @__PURE__ */ new Date()).getTime() - timeStamp > timeout;
    if (condition() || reachedTimeout) {
      callback();
      executed = true;
      if (interval != null) {
        window.clearInterval(interval);
        interval = null;
      }
      if (reachedTimeout && timeoutMessage) {
        console.warn(timeoutMessage);
      }
    }
  };
  internalCallback();
  if (!executed) {
    interval = window.setInterval(internalCallback, 10);
  }
}
function compose() {
  var fns = [];
  for (var _i = 0; _i < arguments.length; _i++) {
    fns[_i] = arguments[_i];
  }
  return function(arg) {
    return fns.reduce(function(composed, f2) {
      return f2(composed);
    }, arg);
  };
}
function callIfPresent(func) {
  if (func) {
    func();
  }
}
var noop2 = function() {
  return;
};

// node_modules/@ag-grid-community/core/dist/esm/es5/context/context.js
var __read = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read(arguments[i2]));
  return ar;
};
var Context = (
  /** @class */
  function() {
    function Context2(params, logger) {
      this.beanWrappers = {};
      this.destroyed = false;
      if (!params || !params.beanClasses) {
        return;
      }
      this.contextParams = params;
      this.logger = logger;
      this.logger.log(">> creating ag-Application Context");
      this.createBeans();
      var beanInstances = this.getBeanInstances();
      this.wireBeans(beanInstances);
      this.logger.log(">> ag-Application Context ready - component is alive");
    }
    Context2.prototype.getBeanInstances = function() {
      return values(this.beanWrappers).map(function(beanEntry) {
        return beanEntry.beanInstance;
      });
    };
    Context2.prototype.createBean = function(bean, afterPreCreateCallback) {
      if (!bean) {
        throw Error("Can't wire to bean since it is null");
      }
      this.wireBeans([bean], afterPreCreateCallback);
      return bean;
    };
    Context2.prototype.wireBeans = function(beanInstances, afterPreCreateCallback) {
      this.autoWireBeans(beanInstances);
      this.methodWireBeans(beanInstances);
      this.callLifeCycleMethods(beanInstances, "preConstructMethods");
      if (exists(afterPreCreateCallback)) {
        beanInstances.forEach(afterPreCreateCallback);
      }
      this.callLifeCycleMethods(beanInstances, "postConstructMethods");
    };
    Context2.prototype.createBeans = function() {
      var _this = this;
      this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));
      iterateObject(this.beanWrappers, function(key, beanEntry) {
        var constructorParamsMeta;
        if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {
          constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;
        }
        var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);
        var newInstance = new (beanEntry.bean.bind.apply(beanEntry.bean, __spread([null], constructorParams)))();
        beanEntry.beanInstance = newInstance;
      });
      var createdBeanNames = Object.keys(this.beanWrappers).join(", ");
      this.logger.log("created beans: " + createdBeanNames);
    };
    Context2.prototype.createBeanWrapper = function(BeanClass) {
      var metaData = BeanClass.__agBeanMetaData;
      if (!metaData) {
        var beanName = void 0;
        if (BeanClass.prototype.constructor) {
          beanName = getFunctionName(BeanClass.prototype.constructor);
        } else {
          beanName = "" + BeanClass;
        }
        console.error("Context item " + beanName + " is not a bean");
        return;
      }
      var beanEntry = {
        bean: BeanClass,
        beanInstance: null,
        beanName: metaData.beanName
      };
      this.beanWrappers[metaData.beanName] = beanEntry;
    };
    Context2.prototype.autoWireBeans = function(beanInstances) {
      var _this = this;
      beanInstances.forEach(function(beanInstance) {
        _this.forEachMetaDataInHierarchy(beanInstance, function(metaData, beanName) {
          var attributes = metaData.agClassAttributes;
          if (!attributes) {
            return;
          }
          attributes.forEach(function(attribute) {
            var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);
            beanInstance[attribute.attributeName] = otherBean;
          });
        });
      });
    };
    Context2.prototype.methodWireBeans = function(beanInstances) {
      var _this = this;
      beanInstances.forEach(function(beanInstance) {
        _this.forEachMetaDataInHierarchy(beanInstance, function(metaData, beanName) {
          iterateObject(metaData.autowireMethods, function(methodName, wireParams) {
            if (methodName === "agConstructor") {
              return;
            }
            var initParams = _this.getBeansForParameters(wireParams, beanName);
            beanInstance[methodName].apply(beanInstance, initParams);
          });
        });
      });
    };
    Context2.prototype.forEachMetaDataInHierarchy = function(beanInstance, callback) {
      var prototype = Object.getPrototypeOf(beanInstance);
      while (prototype != null) {
        var constructor = prototype.constructor;
        if (constructor.hasOwnProperty("__agBeanMetaData")) {
          var metaData = constructor.__agBeanMetaData;
          var beanName = this.getBeanName(constructor);
          callback(metaData, beanName);
        }
        prototype = Object.getPrototypeOf(prototype);
      }
    };
    Context2.prototype.getBeanName = function(constructor) {
      if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {
        return constructor.__agBeanMetaData.beanName;
      }
      var constructorString = constructor.toString();
      var beanName = constructorString.substring(9, constructorString.indexOf("("));
      return beanName;
    };
    Context2.prototype.getBeansForParameters = function(parameters, beanName) {
      var _this = this;
      var beansList = [];
      if (parameters) {
        iterateObject(parameters, function(paramIndex, otherBeanName) {
          var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);
          beansList[Number(paramIndex)] = otherBean;
        });
      }
      return beansList;
    };
    Context2.prototype.lookupBeanInstance = function(wiringBean, beanName, optional) {
      if (optional === void 0) {
        optional = false;
      }
      if (beanName === "context") {
        return this;
      }
      if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {
        return this.contextParams.providedBeanInstances[beanName];
      }
      var beanEntry = this.beanWrappers[beanName];
      if (beanEntry) {
        return beanEntry.beanInstance;
      }
      if (!optional) {
        console.error("AG Grid: unable to find bean reference " + beanName + " while initialising " + wiringBean);
      }
      return null;
    };
    Context2.prototype.callLifeCycleMethods = function(beanInstances, lifeCycleMethod) {
      var _this = this;
      beanInstances.forEach(function(beanInstance) {
        return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod);
      });
    };
    Context2.prototype.callLifeCycleMethodsOnBean = function(beanInstance, lifeCycleMethod, methodToIgnore) {
      var allMethods = {};
      this.forEachMetaDataInHierarchy(beanInstance, function(metaData) {
        var methods = metaData[lifeCycleMethod];
        if (methods) {
          methods.forEach(function(methodName) {
            if (methodName != methodToIgnore) {
              allMethods[methodName] = true;
            }
          });
        }
      });
      var allMethodsList = Object.keys(allMethods);
      allMethodsList.forEach(function(methodName) {
        return beanInstance[methodName]();
      });
    };
    Context2.prototype.getBean = function(name) {
      return this.lookupBeanInstance("getBean", name, true);
    };
    Context2.prototype.destroy = function() {
      if (this.destroyed) {
        return;
      }
      this.logger.log(">> Shutting down ag-Application Context");
      var beanInstances = this.getBeanInstances();
      this.destroyBeans(beanInstances);
      this.contextParams.providedBeanInstances = null;
      this.destroyed = true;
      this.logger.log(">> ag-Application Context shut down - component is dead");
    };
    Context2.prototype.destroyBean = function(bean) {
      if (!bean) {
        return;
      }
      this.destroyBeans([bean]);
    };
    Context2.prototype.destroyBeans = function(beans) {
      var _this = this;
      if (!beans) {
        return [];
      }
      beans.forEach(function(bean) {
        _this.callLifeCycleMethodsOnBean(bean, "preDestroyMethods", "destroy");
        var beanAny = bean;
        if (typeof beanAny.destroy === "function") {
          beanAny.destroy();
        }
      });
      return [];
    };
    return Context2;
  }()
);
function PreConstruct(target, methodName, descriptor) {
  var props = getOrCreateProps(target.constructor);
  if (!props.preConstructMethods) {
    props.preConstructMethods = [];
  }
  props.preConstructMethods.push(methodName);
}
function PostConstruct(target, methodName, descriptor) {
  var props = getOrCreateProps(target.constructor);
  if (!props.postConstructMethods) {
    props.postConstructMethods = [];
  }
  props.postConstructMethods.push(methodName);
}
function PreDestroy(target, methodName, descriptor) {
  var props = getOrCreateProps(target.constructor);
  if (!props.preDestroyMethods) {
    props.preDestroyMethods = [];
  }
  props.preDestroyMethods.push(methodName);
}
function Bean(beanName) {
  return function(classConstructor) {
    var props = getOrCreateProps(classConstructor);
    props.beanName = beanName;
  };
}
function Autowired(name) {
  return function(target, propertyKey, descriptor) {
    autowiredFunc(target, name, false, target, propertyKey, null);
  };
}
function Optional2(name) {
  return function(target, propertyKey, descriptor) {
    autowiredFunc(target, name, true, target, propertyKey, null);
  };
}
function autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {
  if (name === null) {
    console.error("AG Grid: Autowired name should not be null");
    return;
  }
  if (typeof index === "number") {
    console.error("AG Grid: Autowired should be on an attribute");
    return;
  }
  var props = getOrCreateProps(target.constructor);
  if (!props.agClassAttributes) {
    props.agClassAttributes = [];
  }
  props.agClassAttributes.push({
    attributeName: methodOrAttributeName,
    beanName: name,
    optional
  });
}
function Qualifier(name) {
  return function(classPrototype, methodOrAttributeName, index) {
    var constructor = typeof classPrototype == "function" ? classPrototype : classPrototype.constructor;
    var props;
    if (typeof index === "number") {
      var methodName = void 0;
      if (methodOrAttributeName) {
        props = getOrCreateProps(constructor);
        methodName = methodOrAttributeName;
      } else {
        props = getOrCreateProps(constructor);
        methodName = "agConstructor";
      }
      if (!props.autowireMethods) {
        props.autowireMethods = {};
      }
      if (!props.autowireMethods[methodName]) {
        props.autowireMethods[methodName] = {};
      }
      props.autowireMethods[methodName][index] = name;
    }
  };
}
function getOrCreateProps(target) {
  if (!target.hasOwnProperty("__agBeanMetaData")) {
    target.__agBeanMetaData = {};
  }
  return target.__agBeanMetaData;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/eventService.js
var __assign = function() {
  __assign = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign.apply(this, arguments);
};
var __decorate2 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var EventService = (
  /** @class */
  function() {
    function EventService2() {
      this.allSyncListeners = /* @__PURE__ */ new Map();
      this.allAsyncListeners = /* @__PURE__ */ new Map();
      this.globalSyncListeners = /* @__PURE__ */ new Set();
      this.globalAsyncListeners = /* @__PURE__ */ new Set();
      this.asyncFunctionsQueue = [];
      this.scheduled = false;
      this.firedEvents = {};
    }
    EventService2.prototype.setBeans = function(loggerFactory, gridOptionsService, frameworkOverrides, globalEventListener) {
      if (globalEventListener === void 0) {
        globalEventListener = null;
      }
      this.frameworkOverrides = frameworkOverrides;
      this.gridOptionsService = gridOptionsService;
      if (globalEventListener) {
        var async = gridOptionsService.useAsyncEvents();
        this.addGlobalListener(globalEventListener, async);
      }
    };
    EventService2.prototype.getListeners = function(eventType, async, autoCreateListenerCollection) {
      var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;
      var listeners = listenerMap.get(eventType);
      if (!listeners && autoCreateListenerCollection) {
        listeners = /* @__PURE__ */ new Set();
        listenerMap.set(eventType, listeners);
      }
      return listeners;
    };
    EventService2.prototype.noRegisteredListenersExist = function() {
      return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 && this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;
    };
    EventService2.prototype.addEventListener = function(eventType, listener, async) {
      if (async === void 0) {
        async = false;
      }
      this.getListeners(eventType, async, true).add(listener);
    };
    EventService2.prototype.removeEventListener = function(eventType, listener, async) {
      if (async === void 0) {
        async = false;
      }
      var listeners = this.getListeners(eventType, async, false);
      if (!listeners) {
        return;
      }
      listeners.delete(listener);
      if (listeners.size === 0) {
        var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;
        listenerMap.delete(eventType);
      }
    };
    EventService2.prototype.addGlobalListener = function(listener, async) {
      if (async === void 0) {
        async = false;
      }
      (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);
    };
    EventService2.prototype.removeGlobalListener = function(listener, async) {
      if (async === void 0) {
        async = false;
      }
      (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);
    };
    EventService2.prototype.dispatchEvent = function(event) {
      var agEvent = event;
      if (this.gridOptionsService) {
        agEvent = __assign(__assign({}, event), { api: this.gridOptionsService.get("api"), columnApi: this.gridOptionsService.get("columnApi"), context: this.gridOptionsService.get("context") });
      }
      this.dispatchToListeners(agEvent, true);
      this.dispatchToListeners(agEvent, false);
      this.firedEvents[agEvent.type] = true;
    };
    EventService2.prototype.dispatchEventOnce = function(event) {
      if (!this.firedEvents[event.type]) {
        this.dispatchEvent(event);
      }
    };
    EventService2.prototype.dispatchToListeners = function(event, async) {
      var _this = this;
      var eventType = event.type;
      var processEventListeners = function(listeners2) {
        return listeners2.forEach(function(listener) {
          if (async) {
            _this.dispatchAsync(function() {
              return listener(event);
            });
          } else {
            listener(event);
          }
        });
      };
      var listeners = this.getListeners(eventType, async, false);
      if (listeners) {
        processEventListeners(listeners);
      }
      var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;
      globalListeners.forEach(function(listener) {
        if (async) {
          _this.dispatchAsync(function() {
            return _this.frameworkOverrides.dispatchEvent(eventType, function() {
              return listener(eventType, event);
            }, true);
          });
        } else {
          _this.frameworkOverrides.dispatchEvent(eventType, function() {
            return listener(eventType, event);
          }, true);
        }
      });
    };
    EventService2.prototype.dispatchAsync = function(func) {
      this.asyncFunctionsQueue.push(func);
      if (!this.scheduled) {
        window.setTimeout(this.flushAsyncQueue.bind(this), 0);
        this.scheduled = true;
      }
    };
    EventService2.prototype.flushAsyncQueue = function() {
      this.scheduled = false;
      var queueCopy = this.asyncFunctionsQueue.slice();
      this.asyncFunctionsQueue = [];
      queueCopy.forEach(function(func) {
        return func();
      });
    };
    __decorate2([
      __param(0, Qualifier("loggerFactory")),
      __param(1, Qualifier("gridOptionsService")),
      __param(2, Qualifier("frameworkOverrides")),
      __param(3, Qualifier("globalEventListener"))
    ], EventService2.prototype, "setBeans", null);
    EventService2 = __decorate2([
      Bean("eventService")
    ], EventService2);
    return EventService2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/modules/moduleNames.js
var ModuleNames;
(function(ModuleNames2) {
  ModuleNames2["CommunityCoreModule"] = "@ag-grid-community/core";
  ModuleNames2["CommunityAllModules"] = "@ag-grid-community/all";
  ModuleNames2["InfiniteRowModelModule"] = "@ag-grid-community/infinite-row-model";
  ModuleNames2["ClientSideRowModelModule"] = "@ag-grid-community/client-side-row-model";
  ModuleNames2["CsvExportModule"] = "@ag-grid-community/csv-export";
  ModuleNames2["EnterpriseCoreModule"] = "@ag-grid-enterprise/core";
  ModuleNames2["EnterpriseAllModules"] = "@ag-grid-enterprise/all";
  ModuleNames2["RowGroupingModule"] = "@ag-grid-enterprise/row-grouping";
  ModuleNames2["ColumnToolPanelModule"] = "@ag-grid-enterprise/column-tool-panel";
  ModuleNames2["FiltersToolPanelModule"] = "@ag-grid-enterprise/filter-tool-panel";
  ModuleNames2["MenuModule"] = "@ag-grid-enterprise/menu";
  ModuleNames2["SetFilterModule"] = "@ag-grid-enterprise/set-filter";
  ModuleNames2["MultiFilterModule"] = "@ag-grid-enterprise/multi-filter";
  ModuleNames2["StatusBarModule"] = "@ag-grid-enterprise/status-bar";
  ModuleNames2["SideBarModule"] = "@ag-grid-enterprise/side-bar";
  ModuleNames2["RangeSelectionModule"] = "@ag-grid-enterprise/range-selection";
  ModuleNames2["MasterDetailModule"] = "@ag-grid-enterprise/master-detail";
  ModuleNames2["RichSelectModule"] = "@ag-grid-enterprise/rich-select";
  ModuleNames2["GridChartsModule"] = "@ag-grid-enterprise/charts";
  ModuleNames2["ViewportRowModelModule"] = "@ag-grid-enterprise/viewport-row-model";
  ModuleNames2["ServerSideRowModelModule"] = "@ag-grid-enterprise/server-side-row-model";
  ModuleNames2["ExcelExportModule"] = "@ag-grid-enterprise/excel-export";
  ModuleNames2["ClipboardModule"] = "@ag-grid-enterprise/clipboard";
  ModuleNames2["SparklinesModule"] = "@ag-grid-enterprise/sparklines";
  ModuleNames2["AngularModule"] = "@ag-grid-community/angular";
  ModuleNames2["ReactModule"] = "@ag-grid-community/react";
  ModuleNames2["VueModule"] = "@ag-grid-community/vue";
  ModuleNames2["PolymerModule"] = "@ag-grid-community/polymer";
})(ModuleNames || (ModuleNames = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/modules/moduleRegistry.js
var __read2 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var ModuleRegistry = (
  /** @class */
  function() {
    function ModuleRegistry2() {
    }
    ModuleRegistry2.register = function(module, moduleBased) {
      if (moduleBased === void 0) {
        moduleBased = true;
      }
      ModuleRegistry2.runVersionChecks(module);
      ModuleRegistry2.modulesMap[module.moduleName] = module;
      ModuleRegistry2.setModuleBased(moduleBased);
    };
    ModuleRegistry2.runVersionChecks = function(module) {
      if (!ModuleRegistry2.currentModuleVersion) {
        ModuleRegistry2.currentModuleVersion = module.version;
      }
      if (!module.version) {
        console.error("AG Grid: You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. '" + module.moduleName + "' is incompatible. Please update all modules to the same version.");
      } else if (module.version !== ModuleRegistry2.currentModuleVersion) {
        console.error("AG Grid: You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. '" + module.moduleName + "' is version " + module.version + " but the other modules are version " + this.currentModuleVersion + ". Please update all modules to the same version.");
      }
      if (module.validate) {
        var result = module.validate();
        if (!result.isValid) {
          var errorResult = result;
          console.error("AG Grid: " + errorResult.message);
        }
      }
    };
    ModuleRegistry2.setModuleBased = function(moduleBased) {
      if (ModuleRegistry2.moduleBased === void 0) {
        ModuleRegistry2.moduleBased = moduleBased;
      } else {
        if (ModuleRegistry2.moduleBased !== moduleBased) {
          doOnce(function() {
            console.warn("AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.");
            console.warn("Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.");
          }, "ModulePackageCheck");
        }
      }
    };
    ModuleRegistry2.registerModules = function(modules, moduleBased) {
      if (moduleBased === void 0) {
        moduleBased = true;
      }
      ModuleRegistry2.setModuleBased(moduleBased);
      if (!modules) {
        return;
      }
      modules.forEach(function(module) {
        return ModuleRegistry2.register(module, moduleBased);
      });
    };
    ModuleRegistry2.assertRegistered = function(moduleName, reason) {
      var _a47;
      if (this.isRegistered(moduleName)) {
        return true;
      }
      var warningKey = reason + moduleName;
      var warningMessage;
      if (ModuleRegistry2.moduleBased) {
        var modName = (_a47 = Object.entries(ModuleNames).find(function(_a48) {
          var _b = __read2(_a48, 2), k2 = _b[0], v2 = _b[1];
          return v2 === moduleName;
        })) === null || _a47 === void 0 ? void 0 : _a47[0];
        warningMessage = "AG Grid: unable to use " + reason + " as the " + modName + " is not registered. Check if you have registered the module:\n           \n    import { ModuleRegistry } from '@ag-grid-community/core';\n    import { " + modName + " } from '" + moduleName + "';\n    \n    ModuleRegistry.registerModules([ " + modName + " ]);\n\nFor more info see: https://www.ag-grid.com/javascript-grid/modules/";
      } else {
        warningMessage = "AG Grid: unable to use " + reason + " as package 'ag-grid-enterprise' has not been imported. Check that you have imported the package:\n            \n    import 'ag-grid-enterprise';\n            \nFor more info see: https://www.ag-grid.com/javascript-grid/packages/";
      }
      doOnce(function() {
        console.warn(warningMessage);
      }, warningKey);
      return false;
    };
    ModuleRegistry2.isRegistered = function(moduleName) {
      return !!ModuleRegistry2.modulesMap[moduleName];
    };
    ModuleRegistry2.getRegisteredModules = function() {
      return values(ModuleRegistry2.modulesMap);
    };
    ModuleRegistry2.isPackageBased = function() {
      return !ModuleRegistry2.moduleBased;
    };
    ModuleRegistry2.modulesMap = {};
    return ModuleRegistry2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/column.js
var __decorate3 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var instanceIdSequence = 0;
function getNextColInstanceId() {
  return instanceIdSequence++;
}
var Column = (
  /** @class */
  function() {
    function Column2(colDef, userProvidedColDef, colId, primary) {
      this.instanceId = getNextColInstanceId();
      this.autoHeaderHeight = null;
      this.moving = false;
      this.menuVisible = false;
      this.filterActive = false;
      this.eventService = new EventService();
      this.rowGroupActive = false;
      this.pivotActive = false;
      this.aggregationActive = false;
      this.colDef = colDef;
      this.userProvidedColDef = userProvidedColDef;
      this.colId = colId;
      this.primary = primary;
      this.setState(colDef);
    }
    Column2.prototype.getInstanceId = function() {
      return this.instanceId;
    };
    Column2.prototype.setState = function(colDef) {
      if (colDef.sort !== void 0) {
        if (colDef.sort === "asc" || colDef.sort === "desc") {
          this.sort = colDef.sort;
        }
      } else {
        if (colDef.initialSort === "asc" || colDef.initialSort === "desc") {
          this.sort = colDef.initialSort;
        }
      }
      var sortIndex = attrToNumber(colDef.sortIndex);
      var initialSortIndex = attrToNumber(colDef.initialSortIndex);
      if (sortIndex !== void 0) {
        if (sortIndex !== null) {
          this.sortIndex = sortIndex;
        }
      } else {
        if (initialSortIndex !== null) {
          this.sortIndex = initialSortIndex;
        }
      }
      var hide = attrToBoolean(colDef.hide);
      var initialHide = attrToBoolean(colDef.initialHide);
      if (hide !== void 0) {
        this.visible = !hide;
      } else {
        this.visible = !initialHide;
      }
      if (colDef.pinned !== void 0) {
        this.setPinned(colDef.pinned);
      } else {
        this.setPinned(colDef.initialPinned);
      }
      var flex = attrToNumber(colDef.flex);
      var initialFlex = attrToNumber(colDef.initialFlex);
      if (flex !== void 0) {
        this.flex = flex;
      } else if (initialFlex !== void 0) {
        this.flex = initialFlex;
      }
    };
    Column2.prototype.setColDef = function(colDef, userProvidedColDef) {
      this.colDef = colDef;
      this.userProvidedColDef = userProvidedColDef;
      this.initMinAndMaxWidths();
      this.initDotNotation();
      this.eventService.dispatchEvent(this.createColumnEvent("colDefChanged", "api"));
    };
    Column2.prototype.getUserProvidedColDef = function() {
      return this.userProvidedColDef;
    };
    Column2.prototype.setParent = function(parent2) {
      this.parent = parent2;
    };
    Column2.prototype.getParent = function() {
      return this.parent;
    };
    Column2.prototype.setOriginalParent = function(originalParent) {
      this.originalParent = originalParent;
    };
    Column2.prototype.getOriginalParent = function() {
      return this.originalParent;
    };
    Column2.prototype.initialise = function() {
      this.initMinAndMaxWidths();
      this.resetActualWidth("gridInitializing");
      this.initDotNotation();
      this.validate();
    };
    Column2.prototype.initDotNotation = function() {
      var suppressDotNotation = this.gridOptionsService.is("suppressFieldDotNotation");
      this.fieldContainsDots = exists(this.colDef.field) && this.colDef.field.indexOf(".") >= 0 && !suppressDotNotation;
      this.tooltipFieldContainsDots = exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf(".") >= 0 && !suppressDotNotation;
    };
    Column2.prototype.initMinAndMaxWidths = function() {
      var colDef = this.colDef;
      this.minWidth = this.columnUtils.calculateColMinWidth(colDef);
      this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);
    };
    Column2.prototype.resetActualWidth = function(source) {
      if (source === void 0) {
        source = "api";
      }
      var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);
      this.setActualWidth(initialWidth, source, true);
    };
    Column2.prototype.isEmptyGroup = function() {
      return false;
    };
    Column2.prototype.isRowGroupDisplayed = function(colId) {
      if (missing(this.colDef) || missing(this.colDef.showRowGroup)) {
        return false;
      }
      var showingAllGroups = this.colDef.showRowGroup === true;
      var showingThisGroup = this.colDef.showRowGroup === colId;
      return showingAllGroups || showingThisGroup;
    };
    Column2.prototype.isPrimary = function() {
      return this.primary;
    };
    Column2.prototype.isFilterAllowed = function() {
      var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;
      return filterDefined;
    };
    Column2.prototype.isFieldContainsDots = function() {
      return this.fieldContainsDots;
    };
    Column2.prototype.isTooltipFieldContainsDots = function() {
      return this.tooltipFieldContainsDots;
    };
    Column2.prototype.validate = function() {
      var colDefAny = this.colDef;
      function warnOnce(msg, key, obj) {
        doOnce(function() {
          if (obj) {
            console.warn(msg, obj);
          } else {
            doOnce(function() {
              return console.warn(msg);
            }, key);
          }
        }, key);
      }
      var usingCSRM = this.gridOptionsService.isRowModelType("clientSide");
      if (usingCSRM && !ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {
        var rowGroupingItems = ["enableRowGroup", "rowGroup", "rowGroupIndex", "enablePivot", "enableValue", "pivot", "pivotIndex", "aggFunc"];
        var itemsUsed = rowGroupingItems.filter(function(x2) {
          return exists(colDefAny[x2]);
        });
        if (itemsUsed.length > 0) {
          ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, itemsUsed.map(function(i2) {
            return "colDef." + i2;
          }).join(", "));
        }
      }
      if (this.colDef.cellEditor === "agRichSelect" || this.colDef.cellEditor === "agRichSelectCellEditor") {
        ModuleRegistry.assertRegistered(ModuleNames.RichSelectModule, this.colDef.cellEditor);
      }
      if (this.gridOptionsService.isTreeData()) {
        var itemsNotAllowedWithTreeData = ["rowGroup", "rowGroupIndex", "pivot", "pivotIndex"];
        var itemsUsed = itemsNotAllowedWithTreeData.filter(function(x2) {
          return exists(colDefAny[x2]);
        });
        if (itemsUsed.length > 0) {
          warnOnce("AG Grid: " + itemsUsed.join() + " is not possible when doing tree data, your column definition should not have " + itemsUsed.join(), "TreeDataCannotRowGroup");
        }
      }
      exists(colDefAny["menuTabs"]) && ModuleRegistry.assertRegistered(ModuleNames.MenuModule, "menuTabs");
      exists(colDefAny["columnsMenuParams"]) && ModuleRegistry.assertRegistered(ModuleNames.MenuModule, "columnsMenuParams");
      exists(colDefAny["columnsMenuParams"]) && ModuleRegistry.assertRegistered(ModuleNames.ColumnToolPanelModule, "columnsMenuParams");
      if (exists(this.colDef.width) && typeof this.colDef.width !== "number") {
        warnOnce("AG Grid: colDef.width should be a number, not " + typeof this.colDef.width, "ColumnCheck");
      }
      if (colDefAny.pinnedRowCellRenderer || colDefAny.pinnedRowCellRendererParams || colDefAny.pinnedRowCellRendererFramework) {
        warnOnce("AG Grid: pinnedRowCellRenderer[Params,Framework] no longer exist. Use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned.", "colDef.pinnedRowCellRenderer-deprecated");
      }
      if (exists(colDefAny.columnGroupShow) && colDefAny.columnGroupShow !== "closed" && colDefAny.columnGroupShow !== "open") {
        warnOnce("AG Grid: '" + colDefAny.columnGroupShow + "' is not valid for columnGroupShow. Valid values are 'open', 'closed'", "columnGroupShow_invalid");
      }
    };
    Column2.prototype.addEventListener = function(eventType, listener) {
      this.eventService.addEventListener(eventType, listener);
    };
    Column2.prototype.removeEventListener = function(eventType, listener) {
      this.eventService.removeEventListener(eventType, listener);
    };
    Column2.prototype.createColumnFunctionCallbackParams = function(rowNode) {
      return {
        node: rowNode,
        data: rowNode.data,
        column: this,
        colDef: this.colDef,
        context: this.gridOptionsService.get("context"),
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi")
      };
    };
    Column2.prototype.isSuppressNavigable = function(rowNode) {
      if (typeof this.colDef.suppressNavigable === "boolean") {
        return this.colDef.suppressNavigable;
      }
      if (typeof this.colDef.suppressNavigable === "function") {
        var params = this.createColumnFunctionCallbackParams(rowNode);
        var userFunc = this.colDef.suppressNavigable;
        return userFunc(params);
      }
      return false;
    };
    Column2.prototype.isCellEditable = function(rowNode) {
      if (rowNode.group && !this.gridOptionsService.is("enableGroupEdit")) {
        return false;
      }
      return this.isColumnFunc(rowNode, this.colDef.editable);
    };
    Column2.prototype.isSuppressFillHandle = function() {
      return !!attrToBoolean(this.colDef.suppressFillHandle);
    };
    Column2.prototype.isAutoHeight = function() {
      return !!attrToBoolean(this.colDef.autoHeight);
    };
    Column2.prototype.isAutoHeaderHeight = function() {
      return !!attrToBoolean(this.colDef.autoHeaderHeight);
    };
    Column2.prototype.isRowDrag = function(rowNode) {
      return this.isColumnFunc(rowNode, this.colDef.rowDrag);
    };
    Column2.prototype.isDndSource = function(rowNode) {
      return this.isColumnFunc(rowNode, this.colDef.dndSource);
    };
    Column2.prototype.isCellCheckboxSelection = function(rowNode) {
      return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);
    };
    Column2.prototype.isSuppressPaste = function(rowNode) {
      return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);
    };
    Column2.prototype.isResizable = function() {
      return !!attrToBoolean(this.colDef.resizable);
    };
    Column2.prototype.isColumnFunc = function(rowNode, value) {
      if (typeof value === "boolean") {
        return value;
      }
      if (typeof value === "function") {
        var params = this.createColumnFunctionCallbackParams(rowNode);
        var editableFunc = value;
        return editableFunc(params);
      }
      return false;
    };
    Column2.prototype.setMoving = function(moving, source) {
      if (source === void 0) {
        source = "api";
      }
      this.moving = moving;
      this.eventService.dispatchEvent(this.createColumnEvent("movingChanged", source));
    };
    Column2.prototype.createColumnEvent = function(type2, source) {
      return {
        type: type2,
        column: this,
        columns: [this],
        source,
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context")
      };
    };
    Column2.prototype.isMoving = function() {
      return this.moving;
    };
    Column2.prototype.getSort = function() {
      return this.sort;
    };
    Column2.prototype.setSort = function(sort, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.sort !== sort) {
        this.sort = sort;
        this.eventService.dispatchEvent(this.createColumnEvent("sortChanged", source));
      }
    };
    Column2.prototype.setMenuVisible = function(visible, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.menuVisible !== visible) {
        this.menuVisible = visible;
        this.eventService.dispatchEvent(this.createColumnEvent("menuVisibleChanged", source));
      }
    };
    Column2.prototype.isMenuVisible = function() {
      return this.menuVisible;
    };
    Column2.prototype.isSortAscending = function() {
      return this.sort === "asc";
    };
    Column2.prototype.isSortDescending = function() {
      return this.sort === "desc";
    };
    Column2.prototype.isSortNone = function() {
      return missing(this.sort);
    };
    Column2.prototype.isSorting = function() {
      return exists(this.sort);
    };
    Column2.prototype.getSortIndex = function() {
      return this.sortIndex;
    };
    Column2.prototype.setSortIndex = function(sortOrder) {
      this.sortIndex = sortOrder;
    };
    Column2.prototype.setAggFunc = function(aggFunc) {
      this.aggFunc = aggFunc;
    };
    Column2.prototype.getAggFunc = function() {
      return this.aggFunc;
    };
    Column2.prototype.getLeft = function() {
      return this.left;
    };
    Column2.prototype.getOldLeft = function() {
      return this.oldLeft;
    };
    Column2.prototype.getRight = function() {
      return this.left + this.actualWidth;
    };
    Column2.prototype.setLeft = function(left, source) {
      if (source === void 0) {
        source = "api";
      }
      this.oldLeft = this.left;
      if (this.left !== left) {
        this.left = left;
        this.eventService.dispatchEvent(this.createColumnEvent("leftChanged", source));
      }
    };
    Column2.prototype.isFilterActive = function() {
      return this.filterActive;
    };
    Column2.prototype.setFilterActive = function(active, source, additionalEventAttributes) {
      if (source === void 0) {
        source = "api";
      }
      if (this.filterActive !== active) {
        this.filterActive = active;
        this.eventService.dispatchEvent(this.createColumnEvent("filterActiveChanged", source));
      }
      var filterChangedEvent = this.createColumnEvent("filterChanged", source);
      if (additionalEventAttributes) {
        mergeDeep(filterChangedEvent, additionalEventAttributes);
      }
      this.eventService.dispatchEvent(filterChangedEvent);
    };
    Column2.prototype.setPinned = function(pinned) {
      if (pinned === true || pinned === "left") {
        this.pinned = "left";
      } else if (pinned === "right") {
        this.pinned = "right";
      } else {
        this.pinned = null;
      }
    };
    Column2.prototype.setFirstRightPinned = function(firstRightPinned, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.firstRightPinned !== firstRightPinned) {
        this.firstRightPinned = firstRightPinned;
        this.eventService.dispatchEvent(this.createColumnEvent("firstRightPinnedChanged", source));
      }
    };
    Column2.prototype.setLastLeftPinned = function(lastLeftPinned, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.lastLeftPinned !== lastLeftPinned) {
        this.lastLeftPinned = lastLeftPinned;
        this.eventService.dispatchEvent(this.createColumnEvent("lastLeftPinnedChanged", source));
      }
    };
    Column2.prototype.isFirstRightPinned = function() {
      return this.firstRightPinned;
    };
    Column2.prototype.isLastLeftPinned = function() {
      return this.lastLeftPinned;
    };
    Column2.prototype.isPinned = function() {
      return this.pinned === "left" || this.pinned === "right";
    };
    Column2.prototype.isPinnedLeft = function() {
      return this.pinned === "left";
    };
    Column2.prototype.isPinnedRight = function() {
      return this.pinned === "right";
    };
    Column2.prototype.getPinned = function() {
      return this.pinned;
    };
    Column2.prototype.setVisible = function(visible, source) {
      if (source === void 0) {
        source = "api";
      }
      var newValue = visible === true;
      if (this.visible !== newValue) {
        this.visible = newValue;
        this.eventService.dispatchEvent(this.createColumnEvent("visibleChanged", source));
      }
    };
    Column2.prototype.isVisible = function() {
      return this.visible;
    };
    Column2.prototype.getColDef = function() {
      return this.colDef;
    };
    Column2.prototype.getColumnGroupShow = function() {
      return this.colDef.columnGroupShow;
    };
    Column2.prototype.getColId = function() {
      return this.colId;
    };
    Column2.prototype.getId = function() {
      return this.getColId();
    };
    Column2.prototype.getUniqueId = function() {
      return this.getId();
    };
    Column2.prototype.getDefinition = function() {
      return this.colDef;
    };
    Column2.prototype.getActualWidth = function() {
      return this.actualWidth;
    };
    Column2.prototype.getAutoHeaderHeight = function() {
      return this.autoHeaderHeight;
    };
    Column2.prototype.setAutoHeaderHeight = function(height) {
      var changed = height !== this.autoHeaderHeight;
      this.autoHeaderHeight = height;
      return changed;
    };
    Column2.prototype.createBaseColDefParams = function(rowNode) {
      var params = {
        node: rowNode,
        data: rowNode.data,
        colDef: this.colDef,
        column: this,
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context")
      };
      return params;
    };
    Column2.prototype.getColSpan = function(rowNode) {
      if (missing(this.colDef.colSpan)) {
        return 1;
      }
      var params = this.createBaseColDefParams(rowNode);
      var colSpan = this.colDef.colSpan(params);
      return Math.max(colSpan, 1);
    };
    Column2.prototype.getRowSpan = function(rowNode) {
      if (missing(this.colDef.rowSpan)) {
        return 1;
      }
      var params = this.createBaseColDefParams(rowNode);
      var rowSpan = this.colDef.rowSpan(params);
      return Math.max(rowSpan, 1);
    };
    Column2.prototype.setActualWidth = function(actualWidth, source, silent) {
      if (source === void 0) {
        source = "api";
      }
      if (silent === void 0) {
        silent = false;
      }
      if (this.minWidth != null) {
        actualWidth = Math.max(actualWidth, this.minWidth);
      }
      if (this.maxWidth != null) {
        actualWidth = Math.min(actualWidth, this.maxWidth);
      }
      if (this.actualWidth !== actualWidth) {
        this.actualWidth = actualWidth;
        if (this.flex && source !== "flex" && source !== "gridInitializing") {
          this.flex = null;
        }
        if (!silent) {
          this.fireColumnWidthChangedEvent(source);
        }
      }
    };
    Column2.prototype.fireColumnWidthChangedEvent = function(source) {
      this.eventService.dispatchEvent(this.createColumnEvent("widthChanged", source));
    };
    Column2.prototype.isGreaterThanMax = function(width) {
      if (this.maxWidth != null) {
        return width > this.maxWidth;
      }
      return false;
    };
    Column2.prototype.getMinWidth = function() {
      return this.minWidth;
    };
    Column2.prototype.getMaxWidth = function() {
      return this.maxWidth;
    };
    Column2.prototype.getFlex = function() {
      return this.flex || 0;
    };
    Column2.prototype.setFlex = function(flex) {
      if (this.flex !== flex) {
        this.flex = flex;
      }
    };
    Column2.prototype.setMinimum = function(source) {
      if (source === void 0) {
        source = "api";
      }
      if (exists(this.minWidth)) {
        this.setActualWidth(this.minWidth, source);
      }
    };
    Column2.prototype.setRowGroupActive = function(rowGroup, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.rowGroupActive !== rowGroup) {
        this.rowGroupActive = rowGroup;
        this.eventService.dispatchEvent(this.createColumnEvent("columnRowGroupChanged", source));
      }
    };
    Column2.prototype.isRowGroupActive = function() {
      return this.rowGroupActive;
    };
    Column2.prototype.setPivotActive = function(pivot, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.pivotActive !== pivot) {
        this.pivotActive = pivot;
        this.eventService.dispatchEvent(this.createColumnEvent("columnPivotChanged", source));
      }
    };
    Column2.prototype.isPivotActive = function() {
      return this.pivotActive;
    };
    Column2.prototype.isAnyFunctionActive = function() {
      return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();
    };
    Column2.prototype.isAnyFunctionAllowed = function() {
      return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();
    };
    Column2.prototype.setValueActive = function(value, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.aggregationActive !== value) {
        this.aggregationActive = value;
        this.eventService.dispatchEvent(this.createColumnEvent("columnValueChanged", source));
      }
    };
    Column2.prototype.isValueActive = function() {
      return this.aggregationActive;
    };
    Column2.prototype.isAllowPivot = function() {
      return this.colDef.enablePivot === true;
    };
    Column2.prototype.isAllowValue = function() {
      return this.colDef.enableValue === true;
    };
    Column2.prototype.isAllowRowGroup = function() {
      return this.colDef.enableRowGroup === true;
    };
    Column2.prototype.getMenuTabs = function(defaultValues) {
      var menuTabs = this.getColDef().menuTabs;
      if (menuTabs == null) {
        menuTabs = defaultValues;
      }
      return menuTabs;
    };
    Column2.EVENT_MOVING_CHANGED = "movingChanged";
    Column2.EVENT_LEFT_CHANGED = "leftChanged";
    Column2.EVENT_WIDTH_CHANGED = "widthChanged";
    Column2.EVENT_LAST_LEFT_PINNED_CHANGED = "lastLeftPinnedChanged";
    Column2.EVENT_FIRST_RIGHT_PINNED_CHANGED = "firstRightPinnedChanged";
    Column2.EVENT_VISIBLE_CHANGED = "visibleChanged";
    Column2.EVENT_FILTER_CHANGED = "filterChanged";
    Column2.EVENT_FILTER_ACTIVE_CHANGED = "filterActiveChanged";
    Column2.EVENT_SORT_CHANGED = "sortChanged";
    Column2.EVENT_COL_DEF_CHANGED = "colDefChanged";
    Column2.EVENT_MENU_VISIBLE_CHANGED = "menuVisibleChanged";
    Column2.EVENT_ROW_GROUP_CHANGED = "columnRowGroupChanged";
    Column2.EVENT_PIVOT_CHANGED = "columnPivotChanged";
    Column2.EVENT_VALUE_CHANGED = "columnValueChanged";
    __decorate3([
      Autowired("gridOptionsService")
    ], Column2.prototype, "gridOptionsService", void 0);
    __decorate3([
      Autowired("columnUtils")
    ], Column2.prototype, "columnUtils", void 0);
    __decorate3([
      PostConstruct
    ], Column2.prototype, "initialise", null);
    return Column2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/providedColumnGroup.js
var __decorate4 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ProvidedColumnGroup = (
  /** @class */
  function() {
    function ProvidedColumnGroup2(colGroupDef, groupId, padding, level) {
      this.localEventService = new EventService();
      this.expandable = false;
      this.instanceId = getNextColInstanceId();
      this.expandableListenerRemoveCallback = null;
      this.colGroupDef = colGroupDef;
      this.groupId = groupId;
      this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;
      this.padding = padding;
      this.level = level;
    }
    ProvidedColumnGroup2.prototype.destroy = function() {
      if (this.expandableListenerRemoveCallback) {
        this.reset(null, void 0);
      }
    };
    ProvidedColumnGroup2.prototype.reset = function(colGroupDef, level) {
      this.colGroupDef = colGroupDef;
      this.level = level;
      this.originalParent = null;
      if (this.expandableListenerRemoveCallback) {
        this.expandableListenerRemoveCallback();
      }
      this.children = void 0;
      this.expandable = void 0;
    };
    ProvidedColumnGroup2.prototype.getInstanceId = function() {
      return this.instanceId;
    };
    ProvidedColumnGroup2.prototype.setOriginalParent = function(originalParent) {
      this.originalParent = originalParent;
    };
    ProvidedColumnGroup2.prototype.getOriginalParent = function() {
      return this.originalParent;
    };
    ProvidedColumnGroup2.prototype.getLevel = function() {
      return this.level;
    };
    ProvidedColumnGroup2.prototype.isVisible = function() {
      if (this.children) {
        return this.children.some(function(child) {
          return child.isVisible();
        });
      }
      return false;
    };
    ProvidedColumnGroup2.prototype.isPadding = function() {
      return this.padding;
    };
    ProvidedColumnGroup2.prototype.setExpanded = function(expanded) {
      this.expanded = expanded === void 0 ? false : expanded;
      var event = {
        type: ProvidedColumnGroup2.EVENT_EXPANDED_CHANGED
      };
      this.localEventService.dispatchEvent(event);
    };
    ProvidedColumnGroup2.prototype.isExpandable = function() {
      return this.expandable;
    };
    ProvidedColumnGroup2.prototype.isExpanded = function() {
      return this.expanded;
    };
    ProvidedColumnGroup2.prototype.getGroupId = function() {
      return this.groupId;
    };
    ProvidedColumnGroup2.prototype.getId = function() {
      return this.getGroupId();
    };
    ProvidedColumnGroup2.prototype.setChildren = function(children) {
      this.children = children;
    };
    ProvidedColumnGroup2.prototype.getChildren = function() {
      return this.children;
    };
    ProvidedColumnGroup2.prototype.getColGroupDef = function() {
      return this.colGroupDef;
    };
    ProvidedColumnGroup2.prototype.getLeafColumns = function() {
      var result = [];
      this.addLeafColumns(result);
      return result;
    };
    ProvidedColumnGroup2.prototype.addLeafColumns = function(leafColumns) {
      if (!this.children) {
        return;
      }
      this.children.forEach(function(child) {
        if (child instanceof Column) {
          leafColumns.push(child);
        } else if (child instanceof ProvidedColumnGroup2) {
          child.addLeafColumns(leafColumns);
        }
      });
    };
    ProvidedColumnGroup2.prototype.getColumnGroupShow = function() {
      var colGroupDef = this.colGroupDef;
      if (!colGroupDef) {
        return;
      }
      return colGroupDef.columnGroupShow;
    };
    ProvidedColumnGroup2.prototype.setupExpandable = function() {
      var _this = this;
      this.setExpandable();
      if (this.expandableListenerRemoveCallback) {
        this.expandableListenerRemoveCallback();
      }
      var listener = this.onColumnVisibilityChanged.bind(this);
      this.getLeafColumns().forEach(function(col) {
        return col.addEventListener("visibleChanged", listener);
      });
      this.expandableListenerRemoveCallback = function() {
        _this.getLeafColumns().forEach(function(col) {
          return col.removeEventListener("visibleChanged", listener);
        });
        _this.expandableListenerRemoveCallback = null;
      };
    };
    ProvidedColumnGroup2.prototype.setExpandable = function() {
      if (this.isPadding()) {
        return;
      }
      var atLeastOneShowingWhenOpen = false;
      var atLeastOneShowingWhenClosed = false;
      var atLeastOneChangeable = false;
      var children = this.findChildrenRemovingPadding();
      for (var i2 = 0, j2 = children.length; i2 < j2; i2++) {
        var abstractColumn = children[i2];
        if (!abstractColumn.isVisible()) {
          continue;
        }
        var headerGroupShow = abstractColumn.getColumnGroupShow();
        if (headerGroupShow === "open") {
          atLeastOneShowingWhenOpen = true;
          atLeastOneChangeable = true;
        } else if (headerGroupShow === "closed") {
          atLeastOneShowingWhenClosed = true;
          atLeastOneChangeable = true;
        } else {
          atLeastOneShowingWhenOpen = true;
          atLeastOneShowingWhenClosed = true;
        }
      }
      var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;
      if (this.expandable !== expandable) {
        this.expandable = expandable;
        var event_1 = {
          type: ProvidedColumnGroup2.EVENT_EXPANDABLE_CHANGED
        };
        this.localEventService.dispatchEvent(event_1);
      }
    };
    ProvidedColumnGroup2.prototype.findChildrenRemovingPadding = function() {
      var res = [];
      var process = function(items) {
        items.forEach(function(item) {
          var skipBecausePadding = item instanceof ProvidedColumnGroup2 && item.isPadding();
          if (skipBecausePadding) {
            process(item.children);
          } else {
            res.push(item);
          }
        });
      };
      process(this.children);
      return res;
    };
    ProvidedColumnGroup2.prototype.onColumnVisibilityChanged = function() {
      this.setExpandable();
    };
    ProvidedColumnGroup2.prototype.addEventListener = function(eventType, listener) {
      this.localEventService.addEventListener(eventType, listener);
    };
    ProvidedColumnGroup2.prototype.removeEventListener = function(eventType, listener) {
      this.localEventService.removeEventListener(eventType, listener);
    };
    ProvidedColumnGroup2.EVENT_EXPANDED_CHANGED = "expandedChanged";
    ProvidedColumnGroup2.EVENT_EXPANDABLE_CHANGED = "expandableChanged";
    __decorate4([
      PreDestroy
    ], ProvidedColumnGroup2.prototype, "destroy", null);
    return ProvidedColumnGroup2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/defaultColumnTypes.js
var DefaultColumnTypes = {
  numericColumn: {
    headerClass: "ag-right-aligned-header",
    cellClass: "ag-right-aligned-cell"
  },
  rightAligned: {
    headerClass: "ag-right-aligned-header",
    cellClass: "ag-right-aligned-cell"
  }
};

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/event.js
var event_exports = {};
__export(event_exports, {
  addSafePassiveEventListener: () => addSafePassiveEventListener,
  createEventPath: () => createEventPath,
  getCtrlForEvent: () => getCtrlForEvent,
  getEventPath: () => getEventPath,
  isElementInEventPath: () => isElementInEventPath,
  isEventSupported: () => isEventSupported,
  isStopPropagationForAgGrid: () => isStopPropagationForAgGrid,
  stopPropagationForAgGrid: () => stopPropagationForAgGrid
});

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/array.js
var array_exports = {};
__export(array_exports, {
  areEqual: () => areEqual,
  compareArrays: () => compareArrays,
  existsAndNotEmpty: () => existsAndNotEmpty,
  firstExistingValue: () => firstExistingValue,
  flatten: () => flatten,
  forEachReverse: () => forEachReverse,
  includes: () => includes,
  insertArrayIntoArray: () => insertArrayIntoArray,
  insertIntoArray: () => insertIntoArray,
  last: () => last,
  moveInArray: () => moveInArray,
  pushAll: () => pushAll,
  removeAllFromArray: () => removeAllFromArray,
  removeFromArray: () => removeFromArray,
  removeRepeatsFromArray: () => removeRepeatsFromArray,
  shallowCompare: () => shallowCompare,
  sortNumerically: () => sortNumerically,
  toStrings: () => toStrings
});
function firstExistingValue() {
  var values2 = [];
  for (var _i = 0; _i < arguments.length; _i++) {
    values2[_i] = arguments[_i];
  }
  for (var i2 = 0; i2 < values2.length; i2++) {
    var value = values2[i2];
    if (exists(value)) {
      return value;
    }
  }
  return null;
}
function existsAndNotEmpty(value) {
  return value != null && value.length > 0;
}
function last(arr) {
  if (!arr || !arr.length) {
    return;
  }
  return arr[arr.length - 1];
}
function areEqual(a2, b2, comparator) {
  if (a2 == null && b2 == null) {
    return true;
  }
  return a2 != null && b2 != null && a2.length === b2.length && a2.every(function(value, index) {
    return comparator ? comparator(value, b2[index]) : b2[index] === value;
  });
}
function compareArrays(array1, array2) {
  return areEqual(array1, array2);
}
function shallowCompare(arr1, arr2) {
  return areEqual(arr1, arr2);
}
function sortNumerically(array) {
  return array.sort(function(a2, b2) {
    return a2 - b2;
  });
}
function removeRepeatsFromArray(array, object) {
  if (!array) {
    return;
  }
  for (var index = array.length - 2; index >= 0; index--) {
    var thisOneMatches = array[index] === object;
    var nextOneMatches = array[index + 1] === object;
    if (thisOneMatches && nextOneMatches) {
      array.splice(index + 1, 1);
    }
  }
}
function removeFromArray(array, object) {
  var index = array.indexOf(object);
  if (index >= 0) {
    array.splice(index, 1);
  }
}
function removeAllFromArray(array, toRemove) {
  toRemove.forEach(function(item) {
    return removeFromArray(array, item);
  });
}
function insertIntoArray(array, object, toIndex) {
  array.splice(toIndex, 0, object);
}
function insertArrayIntoArray(dest, src, toIndex) {
  if (dest == null || src == null) {
    return;
  }
  for (var i2 = src.length - 1; i2 >= 0; i2--) {
    var item = src[i2];
    insertIntoArray(dest, item, toIndex);
  }
}
function moveInArray(array, objectsToMove, toIndex) {
  removeAllFromArray(array, objectsToMove);
  objectsToMove.slice().reverse().forEach(function(obj) {
    return insertIntoArray(array, obj, toIndex);
  });
}
function includes(array, value) {
  return array.indexOf(value) > -1;
}
function flatten(arrayOfArrays) {
  return [].concat.apply([], arrayOfArrays);
}
function pushAll(target, source) {
  if (source == null || target == null) {
    return;
  }
  source.forEach(function(value) {
    return target.push(value);
  });
}
function toStrings(array) {
  return array.map(toStringOrNull);
}
function forEachReverse(list, action) {
  if (list == null) {
    return;
  }
  for (var i2 = list.length - 1; i2 >= 0; i2--) {
    action(list[i2], i2);
  }
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/event.js
var AG_GRID_STOP_PROPAGATION = "__ag_Grid_Stop_Propagation";
var PASSIVE_EVENTS = ["touchstart", "touchend", "touchmove", "touchcancel", "scroll"];
var supports = {};
function stopPropagationForAgGrid(event) {
  event[AG_GRID_STOP_PROPAGATION] = true;
}
function isStopPropagationForAgGrid(event) {
  return event[AG_GRID_STOP_PROPAGATION] === true;
}
var isEventSupported = /* @__PURE__ */ function() {
  var tags = {
    select: "input",
    change: "input",
    submit: "form",
    reset: "form",
    error: "img",
    load: "img",
    abort: "img"
  };
  var eventChecker = function(eventName) {
    if (typeof supports[eventName] === "boolean") {
      return supports[eventName];
    }
    var el = document.createElement(tags[eventName] || "div");
    eventName = "on" + eventName;
    return supports[eventName] = eventName in el;
  };
  return eventChecker;
}();
function getCtrlForEvent(gridOptionsService, event, type2) {
  var sourceElement = event.target;
  while (sourceElement) {
    var renderedComp = gridOptionsService.getDomData(sourceElement, type2);
    if (renderedComp) {
      return renderedComp;
    }
    sourceElement = sourceElement.parentElement;
  }
  return null;
}
function isElementInEventPath(element, event) {
  if (!event || !element) {
    return false;
  }
  return getEventPath(event).indexOf(element) >= 0;
}
function createEventPath(event) {
  var res = [];
  var pointer = event.target;
  while (pointer) {
    res.push(pointer);
    pointer = pointer.parentElement;
  }
  return res;
}
function getEventPath(event) {
  var eventNoType = event;
  if (eventNoType.path) {
    return eventNoType.path;
  }
  if (eventNoType.composedPath) {
    return eventNoType.composedPath();
  }
  return createEventPath(eventNoType);
}
function addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {
  var isPassive = includes(PASSIVE_EVENTS, event);
  var options = isPassive ? { passive: true } : void 0;
  if (frameworkOverrides && frameworkOverrides.addEventListener) {
    frameworkOverrides.addEventListener(eElement, event, listener, options);
  }
}

// node_modules/@ag-grid-community/core/dist/esm/es5/context/beanStub.js
var __decorate5 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var BeanStub = (
  /** @class */
  function() {
    function BeanStub2() {
      var _this = this;
      this.destroyFunctions = [];
      this.destroyed = false;
      this.__v_skip = true;
      this.isAlive = function() {
        return !_this.destroyed;
      };
    }
    BeanStub2.prototype.getFrameworkOverrides = function() {
      return this.frameworkOverrides;
    };
    BeanStub2.prototype.getContext = function() {
      return this.context;
    };
    BeanStub2.prototype.destroy = function() {
      this.destroyFunctions.forEach(function(func) {
        return func();
      });
      this.destroyFunctions.length = 0;
      this.destroyed = true;
      this.dispatchEvent({ type: BeanStub2.EVENT_DESTROYED });
    };
    BeanStub2.prototype.addEventListener = function(eventType, listener) {
      if (!this.localEventService) {
        this.localEventService = new EventService();
      }
      this.localEventService.addEventListener(eventType, listener);
    };
    BeanStub2.prototype.removeEventListener = function(eventType, listener) {
      if (this.localEventService) {
        this.localEventService.removeEventListener(eventType, listener);
      }
    };
    BeanStub2.prototype.dispatchEventAsync = function(event) {
      var _this = this;
      window.setTimeout(function() {
        return _this.dispatchEvent(event);
      }, 0);
    };
    BeanStub2.prototype.dispatchEvent = function(event) {
      if (this.localEventService) {
        this.localEventService.dispatchEvent(event);
      }
    };
    BeanStub2.prototype.addManagedListener = function(object, event, listener) {
      var _this = this;
      if (this.destroyed) {
        return;
      }
      if (object instanceof HTMLElement) {
        addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);
      } else {
        object.addEventListener(event, listener);
      }
      var destroyFunc = function() {
        object.removeEventListener(event, listener);
        _this.destroyFunctions = _this.destroyFunctions.filter(function(fn) {
          return fn !== destroyFunc;
        });
        return null;
      };
      this.destroyFunctions.push(destroyFunc);
      return destroyFunc;
    };
    BeanStub2.prototype.addManagedPropertyListener = function(event, listener) {
      var _this = this;
      if (this.destroyed) {
        return;
      }
      this.gridOptionsService.addEventListener(event, listener);
      var destroyFunc = function() {
        _this.gridOptionsService.removeEventListener(event, listener);
        _this.destroyFunctions = _this.destroyFunctions.filter(function(fn) {
          return fn !== destroyFunc;
        });
        return null;
      };
      this.destroyFunctions.push(destroyFunc);
      return destroyFunc;
    };
    BeanStub2.prototype.addDestroyFunc = function(func) {
      if (this.isAlive()) {
        this.destroyFunctions.push(func);
      } else {
        func();
      }
    };
    BeanStub2.prototype.createManagedBean = function(bean, context) {
      var res = this.createBean(bean, context);
      this.addDestroyFunc(this.destroyBean.bind(this, bean, context));
      return res;
    };
    BeanStub2.prototype.createBean = function(bean, context, afterPreCreateCallback) {
      return (context || this.getContext()).createBean(bean, afterPreCreateCallback);
    };
    BeanStub2.prototype.destroyBean = function(bean, context) {
      return (context || this.getContext()).destroyBean(bean);
    };
    BeanStub2.prototype.destroyBeans = function(beans, context) {
      var _this = this;
      if (beans) {
        beans.forEach(function(bean) {
          return _this.destroyBean(bean, context);
        });
      }
      return [];
    };
    BeanStub2.EVENT_DESTROYED = "destroyed";
    __decorate5([
      Autowired("frameworkOverrides")
    ], BeanStub2.prototype, "frameworkOverrides", void 0);
    __decorate5([
      Autowired("context")
    ], BeanStub2.prototype, "context", void 0);
    __decorate5([
      Autowired("eventService")
    ], BeanStub2.prototype, "eventService", void 0);
    __decorate5([
      Autowired("gridOptionsService")
    ], BeanStub2.prototype, "gridOptionsService", void 0);
    __decorate5([
      Autowired("localeService")
    ], BeanStub2.prototype, "localeService", void 0);
    __decorate5([
      Autowired("environment")
    ], BeanStub2.prototype, "environment", void 0);
    __decorate5([
      PreDestroy
    ], BeanStub2.prototype, "destroy", null);
    return BeanStub2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnFactory.js
var __extends = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate6 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param2 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var ColumnFactory = (
  /** @class */
  function(_super) {
    __extends(ColumnFactory2, _super);
    function ColumnFactory2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ColumnFactory2.prototype.setBeans = function(loggerFactory) {
      this.logger = loggerFactory.create("ColumnFactory");
    };
    ColumnFactory2.prototype.createColumnTree = function(defs, primaryColumns, existingTree) {
      var columnKeyCreator = new ColumnKeyCreator();
      var _a47 = this.extractExistingTreeData(existingTree), existingCols = _a47.existingCols, existingGroups = _a47.existingGroups, existingColKeys = _a47.existingColKeys;
      columnKeyCreator.addExistingKeys(existingColKeys);
      var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);
      var treeDept = this.findMaxDept(unbalancedTree, 0);
      this.logger.log("Number of levels for grouped columns is " + treeDept);
      var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);
      var deptFirstCallback = function(child, parent2) {
        if (child instanceof ProvidedColumnGroup) {
          child.setupExpandable();
        }
        child.setOriginalParent(parent2);
      };
      this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);
      return {
        columnTree,
        treeDept
      };
    };
    ColumnFactory2.prototype.extractExistingTreeData = function(existingTree) {
      var existingCols = [];
      var existingGroups = [];
      var existingColKeys = [];
      if (existingTree) {
        this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function(item) {
          if (item instanceof ProvidedColumnGroup) {
            var group = item;
            existingGroups.push(group);
          } else {
            var col = item;
            existingColKeys.push(col.getId());
            existingCols.push(col);
          }
        });
      }
      return { existingCols, existingGroups, existingColKeys };
    };
    ColumnFactory2.prototype.createForAutoGroups = function(autoGroupCols, gridBalancedTree) {
      var _this = this;
      return autoGroupCols.map(function(col) {
        return _this.createAutoGroupTreeItem(gridBalancedTree, col);
      });
    };
    ColumnFactory2.prototype.createAutoGroupTreeItem = function(balancedColumnTree, column) {
      var dept = this.findDepth(balancedColumnTree);
      var nextChild = column;
      for (var i2 = dept - 1; i2 >= 0; i2--) {
        var autoGroup = new ProvidedColumnGroup(null, "FAKE_PATH_" + column.getId() + "}_" + i2, true, i2);
        this.createBean(autoGroup);
        autoGroup.setChildren([nextChild]);
        nextChild.setOriginalParent(autoGroup);
        nextChild = autoGroup;
      }
      return nextChild;
    };
    ColumnFactory2.prototype.findDepth = function(balancedColumnTree) {
      var dept = 0;
      var pointer = balancedColumnTree;
      while (pointer && pointer[0] && pointer[0] instanceof ProvidedColumnGroup) {
        dept++;
        pointer = pointer[0].getChildren();
      }
      return dept;
    };
    ColumnFactory2.prototype.balanceColumnTree = function(unbalancedTree, currentDept, columnDept, columnKeyCreator) {
      var result = [];
      for (var i2 = 0; i2 < unbalancedTree.length; i2++) {
        var child = unbalancedTree[i2];
        if (child instanceof ProvidedColumnGroup) {
          var originalGroup = child;
          var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);
          originalGroup.setChildren(newChildren);
          result.push(originalGroup);
        } else {
          var firstPaddedGroup = void 0;
          var currentPaddedGroup = void 0;
          for (var j2 = columnDept - 1; j2 >= currentDept; j2--) {
            var newColId = columnKeyCreator.getUniqueKey(null, null);
            var colGroupDefMerged = this.createMergedColGroupDef(null);
            var paddedGroup = new ProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);
            this.createBean(paddedGroup);
            if (currentPaddedGroup) {
              currentPaddedGroup.setChildren([paddedGroup]);
            }
            currentPaddedGroup = paddedGroup;
            if (!firstPaddedGroup) {
              firstPaddedGroup = currentPaddedGroup;
            }
          }
          if (firstPaddedGroup && currentPaddedGroup) {
            result.push(firstPaddedGroup);
            var hasGroups = unbalancedTree.some(function(leaf) {
              return leaf instanceof ProvidedColumnGroup;
            });
            if (hasGroups) {
              currentPaddedGroup.setChildren([child]);
              continue;
            } else {
              currentPaddedGroup.setChildren(unbalancedTree);
              break;
            }
          }
          result.push(child);
        }
      }
      return result;
    };
    ColumnFactory2.prototype.findMaxDept = function(treeChildren, dept) {
      var maxDeptThisLevel = dept;
      for (var i2 = 0; i2 < treeChildren.length; i2++) {
        var abstractColumn = treeChildren[i2];
        if (abstractColumn instanceof ProvidedColumnGroup) {
          var originalGroup = abstractColumn;
          var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);
          if (maxDeptThisLevel < newDept) {
            maxDeptThisLevel = newDept;
          }
        }
      }
      return maxDeptThisLevel;
    };
    ColumnFactory2.prototype.recursivelyCreateColumns = function(defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {
      var _this = this;
      return (defs || []).map(function(def) {
        if (_this.isColumnGroup(def)) {
          return _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);
        } else {
          return _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);
        }
      });
    };
    ColumnFactory2.prototype.createColumnGroup = function(primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {
      var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);
      var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);
      var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);
      var providedGroup;
      if (existingGroup) {
        providedGroup = existingGroup;
        providedGroup.reset(colGroupDefMerged, level);
        removeFromArray(existingGroups, existingGroup);
      } else {
        providedGroup = new ProvidedColumnGroup(colGroupDefMerged, groupId, false, level);
        this.createBean(providedGroup);
      }
      var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);
      providedGroup.setChildren(children);
      return providedGroup;
    };
    ColumnFactory2.prototype.createMergedColGroupDef = function(colGroupDef) {
      var colGroupDefMerged = {};
      Object.assign(colGroupDefMerged, this.gridOptionsService.get("defaultColGroupDef"));
      Object.assign(colGroupDefMerged, colGroupDef);
      return colGroupDefMerged;
    };
    ColumnFactory2.prototype.createColumn = function(primaryColumns, colDef, existingColsCopy, columnKeyCreator) {
      var colDefMerged = this.mergeColDefs(colDef);
      var column = this.findExistingColumn(colDef, existingColsCopy);
      if (existingColsCopy && column) {
        removeFromArray(existingColsCopy, column);
      }
      if (!column) {
        var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);
        column = new Column(colDefMerged, colDef, colId, primaryColumns);
        this.context.createBean(column);
      } else {
        column.setColDef(colDefMerged, colDef);
        this.applyColumnState(column, colDefMerged);
      }
      return column;
    };
    ColumnFactory2.prototype.applyColumnState = function(column, colDef) {
      var flex = attrToNumber(colDef.flex);
      if (flex !== void 0) {
        column.setFlex(flex);
      }
      var noFlexThisCol = column.getFlex() <= 0;
      if (noFlexThisCol) {
        var width = attrToNumber(colDef.width);
        if (width != null) {
          column.setActualWidth(width);
        } else {
          var widthBeforeUpdate = column.getActualWidth();
          column.setActualWidth(widthBeforeUpdate);
        }
      }
      if (colDef.sort !== void 0) {
        if (colDef.sort == "asc" || colDef.sort == "desc") {
          column.setSort(colDef.sort);
        } else {
          column.setSort(void 0);
        }
      }
      var sortIndex = attrToNumber(colDef.sortIndex);
      if (sortIndex !== void 0) {
        column.setSortIndex(sortIndex);
      }
      var hide = attrToBoolean(colDef.hide);
      if (hide !== void 0) {
        column.setVisible(!hide);
      }
      if (colDef.pinned !== void 0) {
        column.setPinned(colDef.pinned);
      }
    };
    ColumnFactory2.prototype.findExistingColumn = function(newColDef, existingColsCopy) {
      return (existingColsCopy || []).find(function(existingCol) {
        var existingColDef = existingCol.getUserProvidedColDef();
        if (!existingColDef) {
          return false;
        }
        var newHasId = newColDef.colId != null;
        var newHasField = newColDef.field != null;
        if (newHasId) {
          return existingCol.getId() === newColDef.colId;
        }
        if (newHasField) {
          return existingColDef.field === newColDef.field;
        }
        if (existingColDef === newColDef) {
          return true;
        }
        return false;
      });
    };
    ColumnFactory2.prototype.findExistingGroup = function(newGroupDef, existingGroups) {
      return existingGroups.find(function(existingGroup) {
        var existingDef = existingGroup.getColGroupDef();
        if (!existingDef) {
          return false;
        }
        var newHasId = newGroupDef.groupId != null;
        if (newHasId) {
          return existingGroup.getId() === newGroupDef.groupId;
        }
        return false;
      });
    };
    ColumnFactory2.prototype.mergeColDefs = function(colDef) {
      var colDefMerged = {};
      var defaultColDef = this.gridOptionsService.get("defaultColDef");
      mergeDeep(colDefMerged, defaultColDef, false, true);
      var columnType = colDef.type;
      if (!columnType) {
        columnType = defaultColDef && defaultColDef.type;
      }
      if (columnType) {
        this.assignColumnTypes(columnType, colDefMerged);
      }
      mergeDeep(colDefMerged, colDef, false, true);
      var autoGroupColDef = this.gridOptionsService.get("autoGroupColumnDef");
      var isSortingCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {
        mergeDeep(colDefMerged, { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort }, false, true);
      }
      return colDefMerged;
    };
    ColumnFactory2.prototype.assignColumnTypes = function(type2, colDefMerged) {
      var typeKeys = [];
      if (type2 instanceof Array) {
        var invalidArray = type2.some(function(a2) {
          return typeof a2 !== "string";
        });
        if (invalidArray) {
          console.warn("AG Grid: if colDef.type is supplied an array it should be of type 'string[]'");
        } else {
          typeKeys = type2;
        }
      } else if (typeof type2 === "string") {
        typeKeys = type2.split(",");
      } else {
        console.warn("AG Grid: colDef.type should be of type 'string' | 'string[]'");
        return;
      }
      var allColumnTypes = Object.assign({}, DefaultColumnTypes);
      var userTypes = this.gridOptionsService.get("columnTypes") || {};
      iterateObject(userTypes, function(key, value) {
        if (key in allColumnTypes) {
          console.warn("AG Grid: the column type '" + key + "' is a default column type and cannot be overridden.");
        } else {
          allColumnTypes[key] = value;
        }
      });
      typeKeys.forEach(function(t2) {
        var typeColDef = allColumnTypes[t2.trim()];
        if (typeColDef) {
          mergeDeep(colDefMerged, typeColDef, false, true);
        } else {
          console.warn("AG Grid: colDef.type '" + t2 + "' does not correspond to defined gridOptions.columnTypes");
        }
      });
    };
    ColumnFactory2.prototype.isColumnGroup = function(abstractColDef) {
      return abstractColDef.children !== void 0;
    };
    __decorate6([
      Autowired("columnUtils")
    ], ColumnFactory2.prototype, "columnUtils", void 0);
    __decorate6([
      __param2(0, Qualifier("loggerFactory"))
    ], ColumnFactory2.prototype, "setBeans", null);
    ColumnFactory2 = __decorate6([
      Bean("columnFactory")
    ], ColumnFactory2);
    return ColumnFactory2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/colDefUtil.js
var ColDefUtil = (
  /** @class */
  function() {
    function ColDefUtil2() {
    }
    ColDefUtil2.ColDefPropertyMap = {
      headerName: void 0,
      columnGroupShow: void 0,
      headerClass: void 0,
      toolPanelClass: void 0,
      headerValueGetter: void 0,
      pivotKeys: void 0,
      groupId: void 0,
      colId: void 0,
      sort: void 0,
      initialSort: void 0,
      field: void 0,
      type: void 0,
      tooltipComponent: void 0,
      tooltipField: void 0,
      headerTooltip: void 0,
      cellClass: void 0,
      showRowGroup: void 0,
      filter: void 0,
      initialAggFunc: void 0,
      defaultAggFunc: void 0,
      aggFunc: void 0,
      pinned: void 0,
      initialPinned: void 0,
      chartDataType: void 0,
      cellEditorPopupPosition: void 0,
      headerGroupComponent: void 0,
      headerGroupComponentFramework: void 0,
      headerGroupComponentParams: void 0,
      cellStyle: void 0,
      cellRenderer: void 0,
      cellRendererParams: void 0,
      cellRendererFramework: void 0,
      cellEditor: void 0,
      cellEditorFramework: void 0,
      cellEditorParams: void 0,
      filterFramework: void 0,
      filterParams: void 0,
      pivotValueColumn: void 0,
      headerComponent: void 0,
      headerComponentFramework: void 0,
      headerComponentParams: void 0,
      floatingFilterComponent: void 0,
      floatingFilterComponentParams: void 0,
      floatingFilterComponentFramework: void 0,
      tooltipComponentParams: void 0,
      tooltipComponentFramework: void 0,
      refData: void 0,
      columnsMenuParams: void 0,
      children: void 0,
      sortingOrder: void 0,
      allowedAggFuncs: void 0,
      menuTabs: void 0,
      pivotTotalColumnIds: void 0,
      cellClassRules: void 0,
      icons: void 0,
      sortIndex: void 0,
      initialSortIndex: void 0,
      flex: void 0,
      initialFlex: void 0,
      width: void 0,
      initialWidth: void 0,
      minWidth: void 0,
      maxWidth: void 0,
      rowGroupIndex: void 0,
      initialRowGroupIndex: void 0,
      pivotIndex: void 0,
      initialPivotIndex: void 0,
      suppressCellFlash: void 0,
      suppressColumnsToolPanel: void 0,
      suppressFiltersToolPanel: void 0,
      openByDefault: void 0,
      marryChildren: void 0,
      hide: void 0,
      initialHide: void 0,
      rowGroup: void 0,
      initialRowGroup: void 0,
      pivot: void 0,
      initialPivot: void 0,
      checkboxSelection: void 0,
      showDisabledCheckboxes: void 0,
      headerCheckboxSelection: void 0,
      headerCheckboxSelectionFilteredOnly: void 0,
      suppressMenu: void 0,
      suppressMovable: void 0,
      lockPosition: void 0,
      lockVisible: void 0,
      lockPinned: void 0,
      unSortIcon: void 0,
      suppressSizeToFit: void 0,
      suppressAutoSize: void 0,
      enableRowGroup: void 0,
      enablePivot: void 0,
      enableValue: void 0,
      editable: void 0,
      suppressPaste: void 0,
      suppressNavigable: void 0,
      enableCellChangeFlash: void 0,
      rowDrag: void 0,
      dndSource: void 0,
      autoHeight: void 0,
      wrapText: void 0,
      sortable: void 0,
      resizable: void 0,
      singleClickEdit: void 0,
      floatingFilter: void 0,
      cellEditorPopup: void 0,
      suppressFillHandle: void 0,
      wrapHeaderText: void 0,
      autoHeaderHeight: void 0,
      dndSourceOnRowDrag: void 0,
      valueGetter: void 0,
      valueSetter: void 0,
      filterValueGetter: void 0,
      keyCreator: void 0,
      valueFormatter: void 0,
      valueParser: void 0,
      comparator: void 0,
      equals: void 0,
      pivotComparator: void 0,
      suppressKeyboardEvent: void 0,
      suppressHeaderKeyboardEvent: void 0,
      colSpan: void 0,
      rowSpan: void 0,
      getQuickFilterText: void 0,
      onCellValueChanged: void 0,
      onCellClicked: void 0,
      onCellDoubleClicked: void 0,
      onCellContextMenu: void 0,
      rowDragText: void 0,
      tooltipValueGetter: void 0,
      cellRendererSelector: void 0,
      cellEditorSelector: void 0
    };
    ColDefUtil2.ALL_PROPERTIES = Object.keys(ColDefUtil2.ColDefPropertyMap);
    ColDefUtil2.FRAMEWORK_PROPERTIES = [
      "__ob__",
      "__v_skip",
      "__metadata__",
      "mappedColumnProperties",
      "hasChildColumns",
      "toColDef",
      "createColDefFromGridColumn"
    ];
    return ColDefUtil2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/eventKeys.js
var Events = (
  /** @class */
  function() {
    function Events2() {
    }
    Events2.EVENT_COLUMN_EVERYTHING_CHANGED = "columnEverythingChanged";
    Events2.EVENT_NEW_COLUMNS_LOADED = "newColumnsLoaded";
    Events2.EVENT_COLUMN_PIVOT_MODE_CHANGED = "columnPivotModeChanged";
    Events2.EVENT_COLUMN_ROW_GROUP_CHANGED = "columnRowGroupChanged";
    Events2.EVENT_EXPAND_COLLAPSE_ALL = "expandOrCollapseAll";
    Events2.EVENT_COLUMN_PIVOT_CHANGED = "columnPivotChanged";
    Events2.EVENT_GRID_COLUMNS_CHANGED = "gridColumnsChanged";
    Events2.EVENT_COLUMN_VALUE_CHANGED = "columnValueChanged";
    Events2.EVENT_COLUMN_MOVED = "columnMoved";
    Events2.EVENT_COLUMN_VISIBLE = "columnVisible";
    Events2.EVENT_COLUMN_PINNED = "columnPinned";
    Events2.EVENT_COLUMN_GROUP_OPENED = "columnGroupOpened";
    Events2.EVENT_COLUMN_RESIZED = "columnResized";
    Events2.EVENT_DISPLAYED_COLUMNS_CHANGED = "displayedColumnsChanged";
    Events2.EVENT_VIRTUAL_COLUMNS_CHANGED = "virtualColumnsChanged";
    Events2.EVENT_ASYNC_TRANSACTIONS_FLUSHED = "asyncTransactionsFlushed";
    Events2.EVENT_ROW_GROUP_OPENED = "rowGroupOpened";
    Events2.EVENT_ROW_DATA_CHANGED = "rowDataChanged";
    Events2.EVENT_ROW_DATA_UPDATED = "rowDataUpdated";
    Events2.EVENT_PINNED_ROW_DATA_CHANGED = "pinnedRowDataChanged";
    Events2.EVENT_RANGE_SELECTION_CHANGED = "rangeSelectionChanged";
    Events2.EVENT_CHART_CREATED = "chartCreated";
    Events2.EVENT_CHART_RANGE_SELECTION_CHANGED = "chartRangeSelectionChanged";
    Events2.EVENT_CHART_OPTIONS_CHANGED = "chartOptionsChanged";
    Events2.EVENT_CHART_DESTROYED = "chartDestroyed";
    Events2.EVENT_TOOL_PANEL_VISIBLE_CHANGED = "toolPanelVisibleChanged";
    Events2.EVENT_TOOL_PANEL_SIZE_CHANGED = "toolPanelSizeChanged";
    Events2.EVENT_COLUMN_PANEL_ITEM_DRAG_START = "columnPanelItemDragStart";
    Events2.EVENT_COLUMN_PANEL_ITEM_DRAG_END = "columnPanelItemDragEnd";
    Events2.EVENT_MODEL_UPDATED = "modelUpdated";
    Events2.EVENT_PASTE_START = "pasteStart";
    Events2.EVENT_PASTE_END = "pasteEnd";
    Events2.EVENT_FILL_START = "fillStart";
    Events2.EVENT_FILL_END = "fillEnd";
    Events2.EVENT_KEY_SHORTCUT_CHANGED_CELL_START = "keyShortcutChangedCellStart";
    Events2.EVENT_KEY_SHORTCUT_CHANGED_CELL_END = "keyShortcutChangedCellEnd";
    Events2.EVENT_CELL_CLICKED = "cellClicked";
    Events2.EVENT_CELL_DOUBLE_CLICKED = "cellDoubleClicked";
    Events2.EVENT_CELL_MOUSE_DOWN = "cellMouseDown";
    Events2.EVENT_CELL_CONTEXT_MENU = "cellContextMenu";
    Events2.EVENT_CELL_VALUE_CHANGED = "cellValueChanged";
    Events2.EVENT_CELL_EDIT_REQUEST = "cellEditRequest";
    Events2.EVENT_ROW_VALUE_CHANGED = "rowValueChanged";
    Events2.EVENT_CELL_FOCUSED = "cellFocused";
    Events2.EVENT_FULL_WIDTH_ROW_FOCUSED = "fullWidthRowFocused";
    Events2.EVENT_ROW_SELECTED = "rowSelected";
    Events2.EVENT_SELECTION_CHANGED = "selectionChanged";
    Events2.EVENT_CELL_KEY_DOWN = "cellKeyDown";
    Events2.EVENT_CELL_KEY_PRESS = "cellKeyPress";
    Events2.EVENT_CELL_MOUSE_OVER = "cellMouseOver";
    Events2.EVENT_CELL_MOUSE_OUT = "cellMouseOut";
    Events2.EVENT_FILTER_CHANGED = "filterChanged";
    Events2.EVENT_FILTER_MODIFIED = "filterModified";
    Events2.EVENT_FILTER_OPENED = "filterOpened";
    Events2.EVENT_SORT_CHANGED = "sortChanged";
    Events2.EVENT_VIRTUAL_ROW_REMOVED = "virtualRowRemoved";
    Events2.EVENT_ROW_CLICKED = "rowClicked";
    Events2.EVENT_ROW_DOUBLE_CLICKED = "rowDoubleClicked";
    Events2.EVENT_GRID_READY = "gridReady";
    Events2.EVENT_GRID_SIZE_CHANGED = "gridSizeChanged";
    Events2.EVENT_VIEWPORT_CHANGED = "viewportChanged";
    Events2.EVENT_SCROLLBAR_WIDTH_CHANGED = "scrollbarWidthChanged";
    Events2.EVENT_FIRST_DATA_RENDERED = "firstDataRendered";
    Events2.EVENT_DRAG_STARTED = "dragStarted";
    Events2.EVENT_DRAG_STOPPED = "dragStopped";
    Events2.EVENT_CHECKBOX_CHANGED = "checkboxChanged";
    Events2.EVENT_ROW_EDITING_STARTED = "rowEditingStarted";
    Events2.EVENT_ROW_EDITING_STOPPED = "rowEditingStopped";
    Events2.EVENT_CELL_EDITING_STARTED = "cellEditingStarted";
    Events2.EVENT_CELL_EDITING_STOPPED = "cellEditingStopped";
    Events2.EVENT_BODY_SCROLL = "bodyScroll";
    Events2.EVENT_BODY_SCROLL_END = "bodyScrollEnd";
    Events2.EVENT_HEIGHT_SCALE_CHANGED = "heightScaleChanged";
    Events2.EVENT_PAGINATION_CHANGED = "paginationChanged";
    Events2.EVENT_COMPONENT_STATE_CHANGED = "componentStateChanged";
    Events2.EVENT_BODY_HEIGHT_CHANGED = "bodyHeightChanged";
    Events2.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = "displayedColumnsWidthChanged";
    Events2.EVENT_SCROLL_VISIBILITY_CHANGED = "scrollVisibilityChanged";
    Events2.EVENT_COLUMN_HOVER_CHANGED = "columnHoverChanged";
    Events2.EVENT_FLASH_CELLS = "flashCells";
    Events2.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = "paginationPixelOffsetChanged";
    Events2.EVENT_DISPLAYED_ROWS_CHANGED = "displayedRowsChanged";
    Events2.EVENT_LEFT_PINNED_WIDTH_CHANGED = "leftPinnedWidthChanged";
    Events2.EVENT_RIGHT_PINNED_WIDTH_CHANGED = "rightPinnedWidthChanged";
    Events2.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = "rowContainerHeightChanged";
    Events2.EVENT_HEADER_HEIGHT_CHANGED = "headerHeightChanged";
    Events2.EVENT_COLUMN_HEADER_HEIGHT_CHANGED = "columnHeaderHeightChanged";
    Events2.EVENT_ROW_DRAG_ENTER = "rowDragEnter";
    Events2.EVENT_ROW_DRAG_MOVE = "rowDragMove";
    Events2.EVENT_ROW_DRAG_LEAVE = "rowDragLeave";
    Events2.EVENT_ROW_DRAG_END = "rowDragEnd";
    Events2.EVENT_POPUP_TO_FRONT = "popupToFront";
    Events2.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = "columnRowGroupChangeRequest";
    Events2.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = "columnPivotChangeRequest";
    Events2.EVENT_COLUMN_VALUE_CHANGE_REQUEST = "columnValueChangeRequest";
    Events2.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = "columnAggFuncChangeRequest";
    Events2.EVENT_KEYBOARD_FOCUS = "keyboardFocus";
    Events2.EVENT_MOUSE_FOCUS = "mouseFocus";
    Events2.EVENT_STORE_UPDATED = "storeUpdated";
    return Events2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/propertyKeys.js
var __read3 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread2 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read3(arguments[i2]));
  return ar;
};
var PropertyKeys = (
  /** @class */
  function() {
    function PropertyKeys2() {
    }
    PropertyKeys2.STRING_PROPERTIES = [
      "rowSelection",
      "overlayLoadingTemplate",
      "overlayNoRowsTemplate",
      "quickFilterText",
      "rowModelType",
      "editType",
      "domLayout",
      "clipboardDelimiter",
      "rowGroupPanelShow",
      "multiSortKey",
      "pivotColumnGroupTotals",
      "pivotRowTotals",
      "pivotPanelShow",
      "fillHandleDirection",
      "serverSideStoreType",
      "groupDisplayType",
      "treeDataDisplayType",
      "colResizeDefault"
    ];
    PropertyKeys2.OBJECT_PROPERTIES = [
      "components",
      "frameworkComponents",
      "rowStyle",
      "context",
      "autoGroupColumnDef",
      "localeText",
      "icons",
      "datasource",
      "serverSideDatasource",
      "viewportDatasource",
      "groupRowRendererParams",
      "aggFuncs",
      "fullWidthCellRendererParams",
      "defaultColGroupDef",
      "defaultColDef",
      "defaultCsvExportParams",
      "defaultExcelExportParams",
      "columnTypes",
      "rowClassRules",
      "detailCellRendererParams",
      "loadingCellRendererParams",
      "loadingOverlayComponentParams",
      "noRowsOverlayComponentParams",
      "popupParent",
      "statusBar",
      "sideBar",
      "chartThemeOverrides",
      "customChartThemes",
      "chartToolPanelsDef"
    ];
    PropertyKeys2.ARRAY_PROPERTIES = [
      "sortingOrder",
      "alignedGrids",
      "rowData",
      "columnDefs",
      "excelStyles",
      "pinnedTopRowData",
      "pinnedBottomRowData",
      "chartThemes",
      "rowClass"
    ];
    PropertyKeys2.NUMBER_PROPERTIES = [
      "rowHeight",
      "detailRowHeight",
      "rowBuffer",
      "headerHeight",
      "groupHeaderHeight",
      "floatingFiltersHeight",
      "pivotHeaderHeight",
      "pivotGroupHeaderHeight",
      "groupDefaultExpanded",
      "viewportRowModelPageSize",
      "viewportRowModelBufferSize",
      "autoSizePadding",
      "maxBlocksInCache",
      "maxConcurrentDatasourceRequests",
      "tooltipShowDelay",
      "tooltipHideDelay",
      "cacheOverflowSize",
      "paginationPageSize",
      "cacheBlockSize",
      "infiniteInitialRowCount",
      "serverSideInitialRowCount",
      "scrollbarWidth",
      "asyncTransactionWaitMillis",
      "blockLoadDebounceMillis",
      "keepDetailRowsCount",
      "undoRedoCellEditingLimit",
      "cellFlashDelay",
      "cellFadeDelay",
      "tabIndex"
    ];
    PropertyKeys2.BOOLEAN_PROPERTIES = [
      "suppressMakeColumnVisibleAfterUnGroup",
      "suppressRowClickSelection",
      "suppressCellSelection",
      "suppressCellFocus",
      "suppressHorizontalScroll",
      "alwaysShowHorizontalScroll",
      "alwaysShowVerticalScroll",
      "debug",
      "enableBrowserTooltips",
      "enableCellExpressions",
      "groupSelectsChildren",
      "groupIncludeFooter",
      "groupIncludeTotalFooter",
      "groupSuppressBlankHeader",
      "suppressMenuHide",
      "suppressRowDeselection",
      "unSortIcon",
      "suppressMultiSort",
      "alwaysMultiSort",
      "singleClickEdit",
      "suppressLoadingOverlay",
      "suppressNoRowsOverlay",
      "suppressAutoSize",
      "skipHeaderOnAutoSize",
      "suppressParentsInRowNodes",
      "suppressColumnMoveAnimation",
      "suppressMovableColumns",
      "suppressFieldDotNotation",
      "enableRangeSelection",
      "enableRangeHandle",
      "enableFillHandle",
      "suppressClearOnFillReduction",
      "deltaSort",
      "suppressTouch",
      "suppressAsyncEvents",
      "allowContextMenuWithControlKey",
      "suppressContextMenu",
      "rememberGroupStateWhenNewData",
      "enableCellChangeFlash",
      "suppressDragLeaveHidesColumns",
      "suppressRowGroupHidesColumns",
      "suppressMiddleClickScrolls",
      "suppressPreventDefaultOnMouseWheel",
      "suppressCopyRowsToClipboard",
      "copyHeadersToClipboard",
      "copyGroupHeadersToClipboard",
      "pivotMode",
      "suppressAggFuncInHeader",
      "suppressColumnVirtualisation",
      "suppressAggAtRootLevel",
      "suppressFocusAfterRefresh",
      "functionsPassive",
      "functionsReadOnly",
      "animateRows",
      "groupSelectsFiltered",
      "groupRemoveSingleChildren",
      "groupRemoveLowestSingleChildren",
      "enableRtl",
      "suppressClickEdit",
      "rowDragEntireRow",
      "rowDragManaged",
      "suppressRowDrag",
      "suppressMoveWhenRowDragging",
      "rowDragMultiRow",
      "enableGroupEdit",
      "embedFullWidthRows",
      "suppressPaginationPanel",
      "groupHideOpenParents",
      "groupAllowUnbalanced",
      "pagination",
      "paginationAutoPageSize",
      "suppressScrollOnNewData",
      "suppressScrollWhenPopupsAreOpen",
      "purgeClosedRowNodes",
      "cacheQuickFilter",
      "ensureDomOrder",
      "accentedSort",
      "suppressChangeDetection",
      "valueCache",
      "valueCacheNeverExpires",
      "aggregateOnlyChangedColumns",
      "suppressAnimationFrame",
      "suppressExcelExport",
      "suppressCsvExport",
      "treeData",
      "masterDetail",
      "suppressMultiRangeSelection",
      "enterMovesDownAfterEdit",
      "enterMovesDown",
      "suppressPropertyNamesCheck",
      "rowMultiSelectWithClick",
      "suppressRowHoverHighlight",
      "suppressRowTransform",
      "suppressClipboardPaste",
      "suppressLastEmptyLineOnPaste",
      "enableCharts",
      "enableChartToolPanelsButton",
      "suppressChartToolPanelsButton",
      "suppressMaintainUnsortedOrder",
      "enableCellTextSelection",
      "suppressBrowserResizeObserver",
      "suppressMaxRenderedRowRestriction",
      "excludeChildrenWhenTreeDataFiltering",
      "tooltipMouseTrack",
      "keepDetailRows",
      "paginateChildRows",
      "preventDefaultOnContextMenu",
      "undoRedoCellEditing",
      "allowDragFromColumnsToolPanel",
      "immutableData",
      "pivotSuppressAutoColumn",
      "suppressExpandablePivotGroups",
      "debounceVerticalScrollbar",
      "detailRowAutoHeight",
      "serverSideFilteringAlwaysResets",
      "serverSideSortingAlwaysResets",
      "serverSideSortAllLevels",
      "serverSideFilterAllLevels",
      "serverSideSortOnServer",
      "serverSideFilterOnServer",
      "suppressAggFilteredOnly",
      "showOpenedGroup",
      "suppressClipboardApi",
      "suppressModelUpdateAfterUpdateTransaction",
      "stopEditingWhenCellsLoseFocus",
      "maintainColumnOrder",
      "groupMaintainOrder",
      "columnHoverHighlight",
      "reactUi",
      "suppressReactUi",
      "readOnlyEdit",
      "suppressRowVirtualisation",
      "enableCellEditingOnBackspace",
      "resetRowDataOnUpdate",
      "removePivotHeaderRowWhenSingleValueColumn",
      "suppressCopySingleCellRanges",
      "groupRowsSticky",
      "suppressServerSideInfiniteScroll",
      "rowGroupPanelSuppressSort",
      "allowShowChangeAfterFilter"
    ];
    PropertyKeys2.FUNCTIONAL_PROPERTIES = [
      "localeTextFunc",
      "doesExternalFilterPass",
      "groupRowAggNodes",
      "isFullWidthCell",
      "processSecondaryColDef",
      "processSecondaryColGroupDef",
      "processPivotResultColDef",
      "processPivotResultColGroupDef",
      "getBusinessKeyForNode",
      "isRowSelectable",
      "postSort",
      "defaultGroupOrderComparator",
      "rowDragText",
      "groupRowRenderer",
      "groupRowRendererFramework",
      "fullWidthCellRenderer",
      "fullWidthCellRendererFramework",
      "loadingCellRenderer",
      "loadingCellRendererFramework",
      "loadingOverlayComponent",
      "loadingOverlayComponentFramework",
      "noRowsOverlayComponent",
      "noRowsOverlayComponentFramework",
      "detailCellRenderer",
      "detailCellRendererFramework"
    ];
    PropertyKeys2.CALLBACK_PROPERTIES = [
      "getLocaleText",
      "isExternalFilterPresent",
      "getRowHeight",
      "getRowClass",
      "getRowStyle",
      "getContextMenuItems",
      "getMainMenuItems",
      "processRowPostCreate",
      "processCellForClipboard",
      "getGroupRowAgg",
      "getRowNodeId",
      "isFullWidthRow",
      "sendToClipboard",
      "navigateToNextHeader",
      "tabToNextHeader",
      "navigateToNextCell",
      "tabToNextCell",
      "processCellFromClipboard",
      "getDocument",
      "postProcessPopup",
      "getChildCount",
      "getDataPath",
      "isRowMaster",
      "postSortRows",
      "processHeaderForClipboard",
      "processGroupHeaderForClipboard",
      "paginationNumberFormatter",
      "processDataFromClipboard",
      "getServerSideGroupKey",
      "isServerSideGroup",
      "createChartContainer",
      "getChartToolbarItems",
      "fillOperation",
      "isApplyServerSideTransaction",
      "getServerSideStoreParams",
      "getServerSideGroupLevelParams",
      "isServerSideGroupOpenByDefault",
      "isGroupOpenByDefault",
      "initialGroupOrderComparator",
      "loadingCellRendererSelector",
      "getRowId",
      "groupAggFiltering"
    ];
    PropertyKeys2.FUNCTION_PROPERTIES = __spread2(PropertyKeys2.FUNCTIONAL_PROPERTIES, PropertyKeys2.CALLBACK_PROPERTIES);
    PropertyKeys2.ALL_PROPERTIES = __spread2(PropertyKeys2.ARRAY_PROPERTIES, PropertyKeys2.OBJECT_PROPERTIES, PropertyKeys2.STRING_PROPERTIES, PropertyKeys2.NUMBER_PROPERTIES, PropertyKeys2.FUNCTION_PROPERTIES, PropertyKeys2.BOOLEAN_PROPERTIES);
    PropertyKeys2.FRAMEWORK_PROPERTIES = [
      "__ob__",
      "__v_skip",
      "__metadata__",
      "mappedColumnProperties",
      "hasChildColumns",
      "toColDef",
      "createColDefFromGridColumn"
    ];
    return PropertyKeys2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/componentUtil.js
var __assign2 = function() {
  __assign2 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign2.apply(this, arguments);
};
var __read4 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread3 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read4(arguments[i2]));
  return ar;
};
var ComponentUtil = (
  /** @class */
  function() {
    function ComponentUtil2() {
    }
    ComponentUtil2.getCallbackForEvent = function(eventName) {
      if (!eventName || eventName.length < 2) {
        return eventName;
      }
      return "on" + eventName[0].toUpperCase() + eventName.substr(1);
    };
    ComponentUtil2.getCoercionLookup = function() {
      var coercionLookup = {};
      __spread3(ComponentUtil2.ARRAY_PROPERTIES, ComponentUtil2.OBJECT_PROPERTIES, ComponentUtil2.STRING_PROPERTIES, ComponentUtil2.FUNCTION_PROPERTIES, ComponentUtil2.EVENT_CALLBACKS).forEach(function(key) {
        return coercionLookup[key] = "none";
      });
      ComponentUtil2.BOOLEAN_PROPERTIES.forEach(function(key) {
        return coercionLookup[key] = "boolean";
      });
      ComponentUtil2.NUMBER_PROPERTIES.forEach(function(key) {
        return coercionLookup[key] = "number";
      });
      return coercionLookup;
    };
    ComponentUtil2.getValue = function(key, rawValue) {
      var coercionStep = ComponentUtil2.coercionLookup[key];
      if (coercionStep) {
        var newValue = rawValue;
        switch (coercionStep) {
          case "number": {
            newValue = ComponentUtil2.toNumber(rawValue);
            break;
          }
          case "boolean": {
            newValue = ComponentUtil2.toBoolean(rawValue);
            break;
          }
          case "none": {
            if (key === "groupAggFiltering" && typeof rawValue !== "function") {
              newValue = ComponentUtil2.toBoolean(rawValue);
            }
            break;
          }
        }
        return newValue;
      }
      return void 0;
    };
    ComponentUtil2.getGridOptionKeys = function(component, isVue) {
      return isVue ? Object.keys(ComponentUtil2.coercionLookup) : Object.keys(component);
    };
    ComponentUtil2.copyAttributesToGridOptions = function(gridOptions, component, isVue) {
      if (isVue === void 0) {
        isVue = false;
      }
      if (typeof gridOptions !== "object") {
        gridOptions = {};
      }
      var pGridOptions = gridOptions;
      var keys3 = ComponentUtil2.getGridOptionKeys(component, isVue);
      keys3.forEach(function(key) {
        var value = component[key];
        if (typeof value !== "undefined") {
          var coercedValue = ComponentUtil2.getValue(key, value);
          if (coercedValue !== void 0) {
            pGridOptions[key] = coercedValue;
          }
        }
      });
      return gridOptions;
    };
    ComponentUtil2.processOnChange = function(changes, api) {
      if (!changes || Object.keys(changes).length === 0) {
        return;
      }
      var changesToApply = __assign2({}, changes);
      if (changesToApply.autoGroupColumnDef) {
        api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, "gridOptionsChanged");
        delete changesToApply.autoGroupColumnDef;
      }
      if (changesToApply.defaultColDef) {
        api.setDefaultColDef(changesToApply.defaultColDef.currentValue, "gridOptionsChanged");
        delete changesToApply.defaultColDef;
      }
      if (changesToApply.columnDefs) {
        api.setColumnDefs(changesToApply.columnDefs.currentValue, "gridOptionsChanged");
        delete changesToApply.columnDefs;
      }
      Object.keys(changesToApply).forEach(function(key) {
        var gridKey = key;
        var coercedValue = ComponentUtil2.getValue(gridKey, changesToApply[gridKey].currentValue);
        api.__setProperty(gridKey, coercedValue);
      });
      var event = {
        type: Events.EVENT_COMPONENT_STATE_CHANGED
      };
      iterateObject(changes, function(key, value) {
        event[key] = value;
      });
      api.dispatchEvent(event);
    };
    ComponentUtil2.toBoolean = function(value) {
      if (typeof value === "boolean") {
        return value;
      }
      if (typeof value === "string") {
        return value.toUpperCase() === "TRUE" || value == "";
      }
      return false;
    };
    ComponentUtil2.toNumber = function(value) {
      if (typeof value === "number") {
        return value;
      }
      if (typeof value === "string") {
        return Number(value);
      }
    };
    ComponentUtil2.EVENTS = values(Events);
    ComponentUtil2.EXCLUDED_INTERNAL_EVENTS = [
      Events.EVENT_SCROLLBAR_WIDTH_CHANGED,
      Events.EVENT_CHECKBOX_CHANGED,
      Events.EVENT_HEIGHT_SCALE_CHANGED,
      Events.EVENT_BODY_HEIGHT_CHANGED,
      Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,
      Events.EVENT_SCROLL_VISIBILITY_CHANGED,
      Events.EVENT_COLUMN_HOVER_CHANGED,
      Events.EVENT_FLASH_CELLS,
      Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,
      Events.EVENT_DISPLAYED_ROWS_CHANGED,
      Events.EVENT_LEFT_PINNED_WIDTH_CHANGED,
      Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED,
      Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED,
      Events.EVENT_POPUP_TO_FRONT,
      Events.EVENT_KEYBOARD_FOCUS,
      Events.EVENT_MOUSE_FOCUS,
      Events.EVENT_STORE_UPDATED,
      Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,
      Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END,
      Events.EVENT_FILL_START,
      Events.EVENT_FILL_END,
      Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START,
      Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END,
      Events.EVENT_FULL_WIDTH_ROW_FOCUSED,
      Events.EVENT_HEADER_HEIGHT_CHANGED,
      Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED
    ];
    ComponentUtil2.PUBLIC_EVENTS = ComponentUtil2.EVENTS.filter(function(e2) {
      return !includes(ComponentUtil2.EXCLUDED_INTERNAL_EVENTS, e2);
    });
    ComponentUtil2.EVENT_CALLBACKS = ComponentUtil2.EVENTS.map(function(event) {
      return ComponentUtil2.getCallbackForEvent(event);
    });
    ComponentUtil2.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;
    ComponentUtil2.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;
    ComponentUtil2.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;
    ComponentUtil2.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;
    ComponentUtil2.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;
    ComponentUtil2.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;
    ComponentUtil2.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;
    ComponentUtil2.ALL_PROPERTIES_SET = new Set(PropertyKeys.ALL_PROPERTIES);
    ComponentUtil2.coercionLookup = ComponentUtil2.getCoercionLookup();
    return ComponentUtil2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/fuzzyMatch.js
var fuzzyMatch_exports = {};
__export(fuzzyMatch_exports, {
  fuzzyCheckStrings: () => fuzzyCheckStrings,
  fuzzySuggestions: () => fuzzySuggestions,
  get_bigrams: () => get_bigrams,
  string_distances: () => string_distances,
  string_weighted_distances: () => string_weighted_distances
});
function fuzzyCheckStrings(inputValues, validValues, allSuggestions) {
  var fuzzyMatches = {};
  var invalidInputs = inputValues.filter(function(inputValue) {
    return !validValues.some(function(validValue) {
      return validValue === inputValue;
    });
  });
  if (invalidInputs.length > 0) {
    invalidInputs.forEach(function(invalidInput) {
      return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);
    });
  }
  return fuzzyMatches;
}
function fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, weighted) {
  var search = weighted ? string_weighted_distances : string_distances;
  var thisSuggestions = allSuggestions.map(function(text) {
    return {
      value: text,
      relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())
    };
  });
  thisSuggestions.sort(function(a2, b2) {
    return b2.relevance - a2.relevance;
  });
  if (hideIrrelevant) {
    thisSuggestions = thisSuggestions.filter(function(suggestion) {
      return suggestion.relevance !== 0;
    });
  }
  return thisSuggestions.map(function(suggestion) {
    return suggestion.value;
  });
}
function get_bigrams(from2) {
  var s2 = from2.toLowerCase();
  var v2 = new Array(s2.length - 1);
  var i2;
  var j2;
  var ref;
  for (i2 = j2 = 0, ref = v2.length; j2 <= ref; i2 = j2 += 1) {
    v2[i2] = s2.slice(i2, i2 + 2);
  }
  return v2;
}
function string_distances(str1, str2) {
  if (str1.length === 0 && str2.length === 0) {
    return 0;
  }
  var pairs1 = get_bigrams(str1);
  var pairs2 = get_bigrams(str2);
  var union = pairs1.length + pairs2.length;
  var hit_count = 0;
  var j2;
  var len;
  for (j2 = 0, len = pairs1.length; j2 < len; j2++) {
    var x2 = pairs1[j2];
    var k2 = void 0;
    var len1 = void 0;
    for (k2 = 0, len1 = pairs2.length; k2 < len1; k2++) {
      var y2 = pairs2[k2];
      if (x2 === y2) {
        hit_count++;
      }
    }
  }
  return hit_count > 0 ? 2 * hit_count / union : 0;
}
function string_weighted_distances(str1, str2) {
  var a2 = str1.replace(/\s/g, "");
  var b2 = str2.replace(/\s/g, "");
  var weight = 0;
  var lastIndex = -1;
  for (var i2 = 0; i2 < a2.length; i2++) {
    var idx = b2.indexOf(a2[i2], lastIndex + 1);
    if (idx === -1) {
      continue;
    }
    lastIndex = idx;
    weight += 100 - lastIndex * 100 / 1e4 * 100;
  }
  return weight;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/gridOptionsValidator.js
var __decorate7 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read5 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread4 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read5(arguments[i2]));
  return ar;
};
function logDeprecation(version, oldProp, newProp, message) {
  var newPropMsg = newProp ? "Please use '" + newProp + "' instead. " : "";
  doOnce(function() {
    return console.warn("AG Grid: since v" + version + ", '" + oldProp + "' is deprecated. " + newPropMsg + (message !== null && message !== void 0 ? message : ""));
  }, "Deprecated_" + oldProp);
}
var GridOptionsValidator = (
  /** @class */
  function() {
    function GridOptionsValidator2() {
      this.deprecatedProperties = {
        serverSideInfiniteScroll: { version: "29", message: "Infinite Scrolling is now the default behaviour. This can be suppressed with `suppressServerSideInfiniteScroll`." },
        rememberGroupStateWhenNewData: { version: "24", message: "Now that transaction updates are possible and they keep group state, this feature is no longer needed." },
        suppressEnterpriseResetOnNewColumns: { version: "25", message: "Now that it is possible to dynamically change columns in the grid, this is no longer needed." },
        suppressColumnStateEvents: { version: "25", message: 'Events should be ignored based on the `event.source`, which will be "api" if the event was due to setting column state via the API.' },
        defaultExportParams: { version: "25.2", message: "The property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`" },
        stopEditingWhenGridLosesFocus: { version: "25.2.2", newProp: "stopEditingWhenCellsLoseFocus", copyToNewProp: true },
        applyColumnDefOrder: { version: "26", message: "The property `applyColumnDefOrder` is no longer needed, as this is the default behaviour. To turn this behaviour off, set maintainColumnOrder=true" },
        groupMultiAutoColumn: { version: "26", newProp: "groupDisplayType", copyToNewProp: true, newPropValue: "multipleColumns" },
        groupUseEntireRow: { version: "26", newProp: "groupDisplayType", copyToNewProp: true, newPropValue: "groupRows" },
        defaultGroupSortComparator: { version: "26", newProp: "initialGroupOrderComparator" },
        enableMultiRowDragging: { version: "26.1", newProp: "rowDragMultiRow", copyToNewProp: true },
        colWidth: { version: "26.1", newProp: "defaultColDef.width" },
        minColWidth: { version: "26.1", newProp: "defaultColDef.minWidth" },
        maxColWidth: { version: "26.1", newProp: "defaultColDef.maxWidth" },
        reactUi: { version: "26.1", message: "React UI is on by default, so no need for reactUi=true. To turn it off, set suppressReactUi=true." },
        suppressCellSelection: { version: "27", newProp: "suppressCellFocus", copyToNewProp: true },
        clipboardDeliminator: { version: "27.1", newProp: "clipboardDelimiter", copyToNewProp: true },
        getRowNodeId: { version: "27.1", newProp: "getRowId", message: "The difference: if getRowId() is implemented then immutable data is enabled by default." },
        defaultGroupOrderComparator: { version: "27.2", newProp: "initialGroupOrderComparator" },
        groupRowAggNodes: { version: "27.2", newProp: "getGroupRowAgg" },
        postSort: { version: "27.2", newProp: "postSortRows" },
        isFullWidthCell: { version: "27.2", newProp: "isFullWidthRow" },
        localeTextFunc: { version: "27.2", newProp: "getLocaleText" },
        serverSideFilteringAlwaysResets: { version: "28.0", newProp: "serverSideFilterAllLevels", copyToNewProp: true },
        serverSideSortingAlwaysResets: { version: "28.0", newProp: "serverSideSortAllLevels", copyToNewProp: true },
        suppressReactUi: { version: "28", message: "The legacy React rendering engine is deprecated and will be removed in the next major version of the grid." },
        processSecondaryColDef: { version: "28", newProp: "processPivotResultColDef", copyToNewProp: true },
        processSecondaryColGroupDef: { version: "28", newProp: "processPivotResultColGroupDef", copyToNewProp: true },
        getServerSideStoreParams: { version: "28", newProp: "getServerSideGroupLevelParams", copyToNewProp: true },
        enableChartToolPanelsButton: { version: "29", message: "The Chart Tool Panels button is now enabled by default. To hide the Chart Tool Panels button and display the hamburger button instead, set suppressChartToolPanelsButton=true." }
      };
    }
    GridOptionsValidator2.prototype.pickOneWarning = function(prop1, prop2) {
      console.warn("AG Grid: " + prop1 + " and " + prop2 + " do not work with each other, you need to pick one.");
    };
    GridOptionsValidator2.prototype.init = function() {
      var _this = this;
      this.checkForDeprecated();
      this.checkForViolations();
      if (this.gridOptions.suppressPropertyNamesCheck !== true) {
        this.checkGridOptionsProperties();
        this.checkColumnDefProperties();
      }
      if (this.gridOptionsService.is("groupSelectsChildren") && this.gridOptionsService.is("suppressParentsInRowNodes")) {
        console.warn("AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work");
      }
      if (this.gridOptionsService.is("groupSelectsChildren")) {
        if (this.gridOptionsService.get("rowSelection") !== "multiple") {
          console.warn("AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense");
        }
        if (this.gridOptionsService.isRowModelType("serverSide")) {
          console.warn("AG Grid: group selects children is NOT supported for Server Side Row Model. This is because the rows are lazy loaded, so selecting a group is not possible asthe grid has no way of knowing what the children are.");
        }
      }
      if (this.gridOptionsService.is("groupRemoveSingleChildren") && this.gridOptionsService.is("groupHideOpenParents")) {
        this.pickOneWarning("groupRemoveSingleChildren", "groupHideOpenParents");
      }
      if (this.gridOptionsService.isRowModelType("serverSide")) {
        var msg = function(prop, alt) {
          return "AG Grid: '" + prop + "' is not supported on the Server-Side Row Model." + (alt ? " Please use " + alt + " instead." : "");
        };
        if (this.gridOptionsService.exists("groupDefaultExpanded")) {
          console.warn(msg("groupDefaultExpanded", "isServerSideGroupOpenByDefault callback"));
        }
        if (this.gridOptionsService.exists("groupIncludeFooter")) {
          console.warn(msg("groupIncludeFooter"));
        }
        if (this.gridOptionsService.exists("groupIncludeTotalFooter")) {
          console.warn(msg("groupIncludeTotalFooter"));
        }
      }
      if (this.gridOptionsService.is("enableRangeSelection")) {
        ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, "enableRangeSelection");
      } else if (this.gridOptionsService.is("enableRangeHandle") || this.gridOptionsService.is("enableFillHandle")) {
        console.warn("AG Grid: 'enableRangeHandle' or 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true");
      }
      var validateRegistered = function(prop, module) {
        return _this.gridOptionsService.exists(prop) && ModuleRegistry.assertRegistered(module, prop);
      };
      validateRegistered("sideBar", ModuleNames.SideBarModule);
      validateRegistered("statusBar", ModuleNames.StatusBarModule);
      validateRegistered("enableCharts", ModuleNames.GridChartsModule);
      validateRegistered("getMainMenuItems", ModuleNames.MenuModule);
      validateRegistered("getContextMenuItems", ModuleNames.MenuModule);
      validateRegistered("allowContextMenuWithControlKey", ModuleNames.MenuModule);
      if (this.gridOptionsService.is("groupRowsSticky")) {
        if (this.gridOptionsService.is("groupHideOpenParents")) {
          this.pickOneWarning("groupRowsSticky", "groupHideOpenParents");
        }
        if (this.gridOptionsService.is("masterDetail")) {
          this.pickOneWarning("groupRowsSticky", "masterDetail");
        }
        if (this.gridOptionsService.is("pagination")) {
          this.pickOneWarning("groupRowsSticky", "pagination");
        }
      }
    };
    GridOptionsValidator2.prototype.checkColumnDefProperties = function() {
      var _this = this;
      if (this.gridOptions.columnDefs == null) {
        return;
      }
      this.gridOptions.columnDefs.forEach(function(colDef) {
        var userProperties = Object.getOwnPropertyNames(colDef);
        var validProperties = __spread4(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);
        _this.checkProperties(userProperties, validProperties, validProperties, "colDef", "https://www.ag-grid.com/javascript-data-grid/column-properties/");
      });
    };
    GridOptionsValidator2.prototype.checkGridOptionsProperties = function() {
      var userProperties = Object.getOwnPropertyNames(this.gridOptions);
      var validProperties = __spread4(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, ComponentUtil.EVENT_CALLBACKS);
      var validPropertiesAndExceptions = __spread4(validProperties, ["api", "columnApi"], Object.keys(this.deprecatedProperties));
      this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, "gridOptions", "https://www.ag-grid.com/javascript-data-grid/grid-options/");
    };
    GridOptionsValidator2.prototype.checkProperties = function(userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {
      var invalidProperties = fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);
      iterateObject(invalidProperties, function(key, value) {
        console.warn("AG Grid: invalid " + containerName + " property '" + key + "' did you mean any of these: " + value.slice(0, 8).join(", "));
      });
      if (Object.keys(invalidProperties).length > 0) {
        console.warn("AG Grid: to see all the valid " + containerName + " properties please check: " + docsUrl);
      }
    };
    GridOptionsValidator2.prototype.checkForDeprecated = function() {
      var options = this.gridOptions;
      Object.entries(this.deprecatedProperties).map(function(_a47) {
        var _b;
        var _c = __read5(_a47, 2), oldProp = _c[0], details = _c[1];
        var oldPropValue = options[oldProp];
        if (oldPropValue) {
          logDeprecation(details.version, oldProp, details.newProp, details.message);
          if (details.copyToNewProp && details.newProp && options[details.newProp] == null) {
            options[details.newProp] = (_b = details.newPropValue) !== null && _b !== void 0 ? _b : oldPropValue;
          }
        }
      });
      if (options.groupSuppressAutoColumn) {
        var propName = options.treeData ? "treeDataDisplayType" : "groupDisplayType";
        console.warn("AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `" + propName + " = 'custom'`");
        options[propName] = "custom";
      }
      if (options.immutableData) {
        if (options.getRowId) {
          console.warn("AG Grid: since v27.1, `immutableData` is deprecated. With the `getRowId` callback implemented, immutable data is enabled by default so you can remove `immutableData=true`.");
        } else {
          console.warn("AG Grid: since v27.1, `immutableData` is deprecated. To enable immutable data you must implement the `getRowId()` callback.");
        }
      }
      if (options.serverSideStoreType) {
        console.warn("AG Grid: since v29.0, `serverSideStoreType` has been replaced by `suppressServerSideInfiniteScroll`. Set to false to use Partial Store, and true to use Full Store.");
        options.suppressServerSideInfiniteScroll = options.serverSideStoreType !== "partial";
      }
    };
    GridOptionsValidator2.prototype.checkForViolations = function() {
      if (this.gridOptionsService.is("treeData")) {
        this.treeDataViolations();
      }
    };
    GridOptionsValidator2.prototype.treeDataViolations = function() {
      if (this.gridOptionsService.isRowModelType("clientSide")) {
        if (!this.gridOptionsService.exists("getDataPath")) {
          console.warn("AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not provide getDataPath function, please provide getDataPath function if using tree data.");
        }
      }
      if (this.gridOptionsService.isRowModelType("serverSide")) {
        if (!this.gridOptionsService.exists("isServerSideGroup")) {
          console.warn("AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.");
        }
        if (!this.gridOptionsService.exists("getServerSideGroupKey")) {
          console.warn("AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.");
        }
      }
    };
    __decorate7([
      Autowired("gridOptions")
    ], GridOptionsValidator2.prototype, "gridOptions", void 0);
    __decorate7([
      Autowired("gridOptionsService")
    ], GridOptionsValidator2.prototype, "gridOptionsService", void 0);
    __decorate7([
      PostConstruct
    ], GridOptionsValidator2.prototype, "init", null);
    GridOptionsValidator2 = __decorate7([
      Bean("gridOptionsValidator")
    ], GridOptionsValidator2);
    return GridOptionsValidator2;
  }()
);
function matchesGroupDisplayType(toMatch, supplied) {
  var groupDisplayTypeValues = ["groupRows", "multipleColumns", "custom", "singleColumn"];
  if (groupDisplayTypeValues.indexOf(supplied) < 0) {
    console.warn("AG Grid: '" + supplied + "' is not a valid groupDisplayType value - possible values are: '" + groupDisplayTypeValues.join("', '") + "'");
    return false;
  }
  return supplied === toMatch;
}
function matchesTreeDataDisplayType(toMatch, supplied) {
  var treeDataDisplayTypeValues = ["auto", "custom"];
  if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {
    console.warn("AG Grid: '" + supplied + "' is not a valid treeDataDisplayType value - possible values are: '" + treeDataDisplayTypeValues.join("', '") + "'");
    return false;
  }
  return supplied === toMatch;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/columnGroup.js
var __decorate8 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ColumnGroup = (
  /** @class */
  function() {
    function ColumnGroup2(providedColumnGroup, groupId, partId, pinned) {
      this.displayedChildren = [];
      this.localEventService = new EventService();
      this.groupId = groupId;
      this.partId = partId;
      this.providedColumnGroup = providedColumnGroup;
      this.pinned = pinned;
    }
    ColumnGroup2.createUniqueId = function(groupId, instanceId) {
      return groupId + "_" + instanceId;
    };
    ColumnGroup2.prototype.reset = function() {
      this.parent = null;
      this.children = null;
      this.displayedChildren = null;
    };
    ColumnGroup2.prototype.getParent = function() {
      return this.parent;
    };
    ColumnGroup2.prototype.setParent = function(parent2) {
      this.parent = parent2;
    };
    ColumnGroup2.prototype.getUniqueId = function() {
      return ColumnGroup2.createUniqueId(this.groupId, this.partId);
    };
    ColumnGroup2.prototype.isEmptyGroup = function() {
      return this.displayedChildren.length === 0;
    };
    ColumnGroup2.prototype.isMoving = function() {
      var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();
      if (!allLeafColumns || allLeafColumns.length === 0) {
        return false;
      }
      return allLeafColumns.every(function(col) {
        return col.isMoving();
      });
    };
    ColumnGroup2.prototype.checkLeft = function() {
      this.displayedChildren.forEach(function(child) {
        if (child instanceof ColumnGroup2) {
          child.checkLeft();
        }
      });
      if (this.displayedChildren.length > 0) {
        if (this.gridOptionsService.is("enableRtl")) {
          var lastChild = last(this.displayedChildren);
          var lastChildLeft = lastChild.getLeft();
          this.setLeft(lastChildLeft);
        } else {
          var firstChildLeft = this.displayedChildren[0].getLeft();
          this.setLeft(firstChildLeft);
        }
      } else {
        this.setLeft(null);
      }
    };
    ColumnGroup2.prototype.getLeft = function() {
      return this.left;
    };
    ColumnGroup2.prototype.getOldLeft = function() {
      return this.oldLeft;
    };
    ColumnGroup2.prototype.setLeft = function(left) {
      this.oldLeft = left;
      if (this.left !== left) {
        this.left = left;
        this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup2.EVENT_LEFT_CHANGED));
      }
    };
    ColumnGroup2.prototype.getPinned = function() {
      return this.pinned;
    };
    ColumnGroup2.prototype.createAgEvent = function(type2) {
      return { type: type2 };
    };
    ColumnGroup2.prototype.addEventListener = function(eventType, listener) {
      this.localEventService.addEventListener(eventType, listener);
    };
    ColumnGroup2.prototype.removeEventListener = function(eventType, listener) {
      this.localEventService.removeEventListener(eventType, listener);
    };
    ColumnGroup2.prototype.getGroupId = function() {
      return this.groupId;
    };
    ColumnGroup2.prototype.getPartId = function() {
      return this.partId;
    };
    ColumnGroup2.prototype.isChildInThisGroupDeepSearch = function(wantedChild) {
      var result = false;
      this.children.forEach(function(foundChild) {
        if (wantedChild === foundChild) {
          result = true;
        }
        if (foundChild instanceof ColumnGroup2) {
          if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {
            result = true;
          }
        }
      });
      return result;
    };
    ColumnGroup2.prototype.getActualWidth = function() {
      var groupActualWidth = 0;
      if (this.displayedChildren) {
        this.displayedChildren.forEach(function(child) {
          groupActualWidth += child.getActualWidth();
        });
      }
      return groupActualWidth;
    };
    ColumnGroup2.prototype.isResizable = function() {
      if (!this.displayedChildren) {
        return false;
      }
      var result = false;
      this.displayedChildren.forEach(function(child) {
        if (child.isResizable()) {
          result = true;
        }
      });
      return result;
    };
    ColumnGroup2.prototype.getMinWidth = function() {
      var result = 0;
      this.displayedChildren.forEach(function(groupChild) {
        result += groupChild.getMinWidth() || 0;
      });
      return result;
    };
    ColumnGroup2.prototype.addChild = function(child) {
      if (!this.children) {
        this.children = [];
      }
      this.children.push(child);
    };
    ColumnGroup2.prototype.getDisplayedChildren = function() {
      return this.displayedChildren;
    };
    ColumnGroup2.prototype.getLeafColumns = function() {
      var result = [];
      this.addLeafColumns(result);
      return result;
    };
    ColumnGroup2.prototype.getDisplayedLeafColumns = function() {
      var result = [];
      this.addDisplayedLeafColumns(result);
      return result;
    };
    ColumnGroup2.prototype.getDefinition = function() {
      return this.providedColumnGroup.getColGroupDef();
    };
    ColumnGroup2.prototype.getColGroupDef = function() {
      return this.providedColumnGroup.getColGroupDef();
    };
    ColumnGroup2.prototype.isPadding = function() {
      return this.providedColumnGroup.isPadding();
    };
    ColumnGroup2.prototype.isExpandable = function() {
      return this.providedColumnGroup.isExpandable();
    };
    ColumnGroup2.prototype.isExpanded = function() {
      return this.providedColumnGroup.isExpanded();
    };
    ColumnGroup2.prototype.setExpanded = function(expanded) {
      this.providedColumnGroup.setExpanded(expanded);
    };
    ColumnGroup2.prototype.addDisplayedLeafColumns = function(leafColumns) {
      this.displayedChildren.forEach(function(child) {
        if (child instanceof Column) {
          leafColumns.push(child);
        } else if (child instanceof ColumnGroup2) {
          child.addDisplayedLeafColumns(leafColumns);
        }
      });
    };
    ColumnGroup2.prototype.addLeafColumns = function(leafColumns) {
      this.children.forEach(function(child) {
        if (child instanceof Column) {
          leafColumns.push(child);
        } else if (child instanceof ColumnGroup2) {
          child.addLeafColumns(leafColumns);
        }
      });
    };
    ColumnGroup2.prototype.getChildren = function() {
      return this.children;
    };
    ColumnGroup2.prototype.getColumnGroupShow = function() {
      return this.providedColumnGroup.getColumnGroupShow();
    };
    ColumnGroup2.prototype.getProvidedColumnGroup = function() {
      return this.providedColumnGroup;
    };
    ColumnGroup2.prototype.getOriginalColumnGroup = function() {
      logDeprecation("27", "getOriginalColumnGroup", "getProvidedColumnGroup");
      return this.getProvidedColumnGroup();
    };
    ColumnGroup2.prototype.getPaddingLevel = function() {
      var parent2 = this.getParent();
      if (!this.isPadding() || !parent2 || !parent2.isPadding()) {
        return 0;
      }
      return 1 + parent2.getPaddingLevel();
    };
    ColumnGroup2.prototype.calculateDisplayedColumns = function() {
      var _this = this;
      this.displayedChildren = [];
      var parentWithExpansion = this;
      while (parentWithExpansion != null && parentWithExpansion.isPadding()) {
        parentWithExpansion = parentWithExpansion.getParent();
      }
      var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;
      if (!isExpandable) {
        this.displayedChildren = this.children;
        this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup2.EVENT_DISPLAYED_CHILDREN_CHANGED));
        return;
      }
      this.children.forEach(function(child) {
        var emptyGroup = child instanceof ColumnGroup2 && (!child.displayedChildren || !child.displayedChildren.length);
        if (emptyGroup) {
          return;
        }
        var headerGroupShow = child.getColumnGroupShow();
        switch (headerGroupShow) {
          case "open":
            if (parentWithExpansion.providedColumnGroup.isExpanded()) {
              _this.displayedChildren.push(child);
            }
            break;
          case "closed":
            if (!parentWithExpansion.providedColumnGroup.isExpanded()) {
              _this.displayedChildren.push(child);
            }
            break;
          default:
            _this.displayedChildren.push(child);
            break;
        }
      });
      this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup2.EVENT_DISPLAYED_CHILDREN_CHANGED));
    };
    ColumnGroup2.EVENT_LEFT_CHANGED = "leftChanged";
    ColumnGroup2.EVENT_DISPLAYED_CHILDREN_CHANGED = "displayedChildrenChanged";
    __decorate8([
      Autowired("gridOptionsService")
    ], ColumnGroup2.prototype, "gridOptionsService", void 0);
    return ColumnGroup2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/groupInstanceIdCreator.js
var GroupInstanceIdCreator = (
  /** @class */
  function() {
    function GroupInstanceIdCreator2() {
      this.existingIds = {};
    }
    GroupInstanceIdCreator2.prototype.getInstanceIdForKey = function(key) {
      var lastResult = this.existingIds[key];
      var result;
      if (typeof lastResult !== "number") {
        result = 0;
      } else {
        result = lastResult + 1;
      }
      this.existingIds[key] = result;
      return result;
    };
    return GroupInstanceIdCreator2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/autoGroupColService.js
var __extends2 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate9 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GROUP_AUTO_COLUMN_ID = "ag-Grid-AutoColumn";
var AutoGroupColService = (
  /** @class */
  function(_super) {
    __extends2(AutoGroupColService2, _super);
    function AutoGroupColService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    AutoGroupColService2.prototype.createAutoGroupColumns = function(existingCols, rowGroupColumns) {
      var _this = this;
      var groupAutoColumns = [];
      var doingTreeData = this.gridOptionsService.isTreeData();
      var doingMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();
      if (doingTreeData && doingMultiAutoColumn) {
        console.warn('AG Grid: you cannot mix groupDisplayType = "multipleColumns" with treeData, only one column can be used to display groups when doing tree data');
        doingMultiAutoColumn = false;
      }
      if (doingMultiAutoColumn) {
        rowGroupColumns.forEach(function(rowGroupCol, index) {
          groupAutoColumns.push(_this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));
        });
      } else {
        groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));
      }
      return groupAutoColumns;
    };
    AutoGroupColService2.prototype.createOneAutoGroupColumn = function(existingCols, rowGroupCol, index) {
      var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);
      var colId;
      if (rowGroupCol) {
        colId = GROUP_AUTO_COLUMN_ID + "-" + rowGroupCol.getId();
      } else {
        colId = GROUP_AUTO_COLUMN_ID;
      }
      var userAutoColDef = this.gridOptionsService.get("autoGroupColumnDef");
      mergeDeep(defaultAutoColDef, userAutoColDef);
      defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);
      defaultAutoColDef.colId = colId;
      if (!this.gridOptionsService.isTreeData()) {
        var noFieldOrValueGetter = missing(defaultAutoColDef.field) && missing(defaultAutoColDef.valueGetter) && missing(defaultAutoColDef.filterValueGetter);
        if (noFieldOrValueGetter) {
          defaultAutoColDef.filter = false;
        }
      }
      if (index && index > 0) {
        defaultAutoColDef.headerCheckboxSelection = false;
      }
      var existingCol = existingCols.find(function(col) {
        return col.getId() == colId;
      });
      if (existingCol) {
        existingCol.setColDef(defaultAutoColDef, null);
        this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);
        return existingCol;
      }
      var newCol = new Column(defaultAutoColDef, null, colId, true);
      this.context.createBean(newCol);
      return newCol;
    };
    AutoGroupColService2.prototype.generateDefaultColDef = function(rowGroupCol) {
      var userDef = this.gridOptionsService.get("autoGroupColumnDef");
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      var res = {
        headerName: localeTextFunc("group", "Group")
      };
      var userHasProvidedGroupCellRenderer = userDef && (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);
      if (!userHasProvidedGroupCellRenderer) {
        res.cellRenderer = "agGroupCellRenderer";
      }
      if (rowGroupCol) {
        var colDef = rowGroupCol.getColDef();
        Object.assign(res, {
          // cellRendererParams.groupKey: colDefToCopy.field;
          headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, "header"),
          headerValueGetter: colDef.headerValueGetter
        });
        if (colDef.cellRenderer || colDef.cellRendererFramework) {
          Object.assign(res, {
            cellRendererParams: {
              innerRenderer: colDef.cellRenderer,
              innerRendererFramework: colDef.cellRendererFramework,
              innerRendererParams: colDef.cellRendererParams
            }
          });
        }
        res.showRowGroup = rowGroupCol.getColId();
      } else {
        res.showRowGroup = true;
      }
      return res;
    };
    __decorate9([
      Autowired("columnModel")
    ], AutoGroupColService2.prototype, "columnModel", void 0);
    __decorate9([
      Autowired("columnFactory")
    ], AutoGroupColService2.prototype, "columnFactory", void 0);
    AutoGroupColService2 = __decorate9([
      Bean("autoGroupColService")
    ], AutoGroupColService2);
    return AutoGroupColService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/string.js
var string_exports = {};
__export(string_exports, {
  camelCaseToHumanText: () => camelCaseToHumanText,
  capitalise: () => capitalise,
  escapeString: () => escapeString,
  utf8_encode: () => utf8_encode
});
var reUnescapedHtml = /[&<>"']/g;
var HTML_ESCAPES = {
  "&": "&amp;",
  "<": "&lt;",
  ">": "&gt;",
  '"': "&quot;",
  "'": "&#39;"
};
function utf8_encode(s2) {
  var stringFromCharCode = String.fromCharCode;
  function ucs2decode(string) {
    var output = [];
    if (!string) {
      return [];
    }
    var len = string.length;
    var counter = 0;
    var value;
    var extra;
    while (counter < len) {
      value = string.charCodeAt(counter++);
      if (value >= 55296 && value <= 56319 && counter < len) {
        extra = string.charCodeAt(counter++);
        if ((extra & 64512) == 56320) {
          output.push(((value & 1023) << 10) + (extra & 1023) + 65536);
        } else {
          output.push(value);
          counter--;
        }
      } else {
        output.push(value);
      }
    }
    return output;
  }
  function checkScalarValue(point) {
    if (point >= 55296 && point <= 57343) {
      throw Error("Lone surrogate U+" + point.toString(16).toUpperCase() + " is not a scalar value");
    }
  }
  function createByte(point, shift) {
    return stringFromCharCode(point >> shift & 63 | 128);
  }
  function encodeCodePoint(point) {
    if (point >= 0 && point <= 31 && point !== 10) {
      var convertedCode = point.toString(16).toUpperCase();
      var paddedCode = convertedCode.padStart(4, "0");
      return "_x" + paddedCode + "_";
    }
    if ((point & 4294967168) == 0) {
      return stringFromCharCode(point);
    }
    var symbol = "";
    if ((point & 4294965248) == 0) {
      symbol = stringFromCharCode(point >> 6 & 31 | 192);
    } else if ((point & 4294901760) == 0) {
      checkScalarValue(point);
      symbol = stringFromCharCode(point >> 12 & 15 | 224);
      symbol += createByte(point, 6);
    } else if ((point & 4292870144) == 0) {
      symbol = stringFromCharCode(point >> 18 & 7 | 240);
      symbol += createByte(point, 12);
      symbol += createByte(point, 6);
    }
    symbol += stringFromCharCode(point & 63 | 128);
    return symbol;
  }
  var codePoints = ucs2decode(s2);
  var length = codePoints.length;
  var index = -1;
  var codePoint;
  var byteString = "";
  while (++index < length) {
    codePoint = codePoints[index];
    byteString += encodeCodePoint(codePoint);
  }
  return byteString;
}
function capitalise(str) {
  return str[0].toUpperCase() + str.substr(1).toLowerCase();
}
function escapeString(toEscape, skipEscapingHtmlChars) {
  if (toEscape == null) {
    return null;
  }
  var stringResult = toEscape.toString().toString();
  if (skipEscapingHtmlChars) {
    return stringResult;
  }
  return stringResult.replace(reUnescapedHtml, function(chr) {
    return HTML_ESCAPES[chr];
  });
}
function camelCaseToHumanText(camelCase) {
  if (!camelCase || camelCase == null) {
    return null;
  }
  var rex = /([a-z])([A-Z])/g;
  var rexCaps = /([A-Z]+)([A-Z])([a-z])/g;
  var words = camelCase.replace(rex, "$1 $2").replace(rexCaps, "$1 $2$3").replace(/\./g, " ").split(" ");
  return words.map(function(word) {
    return word.substring(0, 1).toUpperCase() + (word.length > 1 ? word.substring(1, word.length) : "");
  }).join(" ");
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/map.js
var map_exports = {};
__export(map_exports, {
  convertToMap: () => convertToMap,
  keys: () => keys2,
  mapById: () => mapById
});
function convertToMap(arr) {
  var map2 = /* @__PURE__ */ new Map();
  arr.forEach(function(pair) {
    return map2.set(pair[0], pair[1]);
  });
  return map2;
}
function mapById(arr, callback) {
  var map2 = /* @__PURE__ */ new Map();
  arr.forEach(function(item) {
    return map2.set(callback(item), item);
  });
  return map2;
}
function keys2(map2) {
  var arr = [];
  map2.forEach(function(_3, key) {
    return arr.push(key);
  });
  return arr;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnModel.js
var __extends3 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate10 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param3 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var __rest = function(s2, e2) {
  var t2 = {};
  for (var p2 in s2)
    if (Object.prototype.hasOwnProperty.call(s2, p2) && e2.indexOf(p2) < 0)
      t2[p2] = s2[p2];
  if (s2 != null && typeof Object.getOwnPropertySymbols === "function")
    for (var i2 = 0, p2 = Object.getOwnPropertySymbols(s2); i2 < p2.length; i2++) {
      if (e2.indexOf(p2[i2]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p2[i2]))
        t2[p2[i2]] = s2[p2[i2]];
    }
  return t2;
};
var __values = function(o2) {
  var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0;
  if (m2)
    return m2.call(o2);
  if (o2 && typeof o2.length === "number")
    return {
      next: function() {
        if (o2 && i2 >= o2.length)
          o2 = void 0;
        return { value: o2 && o2[i2++], done: !o2 };
      }
    };
  throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read6 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread5 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read6(arguments[i2]));
  return ar;
};
var ColumnModel = (
  /** @class */
  function(_super) {
    __extends3(ColumnModel2, _super);
    function ColumnModel2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.primaryHeaderRowCount = 0;
      _this.secondaryHeaderRowCount = 0;
      _this.gridHeaderRowCount = 0;
      _this.displayedColumnsLeft = [];
      _this.displayedColumnsRight = [];
      _this.displayedColumnsCenter = [];
      _this.displayedColumns = [];
      _this.displayedColumnsAndGroupsMap = {};
      _this.viewportColumns = [];
      _this.viewportColumnsHash = "";
      _this.headerViewportColumns = [];
      _this.viewportColumnsCenter = [];
      _this.headerViewportColumnsCenter = [];
      _this.autoHeightActiveAtLeastOnce = false;
      _this.rowGroupColumns = [];
      _this.valueColumns = [];
      _this.pivotColumns = [];
      _this.ready = false;
      _this.autoGroupsNeedBuilding = false;
      _this.forceRecreateAutoGroups = false;
      _this.pivotMode = false;
      _this.bodyWidth = 0;
      _this.leftWidth = 0;
      _this.rightWidth = 0;
      _this.bodyWidthDirty = true;
      _this.flexColsCalculatedAtLestOnce = false;
      return _this;
    }
    ColumnModel2.prototype.init = function() {
      var _this = this;
      this.suppressColumnVirtualisation = this.gridOptionsService.is("suppressColumnVirtualisation");
      var pivotMode = this.gridOptionsService.is("pivotMode");
      if (this.isPivotSettingAllowed(pivotMode)) {
        this.pivotMode = pivotMode;
      }
      this.usingTreeData = this.gridOptionsService.isTreeData();
      this.addManagedPropertyListener("groupDisplayType", function() {
        return _this.onAutoGroupColumnDefChanged();
      });
      this.addManagedPropertyListener("autoGroupColumnDef", function() {
        return _this.onAutoGroupColumnDefChanged();
      });
      this.addManagedPropertyListener("defaultColDef", function(params) {
        return _this.onDefaultColDefChanged(params.source);
      });
    };
    ColumnModel2.prototype.onAutoGroupColumnDefChanged = function() {
      this.autoGroupsNeedBuilding = true;
      this.forceRecreateAutoGroups = true;
      this.updateGridColumns();
      this.updateDisplayedColumns("gridOptionsChanged");
    };
    ColumnModel2.prototype.onDefaultColDefChanged = function(source) {
      if (source === void 0) {
        source = "api";
      }
      this.forceRecreateAutoGroups = true;
      this.createColumnsFromColumnDefs(true, source);
    };
    ColumnModel2.prototype.setColumnDefs = function(columnDefs, source) {
      if (source === void 0) {
        source = "api";
      }
      var colsPreviouslyExisted = !!this.columnDefs;
      this.columnDefs = columnDefs;
      this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);
    };
    ColumnModel2.prototype.destroyOldColumns = function(oldTree, newTree) {
      var oldObjectsById = {};
      if (!oldTree) {
        return;
      }
      this.columnUtils.depthFirstOriginalTreeSearch(null, oldTree, function(child) {
        oldObjectsById[child.getInstanceId()] = child;
      });
      if (newTree) {
        this.columnUtils.depthFirstOriginalTreeSearch(null, newTree, function(child) {
          oldObjectsById[child.getInstanceId()] = null;
        });
      }
      var colsToDestroy = Object.values(oldObjectsById).filter(function(item) {
        return item != null;
      });
      this.destroyBeans(colsToDestroy);
    };
    ColumnModel2.prototype.destroyColumns = function() {
      this.destroyOldColumns(this.primaryColumnTree);
      this.destroyOldColumns(this.secondaryBalancedTree);
      this.destroyOldColumns(this.groupAutoColsBalancedTree);
    };
    ColumnModel2.prototype.createColumnsFromColumnDefs = function(colsPreviouslyExisted, source) {
      var _this = this;
      if (source === void 0) {
        source = "api";
      }
      var dispatchEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndDispatchEvents(source) : void 0;
      this.valueCache.expire();
      this.autoGroupsNeedBuilding = true;
      var oldPrimaryColumns = this.primaryColumns;
      var oldPrimaryTree = this.primaryColumnTree;
      var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);
      this.destroyOldColumns(this.primaryColumnTree, balancedTreeResult.columnTree);
      this.primaryColumnTree = balancedTreeResult.columnTree;
      this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;
      this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);
      this.primaryColumnsMap = {};
      this.primaryColumns.forEach(function(col) {
        return _this.primaryColumnsMap[col.getId()] = col;
      });
      this.extractRowGroupColumns(source, oldPrimaryColumns);
      this.extractPivotColumns(source, oldPrimaryColumns);
      this.extractValueColumns(source, oldPrimaryColumns);
      this.ready = true;
      var gridColsNotProcessed = this.gridColsArePrimary === void 0;
      var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;
      if (processGridCols) {
        this.updateGridColumns();
        if (colsPreviouslyExisted && !this.gridOptionsService.is("maintainColumnOrder")) {
          this.orderGridColumnsLikePrimary();
        }
        this.updateDisplayedColumns(source);
        this.checkViewportColumns();
      }
      this.dispatchEverythingChanged(source);
      if (dispatchEventsFunc) {
        dispatchEventsFunc();
      }
      this.dispatchNewColumnsLoaded();
    };
    ColumnModel2.prototype.dispatchNewColumnsLoaded = function() {
      var newColumnsLoadedEvent = {
        type: Events.EVENT_NEW_COLUMNS_LOADED
      };
      this.eventService.dispatchEvent(newColumnsLoadedEvent);
    };
    ColumnModel2.prototype.dispatchEverythingChanged = function(source) {
      if (source === void 0) {
        source = "api";
      }
      var eventEverythingChanged = {
        type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,
        source
      };
      this.eventService.dispatchEvent(eventEverythingChanged);
    };
    ColumnModel2.prototype.orderGridColumnsLikePrimary = function() {
      var _this = this;
      var primaryColumns = this.primaryColumns;
      if (!primaryColumns) {
        return;
      }
      this.gridColumns.sort(function(colA, colB) {
        var primaryIndexA = primaryColumns.indexOf(colA);
        var primaryIndexB = primaryColumns.indexOf(colB);
        var indexAPresent = primaryIndexA >= 0;
        var indexBPresent = primaryIndexB >= 0;
        if (indexAPresent && indexBPresent) {
          return primaryIndexA - primaryIndexB;
        }
        if (indexAPresent) {
          return 1;
        }
        if (indexBPresent) {
          return -1;
        }
        var gridIndexA = _this.gridColumns.indexOf(colA);
        var gridIndexB = _this.gridColumns.indexOf(colB);
        return gridIndexA - gridIndexB;
      });
      this.gridColumns = this.placeLockedColumns(this.gridColumns);
    };
    ColumnModel2.prototype.getAllDisplayedAutoHeightCols = function() {
      return this.displayedAutoHeightCols;
    };
    ColumnModel2.prototype.setViewport = function() {
      if (this.gridOptionsService.is("enableRtl")) {
        this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;
        this.viewportRight = this.bodyWidth - this.scrollPosition;
      } else {
        this.viewportLeft = this.scrollPosition;
        this.viewportRight = this.scrollWidth + this.scrollPosition;
      }
    };
    ColumnModel2.prototype.getDisplayedColumnsStartingAt = function(column) {
      var currentColumn = column;
      var columns = [];
      while (currentColumn != null) {
        columns.push(currentColumn);
        currentColumn = this.getDisplayedColAfter(currentColumn);
      }
      return columns;
    };
    ColumnModel2.prototype.checkViewportColumns = function() {
      if (this.displayedColumnsCenter == null) {
        return;
      }
      var viewportColumnsChanged = this.extractViewport();
      if (!viewportColumnsChanged) {
        return;
      }
      var event = {
        type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.setViewportPosition = function(scrollWidth, scrollPosition) {
      if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {
        this.scrollWidth = scrollWidth;
        this.scrollPosition = scrollPosition;
        this.bodyWidthDirty = true;
        this.setViewport();
        if (this.ready) {
          this.checkViewportColumns();
        }
      }
    };
    ColumnModel2.prototype.isPivotMode = function() {
      return this.pivotMode;
    };
    ColumnModel2.prototype.isPivotSettingAllowed = function(pivot) {
      if (pivot && this.gridOptionsService.isTreeData()) {
        console.warn("AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'");
        return false;
      }
      return true;
    };
    ColumnModel2.prototype.setPivotMode = function(pivotMode, source) {
      if (source === void 0) {
        source = "api";
      }
      if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {
        return;
      }
      this.pivotMode = pivotMode;
      this.autoGroupsNeedBuilding = true;
      this.updateGridColumns();
      this.updateDisplayedColumns(source);
      var event = {
        type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.getSecondaryPivotColumn = function(pivotKeys, valueColKey) {
      if (missing(this.secondaryColumns)) {
        return null;
      }
      var valueColumnToFind = this.getPrimaryColumn(valueColKey);
      var foundColumn = null;
      this.secondaryColumns.forEach(function(column) {
        var thisPivotKeys = column.getColDef().pivotKeys;
        var pivotValueColumn = column.getColDef().pivotValueColumn;
        var pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);
        var pivotValueMatches = pivotValueColumn === valueColumnToFind;
        if (pivotKeyMatches && pivotValueMatches) {
          foundColumn = column;
        }
      });
      return foundColumn;
    };
    ColumnModel2.prototype.setBeans = function(loggerFactory) {
      this.logger = loggerFactory.create("columnModel");
    };
    ColumnModel2.prototype.setFirstRightAndLastLeftPinned = function(source) {
      var lastLeft;
      var firstRight;
      if (this.gridOptionsService.is("enableRtl")) {
        lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;
        firstRight = this.displayedColumnsRight ? last(this.displayedColumnsRight) : null;
      } else {
        lastLeft = this.displayedColumnsLeft ? last(this.displayedColumnsLeft) : null;
        firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;
      }
      this.gridColumns.forEach(function(column) {
        column.setLastLeftPinned(column === lastLeft, source);
        column.setFirstRightPinned(column === firstRight, source);
      });
    };
    ColumnModel2.prototype.autoSizeColumns = function(params) {
      var _this = this;
      var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a47 = params.source, source = _a47 === void 0 ? "api" : _a47;
      this.animationFrameService.flushAllFrames();
      var columnsAutosized = [];
      var changesThisTimeAround = -1;
      var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsService.is("skipHeaderOnAutoSize");
      var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;
      while (changesThisTimeAround !== 0) {
        changesThisTimeAround = 0;
        this.actionOnGridColumns(columns, function(column) {
          if (columnsAutosized.indexOf(column) >= 0) {
            return false;
          }
          var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);
          if (preferredWidth > 0) {
            var newWidth = _this.normaliseColumnWidth(column, preferredWidth);
            column.setActualWidth(newWidth, source);
            columnsAutosized.push(column);
            changesThisTimeAround++;
          }
          return true;
        }, source);
      }
      if (!shouldSkipHeaderGroups) {
        this.autoSizeColumnGroupsByColumns(columns, stopAtGroup);
      }
      this.dispatchColumnResizedEvent(columnsAutosized, true, "autosizeColumns");
    };
    ColumnModel2.prototype.dispatchColumnResizedEvent = function(columns, finished, source, flexColumns) {
      if (flexColumns === void 0) {
        flexColumns = null;
      }
      if (columns && columns.length) {
        var event_1 = {
          type: Events.EVENT_COLUMN_RESIZED,
          columns,
          column: columns.length === 1 ? columns[0] : null,
          flexColumns,
          finished,
          source
        };
        this.eventService.dispatchEvent(event_1);
      }
    };
    ColumnModel2.prototype.dispatchColumnChangedEvent = function(type2, columns, source) {
      var event = {
        type: type2,
        columns,
        column: columns && columns.length == 1 ? columns[0] : null,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.dispatchColumnMovedEvent = function(params) {
      var movedColumns = params.movedColumns, source = params.source, toIndex = params.toIndex, finished = params.finished;
      var event = {
        type: Events.EVENT_COLUMN_MOVED,
        columns: movedColumns,
        column: movedColumns && movedColumns.length === 1 ? movedColumns[0] : null,
        toIndex,
        finished,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.dispatchColumnPinnedEvent = function(changedColumns, source) {
      if (!changedColumns.length) {
        return;
      }
      var column = changedColumns.length === 1 ? changedColumns[0] : null;
      var pinned = this.getCommonValue(changedColumns, function(col) {
        return col.getPinned();
      });
      var event = {
        type: Events.EVENT_COLUMN_PINNED,
        // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'
        pinned: pinned != null ? pinned : null,
        columns: changedColumns,
        column,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.dispatchColumnVisibleEvent = function(changedColumns, source) {
      if (!changedColumns.length) {
        return;
      }
      var column = changedColumns.length === 1 ? changedColumns[0] : null;
      var visible = this.getCommonValue(changedColumns, function(col) {
        return col.isVisible();
      });
      var event = {
        type: Events.EVENT_COLUMN_VISIBLE,
        visible,
        columns: changedColumns,
        column,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.autoSizeColumn = function(key, skipHeader, source) {
      if (source === void 0) {
        source = "api";
      }
      if (key) {
        this.autoSizeColumns({ columns: [key], skipHeader, skipHeaderGroups: true, source });
      }
    };
    ColumnModel2.prototype.autoSizeColumnGroupsByColumns = function(keys3, stopAtGroup) {
      var e_1, _a47, e_2, _b;
      var columnGroups = /* @__PURE__ */ new Set();
      var columns = this.getGridColumns(keys3);
      columns.forEach(function(col) {
        var parent2 = col.getParent();
        while (parent2 && parent2 != stopAtGroup) {
          if (!parent2.isPadding()) {
            columnGroups.add(parent2);
          }
          parent2 = parent2.getParent();
        }
      });
      var headerGroupCtrl;
      var resizedColumns = [];
      try {
        for (var columnGroups_1 = __values(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {
          var columnGroup = columnGroups_1_1.value;
          try {
            for (var _c = (e_2 = void 0, __values(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {
              var headerContainerCtrl = _d.value;
              headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);
              if (headerGroupCtrl) {
                break;
              }
            }
          } catch (e_2_1) {
            e_2 = { error: e_2_1 };
          } finally {
            try {
              if (_d && !_d.done && (_b = _c.return))
                _b.call(_c);
            } finally {
              if (e_2)
                throw e_2.error;
            }
          }
          if (headerGroupCtrl) {
            headerGroupCtrl.resizeLeafColumnsToFit();
          }
        }
      } catch (e_1_1) {
        e_1 = { error: e_1_1 };
      } finally {
        try {
          if (columnGroups_1_1 && !columnGroups_1_1.done && (_a47 = columnGroups_1.return))
            _a47.call(columnGroups_1);
        } finally {
          if (e_1)
            throw e_1.error;
        }
      }
      return resizedColumns;
    };
    ColumnModel2.prototype.autoSizeAllColumns = function(skipHeader, source) {
      if (source === void 0) {
        source = "api";
      }
      var allDisplayedColumns = this.getAllDisplayedColumns();
      this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader, source });
    };
    ColumnModel2.prototype.getColumnsFromTree = function(rootColumns) {
      var result = [];
      var recursiveFindColumns = function(childColumns) {
        for (var i2 = 0; i2 < childColumns.length; i2++) {
          var child = childColumns[i2];
          if (child instanceof Column) {
            result.push(child);
          } else if (child instanceof ProvidedColumnGroup) {
            recursiveFindColumns(child.getChildren());
          }
        }
      };
      recursiveFindColumns(rootColumns);
      return result;
    };
    ColumnModel2.prototype.getAllDisplayedTrees = function() {
      if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {
        return this.displayedTreeLeft.concat(this.displayedTreeCentre).concat(this.displayedTreeRight);
      }
      return null;
    };
    ColumnModel2.prototype.getPrimaryColumnTree = function() {
      return this.primaryColumnTree;
    };
    ColumnModel2.prototype.getHeaderRowCount = function() {
      return this.gridHeaderRowCount;
    };
    ColumnModel2.prototype.getDisplayedTreeLeft = function() {
      return this.displayedTreeLeft;
    };
    ColumnModel2.prototype.getDisplayedTreeRight = function() {
      return this.displayedTreeRight;
    };
    ColumnModel2.prototype.getDisplayedTreeCentre = function() {
      return this.displayedTreeCentre;
    };
    ColumnModel2.prototype.isColumnDisplayed = function(column) {
      return this.getAllDisplayedColumns().indexOf(column) >= 0;
    };
    ColumnModel2.prototype.getAllDisplayedColumns = function() {
      return this.displayedColumns;
    };
    ColumnModel2.prototype.getViewportColumns = function() {
      return this.viewportColumns;
    };
    ColumnModel2.prototype.getDisplayedLeftColumnsForRow = function(rowNode) {
      if (!this.colSpanActive) {
        return this.displayedColumnsLeft;
      }
      return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);
    };
    ColumnModel2.prototype.getDisplayedRightColumnsForRow = function(rowNode) {
      if (!this.colSpanActive) {
        return this.displayedColumnsRight;
      }
      return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);
    };
    ColumnModel2.prototype.getDisplayedColumnsForRow = function(rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {
      var result = [];
      var lastConsideredCol = null;
      var _loop_1 = function(i3) {
        var col = displayedColumns[i3];
        var maxAllowedColSpan = displayedColumns.length - i3;
        var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);
        var columnsToCheckFilter = [col];
        if (colSpan > 1) {
          var colsToRemove = colSpan - 1;
          for (var j2 = 1; j2 <= colsToRemove; j2++) {
            columnsToCheckFilter.push(displayedColumns[i3 + j2]);
          }
          i3 += colsToRemove;
        }
        var filterPasses;
        if (filterCallback) {
          filterPasses = false;
          columnsToCheckFilter.forEach(function(colForFilter) {
            if (filterCallback(colForFilter)) {
              filterPasses = true;
            }
          });
        } else {
          filterPasses = true;
        }
        if (filterPasses) {
          if (result.length === 0 && lastConsideredCol) {
            var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;
            if (gapBeforeColumn) {
              result.push(lastConsideredCol);
            }
          }
          result.push(col);
        }
        lastConsideredCol = col;
        out_i_1 = i3;
      };
      var out_i_1;
      for (var i2 = 0; i2 < displayedColumns.length; i2++) {
        _loop_1(i2);
        i2 = out_i_1;
      }
      return result;
    };
    ColumnModel2.prototype.getViewportCenterColumnsForRow = function(rowNode) {
      var _this = this;
      if (!this.colSpanActive) {
        return this.viewportColumnsCenter;
      }
      var emptySpaceBeforeColumn = function(col) {
        var left = col.getLeft();
        return exists(left) && left > _this.viewportLeft;
      };
      var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInRowViewport.bind(this);
      return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);
    };
    ColumnModel2.prototype.getAriaColumnIndex = function(col) {
      return this.getAllGridColumns().indexOf(col) + 1;
    };
    ColumnModel2.prototype.isColumnInHeaderViewport = function(col) {
      if (col.isAutoHeaderHeight()) {
        return true;
      }
      return this.isColumnInRowViewport(col);
    };
    ColumnModel2.prototype.isColumnInRowViewport = function(col) {
      if (col.isAutoHeight()) {
        return true;
      }
      var columnLeft = col.getLeft() || 0;
      var columnRight = columnLeft + col.getActualWidth();
      var leftBounds = this.viewportLeft - 200;
      var rightBounds = this.viewportRight + 200;
      var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;
      var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;
      return !columnToMuchLeft && !columnToMuchRight;
    };
    ColumnModel2.prototype.getDisplayedColumnsLeftWidth = function() {
      return this.getWidthOfColsInList(this.displayedColumnsLeft);
    };
    ColumnModel2.prototype.getDisplayedColumnsRightWidth = function() {
      return this.getWidthOfColsInList(this.displayedColumnsRight);
    };
    ColumnModel2.prototype.updatePrimaryColumnList = function(keys3, masterList, actionIsAdd, columnCallback, eventType, source) {
      var _this = this;
      if (source === void 0) {
        source = "api";
      }
      if (!keys3 || missingOrEmpty(keys3)) {
        return;
      }
      var atLeastOne = false;
      keys3.forEach(function(key) {
        var columnToAdd = _this.getPrimaryColumn(key);
        if (!columnToAdd) {
          return;
        }
        if (actionIsAdd) {
          if (masterList.indexOf(columnToAdd) >= 0) {
            return;
          }
          masterList.push(columnToAdd);
        } else {
          if (masterList.indexOf(columnToAdd) < 0) {
            return;
          }
          removeFromArray(masterList, columnToAdd);
        }
        columnCallback(columnToAdd);
        atLeastOne = true;
      });
      if (!atLeastOne) {
        return;
      }
      if (this.autoGroupsNeedBuilding) {
        this.updateGridColumns();
      }
      this.updateDisplayedColumns(source);
      var event = {
        type: eventType,
        columns: masterList,
        column: masterList.length === 1 ? masterList[0] : null,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.setRowGroupColumns = function(colKeys, source) {
      if (source === void 0) {
        source = "api";
      }
      this.autoGroupsNeedBuilding = true;
      this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);
    };
    ColumnModel2.prototype.setRowGroupActive = function(active, column, source) {
      if (active === column.isRowGroupActive()) {
        return;
      }
      column.setRowGroupActive(active, source);
      if (active && !this.gridOptionsService.is("suppressRowGroupHidesColumns")) {
        this.setColumnVisible(column, false, source);
      }
      if (!active && !this.gridOptionsService.is("suppressMakeColumnVisibleAfterUnGroup")) {
        this.setColumnVisible(column, true, source);
      }
    };
    ColumnModel2.prototype.addRowGroupColumn = function(key, source) {
      if (source === void 0) {
        source = "api";
      }
      if (key) {
        this.addRowGroupColumns([key], source);
      }
    };
    ColumnModel2.prototype.addRowGroupColumns = function(keys3, source) {
      if (source === void 0) {
        source = "api";
      }
      this.autoGroupsNeedBuilding = true;
      this.updatePrimaryColumnList(keys3, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);
    };
    ColumnModel2.prototype.removeRowGroupColumns = function(keys3, source) {
      if (source === void 0) {
        source = "api";
      }
      this.autoGroupsNeedBuilding = true;
      this.updatePrimaryColumnList(keys3, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);
    };
    ColumnModel2.prototype.removeRowGroupColumn = function(key, source) {
      if (source === void 0) {
        source = "api";
      }
      if (key) {
        this.removeRowGroupColumns([key], source);
      }
    };
    ColumnModel2.prototype.addPivotColumns = function(keys3, source) {
      if (source === void 0) {
        source = "api";
      }
      this.updatePrimaryColumnList(keys3, this.pivotColumns, true, function(column) {
        return column.setPivotActive(true, source);
      }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);
    };
    ColumnModel2.prototype.setPivotColumns = function(colKeys, source) {
      if (source === void 0) {
        source = "api";
      }
      this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function(added, column) {
        column.setPivotActive(added, source);
      }, source);
    };
    ColumnModel2.prototype.addPivotColumn = function(key, source) {
      if (source === void 0) {
        source = "api";
      }
      this.addPivotColumns([key], source);
    };
    ColumnModel2.prototype.removePivotColumns = function(keys3, source) {
      if (source === void 0) {
        source = "api";
      }
      this.updatePrimaryColumnList(keys3, this.pivotColumns, false, function(column) {
        return column.setPivotActive(false, source);
      }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);
    };
    ColumnModel2.prototype.removePivotColumn = function(key, source) {
      if (source === void 0) {
        source = "api";
      }
      this.removePivotColumns([key], source);
    };
    ColumnModel2.prototype.setPrimaryColumnList = function(colKeys, masterList, eventName, columnCallback, source) {
      var _this = this;
      masterList.length = 0;
      if (exists(colKeys)) {
        colKeys.forEach(function(key) {
          var column = _this.getPrimaryColumn(key);
          if (column) {
            masterList.push(column);
          }
        });
      }
      (this.primaryColumns || []).forEach(function(column) {
        var added = masterList.indexOf(column) >= 0;
        columnCallback(added, column);
      });
      if (this.autoGroupsNeedBuilding) {
        this.updateGridColumns();
      }
      this.updateDisplayedColumns(source);
      this.dispatchColumnChangedEvent(eventName, masterList, source);
    };
    ColumnModel2.prototype.setValueColumns = function(colKeys, source) {
      if (source === void 0) {
        source = "api";
      }
      this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);
    };
    ColumnModel2.prototype.setValueActive = function(active, column, source) {
      if (active === column.isValueActive()) {
        return;
      }
      column.setValueActive(active, source);
      if (active && !column.getAggFunc()) {
        var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);
        column.setAggFunc(initialAggFunc);
      }
    };
    ColumnModel2.prototype.addValueColumns = function(keys3, source) {
      if (source === void 0) {
        source = "api";
      }
      this.updatePrimaryColumnList(keys3, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);
    };
    ColumnModel2.prototype.addValueColumn = function(colKey, source) {
      if (source === void 0) {
        source = "api";
      }
      if (colKey) {
        this.addValueColumns([colKey], source);
      }
    };
    ColumnModel2.prototype.removeValueColumn = function(colKey, source) {
      if (source === void 0) {
        source = "api";
      }
      this.removeValueColumns([colKey], source);
    };
    ColumnModel2.prototype.removeValueColumns = function(keys3, source) {
      if (source === void 0) {
        source = "api";
      }
      this.updatePrimaryColumnList(keys3, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);
    };
    ColumnModel2.prototype.normaliseColumnWidth = function(column, newWidth) {
      var minWidth = column.getMinWidth();
      if (exists(minWidth) && newWidth < minWidth) {
        newWidth = minWidth;
      }
      var maxWidth = column.getMaxWidth();
      if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {
        newWidth = maxWidth;
      }
      return newWidth;
    };
    ColumnModel2.prototype.getPrimaryOrGridColumn = function(key) {
      var column = this.getPrimaryColumn(key);
      return column || this.getGridColumn(key);
    };
    ColumnModel2.prototype.setColumnWidths = function(columnWidths, shiftKey, finished, source) {
      var _this = this;
      if (source === void 0) {
        source = "api";
      }
      var sets = [];
      columnWidths.forEach(function(columnWidth) {
        var col = _this.getPrimaryOrGridColumn(columnWidth.key);
        if (!col) {
          return;
        }
        sets.push({
          width: columnWidth.newWidth,
          ratios: [1],
          columns: [col]
        });
        var defaultIsShift = _this.gridOptionsService.get("colResizeDefault") === "shift";
        if (defaultIsShift) {
          shiftKey = !shiftKey;
        }
        if (shiftKey) {
          var otherCol = _this.getDisplayedColAfter(col);
          if (!otherCol) {
            return;
          }
          var widthDiff = col.getActualWidth() - columnWidth.newWidth;
          var otherColWidth = otherCol.getActualWidth() + widthDiff;
          sets.push({
            width: otherColWidth,
            ratios: [1],
            columns: [otherCol]
          });
        }
      });
      if (sets.length === 0) {
        return;
      }
      this.resizeColumnSets({
        resizeSets: sets,
        finished,
        source
      });
    };
    ColumnModel2.prototype.checkMinAndMaxWidthsForSet = function(columnResizeSet) {
      var columns = columnResizeSet.columns, width = columnResizeSet.width;
      var minWidthAccumulated = 0;
      var maxWidthAccumulated = 0;
      var maxWidthActive = true;
      columns.forEach(function(col) {
        var minWidth = col.getMinWidth();
        minWidthAccumulated += minWidth || 0;
        var maxWidth = col.getMaxWidth();
        if (exists(maxWidth) && maxWidth > 0) {
          maxWidthAccumulated += maxWidth;
        } else {
          maxWidthActive = false;
        }
      });
      var minWidthPasses = width >= minWidthAccumulated;
      var maxWidthPasses = !maxWidthActive || width <= maxWidthAccumulated;
      return minWidthPasses && maxWidthPasses;
    };
    ColumnModel2.prototype.resizeColumnSets = function(params) {
      var _this = this;
      var resizeSets = params.resizeSets, finished = params.finished, source = params.source;
      var passMinMaxCheck = !resizeSets || resizeSets.every(function(columnResizeSet) {
        return _this.checkMinAndMaxWidthsForSet(columnResizeSet);
      });
      if (!passMinMaxCheck) {
        if (finished) {
          var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;
          this.dispatchColumnResizedEvent(columns, finished, source);
        }
        return;
      }
      var changedCols = [];
      var allResizedCols = [];
      resizeSets.forEach(function(set2) {
        var width = set2.width, columns2 = set2.columns, ratios = set2.ratios;
        var newWidths = {};
        var finishedCols = {};
        columns2.forEach(function(col) {
          return allResizedCols.push(col);
        });
        var finishedColsGrew = true;
        var loopCount = 0;
        var _loop_2 = function() {
          loopCount++;
          if (loopCount > 1e3) {
            console.error("AG Grid: infinite loop in resizeColumnSets");
            return "break";
          }
          finishedColsGrew = false;
          var subsetCols = [];
          var subsetRatioTotal = 0;
          var pixelsToDistribute = width;
          columns2.forEach(function(col, index) {
            var thisColFinished = finishedCols[col.getId()];
            if (thisColFinished) {
              pixelsToDistribute -= newWidths[col.getId()];
            } else {
              subsetCols.push(col);
              var ratioThisCol = ratios[index];
              subsetRatioTotal += ratioThisCol;
            }
          });
          var ratioScale = 1 / subsetRatioTotal;
          subsetCols.forEach(function(col, index) {
            var lastCol = index === subsetCols.length - 1;
            var colNewWidth;
            if (lastCol) {
              colNewWidth = pixelsToDistribute;
            } else {
              colNewWidth = Math.round(ratios[index] * width * ratioScale);
              pixelsToDistribute -= colNewWidth;
            }
            var minWidth = col.getMinWidth();
            var maxWidth = col.getMaxWidth();
            if (exists(minWidth) && colNewWidth < minWidth) {
              colNewWidth = minWidth;
              finishedCols[col.getId()] = true;
              finishedColsGrew = true;
            } else if (exists(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {
              colNewWidth = maxWidth;
              finishedCols[col.getId()] = true;
              finishedColsGrew = true;
            }
            newWidths[col.getId()] = colNewWidth;
          });
        };
        while (finishedColsGrew) {
          var state_1 = _loop_2();
          if (state_1 === "break")
            break;
        }
        columns2.forEach(function(col) {
          var newWidth = newWidths[col.getId()];
          var actualWidth = col.getActualWidth();
          if (actualWidth !== newWidth) {
            col.setActualWidth(newWidth, source);
            changedCols.push(col);
          }
        });
      });
      var atLeastOneColChanged = changedCols.length > 0;
      var flexedCols = [];
      if (atLeastOneColChanged) {
        flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });
        this.setLeftValues(source);
        this.updateBodyWidths();
        this.checkViewportColumns();
      }
      var colsForEvent = allResizedCols.concat(flexedCols);
      if (atLeastOneColChanged || finished) {
        this.dispatchColumnResizedEvent(colsForEvent, finished, source, flexedCols);
      }
    };
    ColumnModel2.prototype.setColumnAggFunc = function(key, aggFunc, source) {
      if (source === void 0) {
        source = "api";
      }
      if (!key) {
        return;
      }
      var column = this.getPrimaryColumn(key);
      if (!column) {
        return;
      }
      column.setAggFunc(aggFunc);
      this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, [column], source);
    };
    ColumnModel2.prototype.moveRowGroupColumn = function(fromIndex, toIndex, source) {
      if (source === void 0) {
        source = "api";
      }
      var column = this.rowGroupColumns[fromIndex];
      this.rowGroupColumns.splice(fromIndex, 1);
      this.rowGroupColumns.splice(toIndex, 0, column);
      var event = {
        type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,
        columns: this.rowGroupColumns,
        column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.moveColumns = function(columnsToMoveKeys, toIndex, source, finished) {
      if (source === void 0) {
        source = "api";
      }
      if (finished === void 0) {
        finished = true;
      }
      this.columnAnimationService.start();
      if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {
        console.warn("AG Grid: tried to insert columns in invalid location, toIndex = " + toIndex);
        console.warn("AG Grid: remember that you should not count the moving columns when calculating the new index");
        return;
      }
      var movedColumns = this.getGridColumns(columnsToMoveKeys);
      var failedRules = !this.doesMovePassRules(movedColumns, toIndex);
      if (failedRules) {
        return;
      }
      moveInArray(this.gridColumns, movedColumns, toIndex);
      this.updateDisplayedColumns(source);
      this.dispatchColumnMovedEvent({ movedColumns, source, toIndex, finished });
      this.columnAnimationService.finish();
    };
    ColumnModel2.prototype.doesMovePassRules = function(columnsToMove, toIndex) {
      var proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);
      return this.doesOrderPassRules(proposedColumnOrder);
    };
    ColumnModel2.prototype.doesOrderPassRules = function(gridOrder) {
      if (!this.doesMovePassMarryChildren(gridOrder)) {
        return false;
      }
      if (!this.doesMovePassLockedPositions(gridOrder)) {
        return false;
      }
      return true;
    };
    ColumnModel2.prototype.getProposedColumnOrder = function(columnsToMove, toIndex) {
      var proposedColumnOrder = this.gridColumns.slice();
      moveInArray(proposedColumnOrder, columnsToMove, toIndex);
      return proposedColumnOrder;
    };
    ColumnModel2.prototype.sortColumnsLikeGridColumns = function(cols) {
      var _this = this;
      if (!cols || cols.length <= 1) {
        return;
      }
      var notAllColsInGridColumns = cols.filter(function(c2) {
        return _this.gridColumns.indexOf(c2) < 0;
      }).length > 0;
      if (notAllColsInGridColumns) {
        return;
      }
      cols.sort(function(a2, b2) {
        var indexA = _this.gridColumns.indexOf(a2);
        var indexB = _this.gridColumns.indexOf(b2);
        return indexA - indexB;
      });
    };
    ColumnModel2.prototype.doesMovePassLockedPositions = function(proposedColumnOrder) {
      var lastPlacement = 0;
      var rulePassed = true;
      var lockPositionToPlacement = function(position) {
        if (!position) {
          return 1;
        }
        if (position === true) {
          return 0;
        }
        return position === "left" ? 0 : 2;
      };
      proposedColumnOrder.forEach(function(col) {
        var placement = lockPositionToPlacement(col.getColDef().lockPosition);
        if (placement < lastPlacement) {
          rulePassed = false;
        }
        lastPlacement = placement;
      });
      return rulePassed;
    };
    ColumnModel2.prototype.doesMovePassMarryChildren = function(allColumnsCopy) {
      var rulePassed = true;
      this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function(child) {
        if (!(child instanceof ProvidedColumnGroup)) {
          return;
        }
        var columnGroup = child;
        var colGroupDef = columnGroup.getColGroupDef();
        var marryChildren = colGroupDef && colGroupDef.marryChildren;
        if (!marryChildren) {
          return;
        }
        var newIndexes = [];
        columnGroup.getLeafColumns().forEach(function(col) {
          var newColIndex = allColumnsCopy.indexOf(col);
          newIndexes.push(newColIndex);
        });
        var maxIndex = Math.max.apply(Math, newIndexes);
        var minIndex = Math.min.apply(Math, newIndexes);
        var spread = maxIndex - minIndex;
        var maxSpread = columnGroup.getLeafColumns().length - 1;
        if (spread > maxSpread) {
          rulePassed = false;
        }
      });
      return rulePassed;
    };
    ColumnModel2.prototype.moveColumn = function(key, toIndex, source) {
      if (source === void 0) {
        source = "api";
      }
      this.moveColumns([key], toIndex, source);
    };
    ColumnModel2.prototype.moveColumnByIndex = function(fromIndex, toIndex, source) {
      if (source === void 0) {
        source = "api";
      }
      var column = this.gridColumns[fromIndex];
      this.moveColumn(column, toIndex, source);
    };
    ColumnModel2.prototype.getColumnDefs = function() {
      var _this = this;
      if (!this.primaryColumns) {
        return;
      }
      var cols = this.primaryColumns.slice();
      if (this.gridColsArePrimary) {
        cols.sort(function(a2, b2) {
          return _this.gridColumns.indexOf(a2) - _this.gridColumns.indexOf(b2);
        });
      } else if (this.lastPrimaryOrder) {
        cols.sort(function(a2, b2) {
          return _this.lastPrimaryOrder.indexOf(a2) - _this.lastPrimaryOrder.indexOf(b2);
        });
      }
      return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);
    };
    ColumnModel2.prototype.getBodyContainerWidth = function() {
      return this.bodyWidth;
    };
    ColumnModel2.prototype.getContainerWidth = function(pinned) {
      switch (pinned) {
        case "left":
          return this.leftWidth;
        case "right":
          return this.rightWidth;
        default:
          return this.bodyWidth;
      }
    };
    ColumnModel2.prototype.updateBodyWidths = function() {
      var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);
      var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);
      var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);
      this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;
      var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;
      if (atLeastOneChanged) {
        this.bodyWidth = newBodyWidth;
        this.leftWidth = newLeftWidth;
        this.rightWidth = newRightWidth;
        var event_2 = {
          type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED
        };
        this.eventService.dispatchEvent(event_2);
      }
    };
    ColumnModel2.prototype.getValueColumns = function() {
      return this.valueColumns ? this.valueColumns : [];
    };
    ColumnModel2.prototype.getPivotColumns = function() {
      return this.pivotColumns ? this.pivotColumns : [];
    };
    ColumnModel2.prototype.isPivotActive = function() {
      return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;
    };
    ColumnModel2.prototype.getRowGroupColumns = function() {
      return this.rowGroupColumns ? this.rowGroupColumns : [];
    };
    ColumnModel2.prototype.getDisplayedCenterColumns = function() {
      return this.displayedColumnsCenter;
    };
    ColumnModel2.prototype.getDisplayedLeftColumns = function() {
      return this.displayedColumnsLeft;
    };
    ColumnModel2.prototype.getDisplayedRightColumns = function() {
      return this.displayedColumnsRight;
    };
    ColumnModel2.prototype.getDisplayedColumns = function(type2) {
      switch (type2) {
        case "left":
          return this.getDisplayedLeftColumns();
        case "right":
          return this.getDisplayedRightColumns();
        default:
          return this.getDisplayedCenterColumns();
      }
    };
    ColumnModel2.prototype.getAllPrimaryColumns = function() {
      return this.primaryColumns ? this.primaryColumns.slice() : null;
    };
    ColumnModel2.prototype.getSecondaryColumns = function() {
      return this.secondaryColumns ? this.secondaryColumns.slice() : null;
    };
    ColumnModel2.prototype.getAllColumnsForQuickFilter = function() {
      return this.columnsForQuickFilter;
    };
    ColumnModel2.prototype.getAllGridColumns = function() {
      return this.gridColumns;
    };
    ColumnModel2.prototype.isEmpty = function() {
      return missingOrEmpty(this.gridColumns);
    };
    ColumnModel2.prototype.isRowGroupEmpty = function() {
      return missingOrEmpty(this.rowGroupColumns);
    };
    ColumnModel2.prototype.setColumnVisible = function(key, visible, source) {
      if (source === void 0) {
        source = "api";
      }
      this.setColumnsVisible([key], visible, source);
    };
    ColumnModel2.prototype.setColumnsVisible = function(keys3, visible, source) {
      if (visible === void 0) {
        visible = false;
      }
      if (source === void 0) {
        source = "api";
      }
      this.applyColumnState({
        state: keys3.map(function(key) {
          return {
            colId: typeof key === "string" ? key : key.getColId(),
            hide: !visible
          };
        })
      }, source);
    };
    ColumnModel2.prototype.setColumnPinned = function(key, pinned, source) {
      if (source === void 0) {
        source = "api";
      }
      if (key) {
        this.setColumnsPinned([key], pinned, source);
      }
    };
    ColumnModel2.prototype.setColumnsPinned = function(keys3, pinned, source) {
      if (source === void 0) {
        source = "api";
      }
      if (this.gridOptionsService.isDomLayout("print")) {
        console.warn("AG Grid: Changing the column pinning status is not allowed with domLayout='print'");
        return;
      }
      this.columnAnimationService.start();
      var actualPinned;
      if (pinned === true || pinned === "left") {
        actualPinned = "left";
      } else if (pinned === "right") {
        actualPinned = "right";
      } else {
        actualPinned = null;
      }
      this.actionOnGridColumns(keys3, function(col) {
        if (col.getPinned() !== actualPinned) {
          col.setPinned(actualPinned);
          return true;
        }
        return false;
      }, source, function() {
        var event = {
          type: Events.EVENT_COLUMN_PINNED,
          pinned: actualPinned,
          column: null,
          columns: null,
          source
        };
        return event;
      });
      this.columnAnimationService.finish();
    };
    ColumnModel2.prototype.actionOnGridColumns = function(keys3, action, source, createEvent) {
      var _this = this;
      if (missingOrEmpty(keys3)) {
        return;
      }
      var updatedColumns = [];
      keys3.forEach(function(key) {
        var column = _this.getGridColumn(key);
        if (!column) {
          return;
        }
        var resultOfAction = action(column);
        if (resultOfAction !== false) {
          updatedColumns.push(column);
        }
      });
      if (!updatedColumns.length) {
        return;
      }
      this.updateDisplayedColumns(source);
      if (exists(createEvent) && createEvent) {
        var event_3 = createEvent();
        event_3.columns = updatedColumns;
        event_3.column = updatedColumns.length === 1 ? updatedColumns[0] : null;
        this.eventService.dispatchEvent(event_3);
      }
    };
    ColumnModel2.prototype.getDisplayedColBefore = function(col) {
      var allDisplayedColumns = this.getAllDisplayedColumns();
      var oldIndex = allDisplayedColumns.indexOf(col);
      if (oldIndex > 0) {
        return allDisplayedColumns[oldIndex - 1];
      }
      return null;
    };
    ColumnModel2.prototype.getDisplayedColAfter = function(col) {
      var allDisplayedColumns = this.getAllDisplayedColumns();
      var oldIndex = allDisplayedColumns.indexOf(col);
      if (oldIndex < allDisplayedColumns.length - 1) {
        return allDisplayedColumns[oldIndex + 1];
      }
      return null;
    };
    ColumnModel2.prototype.getDisplayedGroupAfter = function(columnGroup) {
      return this.getDisplayedGroupAtDirection(columnGroup, "After");
    };
    ColumnModel2.prototype.getDisplayedGroupBefore = function(columnGroup) {
      return this.getDisplayedGroupAtDirection(columnGroup, "Before");
    };
    ColumnModel2.prototype.getDisplayedGroupAtDirection = function(columnGroup, direction) {
      var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();
      var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();
      var col = direction === "After" ? last(colGroupLeafColumns) : colGroupLeafColumns[0];
      var getDisplayColMethod = "getDisplayedCol" + direction;
      while (true) {
        var column = this[getDisplayColMethod](col);
        if (!column) {
          return null;
        }
        var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);
        if (groupPointer !== columnGroup) {
          return groupPointer;
        }
      }
    };
    ColumnModel2.prototype.getColumnGroupAtLevel = function(column, level) {
      var groupPointer = column.getParent();
      var originalGroupLevel;
      var groupPointerLevel;
      while (true) {
        var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();
        originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();
        groupPointerLevel = groupPointer.getPaddingLevel();
        if (originalGroupLevel + groupPointerLevel <= level) {
          break;
        }
        groupPointer = groupPointer.getParent();
      }
      return groupPointer;
    };
    ColumnModel2.prototype.isPinningLeft = function() {
      return this.displayedColumnsLeft.length > 0;
    };
    ColumnModel2.prototype.isPinningRight = function() {
      return this.displayedColumnsRight.length > 0;
    };
    ColumnModel2.prototype.getPrimaryAndSecondaryAndAutoColumns = function() {
      var _a47;
      return (_a47 = []).concat.apply(_a47, __spread5([
        this.primaryColumns || [],
        this.groupAutoColumns || [],
        this.secondaryColumns || []
      ]));
    };
    ColumnModel2.prototype.createStateItemFromColumn = function(column) {
      var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;
      var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;
      var aggFunc = column.isValueActive() ? column.getAggFunc() : null;
      var sort = column.getSort() != null ? column.getSort() : null;
      var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;
      var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;
      var res = {
        colId: column.getColId(),
        width: column.getActualWidth(),
        hide: !column.isVisible(),
        pinned: column.getPinned(),
        sort,
        sortIndex,
        aggFunc,
        rowGroup: column.isRowGroupActive(),
        rowGroupIndex,
        pivot: column.isPivotActive(),
        pivotIndex,
        flex
      };
      return res;
    };
    ColumnModel2.prototype.getColumnState = function() {
      if (missing(this.primaryColumns) || !this.isAlive()) {
        return [];
      }
      var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();
      var res = colsForState.map(this.createStateItemFromColumn.bind(this));
      this.orderColumnStateList(res);
      return res;
    };
    ColumnModel2.prototype.orderColumnStateList = function(columnStateList) {
      var colIdToGridIndexMap = convertToMap(this.gridColumns.map(function(col, index) {
        return [col.getColId(), index];
      }));
      columnStateList.sort(function(itemA, itemB) {
        var posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;
        var posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;
        return posA - posB;
      });
    };
    ColumnModel2.prototype.resetColumnState = function(source) {
      if (source === void 0) {
        source = "api";
      }
      var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);
      var columnStates = [];
      var letRowGroupIndex = 1e3;
      var letPivotIndex = 1e3;
      var colsToProcess = [];
      if (this.groupAutoColumns) {
        colsToProcess = colsToProcess.concat(this.groupAutoColumns);
      }
      if (primaryColumns) {
        colsToProcess = colsToProcess.concat(primaryColumns);
      }
      colsToProcess.forEach(function(column) {
        var getValueOrNull = function(a2, b2) {
          return a2 != null ? a2 : b2 != null ? b2 : null;
        };
        var colDef = column.getColDef();
        var sort = getValueOrNull(colDef.sort, colDef.initialSort);
        var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);
        var hide = getValueOrNull(colDef.hide, colDef.initialHide);
        var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);
        var width = getValueOrNull(colDef.width, colDef.initialWidth);
        var flex = getValueOrNull(colDef.flex, colDef.initialFlex);
        var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);
        var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);
        if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {
          rowGroupIndex = null;
          rowGroup = null;
        }
        var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);
        var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);
        if (pivotIndex == null && (pivot == null || pivot == false)) {
          pivotIndex = null;
          pivot = null;
        }
        var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);
        var stateItem = {
          colId: column.getColId(),
          sort,
          sortIndex,
          hide,
          pinned,
          width,
          flex,
          rowGroup,
          rowGroupIndex,
          pivot,
          pivotIndex,
          aggFunc
        };
        if (missing(rowGroupIndex) && rowGroup) {
          stateItem.rowGroupIndex = letRowGroupIndex++;
        }
        if (missing(pivotIndex) && pivot) {
          stateItem.pivotIndex = letPivotIndex++;
        }
        columnStates.push(stateItem);
      });
      this.applyColumnState({ state: columnStates, applyOrder: true }, source);
    };
    ColumnModel2.prototype.applyColumnState = function(params, source) {
      var _this = this;
      if (missingOrEmpty(this.primaryColumns)) {
        return false;
      }
      if (params && params.state && !params.state.forEach) {
        console.warn("AG Grid: applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.");
        return false;
      }
      var applyStates = function(states, existingColumns, getById) {
        var dispatchEventsFunc = _this.compareColumnStatesAndDispatchEvents(source);
        _this.autoGroupsNeedBuilding = true;
        var columnsWithNoState = existingColumns.slice();
        var rowGroupIndexes = {};
        var pivotIndexes = {};
        var autoGroupColumnStates = [];
        var unmatchedAndAutoStates2 = [];
        var unmatchedCount2 = 0;
        var previousRowGroupCols = _this.rowGroupColumns.slice();
        var previousPivotCols = _this.pivotColumns.slice();
        states.forEach(function(state2) {
          var colId = state2.colId || "";
          var isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);
          if (isAutoGroupColumn) {
            autoGroupColumnStates.push(state2);
            unmatchedAndAutoStates2.push(state2);
            return;
          }
          var column = getById(colId);
          if (!column) {
            unmatchedAndAutoStates2.push(state2);
            unmatchedCount2 += 1;
          } else {
            _this.syncColumnWithStateItem(column, state2, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);
            removeFromArray(columnsWithNoState, column);
          }
        });
        var applyDefaultsFunc = function(col) {
          return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);
        };
        columnsWithNoState.forEach(applyDefaultsFunc);
        var comparator = function(indexes, oldList, colA, colB) {
          var indexA = indexes[colA.getId()];
          var indexB = indexes[colB.getId()];
          var aHasIndex = indexA != null;
          var bHasIndex = indexB != null;
          if (aHasIndex && bHasIndex) {
            return indexA - indexB;
          }
          if (aHasIndex) {
            return -1;
          }
          if (bHasIndex) {
            return 1;
          }
          var oldIndexA = oldList.indexOf(colA);
          var oldIndexB = oldList.indexOf(colB);
          var aHasOldIndex = oldIndexA >= 0;
          var bHasOldIndex = oldIndexB >= 0;
          if (aHasOldIndex && bHasOldIndex) {
            return oldIndexA - oldIndexB;
          }
          if (aHasOldIndex) {
            return -1;
          }
          return 1;
        };
        _this.rowGroupColumns.sort(comparator.bind(_this, rowGroupIndexes, previousRowGroupCols));
        _this.pivotColumns.sort(comparator.bind(_this, pivotIndexes, previousPivotCols));
        _this.updateGridColumns();
        var autoGroupColsCopy = _this.groupAutoColumns ? _this.groupAutoColumns.slice() : [];
        autoGroupColumnStates.forEach(function(stateItem) {
          var autoCol = _this.getAutoColumn(stateItem.colId);
          removeFromArray(autoGroupColsCopy, autoCol);
          _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);
        });
        autoGroupColsCopy.forEach(applyDefaultsFunc);
        _this.applyOrderAfterApplyState(params);
        _this.updateDisplayedColumns(source);
        _this.dispatchEverythingChanged(source);
        dispatchEventsFunc();
        return { unmatchedAndAutoStates: unmatchedAndAutoStates2, unmatchedCount: unmatchedCount2 };
      };
      this.columnAnimationService.start();
      var _a47 = applyStates(params.state || [], this.primaryColumns || [], function(id) {
        return _this.getPrimaryColumn(id);
      }), unmatchedAndAutoStates = _a47.unmatchedAndAutoStates, unmatchedCount = _a47.unmatchedCount;
      if (unmatchedAndAutoStates.length > 0 || exists(params.defaultState)) {
        unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], function(id) {
          return _this.getSecondaryColumn(id);
        }).unmatchedCount;
      }
      this.columnAnimationService.finish();
      return unmatchedCount === 0;
    };
    ColumnModel2.prototype.applyOrderAfterApplyState = function(params) {
      var _this = this;
      if (!params.applyOrder || !params.state) {
        return;
      }
      var newOrder = [];
      var processedColIds = {};
      params.state.forEach(function(item) {
        if (!item.colId || processedColIds[item.colId]) {
          return;
        }
        var col = _this.gridColumnsMap[item.colId];
        if (col) {
          newOrder.push(col);
          processedColIds[item.colId] = true;
        }
      });
      var autoGroupInsertIndex = 0;
      this.gridColumns.forEach(function(col) {
        var colId = col.getColId();
        var alreadyProcessed = processedColIds[colId] != null;
        if (alreadyProcessed) {
          return;
        }
        var isAutoGroupCol = colId.startsWith(GROUP_AUTO_COLUMN_ID);
        if (isAutoGroupCol) {
          insertIntoArray(newOrder, col, autoGroupInsertIndex++);
        } else {
          newOrder.push(col);
        }
      });
      newOrder = this.placeLockedColumns(newOrder);
      if (!this.doesMovePassMarryChildren(newOrder)) {
        console.warn("AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.");
        return;
      }
      this.gridColumns = newOrder;
    };
    ColumnModel2.prototype.compareColumnStatesAndDispatchEvents = function(source) {
      var _this = this;
      var startState = {
        rowGroupColumns: this.rowGroupColumns.slice(),
        pivotColumns: this.pivotColumns.slice(),
        valueColumns: this.valueColumns.slice()
      };
      var columnStateBefore = this.getColumnState();
      var columnStateBeforeMap = {};
      columnStateBefore.forEach(function(col) {
        columnStateBeforeMap[col.colId] = col;
      });
      return function() {
        var colsForState = _this.getPrimaryAndSecondaryAndAutoColumns();
        var dispatchWhenListsDifferent = function(eventType, colsBefore, colsAfter, idMapper) {
          var beforeList = colsBefore.map(idMapper);
          var afterList = colsAfter.map(idMapper);
          var unchanged = areEqual(beforeList, afterList);
          if (unchanged) {
            return;
          }
          var event = {
            type: eventType,
            columns: colsAfter,
            column: colsAfter.length === 1 ? colsAfter[0] : null,
            source
          };
          _this.eventService.dispatchEvent(event);
        };
        var getChangedColumns = function(changedPredicate) {
          var changedColumns = [];
          colsForState.forEach(function(column) {
            var colStateBefore = columnStateBeforeMap[column.getColId()];
            if (colStateBefore && changedPredicate(colStateBefore, column)) {
              changedColumns.push(column);
            }
          });
          return changedColumns;
        };
        var columnIdMapper = function(c2) {
          return c2.getColId();
        };
        dispatchWhenListsDifferent(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);
        dispatchWhenListsDifferent(Events.EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);
        var valueChangePredicate = function(cs, c2) {
          var oldActive = cs.aggFunc != null;
          var activeChanged = oldActive != c2.isValueActive();
          var aggFuncChanged = oldActive && cs.aggFunc != c2.getAggFunc();
          return activeChanged || aggFuncChanged;
        };
        var changedValues = getChangedColumns(valueChangePredicate);
        if (changedValues.length > 0) {
          _this.dispatchColumnChangedEvent(Events.EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);
        }
        var resizeChangePredicate = function(cs, c2) {
          return cs.width != c2.getActualWidth();
        };
        _this.dispatchColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);
        var pinnedChangePredicate = function(cs, c2) {
          return cs.pinned != c2.getPinned();
        };
        _this.dispatchColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);
        var visibilityChangePredicate = function(cs, c2) {
          return cs.hide == c2.isVisible();
        };
        _this.dispatchColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);
        var sortChangePredicate = function(cs, c2) {
          return cs.sort != c2.getSort() || cs.sortIndex != c2.getSortIndex();
        };
        if (getChangedColumns(sortChangePredicate).length > 0) {
          _this.sortController.dispatchSortChangedEvents(source);
        }
        _this.normaliseColumnMovedEventForColumnState(columnStateBefore, source);
      };
    };
    ColumnModel2.prototype.getCommonValue = function(cols, valueGetter) {
      if (!cols || cols.length == 0) {
        return void 0;
      }
      var firstValue = valueGetter(cols[0]);
      for (var i2 = 1; i2 < cols.length; i2++) {
        if (firstValue !== valueGetter(cols[i2])) {
          return void 0;
        }
      }
      return firstValue;
    };
    ColumnModel2.prototype.normaliseColumnMovedEventForColumnState = function(colStateBefore, source) {
      var _this = this;
      var colStateAfter = this.getColumnState();
      var colStateAfterMapped = {};
      colStateAfter.forEach(function(s2) {
        return colStateAfterMapped[s2.colId] = s2;
      });
      var colsIntersectIds = {};
      colStateBefore.forEach(function(s2) {
        if (colStateAfterMapped[s2.colId]) {
          colsIntersectIds[s2.colId] = true;
        }
      });
      var beforeFiltered = colStateBefore.filter(function(c2) {
        return colsIntersectIds[c2.colId];
      });
      var afterFiltered = colStateAfter.filter(function(c2) {
        return colsIntersectIds[c2.colId];
      });
      var movedColumns = [];
      afterFiltered.forEach(function(csAfter, index) {
        var csBefore = beforeFiltered && beforeFiltered[index];
        if (csBefore && csBefore.colId !== csAfter.colId) {
          var gridCol = _this.getGridColumn(csBefore.colId);
          if (gridCol) {
            movedColumns.push(gridCol);
          }
        }
      });
      if (!movedColumns.length) {
        return;
      }
      this.dispatchColumnMovedEvent({ movedColumns, source, finished: true });
    };
    ColumnModel2.prototype.syncColumnWithStateItem = function(column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {
      if (!column) {
        return;
      }
      var getValue = function(key1, key2) {
        var obj = { value1: void 0, value2: void 0 };
        var calculated = false;
        if (stateItem) {
          if (stateItem[key1] !== void 0) {
            obj.value1 = stateItem[key1];
            calculated = true;
          }
          if (exists(key2) && stateItem[key2] !== void 0) {
            obj.value2 = stateItem[key2];
            calculated = true;
          }
        }
        if (!calculated && defaultState) {
          if (defaultState[key1] !== void 0) {
            obj.value1 = defaultState[key1];
          }
          if (exists(key2) && defaultState[key2] !== void 0) {
            obj.value2 = defaultState[key2];
          }
        }
        return obj;
      };
      var hide = getValue("hide").value1;
      if (hide !== void 0) {
        column.setVisible(!hide, source);
      }
      var pinned = getValue("pinned").value1;
      if (pinned !== void 0) {
        column.setPinned(pinned);
      }
      var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());
      var flex = getValue("flex").value1;
      if (flex !== void 0) {
        column.setFlex(flex);
      }
      var noFlexThisCol = column.getFlex() <= 0;
      if (noFlexThisCol) {
        var width = getValue("width").value1;
        if (width != null) {
          if (minColWidth != null && width >= minColWidth) {
            column.setActualWidth(width, source);
          }
        }
      }
      var sort = getValue("sort").value1;
      if (sort !== void 0) {
        if (sort === "desc" || sort === "asc") {
          column.setSort(sort, source);
        } else {
          column.setSort(void 0, source);
        }
      }
      var sortIndex = getValue("sortIndex").value1;
      if (sortIndex !== void 0) {
        column.setSortIndex(sortIndex);
      }
      if (autoCol || !column.isPrimary()) {
        return;
      }
      var aggFunc = getValue("aggFunc").value1;
      if (aggFunc !== void 0) {
        if (typeof aggFunc === "string") {
          column.setAggFunc(aggFunc);
          if (!column.isValueActive()) {
            column.setValueActive(true, source);
            this.valueColumns.push(column);
          }
        } else {
          if (exists(aggFunc)) {
            console.warn("AG Grid: stateItem.aggFunc must be a string. if using your own aggregation functions, register the functions first before using them in get/set state. This is because it is intended for the column state to be stored and retrieved as simple JSON.");
          }
          if (column.isValueActive()) {
            column.setValueActive(false, source);
            removeFromArray(this.valueColumns, column);
          }
        }
      }
      var _a47 = getValue("rowGroup", "rowGroupIndex"), rowGroup = _a47.value1, rowGroupIndex = _a47.value2;
      if (rowGroup !== void 0 || rowGroupIndex !== void 0) {
        if (typeof rowGroupIndex === "number" || rowGroup) {
          if (!column.isRowGroupActive()) {
            column.setRowGroupActive(true, source);
            this.rowGroupColumns.push(column);
          }
          if (rowGroupIndexes && typeof rowGroupIndex === "number") {
            rowGroupIndexes[column.getId()] = rowGroupIndex;
          }
        } else {
          if (column.isRowGroupActive()) {
            column.setRowGroupActive(false, source);
            removeFromArray(this.rowGroupColumns, column);
          }
        }
      }
      var _b = getValue("pivot", "pivotIndex"), pivot = _b.value1, pivotIndex = _b.value2;
      if (pivot !== void 0 || pivotIndex !== void 0) {
        if (typeof pivotIndex === "number" || pivot) {
          if (!column.isPivotActive()) {
            column.setPivotActive(true, source);
            this.pivotColumns.push(column);
          }
          if (pivotIndexes && typeof pivotIndex === "number") {
            pivotIndexes[column.getId()] = pivotIndex;
          }
        } else {
          if (column.isPivotActive()) {
            column.setPivotActive(false, source);
            removeFromArray(this.pivotColumns, column);
          }
        }
      }
    };
    ColumnModel2.prototype.getGridColumns = function(keys3) {
      return this.getColumns(keys3, this.getGridColumn.bind(this));
    };
    ColumnModel2.prototype.getColumns = function(keys3, columnLookupCallback) {
      var foundColumns = [];
      if (keys3) {
        keys3.forEach(function(key) {
          var column = columnLookupCallback(key);
          if (column) {
            foundColumns.push(column);
          }
        });
      }
      return foundColumns;
    };
    ColumnModel2.prototype.getColumnWithValidation = function(key) {
      if (key == null) {
        return null;
      }
      var column = this.getGridColumn(key);
      if (!column) {
        console.warn("AG Grid: could not find column " + key);
      }
      return column;
    };
    ColumnModel2.prototype.getPrimaryColumn = function(key) {
      if (!this.primaryColumns) {
        return null;
      }
      return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);
    };
    ColumnModel2.prototype.getGridColumn = function(key) {
      return this.getColumn(key, this.gridColumns, this.gridColumnsMap);
    };
    ColumnModel2.prototype.getSecondaryColumn = function(key) {
      if (!this.secondaryColumns) {
        return null;
      }
      return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);
    };
    ColumnModel2.prototype.getColumn = function(key, columnList, columnMap) {
      if (!key) {
        return null;
      }
      if (typeof key == "string" && columnMap[key]) {
        return columnMap[key];
      }
      for (var i2 = 0; i2 < columnList.length; i2++) {
        if (this.columnsMatch(columnList[i2], key)) {
          return columnList[i2];
        }
      }
      return this.getAutoColumn(key);
    };
    ColumnModel2.prototype.getSourceColumnsForGroupColumn = function(groupCol) {
      var sourceColumnId = groupCol.getColDef().showRowGroup;
      if (!sourceColumnId) {
        return null;
      }
      if (sourceColumnId === true) {
        return this.rowGroupColumns.slice(0);
      }
      var column = this.getPrimaryColumn(sourceColumnId);
      return column ? [column] : null;
    };
    ColumnModel2.prototype.getAutoColumn = function(key) {
      var _this = this;
      if (!this.groupAutoColumns || !exists(this.groupAutoColumns) || missing(this.groupAutoColumns)) {
        return null;
      }
      return this.groupAutoColumns.find(function(groupCol) {
        return _this.columnsMatch(groupCol, key);
      }) || null;
    };
    ColumnModel2.prototype.columnsMatch = function(column, key) {
      var columnMatches = column === key;
      var colDefMatches = column.getColDef() === key;
      var idMatches = column.getColId() == key;
      return columnMatches || colDefMatches || idMatches;
    };
    ColumnModel2.prototype.getDisplayNameForColumn = function(column, location, includeAggFunc) {
      if (includeAggFunc === void 0) {
        includeAggFunc = false;
      }
      if (!column) {
        return null;
      }
      var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);
      if (includeAggFunc) {
        return this.wrapHeaderNameWithAggFunc(column, headerName);
      }
      return headerName;
    };
    ColumnModel2.prototype.getDisplayNameForProvidedColumnGroup = function(columnGroup, providedColumnGroup, location) {
      var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;
      if (colGroupDef) {
        return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);
      }
      return null;
    };
    ColumnModel2.prototype.getDisplayNameForColumnGroup = function(columnGroup, location) {
      return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);
    };
    ColumnModel2.prototype.getHeaderName = function(colDef, column, columnGroup, providedColumnGroup, location) {
      var headerValueGetter = colDef.headerValueGetter;
      if (headerValueGetter) {
        var params = {
          colDef,
          column,
          columnGroup,
          providedColumnGroup,
          location,
          api: this.gridOptionsService.get("api"),
          columnApi: this.gridOptionsService.get("columnApi"),
          context: this.gridOptionsService.get("context")
        };
        if (typeof headerValueGetter === "function") {
          return headerValueGetter(params);
        } else if (typeof headerValueGetter === "string") {
          return this.expressionService.evaluate(headerValueGetter, params);
        }
        console.warn("AG Grid: headerValueGetter must be a function or a string");
        return "";
      } else if (colDef.headerName != null) {
        return colDef.headerName;
      } else if (colDef.field) {
        return camelCaseToHumanText(colDef.field);
      }
      return "";
    };
    ColumnModel2.prototype.wrapHeaderNameWithAggFunc = function(column, headerName) {
      if (this.gridOptionsService.is("suppressAggFuncInHeader")) {
        return headerName;
      }
      var pivotValueColumn = column.getColDef().pivotValueColumn;
      var pivotActiveOnThisColumn = exists(pivotValueColumn);
      var aggFunc = null;
      var aggFuncFound;
      if (pivotActiveOnThisColumn) {
        var isCollapsedHeaderEnabled = this.gridOptionsService.is("removePivotHeaderRowWhenSingleValueColumn") && this.valueColumns.length === 1;
        var isTotalColumn = column.getColDef().pivotTotalColumnIds !== void 0;
        if (isCollapsedHeaderEnabled && !isTotalColumn) {
          return headerName;
        }
        aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;
        aggFuncFound = true;
      } else {
        var measureActive = column.isValueActive();
        var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();
        if (measureActive && aggregationPresent) {
          aggFunc = column.getAggFunc();
          aggFuncFound = true;
        } else {
          aggFuncFound = false;
        }
      }
      if (aggFuncFound) {
        var aggFuncString = typeof aggFunc === "string" ? aggFunc : "func";
        var localeTextFunc = this.localeService.getLocaleTextFunc();
        var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);
        return aggFuncStringTranslated + "(" + headerName + ")";
      }
      return headerName;
    };
    ColumnModel2.prototype.getColumnGroup = function(colId, partId) {
      if (!colId) {
        return null;
      }
      if (colId instanceof ColumnGroup) {
        return colId;
      }
      var allColumnGroups = this.getAllDisplayedTrees();
      var checkPartId = typeof partId === "number";
      var result = null;
      this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function(child) {
        if (child instanceof ColumnGroup) {
          var columnGroup = child;
          var matched = void 0;
          if (checkPartId) {
            matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();
          } else {
            matched = colId === columnGroup.getGroupId();
          }
          if (matched) {
            result = columnGroup;
          }
        }
      });
      return result;
    };
    ColumnModel2.prototype.isReady = function() {
      return this.ready;
    };
    ColumnModel2.prototype.extractValueColumns = function(source, oldPrimaryColumns) {
      this.valueColumns = this.extractColumns(
        oldPrimaryColumns,
        this.valueColumns,
        function(col, flag) {
          return col.setValueActive(flag, source);
        },
        // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null
        function() {
          return void 0;
        },
        function() {
          return void 0;
        },
        // aggFunc is a string, so return it's existence
        function(colDef) {
          var aggFunc = colDef.aggFunc;
          if (aggFunc === null || aggFunc === "") {
            return null;
          }
          if (aggFunc === void 0) {
            return;
          }
          return !!aggFunc;
        },
        function(colDef) {
          return colDef.initialAggFunc != null && colDef.initialAggFunc != "";
        }
      );
      this.valueColumns.forEach(function(col) {
        var colDef = col.getColDef();
        if (colDef.aggFunc != null && colDef.aggFunc != "") {
          col.setAggFunc(colDef.aggFunc);
        } else {
          if (!col.getAggFunc()) {
            col.setAggFunc(colDef.initialAggFunc);
          }
        }
      });
    };
    ColumnModel2.prototype.extractRowGroupColumns = function(source, oldPrimaryColumns) {
      this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function(col, flag) {
        return col.setRowGroupActive(flag, source);
      }, function(colDef) {
        return colDef.rowGroupIndex;
      }, function(colDef) {
        return colDef.initialRowGroupIndex;
      }, function(colDef) {
        return colDef.rowGroup;
      }, function(colDef) {
        return colDef.initialRowGroup;
      });
    };
    ColumnModel2.prototype.extractColumns = function(oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {
      if (oldPrimaryColumns === void 0) {
        oldPrimaryColumns = [];
      }
      if (previousCols === void 0) {
        previousCols = [];
      }
      var colsWithIndex = [];
      var colsWithValue = [];
      (this.primaryColumns || []).forEach(function(col) {
        var colIsNew = oldPrimaryColumns.indexOf(col) < 0;
        var colDef = col.getColDef();
        var value = attrToBoolean(getValueFunc(colDef));
        var initialValue = attrToBoolean(getInitialValueFunc(colDef));
        var index = attrToNumber(getIndexFunc(colDef));
        var initialIndex = attrToNumber(getInitialIndexFunc(colDef));
        var include;
        var valuePresent = value !== void 0;
        var indexPresent = index !== void 0;
        var initialValuePresent = initialValue !== void 0;
        var initialIndexPresent = initialIndex !== void 0;
        if (valuePresent) {
          include = value;
        } else if (indexPresent) {
          if (index === null) {
            include = false;
          } else {
            include = index >= 0;
          }
        } else {
          if (colIsNew) {
            if (initialValuePresent) {
              include = initialValue;
            } else if (initialIndexPresent) {
              include = initialIndex != null && initialIndex >= 0;
            } else {
              include = false;
            }
          } else {
            include = previousCols.indexOf(col) >= 0;
          }
        }
        if (include) {
          var useIndex = colIsNew ? index != null || initialIndex != null : index != null;
          useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);
        }
      });
      var getIndexForCol = function(col) {
        var index = getIndexFunc(col.getColDef());
        var defaultIndex = getInitialIndexFunc(col.getColDef());
        return index != null ? index : defaultIndex;
      };
      colsWithIndex.sort(function(colA, colB) {
        var indexA = getIndexForCol(colA);
        var indexB = getIndexForCol(colB);
        if (indexA === indexB) {
          return 0;
        }
        if (indexA < indexB) {
          return -1;
        }
        return 1;
      });
      var res = [].concat(colsWithIndex);
      previousCols.forEach(function(col) {
        if (colsWithValue.indexOf(col) >= 0) {
          res.push(col);
        }
      });
      colsWithValue.forEach(function(col) {
        if (res.indexOf(col) < 0) {
          res.push(col);
        }
      });
      previousCols.forEach(function(col) {
        if (res.indexOf(col) < 0) {
          setFlagFunc(col, false);
        }
      });
      res.forEach(function(col) {
        if (previousCols.indexOf(col) < 0) {
          setFlagFunc(col, true);
        }
      });
      return res;
    };
    ColumnModel2.prototype.extractPivotColumns = function(source, oldPrimaryColumns) {
      this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function(col, flag) {
        return col.setPivotActive(flag, source);
      }, function(colDef) {
        return colDef.pivotIndex;
      }, function(colDef) {
        return colDef.initialPivotIndex;
      }, function(colDef) {
        return colDef.pivot;
      }, function(colDef) {
        return colDef.initialPivot;
      });
    };
    ColumnModel2.prototype.resetColumnGroupState = function(source) {
      if (source === void 0) {
        source = "api";
      }
      var stateItems = [];
      this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function(child) {
        if (child instanceof ProvidedColumnGroup) {
          var colGroupDef = child.getColGroupDef();
          var groupState = {
            groupId: child.getGroupId(),
            open: !colGroupDef ? void 0 : colGroupDef.openByDefault
          };
          stateItems.push(groupState);
        }
      });
      this.setColumnGroupState(stateItems, source);
    };
    ColumnModel2.prototype.getColumnGroupState = function() {
      var columnGroupState = [];
      this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function(node) {
        if (node instanceof ProvidedColumnGroup) {
          columnGroupState.push({
            groupId: node.getGroupId(),
            open: node.isExpanded()
          });
        }
      });
      return columnGroupState;
    };
    ColumnModel2.prototype.setColumnGroupState = function(stateItems, source) {
      var _this = this;
      if (source === void 0) {
        source = "api";
      }
      this.columnAnimationService.start();
      var impactedGroups = [];
      stateItems.forEach(function(stateItem) {
        var groupKey = stateItem.groupId;
        var newValue = stateItem.open;
        var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);
        if (!providedColumnGroup) {
          return;
        }
        if (providedColumnGroup.isExpanded() === newValue) {
          return;
        }
        _this.logger.log("columnGroupOpened(" + providedColumnGroup.getGroupId() + "," + newValue + ")");
        providedColumnGroup.setExpanded(newValue);
        impactedGroups.push(providedColumnGroup);
      });
      this.updateGroupsAndDisplayedColumns(source);
      this.setFirstRightAndLastLeftPinned(source);
      impactedGroups.forEach(function(providedColumnGroup) {
        var event = {
          type: Events.EVENT_COLUMN_GROUP_OPENED,
          columnGroup: providedColumnGroup
        };
        _this.eventService.dispatchEvent(event);
      });
      this.columnAnimationService.finish();
    };
    ColumnModel2.prototype.setColumnGroupOpened = function(key, newValue, source) {
      if (source === void 0) {
        source = "api";
      }
      var keyAsString;
      if (key instanceof ProvidedColumnGroup) {
        keyAsString = key.getId();
      } else {
        keyAsString = key || "";
      }
      this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);
    };
    ColumnModel2.prototype.getProvidedColumnGroup = function(key) {
      if (typeof key !== "string") {
        console.error("AG Grid: group key must be a string");
      }
      var res = null;
      this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function(node) {
        if (node instanceof ProvidedColumnGroup) {
          if (node.getId() === key) {
            res = node;
          }
        }
      });
      return res;
    };
    ColumnModel2.prototype.calculateColumnsForDisplay = function() {
      var _this = this;
      var columnsForDisplay;
      if (this.pivotMode && missing(this.secondaryColumns)) {
        columnsForDisplay = this.gridColumns.filter(function(column) {
          var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);
          var isValueCol = _this.valueColumns && includes(_this.valueColumns, column);
          return isAutoGroupCol || isValueCol;
        });
      } else {
        columnsForDisplay = this.gridColumns.filter(function(column) {
          var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);
          return isAutoGroupCol || column.isVisible();
        });
      }
      return columnsForDisplay;
    };
    ColumnModel2.prototype.checkColSpanActiveInCols = function(columns) {
      var result = false;
      columns.forEach(function(col) {
        if (exists(col.getColDef().colSpan)) {
          result = true;
        }
      });
      return result;
    };
    ColumnModel2.prototype.calculateColumnsForGroupDisplay = function() {
      var _this = this;
      this.groupDisplayColumns = [];
      this.groupDisplayColumnsMap = {};
      var checkFunc = function(col) {
        var colDef = col.getColDef();
        var underlyingColumn = colDef.showRowGroup;
        if (colDef && exists(underlyingColumn)) {
          _this.groupDisplayColumns.push(col);
          if (typeof underlyingColumn === "string") {
            _this.groupDisplayColumnsMap[underlyingColumn] = col;
          } else if (underlyingColumn === true) {
            _this.getRowGroupColumns().forEach(function(rowGroupCol) {
              _this.groupDisplayColumnsMap[rowGroupCol.getId()] = col;
            });
          }
        }
      };
      this.gridColumns.forEach(checkFunc);
      if (this.groupAutoColumns) {
        this.groupAutoColumns.forEach(checkFunc);
      }
    };
    ColumnModel2.prototype.getGroupDisplayColumns = function() {
      return this.groupDisplayColumns;
    };
    ColumnModel2.prototype.getGroupDisplayColumnForGroup = function(rowGroupColumnId) {
      return this.groupDisplayColumnsMap[rowGroupColumnId];
    };
    ColumnModel2.prototype.updateDisplayedColumns = function(source) {
      var columnsForDisplay = this.calculateColumnsForDisplay();
      this.buildDisplayedTrees(columnsForDisplay);
      this.calculateColumnsForGroupDisplay();
      this.updateGroupsAndDisplayedColumns(source);
      this.setFirstRightAndLastLeftPinned(source);
    };
    ColumnModel2.prototype.isSecondaryColumnsPresent = function() {
      return exists(this.secondaryColumns);
    };
    ColumnModel2.prototype.setSecondaryColumns = function(colDefs, source) {
      var _this = this;
      if (source === void 0) {
        source = "api";
      }
      var newColsPresent = colDefs && colDefs.length > 0;
      if (!newColsPresent && missing(this.secondaryColumns)) {
        return;
      }
      if (newColsPresent) {
        this.processSecondaryColumnDefinitions(colDefs);
        var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || void 0);
        this.destroyOldColumns(this.secondaryBalancedTree, balancedTreeResult.columnTree);
        this.secondaryBalancedTree = balancedTreeResult.columnTree;
        this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;
        this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);
        this.secondaryColumnsMap = {};
        this.secondaryColumns.forEach(function(col) {
          return _this.secondaryColumnsMap[col.getId()] = col;
        });
        this.previousSecondaryColumns = null;
      } else {
        this.previousSecondaryColumns = this.secondaryBalancedTree;
        this.secondaryBalancedTree = null;
        this.secondaryHeaderRowCount = -1;
        this.secondaryColumns = null;
        this.secondaryColumnsMap = {};
      }
      this.updateGridColumns();
      this.updateDisplayedColumns(source);
    };
    ColumnModel2.prototype.processSecondaryColumnDefinitions = function(colDefs) {
      var columnCallback = this.gridOptionsService.get("processPivotResultColDef") || this.gridOptionsService.get("processSecondaryColDef");
      var groupCallback = this.gridOptionsService.get("processPivotResultColGroupDef") || this.gridOptionsService.get("processSecondaryColGroupDef");
      if (!columnCallback && !groupCallback) {
        return void 0;
      }
      var searchForColDefs = function(colDefs2) {
        colDefs2.forEach(function(abstractColDef) {
          var isGroup = exists(abstractColDef.children);
          if (isGroup) {
            var colGroupDef = abstractColDef;
            if (groupCallback) {
              groupCallback(colGroupDef);
            }
            searchForColDefs(colGroupDef.children);
          } else {
            var colDef = abstractColDef;
            if (columnCallback) {
              columnCallback(colDef);
            }
          }
        });
      };
      if (colDefs) {
        searchForColDefs(colDefs);
      }
    };
    ColumnModel2.prototype.updateGridColumns = function() {
      var _this = this;
      var prevGridCols = this.gridBalancedTree;
      if (this.gridColsArePrimary) {
        this.lastPrimaryOrder = this.gridColumns;
      } else {
        this.lastSecondaryOrder = this.gridColumns;
      }
      var sortOrderToRecover = void 0;
      if (this.secondaryColumns && this.secondaryBalancedTree) {
        var hasSameColumns = this.secondaryColumns.every(function(col) {
          return _this.gridColumnsMap[col.getColId()] !== void 0;
        });
        this.gridBalancedTree = this.secondaryBalancedTree.slice();
        this.gridHeaderRowCount = this.secondaryHeaderRowCount;
        this.gridColumns = this.secondaryColumns.slice();
        this.gridColsArePrimary = false;
        if (hasSameColumns) {
          sortOrderToRecover = this.lastSecondaryOrder;
        }
      } else if (this.primaryColumns) {
        this.gridBalancedTree = this.primaryColumnTree.slice();
        this.gridHeaderRowCount = this.primaryHeaderRowCount;
        this.gridColumns = this.primaryColumns.slice();
        this.gridColsArePrimary = true;
        sortOrderToRecover = this.lastPrimaryOrder;
      }
      var areAutoColsChanged = this.createGroupAutoColumnsIfNeeded();
      if (areAutoColsChanged && sortOrderToRecover) {
        var groupAutoColsMap_1 = convertToMap(this.groupAutoColumns.map(function(col) {
          return [col, true];
        }));
        sortOrderToRecover = sortOrderToRecover.filter(function(col) {
          return !groupAutoColsMap_1.has(col);
        });
        sortOrderToRecover = __spread5(this.groupAutoColumns, sortOrderToRecover);
      }
      this.addAutoGroupToGridColumns();
      this.orderGridColsLike(sortOrderToRecover);
      this.gridColumns = this.placeLockedColumns(this.gridColumns);
      this.setupQuickFilterColumns();
      this.clearDisplayedAndViewportColumns();
      this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);
      this.gridColumnsMap = {};
      this.gridColumns.forEach(function(col) {
        return _this.gridColumnsMap[col.getId()] = col;
      });
      this.setAutoHeightActive();
      if (!areEqual(prevGridCols, this.gridBalancedTree)) {
        var event_4 = {
          type: Events.EVENT_GRID_COLUMNS_CHANGED
        };
        this.eventService.dispatchEvent(event_4);
      }
    };
    ColumnModel2.prototype.setAutoHeightActive = function() {
      this.autoHeightActive = this.gridColumns.filter(function(col) {
        return col.isAutoHeight();
      }).length > 0;
      if (this.autoHeightActive) {
        this.autoHeightActiveAtLeastOnce = true;
        var rowModelType = this.rowModel.getType();
        var supportedRowModel = rowModelType === "clientSide" || rowModelType === "serverSide";
        if (!supportedRowModel) {
          var message_1 = "AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.";
          doOnce(function() {
            return console.warn(message_1);
          }, "autoHeightActive.wrongRowModel");
        }
      }
    };
    ColumnModel2.prototype.orderGridColsLike = function(colsOrder) {
      if (missing(colsOrder)) {
        return;
      }
      var lastOrderMapped = convertToMap(colsOrder.map(function(col, index) {
        return [col, index];
      }));
      var noColsFound = true;
      this.gridColumns.forEach(function(col) {
        if (lastOrderMapped.has(col)) {
          noColsFound = false;
        }
      });
      if (noColsFound) {
        return;
      }
      var gridColsMap = convertToMap(this.gridColumns.map(function(col) {
        return [col, true];
      }));
      var oldColsOrdered = colsOrder.filter(function(col) {
        return gridColsMap.has(col);
      });
      var oldColsMap = convertToMap(oldColsOrdered.map(function(col) {
        return [col, true];
      }));
      var newColsOrdered = this.gridColumns.filter(function(col) {
        return !oldColsMap.has(col);
      });
      var newGridColumns = oldColsOrdered.slice();
      newColsOrdered.forEach(function(newCol) {
        var parent2 = newCol.getOriginalParent();
        if (!parent2) {
          newGridColumns.push(newCol);
          return;
        }
        var siblings = [];
        while (!siblings.length && parent2) {
          var leafCols = parent2.getLeafColumns();
          leafCols.forEach(function(leafCol) {
            var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;
            var noYetInSiblings = siblings.indexOf(leafCol) < 0;
            if (presentInNewGriColumns && noYetInSiblings) {
              siblings.push(leafCol);
            }
          });
          parent2 = parent2.getOriginalParent();
        }
        if (!siblings.length) {
          newGridColumns.push(newCol);
          return;
        }
        var indexes = siblings.map(function(col) {
          return newGridColumns.indexOf(col);
        });
        var lastIndex = Math.max.apply(Math, __spread5(indexes));
        insertIntoArray(newGridColumns, newCol, lastIndex + 1);
      });
      this.gridColumns = newGridColumns;
    };
    ColumnModel2.prototype.isPrimaryColumnGroupsPresent = function() {
      return this.primaryHeaderRowCount > 1;
    };
    ColumnModel2.prototype.setupQuickFilterColumns = function() {
      if (this.groupAutoColumns) {
        this.columnsForQuickFilter = (this.primaryColumns || []).concat(this.groupAutoColumns);
      } else if (this.primaryColumns) {
        this.columnsForQuickFilter = this.primaryColumns;
      }
    };
    ColumnModel2.prototype.placeLockedColumns = function(cols) {
      var left = [];
      var normal = [];
      var right = [];
      cols.forEach(function(col) {
        var position = col.getColDef().lockPosition;
        if (position === "right") {
          right.push(col);
        } else if (position === "left" || position === true) {
          left.push(col);
        } else {
          normal.push(col);
        }
      });
      return __spread5(left, normal, right);
    };
    ColumnModel2.prototype.addAutoGroupToGridColumns = function() {
      if (missing(this.groupAutoColumns)) {
        this.destroyOldColumns(this.groupAutoColsBalancedTree);
        this.groupAutoColsBalancedTree = null;
        return;
      }
      this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;
      var newAutoColsTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);
      this.destroyOldColumns(this.groupAutoColsBalancedTree, newAutoColsTree);
      this.groupAutoColsBalancedTree = newAutoColsTree;
      this.gridBalancedTree = newAutoColsTree.concat(this.gridBalancedTree);
    };
    ColumnModel2.prototype.clearDisplayedAndViewportColumns = function() {
      this.viewportRowLeft = {};
      this.viewportRowRight = {};
      this.viewportRowCenter = {};
      this.displayedColumnsLeft = [];
      this.displayedColumnsRight = [];
      this.displayedColumnsCenter = [];
      this.displayedColumns = [];
      this.viewportColumns = [];
      this.headerViewportColumns = [];
      this.viewportColumnsHash = "";
    };
    ColumnModel2.prototype.updateGroupsAndDisplayedColumns = function(source) {
      this.updateOpenClosedVisibilityInColumnGroups();
      this.deriveDisplayedColumns(source);
      this.refreshFlexedColumns();
      this.extractViewport();
      this.updateBodyWidths();
      var event = {
        type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnModel2.prototype.deriveDisplayedColumns = function(source) {
      this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);
      this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);
      this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);
      this.joinDisplayedColumns();
      this.setLeftValues(source);
      this.displayedAutoHeightCols = this.displayedColumns.filter(function(col) {
        return col.isAutoHeight();
      });
    };
    ColumnModel2.prototype.isAutoRowHeightActive = function() {
      return this.autoHeightActive;
    };
    ColumnModel2.prototype.wasAutoRowHeightEverActive = function() {
      return this.autoHeightActiveAtLeastOnce;
    };
    ColumnModel2.prototype.joinDisplayedColumns = function() {
      if (this.gridOptionsService.is("enableRtl")) {
        this.displayedColumns = this.displayedColumnsRight.concat(this.displayedColumnsCenter).concat(this.displayedColumnsLeft);
      } else {
        this.displayedColumns = this.displayedColumnsLeft.concat(this.displayedColumnsCenter).concat(this.displayedColumnsRight);
      }
    };
    ColumnModel2.prototype.setLeftValues = function(source) {
      this.setLeftValuesOfColumns(source);
      this.setLeftValuesOfGroups();
    };
    ColumnModel2.prototype.setLeftValuesOfColumns = function(source) {
      var _this = this;
      if (!this.primaryColumns) {
        return;
      }
      var allColumns = this.primaryColumns.slice(0);
      var doingRtl = this.gridOptionsService.is("enableRtl");
      [
        this.displayedColumnsLeft,
        this.displayedColumnsRight,
        this.displayedColumnsCenter
      ].forEach(function(columns) {
        if (doingRtl) {
          var left_1 = _this.getWidthOfColsInList(columns);
          columns.forEach(function(column) {
            left_1 -= column.getActualWidth();
            column.setLeft(left_1, source);
          });
        } else {
          var left_2 = 0;
          columns.forEach(function(column) {
            column.setLeft(left_2, source);
            left_2 += column.getActualWidth();
          });
        }
        removeAllFromArray(allColumns, columns);
      });
      allColumns.forEach(function(column) {
        column.setLeft(null, source);
      });
    };
    ColumnModel2.prototype.setLeftValuesOfGroups = function() {
      [
        this.displayedTreeLeft,
        this.displayedTreeRight,
        this.displayedTreeCentre
      ].forEach(function(columns) {
        columns.forEach(function(column) {
          if (column instanceof ColumnGroup) {
            var columnGroup = column;
            columnGroup.checkLeft();
          }
        });
      });
    };
    ColumnModel2.prototype.derivedDisplayedColumnsFromDisplayedTree = function(tree, columns) {
      columns.length = 0;
      this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function(child) {
        if (child instanceof Column) {
          columns.push(child);
        }
      });
    };
    ColumnModel2.prototype.extractViewportColumns = function() {
      if (this.suppressColumnVirtualisation) {
        this.viewportColumnsCenter = this.displayedColumnsCenter;
        this.headerViewportColumnsCenter = this.displayedColumnsCenter;
      } else {
        this.viewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));
        this.headerViewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));
      }
      this.viewportColumns = this.viewportColumnsCenter.concat(this.displayedColumnsLeft).concat(this.displayedColumnsRight);
      this.headerViewportColumns = this.headerViewportColumnsCenter.concat(this.displayedColumnsLeft).concat(this.displayedColumnsRight);
    };
    ColumnModel2.prototype.getVirtualHeaderGroupRow = function(type2, dept) {
      var result;
      switch (type2) {
        case "left":
          result = this.viewportRowLeft[dept];
          break;
        case "right":
          result = this.viewportRowRight[dept];
          break;
        default:
          result = this.viewportRowCenter[dept];
          break;
      }
      if (missing(result)) {
        result = [];
      }
      return result;
    };
    ColumnModel2.prototype.calculateHeaderRows = function() {
      this.viewportRowLeft = {};
      this.viewportRowRight = {};
      this.viewportRowCenter = {};
      var virtualColIds = {};
      this.headerViewportColumns.forEach(function(col) {
        return virtualColIds[col.getId()] = true;
      });
      var testGroup = function(children, result, dept) {
        var returnValue = false;
        for (var i2 = 0; i2 < children.length; i2++) {
          var child = children[i2];
          var addThisItem = false;
          if (child instanceof Column) {
            addThisItem = virtualColIds[child.getId()] === true;
          } else {
            var columnGroup = child;
            var displayedChildren = columnGroup.getDisplayedChildren();
            if (displayedChildren) {
              addThisItem = testGroup(displayedChildren, result, dept + 1);
            }
          }
          if (addThisItem) {
            returnValue = true;
            if (!result[dept]) {
              result[dept] = [];
            }
            result[dept].push(child);
          }
        }
        return returnValue;
      };
      testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);
      testGroup(this.displayedTreeRight, this.viewportRowRight, 0);
      testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);
    };
    ColumnModel2.prototype.extractViewport = function() {
      var hashColumn = function(c2) {
        return c2.getId() + "-" + (c2.getPinned() || "normal");
      };
      this.extractViewportColumns();
      var newHash = this.viewportColumns.map(hashColumn).join("#");
      var changed = this.viewportColumnsHash !== newHash;
      if (changed) {
        this.viewportColumnsHash = newHash;
        this.calculateHeaderRows();
      }
      return changed;
    };
    ColumnModel2.prototype.refreshFlexedColumns = function(params) {
      var _this = this;
      if (params === void 0) {
        params = {};
      }
      var source = params.source ? params.source : "flex";
      if (params.viewportWidth != null) {
        this.flexViewportWidth = params.viewportWidth;
      }
      if (!this.flexViewportWidth) {
        return [];
      }
      var flexAfterDisplayIndex = -1;
      if (params.resizingCols) {
        params.resizingCols.forEach(function(col2) {
          var indexOfCol = _this.displayedColumnsCenter.indexOf(col2);
          if (flexAfterDisplayIndex < indexOfCol) {
            flexAfterDisplayIndex = indexOfCol;
          }
        });
      }
      var isColFlex = function(col2) {
        var afterResizingCols = _this.displayedColumnsCenter.indexOf(col2) > flexAfterDisplayIndex;
        return col2.getFlex() && afterResizingCols;
      };
      var knownWidthColumns = this.displayedColumnsCenter.filter(function(col2) {
        return !isColFlex(col2);
      });
      var flexingColumns = this.displayedColumnsCenter.filter(function(col2) {
        return isColFlex(col2);
      });
      var changedColumns = [];
      if (!flexingColumns.length) {
        return [];
      }
      var flexingColumnSizes = [];
      var spaceForFlexingColumns;
      outer:
        while (true) {
          var totalFlex = flexingColumns.reduce(function(count, col2) {
            return count + col2.getFlex();
          }, 0);
          spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);
          for (var i2 = 0; i2 < flexingColumns.length; i2++) {
            var col = flexingColumns[i2];
            var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;
            var constrainedWidth = 0;
            var minWidth = col.getMinWidth();
            var maxWidth = col.getMaxWidth();
            if (exists(minWidth) && widthByFlexRule < minWidth) {
              constrainedWidth = minWidth;
            } else if (exists(maxWidth) && widthByFlexRule > maxWidth) {
              constrainedWidth = maxWidth;
            }
            if (constrainedWidth) {
              col.setActualWidth(constrainedWidth, source);
              removeFromArray(flexingColumns, col);
              changedColumns.push(col);
              knownWidthColumns.push(col);
              continue outer;
            }
            flexingColumnSizes[i2] = Math.round(widthByFlexRule);
          }
          break;
        }
      var remainingSpace = spaceForFlexingColumns;
      flexingColumns.forEach(function(col2, i3) {
        col2.setActualWidth(Math.min(flexingColumnSizes[i3], remainingSpace), source);
        changedColumns.push(col2);
        remainingSpace -= flexingColumnSizes[i3];
      });
      if (!params.skipSetLeft) {
        this.setLeftValues(source);
      }
      if (params.updateBodyWidths) {
        this.updateBodyWidths();
      }
      if (params.fireResizedEvent) {
        this.dispatchColumnResizedEvent(changedColumns, true, source, flexingColumns);
      }
      if (!this.flexColsCalculatedAtLestOnce) {
        if (this.gridOptionsService.isRowModelType("clientSide")) {
          this.rowModel.resetRowHeights();
        }
        this.flexColsCalculatedAtLestOnce = true;
      }
      return flexingColumns;
    };
    ColumnModel2.prototype.sizeColumnsToFit = function(gridWidth, source, silent, params) {
      var _a47, _b, _c, _d, _e;
      if (source === void 0) {
        source = "sizeColumnsToFit";
      }
      var limitsMap = {};
      if (params) {
        (_a47 = params === null || params === void 0 ? void 0 : params.columnLimits) === null || _a47 === void 0 ? void 0 : _a47.forEach(function(_a48) {
          var key = _a48.key, dimensions = __rest(_a48, ["key"]);
          limitsMap[typeof key === "string" ? key : key.getColId()] = dimensions;
        });
      }
      var allDisplayedColumns = this.getAllDisplayedColumns();
      var doColumnsAlreadyFit = gridWidth === this.getWidthOfColsInList(allDisplayedColumns);
      if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {
        return;
      }
      var colsToSpread = [];
      var colsToNotSpread = [];
      allDisplayedColumns.forEach(function(column2) {
        if (column2.getColDef().suppressSizeToFit === true) {
          colsToNotSpread.push(column2);
        } else {
          colsToSpread.push(column2);
        }
      });
      var colsToDispatchEventFor = colsToSpread.slice(0);
      var finishedResizing = false;
      var moveToNotSpread = function(column2) {
        removeFromArray(colsToSpread, column2);
        colsToNotSpread.push(column2);
      };
      colsToSpread.forEach(function(column2) {
        return column2.resetActualWidth(source);
      });
      while (!finishedResizing) {
        finishedResizing = true;
        var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);
        if (availablePixels <= 0) {
          colsToSpread.forEach(function(column2) {
            var _a48, _b2;
            var widthOverride2 = (_b2 = (_a48 = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column2.getId()]) === null || _a48 === void 0 ? void 0 : _a48.minWidth) !== null && _b2 !== void 0 ? _b2 : params === null || params === void 0 ? void 0 : params.defaultMinWidth;
            if (typeof widthOverride2 === "number") {
              column2.setActualWidth(widthOverride2);
              return;
            }
            column2.setMinimum(source);
          });
        } else {
          var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);
          var pixelsForLastCol = availablePixels;
          for (var i2 = colsToSpread.length - 1; i2 >= 0; i2--) {
            var column = colsToSpread[i2];
            var widthOverride = limitsMap === null || limitsMap === void 0 ? void 0 : limitsMap[column.getId()];
            var minOverride = (_b = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.minWidth) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.defaultMinWidth;
            var maxOverride = (_c = widthOverride === null || widthOverride === void 0 ? void 0 : widthOverride.maxWidth) !== null && _c !== void 0 ? _c : params === null || params === void 0 ? void 0 : params.defaultMaxWidth;
            var colMinWidth = (_d = column.getMinWidth()) !== null && _d !== void 0 ? _d : 0;
            var colMaxWidth = (_e = column.getMaxWidth()) !== null && _e !== void 0 ? _e : Number.MAX_VALUE;
            var minWidth = typeof minOverride === "number" && minOverride > colMinWidth ? minOverride : column.getMinWidth();
            var maxWidth = typeof maxOverride === "number" && maxOverride < colMaxWidth ? maxOverride : column.getMaxWidth();
            var newWidth = Math.round(column.getActualWidth() * scale);
            if (exists(minWidth) && newWidth < minWidth) {
              newWidth = minWidth;
              moveToNotSpread(column);
              finishedResizing = false;
            } else if (exists(maxWidth) && newWidth > maxWidth) {
              newWidth = maxWidth;
              moveToNotSpread(column);
              finishedResizing = false;
            } else if (i2 === 0) {
              newWidth = pixelsForLastCol;
            }
            column.setActualWidth(newWidth, source, true);
            pixelsForLastCol -= newWidth;
          }
        }
      }
      colsToDispatchEventFor.forEach(function(col) {
        col.fireColumnWidthChangedEvent(source);
      });
      this.setLeftValues(source);
      this.updateBodyWidths();
      if (silent) {
        return;
      }
      this.dispatchColumnResizedEvent(colsToDispatchEventFor, true, source);
    };
    ColumnModel2.prototype.buildDisplayedTrees = function(visibleColumns) {
      var leftVisibleColumns = [];
      var rightVisibleColumns = [];
      var centerVisibleColumns = [];
      visibleColumns.forEach(function(column) {
        switch (column.getPinned()) {
          case "left":
            leftVisibleColumns.push(column);
            break;
          case "right":
            rightVisibleColumns.push(column);
            break;
          default:
            centerVisibleColumns.push(column);
            break;
        }
      });
      var groupInstanceIdCreator = new GroupInstanceIdCreator();
      this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, "left", this.displayedTreeLeft);
      this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, "right", this.displayedTreeRight);
      this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);
      this.updateDisplayedMap();
    };
    ColumnModel2.prototype.updateDisplayedMap = function() {
      var _this = this;
      this.displayedColumnsAndGroupsMap = {};
      var func = function(child) {
        _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;
      };
      this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);
      this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);
      this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);
    };
    ColumnModel2.prototype.isDisplayed = function(item) {
      var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];
      return fromMap === item;
    };
    ColumnModel2.prototype.updateOpenClosedVisibilityInColumnGroups = function() {
      var allColumnGroups = this.getAllDisplayedTrees();
      this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function(child) {
        if (child instanceof ColumnGroup) {
          var columnGroup = child;
          columnGroup.calculateDisplayedColumns();
        }
      });
    };
    ColumnModel2.prototype.getGroupAutoColumns = function() {
      return this.groupAutoColumns;
    };
    ColumnModel2.prototype.createGroupAutoColumnsIfNeeded = function() {
      if (!this.autoGroupsNeedBuilding) {
        return false;
      }
      this.autoGroupsNeedBuilding = false;
      var groupFullWidthRow = this.gridOptionsService.isGroupUseEntireRow(this.pivotMode);
      var suppressAutoColumn = this.pivotMode ? this.gridOptionsService.is("pivotSuppressAutoColumn") : this.isGroupSuppressAutoColumn();
      var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;
      var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;
      if (needAutoColumns) {
        var existingCols = this.groupAutoColumns || [];
        var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);
        var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);
        if (autoColsDifferent || this.forceRecreateAutoGroups) {
          this.groupAutoColumns = newAutoGroupCols;
          return true;
        }
      } else {
        this.groupAutoColumns = null;
      }
      return false;
    };
    ColumnModel2.prototype.isGroupSuppressAutoColumn = function() {
      var groupDisplayType = this.gridOptionsService.get("groupDisplayType");
      var isCustomRowGroups = groupDisplayType ? matchesGroupDisplayType("custom", groupDisplayType) : false;
      if (isCustomRowGroups) {
        return true;
      }
      var treeDataDisplayType = this.gridOptionsService.get("treeDataDisplayType");
      return treeDataDisplayType ? matchesTreeDataDisplayType("custom", treeDataDisplayType) : false;
    };
    ColumnModel2.prototype.autoColsEqual = function(colsA, colsB) {
      return areEqual(colsA, colsB, function(a2, b2) {
        return a2.getColId() === b2.getColId();
      });
    };
    ColumnModel2.prototype.getWidthOfColsInList = function(columnList) {
      return columnList.reduce(function(width, col) {
        return width + col.getActualWidth();
      }, 0);
    };
    ColumnModel2.prototype.getGridBalancedTree = function() {
      return this.gridBalancedTree;
    };
    ColumnModel2.prototype.hasFloatingFilters = function() {
      if (!this.gridColumns) {
        return false;
      }
      var res = this.gridColumns.some(function(col) {
        return col.getColDef().floatingFilter;
      });
      return res;
    };
    ColumnModel2.prototype.getFirstDisplayedColumn = function() {
      var isRtl = this.gridOptionsService.is("enableRtl");
      var queryOrder = [
        "getDisplayedLeftColumns",
        "getDisplayedCenterColumns",
        "getDisplayedRightColumns"
      ];
      if (isRtl) {
        queryOrder.reverse();
      }
      for (var i2 = 0; i2 < queryOrder.length; i2++) {
        var container = this[queryOrder[i2]]();
        if (container.length) {
          return isRtl ? last(container) : container[0];
        }
      }
      return null;
    };
    ColumnModel2.prototype.setColumnHeaderHeight = function(col, height) {
      var changed = col.setAutoHeaderHeight(height);
      if (changed) {
        var event_5 = {
          type: Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,
          column: col,
          columns: [col],
          source: "autosizeColumnHeaderHeight"
        };
        this.eventService.dispatchEvent(event_5);
      }
    };
    ColumnModel2.prototype.getColumnGroupHeaderRowHeight = function() {
      if (this.isPivotMode()) {
        return this.getPivotGroupHeaderHeight();
      }
      return this.getGroupHeaderHeight();
    };
    ColumnModel2.prototype.getColumnHeaderRowHeight = function() {
      var defaultHeight = this.isPivotMode() ? this.getPivotHeaderHeight() : this.getHeaderHeight();
      var displayedHeights = this.getAllDisplayedColumns().filter(function(col) {
        return col.isAutoHeaderHeight();
      }).map(function(col) {
        return col.getAutoHeaderHeight() || 0;
      });
      return Math.max.apply(Math, __spread5([defaultHeight], displayedHeights));
    };
    ColumnModel2.prototype.getHeaderHeight = function() {
      return this.gridOptionsService.getNum("headerHeight") || this.environment.getFromTheme(25, "headerHeight");
    };
    ColumnModel2.prototype.getFloatingFiltersHeight = function() {
      return this.gridOptionsService.getNum("floatingFiltersHeight") || this.environment.getFromTheme(25, "headerHeight");
    };
    ColumnModel2.prototype.getGroupHeaderHeight = function() {
      return this.gridOptionsService.getNum("groupHeaderHeight") || this.getHeaderHeight();
    };
    ColumnModel2.prototype.getPivotHeaderHeight = function() {
      return this.gridOptionsService.getNum("pivotHeaderHeight") || this.getHeaderHeight();
    };
    ColumnModel2.prototype.getPivotGroupHeaderHeight = function() {
      return this.gridOptionsService.getNum("pivotGroupHeaderHeight") || this.getGroupHeaderHeight();
    };
    __decorate10([
      Autowired("expressionService")
    ], ColumnModel2.prototype, "expressionService", void 0);
    __decorate10([
      Autowired("columnFactory")
    ], ColumnModel2.prototype, "columnFactory", void 0);
    __decorate10([
      Autowired("displayedGroupCreator")
    ], ColumnModel2.prototype, "displayedGroupCreator", void 0);
    __decorate10([
      Autowired("ctrlsService")
    ], ColumnModel2.prototype, "ctrlsService", void 0);
    __decorate10([
      Autowired("autoWidthCalculator")
    ], ColumnModel2.prototype, "autoWidthCalculator", void 0);
    __decorate10([
      Autowired("columnUtils")
    ], ColumnModel2.prototype, "columnUtils", void 0);
    __decorate10([
      Autowired("columnAnimationService")
    ], ColumnModel2.prototype, "columnAnimationService", void 0);
    __decorate10([
      Autowired("autoGroupColService")
    ], ColumnModel2.prototype, "autoGroupColService", void 0);
    __decorate10([
      Optional2("aggFuncService")
    ], ColumnModel2.prototype, "aggFuncService", void 0);
    __decorate10([
      Optional2("valueCache")
    ], ColumnModel2.prototype, "valueCache", void 0);
    __decorate10([
      Optional2("animationFrameService")
    ], ColumnModel2.prototype, "animationFrameService", void 0);
    __decorate10([
      Autowired("rowModel")
    ], ColumnModel2.prototype, "rowModel", void 0);
    __decorate10([
      Autowired("sortController")
    ], ColumnModel2.prototype, "sortController", void 0);
    __decorate10([
      Autowired("columnDefFactory")
    ], ColumnModel2.prototype, "columnDefFactory", void 0);
    __decorate10([
      PostConstruct
    ], ColumnModel2.prototype, "init", null);
    __decorate10([
      PreDestroy
    ], ColumnModel2.prototype, "destroyColumns", null);
    __decorate10([
      __param3(0, Qualifier("loggerFactory"))
    ], ColumnModel2.prototype, "setBeans", null);
    ColumnModel2 = __decorate10([
      Bean("columnModel")
    ], ColumnModel2);
    return ColumnModel2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnUtils.js
var __extends4 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate11 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ColumnUtils = (
  /** @class */
  function(_super) {
    __extends4(ColumnUtils2, _super);
    function ColumnUtils2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ColumnUtils2.prototype.calculateColMinWidth = function(colDef) {
      return colDef.minWidth != null ? colDef.minWidth : this.environment.getMinColWidth();
    };
    ColumnUtils2.prototype.calculateColMaxWidth = function(colDef) {
      return colDef.maxWidth != null ? colDef.maxWidth : Number.MAX_SAFE_INTEGER;
    };
    ColumnUtils2.prototype.calculateColInitialWidth = function(colDef) {
      var minColWidth = this.calculateColMinWidth(colDef);
      var maxColWidth = this.calculateColMaxWidth(colDef);
      var width;
      var colDefWidth = attrToNumber(colDef.width);
      var colDefInitialWidth = attrToNumber(colDef.initialWidth);
      if (colDefWidth != null) {
        width = colDefWidth;
      } else if (colDefInitialWidth != null) {
        width = colDefInitialWidth;
      } else {
        width = 200;
      }
      return Math.max(Math.min(width, maxColWidth), minColWidth);
    };
    ColumnUtils2.prototype.getOriginalPathForColumn = function(column, originalBalancedTree) {
      var result = [];
      var found = false;
      var recursePath = function(balancedColumnTree, dept) {
        for (var i2 = 0; i2 < balancedColumnTree.length; i2++) {
          if (found) {
            return;
          }
          var node = balancedColumnTree[i2];
          if (node instanceof ProvidedColumnGroup) {
            var nextNode = node;
            recursePath(nextNode.getChildren(), dept + 1);
            result[dept] = node;
          } else if (node === column) {
            found = true;
          }
        }
      };
      recursePath(originalBalancedTree, 0);
      return found ? result : null;
    };
    ColumnUtils2.prototype.depthFirstOriginalTreeSearch = function(parent2, tree, callback) {
      var _this = this;
      if (!tree) {
        return;
      }
      tree.forEach(function(child) {
        if (child instanceof ProvidedColumnGroup) {
          _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);
        }
        callback(child, parent2);
      });
    };
    ColumnUtils2.prototype.depthFirstAllColumnTreeSearch = function(tree, callback) {
      var _this = this;
      if (!tree) {
        return;
      }
      tree.forEach(function(child) {
        if (child instanceof ColumnGroup) {
          _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);
        }
        callback(child);
      });
    };
    ColumnUtils2.prototype.depthFirstDisplayedColumnTreeSearch = function(tree, callback) {
      var _this = this;
      if (!tree) {
        return;
      }
      tree.forEach(function(child) {
        if (child instanceof ColumnGroup) {
          _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);
        }
        callback(child);
      });
    };
    ColumnUtils2 = __decorate11([
      Bean("columnUtils")
    ], ColumnUtils2);
    return ColumnUtils2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/displayedGroupCreator.js
var __extends5 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate12 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DisplayedGroupCreator = (
  /** @class */
  function(_super) {
    __extends5(DisplayedGroupCreator2, _super);
    function DisplayedGroupCreator2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    DisplayedGroupCreator2.prototype.createDisplayedGroups = function(sortedVisibleColumns, balancedColumnTree, groupInstanceIdCreator, pinned, oldDisplayedGroups) {
      var _this = this;
      var result = [];
      var previousRealPath;
      var previousOriginalPath;
      var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);
      sortedVisibleColumns.forEach(function(currentColumn) {
        var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);
        var currentRealPath = [];
        var firstColumn = !previousOriginalPath;
        for (var i2 = 0; i2 < currentOriginalPath.length; i2++) {
          if (firstColumn || currentOriginalPath[i2] !== previousOriginalPath[i2]) {
            var newGroup = _this.createColumnGroup(currentOriginalPath[i2], groupInstanceIdCreator, oldColumnsMapped, pinned);
            currentRealPath[i2] = newGroup;
            if (i2 == 0) {
              result.push(newGroup);
            } else {
              currentRealPath[i2 - 1].addChild(newGroup);
            }
          } else {
            currentRealPath[i2] = previousRealPath[i2];
          }
        }
        var noColumnGroups = currentRealPath.length === 0;
        if (noColumnGroups) {
          result.push(currentColumn);
        } else {
          var leafGroup = last(currentRealPath);
          leafGroup.addChild(currentColumn);
        }
        previousRealPath = currentRealPath;
        previousOriginalPath = currentOriginalPath;
      });
      this.setupParentsIntoColumns(result, null);
      return result;
    };
    DisplayedGroupCreator2.prototype.createColumnGroup = function(providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {
      var groupId = providedGroup.getGroupId();
      var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);
      var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);
      var columnGroup = oldColumnsMapped[uniqueId];
      if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {
        columnGroup = null;
      }
      if (exists(columnGroup)) {
        columnGroup.reset();
      } else {
        columnGroup = new ColumnGroup(providedGroup, groupId, instanceId, pinned);
        this.context.createBean(columnGroup);
      }
      return columnGroup;
    };
    DisplayedGroupCreator2.prototype.mapOldGroupsById = function(displayedGroups) {
      var result = {};
      var recursive = function(columnsOrGroups) {
        columnsOrGroups.forEach(function(columnOrGroup) {
          if (columnOrGroup instanceof ColumnGroup) {
            var columnGroup = columnOrGroup;
            result[columnOrGroup.getUniqueId()] = columnGroup;
            recursive(columnGroup.getChildren());
          }
        });
      };
      if (displayedGroups) {
        recursive(displayedGroups);
      }
      return result;
    };
    DisplayedGroupCreator2.prototype.setupParentsIntoColumns = function(columnsOrGroups, parent2) {
      var _this = this;
      columnsOrGroups.forEach(function(columnsOrGroup) {
        columnsOrGroup.setParent(parent2);
        if (columnsOrGroup instanceof ColumnGroup) {
          var columnGroup = columnsOrGroup;
          _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);
        }
      });
    };
    DisplayedGroupCreator2.prototype.getOriginalPathForColumn = function(balancedColumnTree, column) {
      var result = [];
      var found = false;
      var recursePath = function(columnTree, dept) {
        for (var i2 = 0; i2 < columnTree.length; i2++) {
          if (found) {
            return;
          }
          var node = columnTree[i2];
          if (node instanceof ProvidedColumnGroup) {
            recursePath(node.getChildren(), dept + 1);
            result[dept] = node;
          } else if (node === column) {
            found = true;
          }
        }
      };
      recursePath(balancedColumnTree, 0);
      if (found) {
        return result;
      }
      console.warn("AG Grid: could not get path");
      return null;
    };
    DisplayedGroupCreator2 = __decorate12([
      Bean("displayedGroupCreator")
    ], DisplayedGroupCreator2);
    return DisplayedGroupCreator2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/agStackComponentsRegistry.js
var __extends6 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate13 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgStackComponentsRegistry = (
  /** @class */
  function(_super) {
    __extends6(AgStackComponentsRegistry2, _super);
    function AgStackComponentsRegistry2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.componentsMappedByName = {};
      return _this;
    }
    AgStackComponentsRegistry2.prototype.setupComponents = function(components) {
      var _this = this;
      if (components) {
        components.forEach(function(componentMeta) {
          return _this.addComponent(componentMeta);
        });
      }
    };
    AgStackComponentsRegistry2.prototype.addComponent = function(componentMeta) {
      var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
      var classUpperCase = classEscaped.toUpperCase();
      this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;
    };
    AgStackComponentsRegistry2.prototype.getComponentClass = function(htmlTag) {
      return this.componentsMappedByName[htmlTag];
    };
    AgStackComponentsRegistry2 = __decorate13([
      Bean("agStackComponentsRegistry")
    ], AgStackComponentsRegistry2);
    return AgStackComponentsRegistry2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/aria.js
var aria_exports = {};
__export(aria_exports, {
  getAriaDescribedBy: () => getAriaDescribedBy,
  getAriaLevel: () => getAriaLevel,
  getAriaPosInSet: () => getAriaPosInSet,
  getAriaSortState: () => getAriaSortState,
  removeAriaExpanded: () => removeAriaExpanded,
  removeAriaSort: () => removeAriaSort,
  setAriaChecked: () => setAriaChecked,
  setAriaColCount: () => setAriaColCount,
  setAriaColIndex: () => setAriaColIndex,
  setAriaColSpan: () => setAriaColSpan,
  setAriaDescribedBy: () => setAriaDescribedBy,
  setAriaDescription: () => setAriaDescription,
  setAriaDisabled: () => setAriaDisabled,
  setAriaExpanded: () => setAriaExpanded,
  setAriaHidden: () => setAriaHidden,
  setAriaLabel: () => setAriaLabel,
  setAriaLabelledBy: () => setAriaLabelledBy,
  setAriaLevel: () => setAriaLevel,
  setAriaMultiSelectable: () => setAriaMultiSelectable,
  setAriaPosInSet: () => setAriaPosInSet,
  setAriaRole: () => setAriaRole,
  setAriaRowCount: () => setAriaRowCount,
  setAriaRowIndex: () => setAriaRowIndex,
  setAriaSelected: () => setAriaSelected,
  setAriaSetSize: () => setAriaSetSize,
  setAriaSort: () => setAriaSort
});
function setAriaAttribute(element, attribute, value) {
  element.setAttribute(ariaAttributeName(attribute), value.toString());
}
function removeAriaAttribute(element, attribute) {
  element.removeAttribute(ariaAttributeName(attribute));
}
function ariaAttributeName(attribute) {
  return "aria-" + attribute;
}
function setAriaRole(element, role) {
  if (role) {
    element.setAttribute("role", role);
  } else {
    element.removeAttribute("role");
  }
}
function getAriaSortState(sortDirection) {
  var sort;
  if (sortDirection === "asc") {
    sort = "ascending";
  } else if (sortDirection === "desc") {
    sort = "descending";
  } else if (sortDirection === "mixed") {
    sort = "other";
  } else {
    sort = "none";
  }
  return sort;
}
function getAriaLevel(element) {
  return parseInt(element.getAttribute("aria-level"), 10);
}
function getAriaPosInSet(element) {
  return parseInt(element.getAttribute("aria-posinset"), 10);
}
function getAriaDescribedBy(element) {
  return element.getAttribute("aria-describedby") || "";
}
function setAriaLabel(element, label) {
  var key = "label";
  if (label != null && label !== "") {
    setAriaAttribute(element, key, label);
  } else {
    removeAriaAttribute(element, key);
  }
}
function setAriaLabelledBy(element, labelledBy) {
  var key = "labelledby";
  if (labelledBy) {
    setAriaAttribute(element, key, labelledBy);
  } else {
    removeAriaAttribute(element, key);
  }
}
function setAriaDescription(element, description) {
  var key = "description";
  if (description) {
    setAriaAttribute(element, key, description);
  } else {
    removeAriaAttribute(element, key);
  }
}
function setAriaDescribedBy(element, describedby) {
  var key = "describedby";
  if (describedby) {
    setAriaAttribute(element, key, describedby);
  } else {
    removeAriaAttribute(element, key);
  }
}
function setAriaLevel(element, level) {
  setAriaAttribute(element, "level", level);
}
function setAriaDisabled(element, disabled) {
  setAriaAttribute(element, "disabled", disabled);
}
function setAriaHidden(element, hidden) {
  if (hidden) {
    setAriaAttribute(element, "hidden", true);
  } else {
    removeAriaAttribute(element, "hidden");
  }
}
function setAriaExpanded(element, expanded) {
  setAriaAttribute(element, "expanded", expanded);
}
function removeAriaExpanded(element) {
  removeAriaAttribute(element, "expanded");
}
function setAriaSetSize(element, setsize) {
  setAriaAttribute(element, "setsize", setsize);
}
function setAriaPosInSet(element, position) {
  setAriaAttribute(element, "posinset", position);
}
function setAriaMultiSelectable(element, multiSelectable) {
  setAriaAttribute(element, "multiselectable", multiSelectable);
}
function setAriaRowCount(element, rowCount) {
  setAriaAttribute(element, "rowcount", rowCount);
}
function setAriaRowIndex(element, rowIndex) {
  setAriaAttribute(element, "rowindex", rowIndex);
}
function setAriaColCount(element, colCount) {
  setAriaAttribute(element, "colcount", colCount);
}
function setAriaColIndex(element, colIndex) {
  setAriaAttribute(element, "colindex", colIndex);
}
function setAriaColSpan(element, colSpan) {
  setAriaAttribute(element, "colspan", colSpan);
}
function setAriaSort(element, sort) {
  setAriaAttribute(element, "sort", sort);
}
function removeAriaSort(element) {
  removeAriaAttribute(element, "sort");
}
function setAriaSelected(element, selected) {
  var attributeName = "selected";
  if (selected) {
    setAriaAttribute(element, attributeName, selected);
  } else {
    removeAriaAttribute(element, attributeName);
  }
}
function setAriaChecked(element, checked) {
  setAriaAttribute(element, "checked", checked === void 0 ? "mixed" : checked);
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/browser.js
var browser_exports = {};
__export(browser_exports, {
  browserSupportsPreventScroll: () => browserSupportsPreventScroll,
  getBodyHeight: () => getBodyHeight,
  getBodyWidth: () => getBodyWidth,
  getBrowserInfo: () => getBrowserInfo,
  getMaxDivHeight: () => getMaxDivHeight,
  getScrollbarWidth: () => getScrollbarWidth,
  getTabIndex: () => getTabIndex,
  hasOverflowScrolling: () => hasOverflowScrolling,
  isBrowserChrome: () => isBrowserChrome,
  isBrowserEdge: () => isBrowserEdge,
  isBrowserFirefox: () => isBrowserFirefox,
  isBrowserSafari: () => isBrowserSafari,
  isIOSUserAgent: () => isIOSUserAgent,
  isInvisibleScrollbar: () => isInvisibleScrollbar,
  isMacOsUserAgent: () => isMacOsUserAgent
});
var __values2 = function(o2) {
  var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0;
  if (m2)
    return m2.call(o2);
  if (o2 && typeof o2.length === "number")
    return {
      next: function() {
        if (o2 && i2 >= o2.length)
          o2 = void 0;
        return { value: o2 && o2[i2++], done: !o2 };
      }
    };
  throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var isSafari;
var isIE;
var isEdge;
var isChrome;
var isFirefox;
var isMacOs;
var isIOS;
var invisibleScrollbar;
var browserScrollbarWidth;
var browserInfo;
function getBrowserInfo() {
  if (browserInfo) {
    return browserInfo;
  }
  var userAgent = navigator.userAgent;
  var match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
  var tem;
  var version;
  if (/trident/i.test(match[1])) {
    tem = /\brv[ :]+(\d+)/g.exec(userAgent) || [];
    version = tem[1] != null ? parseFloat(tem[1]) : 0;
    return {
      name: "IE",
      version
    };
  }
  if (match[1] === "Chrome") {
    tem = userAgent.match(/\bOPR|Edge\/(\d+)/);
    if (tem != null) {
      version = tem[1] != null ? parseFloat(tem[1]) : 0;
      return {
        name: "Opera",
        version
      };
    }
  }
  match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, "-?"];
  tem = userAgent.match(/version\/(\d+)/i);
  if (tem != null) {
    match.splice(1, 1, tem[1]);
  }
  var name = match[0];
  version = match[1] != null ? parseFloat(match[1]) : 0;
  browserInfo = { name, version };
  return browserInfo;
}
function isBrowserIE() {
  if (isIE === void 0) {
    isIE = !!document.documentMode;
  }
  return isIE;
}
function isBrowserEdge() {
  if (isEdge === void 0) {
    isEdge = !isBrowserIE() && !!window.StyleMedia;
  }
  return isEdge;
}
function isBrowserSafari() {
  if (isSafari === void 0) {
    isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
  }
  return isSafari;
}
function isBrowserChrome() {
  if (isChrome === void 0) {
    var win = window;
    isChrome = !!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime) || /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
  }
  return isChrome;
}
function isBrowserFirefox() {
  if (isFirefox === void 0) {
    var win = window;
    isFirefox = typeof win.InstallTrigger !== "undefined";
  }
  return isFirefox;
}
function isMacOsUserAgent() {
  if (isMacOs === void 0) {
    isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
  }
  return isMacOs;
}
function isIOSUserAgent() {
  if (isIOS === void 0) {
    isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) || // eslint-disable-next-line
    navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1) && // @ts-ignore
    !window.MSStream;
  }
  return isIOS;
}
function browserSupportsPreventScroll() {
  return !isBrowserSafari() || getBrowserInfo().version >= 15;
}
function getTabIndex(el) {
  if (!el) {
    return null;
  }
  var numberTabIndex = el.tabIndex;
  var tabIndex = el.getAttribute("tabIndex");
  if (numberTabIndex === -1 && (tabIndex === null || tabIndex === "" && !isBrowserFirefox())) {
    return null;
  }
  return numberTabIndex.toString();
}
function getMaxDivHeight() {
  if (!document.body) {
    return -1;
  }
  var res = 1e6;
  var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6e6 : 1e9;
  var div = document.createElement("div");
  document.body.appendChild(div);
  while (true) {
    var test = res * 2;
    div.style.height = test + "px";
    if (test > testUpTo || div.clientHeight !== test) {
      break;
    } else {
      res = test;
    }
  }
  document.body.removeChild(div);
  return res;
}
function getScrollbarWidth() {
  if (browserScrollbarWidth == null) {
    initScrollbarWidthAndVisibility();
  }
  return browserScrollbarWidth;
}
function initScrollbarWidthAndVisibility() {
  var body = document.body;
  var div = document.createElement("div");
  div.style.width = div.style.height = "100px";
  div.style.opacity = "0";
  div.style.overflow = "scroll";
  div.style.msOverflowStyle = "scrollbar";
  div.style.position = "absolute";
  body.appendChild(div);
  var width = div.offsetWidth - div.clientWidth;
  if (width === 0 && div.clientWidth === 0) {
    width = null;
  }
  if (div.parentNode) {
    div.parentNode.removeChild(div);
  }
  if (width != null) {
    browserScrollbarWidth = width;
    invisibleScrollbar = width === 0;
  }
}
function isInvisibleScrollbar() {
  if (invisibleScrollbar == null) {
    initScrollbarWidthAndVisibility();
  }
  return invisibleScrollbar;
}
function hasOverflowScrolling() {
  var e_1, _a47;
  var prefixes = ["webkit", "moz", "o", "ms"];
  var div = document.createElement("div");
  var body = document.getElementsByTagName("body")[0];
  var found = false;
  var p2;
  body.appendChild(div);
  div.setAttribute("style", prefixes.map(function(prefix) {
    return "-" + prefix + "-overflow-scrolling: touch";
  }).concat("overflow-scrolling: touch").join(";"));
  var computedStyle = window.getComputedStyle(div);
  if (computedStyle.overflowScrolling === "touch") {
    found = true;
  }
  if (!found) {
    try {
      for (var prefixes_1 = __values2(prefixes), prefixes_1_1 = prefixes_1.next(); !prefixes_1_1.done; prefixes_1_1 = prefixes_1.next()) {
        p2 = prefixes_1_1.value;
        if (computedStyle[p2 + "OverflowScrolling"] === "touch") {
          found = true;
          break;
        }
      }
    } catch (e_1_1) {
      e_1 = { error: e_1_1 };
    } finally {
      try {
        if (prefixes_1_1 && !prefixes_1_1.done && (_a47 = prefixes_1.return))
          _a47.call(prefixes_1);
      } finally {
        if (e_1)
          throw e_1.error;
      }
    }
  }
  if (div.parentNode) {
    div.parentNode.removeChild(div);
  }
  return found;
}
function getBodyWidth() {
  if (document.body) {
    return document.body.clientWidth;
  }
  if (window.innerHeight) {
    return window.innerWidth;
  }
  if (document.documentElement && document.documentElement.clientWidth) {
    return document.documentElement.clientWidth;
  }
  return -1;
}
function getBodyHeight() {
  if (document.body) {
    return document.body.clientHeight;
  }
  if (window.innerHeight) {
    return window.innerHeight;
  }
  if (document.documentElement && document.documentElement.clientHeight) {
    return document.documentElement.clientHeight;
  }
  return -1;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/date.js
var date_exports = {};
__export(date_exports, {
  dateToFormattedString: () => dateToFormattedString,
  parseDateTimeFromString: () => parseDateTimeFromString,
  serialiseDate: () => serialiseDate
});

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/number.js
var number_exports = {};
__export(number_exports, {
  cleanNumber: () => cleanNumber,
  createArrayOfNumbers: () => createArrayOfNumbers,
  decToHex: () => decToHex,
  formatNumberCommas: () => formatNumberCommas,
  formatNumberTwoDecimalPlacesAndCommas: () => formatNumberTwoDecimalPlacesAndCommas,
  oneOrGreater: () => oneOrGreater,
  padStartWidthZeros: () => padStartWidthZeros,
  sum: () => sum,
  zeroOrGreater: () => zeroOrGreater
});
function padStartWidthZeros(value, totalStringSize) {
  return value.toString().padStart(totalStringSize, "0");
}
function createArrayOfNumbers(first, last2) {
  var result = [];
  for (var i2 = first; i2 <= last2; i2++) {
    result.push(i2);
  }
  return result;
}
function cleanNumber(value) {
  if (typeof value === "string") {
    value = parseInt(value, 10);
  }
  if (typeof value === "number") {
    return Math.floor(value);
  }
  return null;
}
function decToHex(number, bytes) {
  var hex = "";
  for (var i2 = 0; i2 < bytes; i2++) {
    hex += String.fromCharCode(number & 255);
    number >>>= 8;
  }
  return hex;
}
function formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {
  if (typeof value !== "number") {
    return "";
  }
  return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);
}
function formatNumberCommas(value, thousandSeparator, decimalSeparator) {
  if (typeof value !== "number") {
    return "";
  }
  return value.toString().replace(".", decimalSeparator).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1" + thousandSeparator);
}
function sum(values2) {
  return values2 == null ? null : values2.reduce(function(total, value) {
    return total + value;
  }, 0);
}
function zeroOrGreater(value, defaultValue) {
  if (value >= 0) {
    return value;
  }
  return defaultValue;
}
function oneOrGreater(value, defaultValue) {
  var valueNumber = parseInt(value, 10);
  if (!isNaN(valueNumber) && isFinite(valueNumber) && valueNumber > 0) {
    return valueNumber;
  }
  return defaultValue;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/date.js
var __read7 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
function serialiseDate(date, includeTime, separator) {
  if (includeTime === void 0) {
    includeTime = true;
  }
  if (separator === void 0) {
    separator = "-";
  }
  if (!date) {
    return null;
  }
  var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function(part) {
    return padStartWidthZeros(part, 2);
  }).join(separator);
  if (includeTime) {
    serialised += " " + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function(part) {
      return padStartWidthZeros(part, 2);
    }).join(":");
  }
  return serialised;
}
var calculateOrdinal = function(value) {
  if (value > 3 && value < 21) {
    return "th";
  }
  var remainder = value % 10;
  switch (remainder) {
    case 1:
      return "st";
    case 2:
      return "nd";
    case 3:
      return "rd";
  }
  return "th";
};
function dateToFormattedString(date, format) {
  if (format === void 0) {
    format = "YYYY-MM-DD";
  }
  var fullYear = padStartWidthZeros(date.getFullYear(), 4);
  var months = [
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
  ];
  var days = [
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
  ];
  var replace = {
    YYYY: function() {
      return fullYear.slice(fullYear.length - 4, fullYear.length);
    },
    YY: function() {
      return fullYear.slice(fullYear.length - 2, fullYear.length);
    },
    Y: function() {
      return "" + date.getFullYear();
    },
    MMMM: function() {
      return months[date.getMonth()];
    },
    MMM: function() {
      return months[date.getMonth()].slice(0, 3);
    },
    MM: function() {
      return padStartWidthZeros(date.getMonth() + 1, 2);
    },
    Mo: function() {
      return "" + (date.getMonth() + 1) + calculateOrdinal(date.getMonth() + 1);
    },
    M: function() {
      return "" + (date.getMonth() + 1);
    },
    Do: function() {
      return "" + date.getDate() + calculateOrdinal(date.getDate());
    },
    DD: function() {
      return padStartWidthZeros(date.getDate(), 2);
    },
    D: function() {
      return "" + date.getDate();
    },
    dddd: function() {
      return days[date.getDay()];
    },
    ddd: function() {
      return days[date.getDay()].slice(0, 3);
    },
    dd: function() {
      return days[date.getDay()].slice(0, 2);
    },
    do: function() {
      return "" + date.getDay() + calculateOrdinal(date.getDay());
    },
    d: function() {
      return "" + date.getDay();
    }
  };
  var regexp = new RegExp(Object.keys(replace).join("|"), "g");
  return format.replace(regexp, function(match) {
    if (match in replace) {
      return replace[match]();
    }
    return match;
  });
}
function parseDateTimeFromString(value) {
  if (!value) {
    return null;
  }
  var _a47 = __read7(value.split(" "), 2), dateStr = _a47[0], timeStr = _a47[1];
  if (!dateStr) {
    return null;
  }
  var fields = dateStr.split("-").map(function(f2) {
    return parseInt(f2, 10);
  });
  if (fields.filter(function(f2) {
    return !isNaN(f2);
  }).length !== 3) {
    return null;
  }
  var _b = __read7(fields, 3), year = _b[0], month = _b[1], day = _b[2];
  var date = new Date(year, month - 1, day);
  if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
    return null;
  }
  if (!timeStr || timeStr === "00:00:00") {
    return date;
  }
  var _c = __read7(timeStr.split(":").map(function(part) {
    return parseInt(part, 10);
  }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];
  if (hours >= 0 && hours < 24) {
    date.setHours(hours);
  }
  if (minutes >= 0 && minutes < 60) {
    date.setMinutes(minutes);
  }
  if (seconds >= 0 && seconds < 60) {
    date.setSeconds(seconds);
  }
  return date;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/dom.js
var dom_exports = {};
__export(dom_exports, {
  FOCUSABLE_EXCLUDE: () => FOCUSABLE_EXCLUDE,
  FOCUSABLE_SELECTOR: () => FOCUSABLE_SELECTOR,
  addOrRemoveAttribute: () => addOrRemoveAttribute,
  addStylesToElement: () => addStylesToElement,
  appendHtml: () => appendHtml,
  clearElement: () => clearElement,
  copyNodeList: () => copyNodeList,
  ensureDomOrder: () => ensureDomOrder,
  formatSize: () => formatSize,
  getAbsoluteHeight: () => getAbsoluteHeight,
  getAbsoluteWidth: () => getAbsoluteWidth,
  getElementAttribute: () => getElementAttribute,
  getElementSize: () => getElementSize,
  getInnerHeight: () => getInnerHeight,
  getInnerWidth: () => getInnerWidth,
  getScrollLeft: () => getScrollLeft,
  insertWithDomOrder: () => insertWithDomOrder,
  isElementChildOfClass: () => isElementChildOfClass,
  isFocusableFormField: () => isFocusableFormField,
  isHorizontalScrollShowing: () => isHorizontalScrollShowing,
  isNodeOrElement: () => isNodeOrElement,
  isRtlNegativeScroll: () => isRtlNegativeScroll,
  isVerticalScrollShowing: () => isVerticalScrollShowing,
  isVisible: () => isVisible,
  iterateNamedNodeMap: () => iterateNamedNodeMap,
  loadTemplate: () => loadTemplate,
  nodeListForEach: () => nodeListForEach,
  offsetHeight: () => offsetHeight,
  offsetWidth: () => offsetWidth,
  prependDC: () => prependDC,
  radioCssClass: () => radioCssClass,
  removeElement: () => removeElement,
  removeFromParent: () => removeFromParent,
  setDisabled: () => setDisabled,
  setDisplayed: () => setDisplayed,
  setDomChildOrder: () => setDomChildOrder,
  setElementHeight: () => setElementHeight,
  setElementWidth: () => setElementWidth,
  setFixedHeight: () => setFixedHeight,
  setFixedWidth: () => setFixedWidth,
  setScrollLeft: () => setScrollLeft,
  setVisible: () => setVisible
});
var rtlNegativeScroll;
function radioCssClass(element, elementClass, otherElementClass) {
  var parent2 = element.parentElement;
  var sibling = parent2 && parent2.firstChild;
  while (sibling) {
    if (elementClass) {
      sibling.classList.toggle(elementClass, sibling === element);
    }
    if (otherElementClass) {
      sibling.classList.toggle(otherElementClass, sibling !== element);
    }
    sibling = sibling.nextSibling;
  }
}
var FOCUSABLE_SELECTOR = "[tabindex], input, select, button, textarea, [href]";
var FOCUSABLE_EXCLUDE = ".ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *";
function isFocusableFormField(element) {
  var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;
  var inputSelector = "input, select, button, textarea";
  var isFocusable = matches.call(element, inputSelector);
  var isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);
  var isElementVisible = isVisible(element);
  var focusable = isFocusable && !isNotFocusable && isElementVisible;
  return focusable;
}
function setDisplayed(element, displayed, options) {
  if (options === void 0) {
    options = {};
  }
  var skipAriaHidden = options.skipAriaHidden;
  element.classList.toggle("ag-hidden", !displayed);
  if (!skipAriaHidden) {
    setAriaHidden(element, !displayed);
  }
}
function setVisible(element, visible, options) {
  if (options === void 0) {
    options = {};
  }
  var skipAriaHidden = options.skipAriaHidden;
  element.classList.toggle("ag-invisible", !visible);
  if (!skipAriaHidden) {
    setAriaHidden(element, !visible);
  }
}
function setDisabled(element, disabled) {
  var attributeName = "disabled";
  var addOrRemoveDisabledAttribute = disabled ? function(e2) {
    return e2.setAttribute(attributeName, "");
  } : function(e2) {
    return e2.removeAttribute(attributeName);
  };
  addOrRemoveDisabledAttribute(element);
  nodeListForEach(element.querySelectorAll("input"), function(input) {
    return addOrRemoveDisabledAttribute(input);
  });
}
function isElementChildOfClass(element, cls, maxNest) {
  var counter = 0;
  while (element) {
    if (element.classList.contains(cls)) {
      return true;
    }
    element = element.parentElement;
    if (typeof maxNest == "number") {
      if (++counter > maxNest) {
        break;
      }
    } else if (element === maxNest) {
      break;
    }
  }
  return false;
}
function getElementSize(el) {
  var _a47 = window.getComputedStyle(el), height = _a47.height, width = _a47.width, paddingTop = _a47.paddingTop, paddingRight = _a47.paddingRight, paddingBottom = _a47.paddingBottom, paddingLeft = _a47.paddingLeft, marginTop = _a47.marginTop, marginRight = _a47.marginRight, marginBottom = _a47.marginBottom, marginLeft = _a47.marginLeft, boxSizing = _a47.boxSizing;
  return {
    height: parseFloat(height),
    width: parseFloat(width),
    paddingTop: parseFloat(paddingTop),
    paddingRight: parseFloat(paddingRight),
    paddingBottom: parseFloat(paddingBottom),
    paddingLeft: parseFloat(paddingLeft),
    marginTop: parseFloat(marginTop),
    marginRight: parseFloat(marginRight),
    marginBottom: parseFloat(marginBottom),
    marginLeft: parseFloat(marginLeft),
    boxSizing
  };
}
function getInnerHeight(el) {
  var size = getElementSize(el);
  if (size.boxSizing === "border-box") {
    return size.height - size.paddingTop - size.paddingBottom;
  }
  return size.height;
}
function getInnerWidth(el) {
  var size = getElementSize(el);
  if (size.boxSizing === "border-box") {
    return size.width - size.paddingLeft - size.paddingRight;
  }
  return size.width;
}
function getAbsoluteHeight(el) {
  var size = getElementSize(el);
  var marginRight = size.marginBottom + size.marginTop;
  return Math.ceil(el.offsetHeight + marginRight);
}
function getAbsoluteWidth(el) {
  var size = getElementSize(el);
  var marginWidth = size.marginLeft + size.marginRight;
  return Math.ceil(el.offsetWidth + marginWidth);
}
function isRtlNegativeScroll() {
  if (typeof rtlNegativeScroll === "boolean") {
    return rtlNegativeScroll;
  }
  var template = document.createElement("div");
  template.style.direction = "rtl";
  template.style.width = "1px";
  template.style.height = "1px";
  template.style.position = "fixed";
  template.style.top = "0px";
  template.style.overflow = "hidden";
  template.dir = "rtl";
  template.innerHTML = /* html */
  '<div style="width: 2px">\n            <span style="display: inline-block; width: 1px"></span>\n            <span style="display: inline-block; width: 1px"></span>\n        </div>';
  document.body.appendChild(template);
  template.scrollLeft = 1;
  rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;
  document.body.removeChild(template);
  return rtlNegativeScroll;
}
function getScrollLeft(element, rtl) {
  var scrollLeft2 = element.scrollLeft;
  if (rtl) {
    scrollLeft2 = Math.abs(scrollLeft2);
    if (isBrowserChrome() && !isRtlNegativeScroll()) {
      scrollLeft2 = element.scrollWidth - element.clientWidth - scrollLeft2;
    }
  }
  return scrollLeft2;
}
function setScrollLeft(element, value, rtl) {
  if (rtl) {
    if (isRtlNegativeScroll()) {
      value *= -1;
    } else if (isBrowserSafari() || isBrowserChrome()) {
      value = element.scrollWidth - element.clientWidth - value;
    }
  }
  element.scrollLeft = value;
}
function clearElement(el) {
  while (el && el.firstChild) {
    el.removeChild(el.firstChild);
  }
}
function removeElement(parent2, cssSelector) {
  removeFromParent(parent2.querySelector(cssSelector));
}
function removeFromParent(node) {
  if (node && node.parentNode) {
    node.parentNode.removeChild(node);
  }
}
function isVisible(element) {
  return element.offsetParent !== null;
}
function loadTemplate(template) {
  var tempDiv = document.createElement("div");
  tempDiv.innerHTML = (template || "").trim();
  return tempDiv.firstChild;
}
function appendHtml(eContainer, htmlTemplate) {
  if (eContainer.lastChild) {
    eContainer.insertAdjacentHTML("afterbegin", htmlTemplate);
  } else {
    eContainer.innerHTML = htmlTemplate;
  }
}
function getElementAttribute(element, attributeName) {
  if (element.attributes && element.attributes[attributeName]) {
    var attribute = element.attributes[attributeName];
    return attribute.value;
  }
  return null;
}
function offsetHeight(element) {
  return element && element.clientHeight ? element.clientHeight : 0;
}
function offsetWidth(element) {
  return element && element.clientWidth ? element.clientWidth : 0;
}
function ensureDomOrder(eContainer, eChild, eChildBefore) {
  if (eChildBefore && eChildBefore.nextSibling === eChild) {
    return;
  }
  var focusedEl = document.activeElement;
  var eChildHasFocus = eChild.contains(focusedEl);
  if (eChildBefore) {
    if (eChildBefore.nextSibling) {
      eContainer.insertBefore(eChild, eChildBefore.nextSibling);
    } else {
      eContainer.appendChild(eChild);
    }
  } else {
    if (eContainer.firstChild && eContainer.firstChild !== eChild) {
      eContainer.insertAdjacentElement("afterbegin", eChild);
    }
  }
  if (eChildHasFocus && focusedEl && browserSupportsPreventScroll()) {
    focusedEl.focus({ preventScroll: true });
  }
}
function setDomChildOrder(eContainer, orderedChildren) {
  for (var i2 = 0; i2 < orderedChildren.length; i2++) {
    var correctCellAtIndex = orderedChildren[i2];
    var actualCellAtIndex = eContainer.children[i2];
    if (actualCellAtIndex !== correctCellAtIndex) {
      eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);
    }
  }
}
function insertWithDomOrder(eContainer, eToInsert, eChildBefore) {
  if (eChildBefore) {
    eChildBefore.insertAdjacentElement("afterend", eToInsert);
  } else {
    if (eContainer.firstChild) {
      eContainer.insertAdjacentElement("afterbegin", eToInsert);
    } else {
      eContainer.appendChild(eToInsert);
    }
  }
}
function prependDC(parent2, documentFragment) {
  if (exists(parent2.firstChild)) {
    parent2.insertBefore(documentFragment, parent2.firstChild);
  } else {
    parent2.appendChild(documentFragment);
  }
}
function addStylesToElement(eElement, styles) {
  if (!styles) {
    return;
  }
  Object.keys(styles).forEach(function(key) {
    if (!key || !key.length) {
      return;
    }
    var parsedKey = key.replace(/[A-Z]/g, function(s2) {
      return "-" + s2.toLocaleLowerCase();
    });
    var value = styles[key].replace(/\s*!important/g, "");
    var priority = value.length != styles[key].length ? "important" : void 0;
    eElement.style.setProperty(parsedKey, value, priority);
  });
}
function isHorizontalScrollShowing(element) {
  return element.clientWidth < element.scrollWidth;
}
function isVerticalScrollShowing(element) {
  return element.clientHeight < element.scrollHeight;
}
function setElementWidth(element, width) {
  if (width === "flex") {
    element.style.removeProperty("width");
    element.style.removeProperty("minWidth");
    element.style.removeProperty("maxWidth");
    element.style.flex = "1 1 auto";
  } else {
    setFixedWidth(element, width);
  }
}
function setFixedWidth(element, width) {
  width = formatSize(width);
  element.style.width = width.toString();
  element.style.maxWidth = width.toString();
  element.style.minWidth = width.toString();
}
function setElementHeight(element, height) {
  if (height === "flex") {
    element.style.removeProperty("height");
    element.style.removeProperty("minHeight");
    element.style.removeProperty("maxHeight");
    element.style.flex = "1 1 auto";
  } else {
    setFixedHeight(element, height);
  }
}
function setFixedHeight(element, height) {
  height = formatSize(height);
  element.style.height = height.toString();
  element.style.maxHeight = height.toString();
  element.style.minHeight = height.toString();
}
function formatSize(size) {
  if (typeof size === "number") {
    return size + "px";
  }
  return size;
}
function isNodeOrElement(o2) {
  return o2 instanceof Node || o2 instanceof HTMLElement;
}
function copyNodeList(nodeList) {
  if (nodeList == null) {
    return [];
  }
  var result = [];
  nodeListForEach(nodeList, function(node) {
    return result.push(node);
  });
  return result;
}
function iterateNamedNodeMap(map2, callback) {
  if (!map2) {
    return;
  }
  for (var i2 = 0; i2 < map2.length; i2++) {
    var attr2 = map2[i2];
    callback(attr2.name, attr2.value);
  }
}
function addOrRemoveAttribute(element, name, value) {
  if (value == null) {
    element.removeAttribute(name);
  } else {
    element.setAttribute(name, value.toString());
  }
}
function nodeListForEach(nodeList, action) {
  if (nodeList == null) {
    return;
  }
  for (var i2 = 0; i2 < nodeList.length; i2++) {
    action(nodeList[i2]);
  }
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/icon.js
var icon_exports = {};
__export(icon_exports, {
  createIcon: () => createIcon,
  createIconNoSpan: () => createIconNoSpan,
  iconNameClassMap: () => iconNameClassMap
});
var iconNameClassMap = {
  // header column group shown when expanded (click to contract)
  columnGroupOpened: "expanded",
  // header column group shown when contracted (click to expand)
  columnGroupClosed: "contracted",
  // tool panel column group contracted (click to expand)
  columnSelectClosed: "tree-closed",
  // tool panel column group expanded (click to contract)
  columnSelectOpen: "tree-open",
  // column tool panel header expand/collapse all button, shown when some children are expanded and
  //     others are collapsed
  columnSelectIndeterminate: "tree-indeterminate",
  // shown on ghost icon while dragging column to the side of the grid to pin
  columnMovePin: "pin",
  // shown on ghost icon while dragging over part of the page that is not a drop zone
  columnMoveHide: "eye-slash",
  // shown on ghost icon while dragging columns to reorder
  columnMoveMove: "arrows",
  // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling
  columnMoveLeft: "left",
  // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling
  columnMoveRight: "right",
  // shown on ghost icon while dragging over Row Groups drop zone
  columnMoveGroup: "group",
  // shown on ghost icon while dragging over Values drop zone
  columnMoveValue: "aggregation",
  // shown on ghost icon while dragging over pivot drop zone
  columnMovePivot: "pivot",
  // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.
  //     string column over aggregation drop zone
  dropNotAllowed: "not-allowed",
  // shown on row group when contracted (click to expand)
  groupContracted: "tree-closed",
  // shown on row group when expanded (click to contract)
  groupExpanded: "tree-open",
  // set filter tree list group contracted (click to expand)
  setFilterGroupClosed: "tree-closed",
  // set filter tree list group expanded (click to contract)
  setFilterGroupOpen: "tree-open",
  // set filter tree list expand/collapse all button, shown when some children are expanded and
  //     others are collapsed
  setFilterGroupIndeterminate: "tree-indeterminate",
  // context menu chart item
  chart: "chart",
  // chart window title bar
  close: "cross",
  // X (remove) on column 'pill' after adding it to a drop zone list
  cancel: "cancel",
  // indicates the currently active pin state in the "Pin column" sub-menu of the column menu
  check: "tick",
  // "go to first" button in pagination controls
  first: "first",
  // "go to previous" button in pagination controls
  previous: "previous",
  // "go to next" button in pagination controls
  next: "next",
  // "go to last" button in pagination controls
  last: "last",
  // shown on top right of chart when chart is linked to range data (click to unlink)
  linked: "linked",
  // shown on top right of chart when chart is not linked to range data (click to link)
  unlinked: "unlinked",
  // "Choose colour" button on chart settings tab
  colorPicker: "color-picker",
  // rotating spinner shown by the loading cell renderer
  groupLoading: "loading",
  // button to launch enterprise column menu
  menu: "menu",
  // filter tool panel tab
  filter: "filter",
  // column tool panel tab
  columns: "columns",
  // button in chart regular size window title bar (click to maximise)
  maximize: "maximize",
  // button in chart maximised window title bar (click to make regular size)
  minimize: "minimize",
  // "Pin column" item in column header menu
  menuPin: "pin",
  // "Value aggregation" column menu item (shown on numeric columns when grouping is active)"
  menuValue: "aggregation",
  // "Group by {column-name}" item in column header menu
  menuAddRowGroup: "group",
  // "Un-Group by {column-name}" item in column header menu
  menuRemoveRowGroup: "group",
  // context menu copy item
  clipboardCopy: "copy",
  // context menu paste item
  clipboardPaste: "paste",
  // identifies the pivot drop zone
  pivotPanel: "pivot",
  // "Row groups" drop zone in column tool panel
  rowGroupPanel: "group",
  // columns tool panel Values drop zone
  valuePanel: "aggregation",
  // drag handle used to pick up draggable columns
  columnDrag: "grip",
  // drag handle used to pick up draggable rows
  rowDrag: "grip",
  // context menu export item
  save: "save",
  // csv export
  csvExport: "csv",
  // excel export,
  excelExport: "excel",
  // icon on dropdown editors
  smallDown: "small-down",
  // version of small-right used in RTL mode
  smallLeft: "small-left",
  // separater between column 'pills' when you add multiple columns to the header drop zone
  smallRight: "small-right",
  smallUp: "small-up",
  // show on column header when column is sorted ascending
  sortAscending: "asc",
  // show on column header when column is sorted descending
  sortDescending: "desc",
  // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true
  sortUnSort: "none"
};
function createIcon(iconName, gridOptionsService, column) {
  var iconContents = createIconNoSpan(iconName, gridOptionsService, column);
  if (iconContents && iconContents.className.indexOf("ag-icon") > -1) {
    return iconContents;
  }
  var eResult = document.createElement("span");
  eResult.appendChild(iconContents);
  return eResult;
}
function createIconNoSpan(iconName, gridOptionsService, column, forceCreate) {
  var userProvidedIcon = null;
  var icons = column && column.getColDef().icons;
  if (icons) {
    userProvidedIcon = icons[iconName];
  }
  if (gridOptionsService && !userProvidedIcon) {
    var optionsIcons = gridOptionsService.get("icons");
    if (optionsIcons) {
      userProvidedIcon = optionsIcons[iconName];
    }
  }
  if (userProvidedIcon) {
    var rendererResult = void 0;
    if (typeof userProvidedIcon === "function") {
      rendererResult = userProvidedIcon();
    } else if (typeof userProvidedIcon === "string") {
      rendererResult = userProvidedIcon;
    } else {
      throw new Error("icon from grid options needs to be a string or a function");
    }
    if (typeof rendererResult === "string") {
      return loadTemplate(rendererResult);
    }
    if (isNodeOrElement(rendererResult)) {
      return rendererResult;
    }
    console.warn("AG Grid: iconRenderer should return back a string or a dom object");
  } else {
    var span = document.createElement("span");
    var cssClass = iconNameClassMap[iconName];
    if (!cssClass) {
      if (!forceCreate) {
        console.warn("AG Grid: Did not find icon " + iconName);
        cssClass = "";
      } else {
        cssClass = iconName;
      }
    }
    span.setAttribute("class", "ag-icon ag-icon-" + cssClass);
    span.setAttribute("unselectable", "on");
    setAriaRole(span, "presentation");
    return span;
  }
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/keyboard.js
var keyboard_exports = {};
__export(keyboard_exports, {
  isDeleteKey: () => isDeleteKey,
  isEventFromPrintableCharacter: () => isEventFromPrintableCharacter,
  isUserSuppressingHeaderKeyboardEvent: () => isUserSuppressingHeaderKeyboardEvent,
  isUserSuppressingKeyboardEvent: () => isUserSuppressingKeyboardEvent,
  normaliseQwertyAzerty: () => normaliseQwertyAzerty
});

// node_modules/@ag-grid-community/core/dist/esm/es5/constants/keyCode.js
var KeyCode = (
  /** @class */
  function() {
    function KeyCode2() {
    }
    KeyCode2.BACKSPACE = "Backspace";
    KeyCode2.TAB = "Tab";
    KeyCode2.ENTER = "Enter";
    KeyCode2.ESCAPE = "Escape";
    KeyCode2.SPACE = " ";
    KeyCode2.LEFT = "ArrowLeft";
    KeyCode2.UP = "ArrowUp";
    KeyCode2.RIGHT = "ArrowRight";
    KeyCode2.DOWN = "ArrowDown";
    KeyCode2.DELETE = "Delete";
    KeyCode2.F2 = "F2";
    KeyCode2.PAGE_UP = "PageUp";
    KeyCode2.PAGE_DOWN = "PageDown";
    KeyCode2.PAGE_HOME = "Home";
    KeyCode2.PAGE_END = "End";
    KeyCode2.A = "KeyA";
    KeyCode2.C = "KeyC";
    KeyCode2.V = "KeyV";
    KeyCode2.D = "KeyD";
    KeyCode2.Z = "KeyZ";
    KeyCode2.Y = "KeyY";
    return KeyCode2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/keyboard.js
var NUMPAD_DEL_NUMLOCK_ON_KEY = "Del";
var NUMPAD_DEL_NUMLOCK_ON_KEYCODE = 46;
var A_KEYCODE = 65;
var C_KEYCODE = 67;
var V_KEYCODE = 86;
var D_KEYCODE = 68;
var Z_KEYCODE = 90;
var Y_KEYCODE = 89;
function isEventFromPrintableCharacter(event) {
  if (event.altKey || event.ctrlKey || event.metaKey) {
    return false;
  }
  var printableCharacter = event.key.length === 1;
  var numpadDelWithNumlockOnForEdgeOrIe = isNumpadDelWithNumLockOnForEdge(event);
  return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;
}
function isUserSuppressingKeyboardEvent(gridOptionsService, keyboardEvent, rowNode, column, editing) {
  var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : void 0;
  if (!colDefFunc) {
    return false;
  }
  var params = {
    event: keyboardEvent,
    editing,
    column,
    api: gridOptionsService.get("api"),
    node: rowNode,
    data: rowNode.data,
    colDef: column.getColDef(),
    context: gridOptionsService.get("context"),
    columnApi: gridOptionsService.get("columnApi")
  };
  if (colDefFunc) {
    var colDefFuncResult = colDefFunc(params);
    if (colDefFuncResult) {
      return true;
    }
  }
  return false;
}
function isUserSuppressingHeaderKeyboardEvent(gridOptionsService, keyboardEvent, headerRowIndex, column) {
  var colDef = column.getDefinition();
  var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;
  if (!exists(colDefFunc)) {
    return false;
  }
  var params = {
    api: gridOptionsService.get("api"),
    columnApi: gridOptionsService.get("columnApi"),
    context: gridOptionsService.get("context"),
    colDef,
    column,
    headerRowIndex,
    event: keyboardEvent
  };
  return !!colDefFunc(params);
}
function isNumpadDelWithNumLockOnForEdge(event) {
  return isBrowserEdge() && event.key === NUMPAD_DEL_NUMLOCK_ON_KEY && event.charCode === NUMPAD_DEL_NUMLOCK_ON_KEYCODE;
}
function normaliseQwertyAzerty(keyboardEvent) {
  var keyCode = keyboardEvent.keyCode;
  var code;
  switch (keyCode) {
    case A_KEYCODE:
      code = KeyCode.A;
      break;
    case C_KEYCODE:
      code = KeyCode.C;
      break;
    case V_KEYCODE:
      code = KeyCode.V;
      break;
    case D_KEYCODE:
      code = KeyCode.D;
      break;
    case Z_KEYCODE:
      code = KeyCode.Z;
      break;
    case Y_KEYCODE:
      code = KeyCode.Y;
      break;
    default:
      code = keyboardEvent.code;
  }
  return code;
}
function isDeleteKey(key, alwaysReturnFalseOnBackspace) {
  if (alwaysReturnFalseOnBackspace === void 0) {
    alwaysReturnFalseOnBackspace = false;
  }
  if (key === KeyCode.DELETE) {
    return true;
  }
  if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {
    return isMacOsUserAgent();
  }
  return false;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/mouse.js
var mouse_exports = {};
__export(mouse_exports, {
  areEventsNear: () => areEventsNear
});
function areEventsNear(e1, e2, pixelCount) {
  if (pixelCount === 0) {
    return false;
  }
  var diffX = Math.abs(e1.clientX - e2.clientX);
  var diffY = Math.abs(e1.clientY - e2.clientY);
  return Math.max(diffX, diffY) <= pixelCount;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/rowNode.js
var rowNode_exports = {};
__export(rowNode_exports, {
  sortRowNodesByOrder: () => sortRowNodesByOrder,
  traverseNodesWithKey: () => traverseNodesWithKey
});
function sortRowNodesByOrder(rowNodes, rowNodeOrder) {
  if (!rowNodes) {
    return false;
  }
  var comparator = function(nodeA, nodeB) {
    var positionA = rowNodeOrder[nodeA.id];
    var positionB = rowNodeOrder[nodeB.id];
    var aHasIndex = positionA !== void 0;
    var bHasIndex = positionB !== void 0;
    var bothNodesAreUserNodes = aHasIndex && bHasIndex;
    var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;
    if (bothNodesAreUserNodes) {
      return positionA - positionB;
    }
    if (bothNodesAreFillerNodes) {
      return nodeA.__objectId - nodeB.__objectId;
    }
    if (aHasIndex) {
      return 1;
    }
    return -1;
  };
  var rowNodeA;
  var rowNodeB;
  var atLeastOneOutOfOrder = false;
  for (var i2 = 0; i2 < rowNodes.length - 1; i2++) {
    rowNodeA = rowNodes[i2];
    rowNodeB = rowNodes[i2 + 1];
    if (comparator(rowNodeA, rowNodeB) > 0) {
      atLeastOneOutOfOrder = true;
      break;
    }
  }
  if (atLeastOneOutOfOrder) {
    rowNodes.sort(comparator);
    return true;
  }
  return false;
}
function traverseNodesWithKey(nodes, callback) {
  var keyParts = [];
  recursiveSearchNodes(nodes);
  function recursiveSearchNodes(currentNodes) {
    if (!currentNodes) {
      return;
    }
    currentNodes.forEach(function(node) {
      if (node.group || node.hasChildren()) {
        keyParts.push(node.key);
        var key = keyParts.join("|");
        callback(node, key);
        recursiveSearchNodes(node.childrenAfterGroup);
        keyParts.pop();
      }
    });
  }
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/set.js
var set_exports = {};
__export(set_exports, {
  convertToSet: () => convertToSet
});
function convertToSet(list) {
  var set2 = /* @__PURE__ */ new Set();
  list.forEach(function(x2) {
    return set2.add(x2);
  });
  return set2;
}

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/utils.js
var __assign3 = function() {
  __assign3 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign3.apply(this, arguments);
};
var utils = __assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3(__assign3({}, aria_exports), array_exports), browser_exports), date_exports), dom_exports), event_exports), function_exports), fuzzyMatch_exports), generic_exports), icon_exports), keyboard_exports), map_exports), mouse_exports), number_exports), object_exports), rowNode_exports), set_exports), string_exports);
var _2 = utils;

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/numberSequence.js
var NumberSequence = (
  /** @class */
  function() {
    function NumberSequence2(initValue, step) {
      if (initValue === void 0) {
        initValue = 0;
      }
      if (step === void 0) {
        step = 1;
      }
      this.nextValue = initValue;
      this.step = step;
    }
    NumberSequence2.prototype.next = function() {
      var valToReturn = this.nextValue;
      this.nextValue += this.step;
      return valToReturn;
    };
    NumberSequence2.prototype.peek = function() {
      return this.nextValue;
    };
    NumberSequence2.prototype.skip = function(count) {
      this.nextValue += count;
    };
    return NumberSequence2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/promise.js
var AgPromiseStatus;
(function(AgPromiseStatus2) {
  AgPromiseStatus2[AgPromiseStatus2["IN_PROGRESS"] = 0] = "IN_PROGRESS";
  AgPromiseStatus2[AgPromiseStatus2["RESOLVED"] = 1] = "RESOLVED";
})(AgPromiseStatus || (AgPromiseStatus = {}));
var AgPromise = (
  /** @class */
  function() {
    function AgPromise2(callback) {
      var _this = this;
      this.status = AgPromiseStatus.IN_PROGRESS;
      this.resolution = null;
      this.waiters = [];
      callback(function(value) {
        return _this.onDone(value);
      }, function(params) {
        return _this.onReject(params);
      });
    }
    AgPromise2.all = function(promises) {
      return new AgPromise2(function(resolve) {
        var remainingToResolve = promises.length;
        var combinedValues = new Array(remainingToResolve);
        promises.forEach(function(promise, index) {
          promise.then(function(value) {
            combinedValues[index] = value;
            remainingToResolve--;
            if (remainingToResolve === 0) {
              resolve(combinedValues);
            }
          });
        });
      });
    };
    AgPromise2.resolve = function(value) {
      if (value === void 0) {
        value = null;
      }
      return new AgPromise2(function(resolve) {
        return resolve(value);
      });
    };
    AgPromise2.prototype.then = function(func) {
      var _this = this;
      return new AgPromise2(function(resolve) {
        if (_this.status === AgPromiseStatus.RESOLVED) {
          resolve(func(_this.resolution));
        } else {
          _this.waiters.push(function(value) {
            return resolve(func(value));
          });
        }
      });
    };
    AgPromise2.prototype.resolveNow = function(ifNotResolvedValue, ifResolved) {
      return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;
    };
    AgPromise2.prototype.onDone = function(value) {
      this.status = AgPromiseStatus.RESOLVED;
      this.resolution = value;
      this.waiters.forEach(function(waiter) {
        return waiter(value);
      });
    };
    AgPromise2.prototype.onReject = function(params) {
      console.warn("TBI");
    };
    return AgPromise2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/timer.js
var Timer = (
  /** @class */
  function() {
    function Timer2() {
      this.timestamp = (/* @__PURE__ */ new Date()).getTime();
    }
    Timer2.prototype.print = function(msg) {
      var duration = (/* @__PURE__ */ new Date()).getTime() - this.timestamp;
      console.info(msg + " = " + duration);
      this.timestamp = (/* @__PURE__ */ new Date()).getTime();
    };
    return Timer2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/customTooltipFeature.js
var __extends7 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign4 = function() {
  __assign4 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign4.apply(this, arguments);
};
var __decorate14 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TooltipStates;
(function(TooltipStates2) {
  TooltipStates2[TooltipStates2["NOTHING"] = 0] = "NOTHING";
  TooltipStates2[TooltipStates2["WAITING_TO_SHOW"] = 1] = "WAITING_TO_SHOW";
  TooltipStates2[TooltipStates2["SHOWING"] = 2] = "SHOWING";
})(TooltipStates || (TooltipStates = {}));
var CustomTooltipFeature = (
  /** @class */
  function(_super) {
    __extends7(CustomTooltipFeature2, _super);
    function CustomTooltipFeature2(parentComp) {
      var _this = _super.call(this) || this;
      _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2e3;
      _this.DEFAULT_HIDE_TOOLTIP_DELAY = 1e4;
      _this.SHOW_QUICK_TOOLTIP_DIFF = 1e3;
      _this.FADE_OUT_TOOLTIP_TIMEOUT = 1e3;
      _this.state = TooltipStates.NOTHING;
      _this.tooltipInstanceCount = 0;
      _this.tooltipMouseTrack = false;
      _this.parentComp = parentComp;
      return _this;
    }
    CustomTooltipFeature2.prototype.postConstruct = function() {
      this.tooltipShowDelay = this.getTooltipDelay("show") || this.DEFAULT_SHOW_TOOLTIP_DELAY;
      this.tooltipHideDelay = this.getTooltipDelay("hide") || this.DEFAULT_HIDE_TOOLTIP_DELAY;
      this.tooltipMouseTrack = this.gridOptionsService.is("tooltipMouseTrack");
      var el = this.parentComp.getGui();
      this.addManagedListener(el, "mouseenter", this.onMouseEnter.bind(this));
      this.addManagedListener(el, "mouseleave", this.onMouseLeave.bind(this));
      this.addManagedListener(el, "mousemove", this.onMouseMove.bind(this));
      this.addManagedListener(el, "mousedown", this.onMouseDown.bind(this));
      this.addManagedListener(el, "keydown", this.onKeyDown.bind(this));
    };
    CustomTooltipFeature2.prototype.destroy = function() {
      this.setToDoNothing();
      _super.prototype.destroy.call(this);
    };
    CustomTooltipFeature2.prototype.onMouseEnter = function(e2) {
      if (isIOSUserAgent()) {
        return;
      }
      if (this.state != TooltipStates.NOTHING) {
        return;
      }
      var delay2 = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;
      this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay2);
      this.lastMouseEvent = e2;
      this.state = TooltipStates.WAITING_TO_SHOW;
    };
    CustomTooltipFeature2.prototype.onMouseLeave = function() {
      this.setToDoNothing();
    };
    CustomTooltipFeature2.prototype.onKeyDown = function() {
      this.setToDoNothing();
    };
    CustomTooltipFeature2.prototype.setToDoNothing = function() {
      if (this.state === TooltipStates.SHOWING) {
        this.hideTooltip();
      }
      this.clearTimeouts();
      this.state = TooltipStates.NOTHING;
    };
    CustomTooltipFeature2.prototype.onMouseMove = function(e2) {
      this.lastMouseEvent = e2;
      if (this.tooltipMouseTrack && this.state === TooltipStates.SHOWING && this.tooltipComp) {
        this.positionTooltipUnderLastMouseEvent();
      }
    };
    CustomTooltipFeature2.prototype.onMouseDown = function() {
      this.setToDoNothing();
    };
    CustomTooltipFeature2.prototype.getTooltipDelay = function(type2) {
      var tooltipShowDelay = this.gridOptionsService.getNum("tooltipShowDelay");
      var tooltipHideDelay = this.gridOptionsService.getNum("tooltipHideDelay");
      var delay2 = type2 === "show" ? tooltipShowDelay : tooltipHideDelay;
      var capitalisedType = capitalise(type2);
      if (exists(delay2)) {
        if (delay2 < 0) {
          doOnce(function() {
            return console.warn("AG Grid: tooltip" + capitalisedType + "Delay should not be lower than 0");
          }, "tooltip" + capitalisedType + "DelayWarn");
        }
        return Math.max(200, delay2);
      }
      return null;
    };
    CustomTooltipFeature2.prototype.hideTooltip = function() {
      if (this.tooltipComp) {
        this.destroyTooltipComp();
        CustomTooltipFeature2.lastTooltipHideTime = (/* @__PURE__ */ new Date()).getTime();
      }
      this.state = TooltipStates.NOTHING;
    };
    CustomTooltipFeature2.prototype.destroyTooltipComp = function() {
      var _this = this;
      this.tooltipComp.getGui().classList.add("ag-tooltip-hiding");
      var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;
      var tooltipComp = this.tooltipComp;
      window.setTimeout(function() {
        tooltipPopupDestroyFunc();
        _this.getContext().destroyBean(tooltipComp);
      }, this.FADE_OUT_TOOLTIP_TIMEOUT);
      this.tooltipPopupDestroyFunc = void 0;
      this.tooltipComp = void 0;
    };
    CustomTooltipFeature2.prototype.isLastTooltipHiddenRecently = function() {
      var now = (/* @__PURE__ */ new Date()).getTime();
      var then = CustomTooltipFeature2.lastTooltipHideTime;
      return now - then < this.SHOW_QUICK_TOOLTIP_DIFF;
    };
    CustomTooltipFeature2.prototype.showTooltip = function() {
      var params = __assign4({}, this.parentComp.getTooltipParams());
      if (!exists(params.value)) {
        this.setToDoNothing();
        return;
      }
      this.state = TooltipStates.SHOWING;
      this.tooltipInstanceCount++;
      var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);
      var userDetails = this.userComponentFactory.getTooltipCompDetails(params);
      userDetails.newAgStackInstance().then(callback);
    };
    CustomTooltipFeature2.prototype.newTooltipComponentCallback = function(tooltipInstanceCopy, tooltipComp) {
      var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;
      if (compNoLongerNeeded) {
        this.getContext().destroyBean(tooltipComp);
        return;
      }
      var eGui = tooltipComp.getGui();
      this.tooltipComp = tooltipComp;
      if (!eGui.classList.contains("ag-tooltip")) {
        eGui.classList.add("ag-tooltip-custom");
      }
      var translate = this.localeService.getLocaleTextFunc();
      var addPopupRes = this.popupService.addPopup({
        eChild: eGui,
        ariaLabel: translate("ariaLabelTooltip", "Tooltip")
      });
      if (addPopupRes) {
        this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;
      }
      this.positionTooltipUnderLastMouseEvent();
      this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);
    };
    CustomTooltipFeature2.prototype.positionTooltipUnderLastMouseEvent = function() {
      this.popupService.positionPopupUnderMouseEvent({
        type: "tooltip",
        mouseEvent: this.lastMouseEvent,
        ePopup: this.tooltipComp.getGui(),
        nudgeY: 18,
        skipObserver: this.tooltipMouseTrack
      });
    };
    CustomTooltipFeature2.prototype.clearTimeouts = function() {
      if (this.showTooltipTimeoutId) {
        window.clearTimeout(this.showTooltipTimeoutId);
        this.showTooltipTimeoutId = void 0;
      }
      if (this.hideTooltipTimeoutId) {
        window.clearTimeout(this.hideTooltipTimeoutId);
        this.hideTooltipTimeoutId = void 0;
      }
    };
    __decorate14([
      Autowired("popupService")
    ], CustomTooltipFeature2.prototype, "popupService", void 0);
    __decorate14([
      Autowired("userComponentFactory")
    ], CustomTooltipFeature2.prototype, "userComponentFactory", void 0);
    __decorate14([
      Autowired("columnApi")
    ], CustomTooltipFeature2.prototype, "columnApi", void 0);
    __decorate14([
      Autowired("gridApi")
    ], CustomTooltipFeature2.prototype, "gridApi", void 0);
    __decorate14([
      PostConstruct
    ], CustomTooltipFeature2.prototype, "postConstruct", null);
    return CustomTooltipFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cssClassManager.js
var CssClassManager = (
  /** @class */
  function() {
    function CssClassManager2(getGui) {
      this.cssClassStates = {};
      this.getGui = getGui;
    }
    CssClassManager2.prototype.addCssClass = function(className) {
      var _this = this;
      var list = (className || "").split(" ");
      if (list.length > 1) {
        list.forEach(function(cls) {
          return _this.addCssClass(cls);
        });
        return;
      }
      var updateNeeded = this.cssClassStates[className] !== true;
      if (updateNeeded && className.length) {
        var eGui = this.getGui();
        if (eGui) {
          eGui.classList.add(className);
        }
        this.cssClassStates[className] = true;
      }
    };
    CssClassManager2.prototype.removeCssClass = function(className) {
      var _this = this;
      var list = (className || "").split(" ");
      if (list.length > 1) {
        list.forEach(function(cls) {
          return _this.removeCssClass(cls);
        });
        return;
      }
      var updateNeeded = this.cssClassStates[className] !== false;
      if (updateNeeded && className.length) {
        var eGui = this.getGui();
        if (eGui) {
          eGui.classList.remove(className);
        }
        this.cssClassStates[className] = false;
      }
    };
    CssClassManager2.prototype.containsCssClass = function(className) {
      var eGui = this.getGui();
      if (!eGui) {
        return false;
      }
      return eGui.classList.contains(className);
    };
    CssClassManager2.prototype.addOrRemoveCssClass = function(className, addOrRemove) {
      var _this = this;
      if (!className) {
        return;
      }
      if (className.indexOf(" ") >= 0) {
        var list = (className || "").split(" ");
        if (list.length > 1) {
          list.forEach(function(cls) {
            return _this.addOrRemoveCssClass(cls, addOrRemove);
          });
          return;
        }
      }
      var updateNeeded = this.cssClassStates[className] !== addOrRemove;
      if (updateNeeded && className.length) {
        var eGui = this.getGui();
        if (eGui) {
          eGui.classList.toggle(className, addOrRemove);
        }
        this.cssClassStates[className] = addOrRemove;
      }
    };
    return CssClassManager2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/component.js
var __extends8 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate15 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var compIdSequence = new NumberSequence();
var Component2 = (
  /** @class */
  function(_super) {
    __extends8(Component3, _super);
    function Component3(template) {
      var _this = _super.call(this) || this;
      _this.displayed = true;
      _this.visible = true;
      _this.compId = compIdSequence.next();
      _this.cssClassManager = new CssClassManager(function() {
        return _this.eGui;
      });
      if (template) {
        _this.setTemplate(template);
      }
      return _this;
    }
    Component3.prototype.preConstructOnComponent = function() {
      this.usingBrowserTooltips = this.gridOptionsService.is("enableBrowserTooltips");
    };
    Component3.prototype.getCompId = function() {
      return this.compId;
    };
    Component3.prototype.getTooltipParams = function() {
      return {
        value: this.tooltipText,
        location: "UNKNOWN"
      };
    };
    Component3.prototype.setTooltip = function(newTooltipText) {
      var _this = this;
      var removeTooltip = function() {
        if (_this.usingBrowserTooltips) {
          _this.getGui().removeAttribute("title");
        } else {
          _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);
        }
      };
      var addTooltip = function() {
        if (_this.usingBrowserTooltips) {
          _this.getGui().setAttribute("title", _this.tooltipText);
        } else {
          _this.tooltipFeature = _this.createBean(new CustomTooltipFeature(_this));
        }
      };
      if (this.tooltipText != newTooltipText) {
        if (this.tooltipText) {
          removeTooltip();
        }
        if (newTooltipText != null) {
          this.tooltipText = newTooltipText;
          if (this.tooltipText) {
            addTooltip();
          }
        }
      }
    };
    Component3.prototype.createChildComponentsFromTags = function(parentNode, paramsMap) {
      var _this = this;
      var childNodeList = copyNodeList(parentNode.childNodes);
      childNodeList.forEach(function(childNode) {
        if (!(childNode instanceof HTMLElement)) {
          return;
        }
        var childComp = _this.createComponentFromElement(childNode, function(childComp2) {
          var childGui = childComp2.getGui();
          if (childGui) {
            _this.copyAttributesFromNode(childNode, childComp2.getGui());
          }
        }, paramsMap);
        if (childComp) {
          if (childComp.addItems && childNode.children.length) {
            _this.createChildComponentsFromTags(childNode, paramsMap);
            var items = Array.prototype.slice.call(childNode.children);
            childComp.addItems(items);
          }
          _this.swapComponentForNode(childComp, parentNode, childNode);
        } else if (childNode.childNodes) {
          _this.createChildComponentsFromTags(childNode, paramsMap);
        }
      });
    };
    Component3.prototype.createComponentFromElement = function(element, afterPreCreateCallback, paramsMap) {
      var key = element.nodeName;
      var componentParams = paramsMap ? paramsMap[element.getAttribute("ref")] : void 0;
      var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);
      if (ComponentClass) {
        Component3.elementGettingCreated = element;
        var newComponent = new ComponentClass(componentParams);
        newComponent.setParentComponent(this);
        this.createBean(newComponent, null, afterPreCreateCallback);
        return newComponent;
      }
      return null;
    };
    Component3.prototype.copyAttributesFromNode = function(source, dest) {
      iterateNamedNodeMap(source.attributes, function(name, value) {
        return dest.setAttribute(name, value);
      });
    };
    Component3.prototype.swapComponentForNode = function(newComponent, parentNode, childNode) {
      var eComponent = newComponent.getGui();
      parentNode.replaceChild(eComponent, childNode);
      parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);
      this.addDestroyFunc(this.destroyBean.bind(this, newComponent));
      this.swapInComponentForQuerySelectors(newComponent, childNode);
    };
    Component3.prototype.swapInComponentForQuerySelectors = function(newComponent, childNode) {
      var thisNoType = this;
      this.iterateOverQuerySelectors(function(querySelector) {
        if (thisNoType[querySelector.attributeName] === childNode) {
          thisNoType[querySelector.attributeName] = newComponent;
        }
      });
    };
    Component3.prototype.iterateOverQuerySelectors = function(action) {
      var thisPrototype = Object.getPrototypeOf(this);
      while (thisPrototype != null) {
        var metaData = thisPrototype.__agComponentMetaData;
        var currentProtoName = getFunctionName(thisPrototype.constructor);
        if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {
          metaData[currentProtoName].querySelectors.forEach(function(querySelector) {
            return action(querySelector);
          });
        }
        thisPrototype = Object.getPrototypeOf(thisPrototype);
      }
    };
    Component3.prototype.setTemplate = function(template, paramsMap) {
      var eGui = loadTemplate(template);
      this.setTemplateFromElement(eGui, paramsMap);
    };
    Component3.prototype.setTemplateFromElement = function(element, paramsMap) {
      this.eGui = element;
      this.eGui.__agComponent = this;
      this.wireQuerySelectors();
      if (!!this.getContext()) {
        this.createChildComponentsFromTags(this.getGui(), paramsMap);
      }
    };
    Component3.prototype.createChildComponentsPreConstruct = function() {
      if (!!this.getGui()) {
        this.createChildComponentsFromTags(this.getGui());
      }
    };
    Component3.prototype.wireQuerySelectors = function() {
      var _this = this;
      if (!this.eGui) {
        return;
      }
      var thisNoType = this;
      this.iterateOverQuerySelectors(function(querySelector) {
        var setResult = function(result) {
          return thisNoType[querySelector.attributeName] = result;
        };
        var topLevelRefMatch = querySelector.refSelector && _this.eGui.getAttribute("ref") === querySelector.refSelector;
        if (topLevelRefMatch) {
          setResult(_this.eGui);
        } else {
          var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);
          if (resultOfQuery) {
            setResult(resultOfQuery.__agComponent || resultOfQuery);
          }
        }
      });
    };
    Component3.prototype.getGui = function() {
      return this.eGui;
    };
    Component3.prototype.getFocusableElement = function() {
      return this.eGui;
    };
    Component3.prototype.setParentComponent = function(component) {
      this.parentComponent = component;
    };
    Component3.prototype.getParentComponent = function() {
      return this.parentComponent;
    };
    Component3.prototype.setGui = function(eGui) {
      this.eGui = eGui;
    };
    Component3.prototype.queryForHtmlElement = function(cssSelector) {
      return this.eGui.querySelector(cssSelector);
    };
    Component3.prototype.queryForHtmlInputElement = function(cssSelector) {
      return this.eGui.querySelector(cssSelector);
    };
    Component3.prototype.appendChild = function(newChild, container) {
      if (newChild == null) {
        return;
      }
      if (!container) {
        container = this.eGui;
      }
      if (isNodeOrElement(newChild)) {
        container.appendChild(newChild);
      } else {
        var childComponent = newChild;
        container.appendChild(childComponent.getGui());
      }
    };
    Component3.prototype.isDisplayed = function() {
      return this.displayed;
    };
    Component3.prototype.setVisible = function(visible, options) {
      if (options === void 0) {
        options = {};
      }
      if (visible !== this.visible) {
        this.visible = visible;
        var skipAriaHidden = options.skipAriaHidden;
        setVisible(this.eGui, visible, { skipAriaHidden });
      }
    };
    Component3.prototype.setDisplayed = function(displayed, options) {
      if (options === void 0) {
        options = {};
      }
      if (displayed !== this.displayed) {
        this.displayed = displayed;
        var skipAriaHidden = options.skipAriaHidden;
        setDisplayed(this.eGui, displayed, { skipAriaHidden });
        var event_1 = {
          type: Component3.EVENT_DISPLAYED_CHANGED,
          visible: this.displayed
        };
        this.dispatchEvent(event_1);
      }
    };
    Component3.prototype.destroy = function() {
      if (this.tooltipFeature) {
        this.tooltipFeature = this.destroyBean(this.tooltipFeature);
      }
      if (this.parentComponent) {
        this.parentComponent = void 0;
      }
      var eGui = this.eGui;
      if (eGui && eGui.__agComponent) {
        eGui.__agComponent = void 0;
      }
      _super.prototype.destroy.call(this);
    };
    Component3.prototype.addGuiEventListener = function(event, listener, options) {
      var _this = this;
      this.eGui.addEventListener(event, listener, options);
      this.addDestroyFunc(function() {
        return _this.eGui.removeEventListener(event, listener);
      });
    };
    Component3.prototype.addCssClass = function(className) {
      this.cssClassManager.addCssClass(className);
    };
    Component3.prototype.removeCssClass = function(className) {
      this.cssClassManager.removeCssClass(className);
    };
    Component3.prototype.containsCssClass = function(className) {
      return this.cssClassManager.containsCssClass(className);
    };
    Component3.prototype.addOrRemoveCssClass = function(className, addOrRemove) {
      this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);
    };
    Component3.prototype.getAttribute = function(key) {
      var eGui = this.eGui;
      return eGui ? eGui.getAttribute(key) : null;
    };
    Component3.prototype.getRefElement = function(refName) {
      return this.queryForHtmlElement('[ref="' + refName + '"]');
    };
    Component3.EVENT_DISPLAYED_CHANGED = "displayedChanged";
    __decorate15([
      Autowired("agStackComponentsRegistry")
    ], Component3.prototype, "agStackComponentsRegistry", void 0);
    __decorate15([
      PreConstruct
    ], Component3.prototype, "preConstructOnComponent", null);
    __decorate15([
      PreConstruct
    ], Component3.prototype, "createChildComponentsPreConstruct", null);
    return Component3;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/componentAnnotations.js
function RefSelector(ref) {
  return querySelectorFunc.bind(this, "[ref=" + ref + "]", ref);
}
function querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {
  if (selector === null) {
    console.error("AG Grid: QuerySelector selector should not be null");
    return;
  }
  if (typeof index === "number") {
    console.error("AG Grid: QuerySelector should be on an attribute");
    return;
  }
  addToObjectProps(classPrototype, "querySelectors", {
    attributeName: methodOrAttributeName,
    querySelector: selector,
    refSelector
  });
}
function addToObjectProps(target, key, value) {
  var props = getOrCreateProps2(target, getFunctionName(target.constructor));
  if (!props[key]) {
    props[key] = [];
  }
  props[key].push(value);
}
function getOrCreateProps2(target, instanceName) {
  if (!target.__agComponentMetaData) {
    target.__agComponentMetaData = {};
  }
  if (!target.__agComponentMetaData[instanceName]) {
    target.__agComponentMetaData[instanceName] = {};
  }
  return target.__agComponentMetaData[instanceName];
}

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/provided/readOnlyFloatingFilter.js
var __extends9 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate16 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ReadOnlyFloatingFilter = (
  /** @class */
  function(_super) {
    __extends9(ReadOnlyFloatingFilter2, _super);
    function ReadOnlyFloatingFilter2() {
      return _super.call(
        this,
        /* html */
        '\n            <div class="ag-floating-filter-input" role="presentation">\n                <ag-input-text-field ref="eFloatingFilterText"></ag-input-text-field>\n            </div>'
      ) || this;
    }
    ReadOnlyFloatingFilter2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    ReadOnlyFloatingFilter2.prototype.init = function(params) {
      this.params = params;
      var displayName = this.columnModel.getDisplayNameForColumn(params.column, "header", true);
      var translate = this.localeService.getLocaleTextFunc();
      this.eFloatingFilterText.setDisabled(true).setInputAriaLabel(displayName + " " + translate("ariaFilterInput", "Filter Input"));
    };
    ReadOnlyFloatingFilter2.prototype.onParentModelChanged = function(parentModel) {
      var _this = this;
      if (!parentModel) {
        this.eFloatingFilterText.setValue("");
        return;
      }
      this.params.parentFilterInstance(function(filterInstance) {
        if (filterInstance.getModelAsString) {
          var modelAsString = filterInstance.getModelAsString(parentModel);
          _this.eFloatingFilterText.setValue(modelAsString);
        }
      });
    };
    __decorate16([
      RefSelector("eFloatingFilterText")
    ], ReadOnlyFloatingFilter2.prototype, "eFloatingFilterText", void 0);
    __decorate16([
      Autowired("columnModel")
    ], ReadOnlyFloatingFilter2.prototype, "columnModel", void 0);
    return ReadOnlyFloatingFilter2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateCompWrapper.js
var DateCompWrapper = (
  /** @class */
  function() {
    function DateCompWrapper2(context, userComponentFactory, dateComponentParams, eParent) {
      var _this = this;
      this.alive = true;
      this.context = context;
      this.eParent = eParent;
      var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);
      var promise = compDetails.newAgStackInstance();
      promise.then(function(dateComp) {
        if (!_this.alive) {
          context.destroyBean(dateComp);
          return;
        }
        _this.dateComp = dateComp;
        if (!dateComp) {
          return;
        }
        eParent.appendChild(dateComp.getGui());
        if (dateComp.afterGuiAttached) {
          dateComp.afterGuiAttached();
        }
        if (_this.tempValue) {
          dateComp.setDate(_this.tempValue);
        }
        if (_this.disabled != null) {
          _this.setDateCompDisabled(_this.disabled);
        }
      });
    }
    DateCompWrapper2.prototype.destroy = function() {
      this.alive = false;
      this.dateComp = this.context.destroyBean(this.dateComp);
    };
    DateCompWrapper2.prototype.getDate = function() {
      return this.dateComp ? this.dateComp.getDate() : this.tempValue;
    };
    DateCompWrapper2.prototype.setDate = function(value) {
      if (this.dateComp) {
        this.dateComp.setDate(value);
      } else {
        this.tempValue = value;
      }
    };
    DateCompWrapper2.prototype.setDisabled = function(disabled) {
      if (this.dateComp) {
        this.setDateCompDisabled(disabled);
      } else {
        this.disabled = disabled;
      }
    };
    DateCompWrapper2.prototype.setDisplayed = function(displayed) {
      setDisplayed(this.eParent, displayed);
    };
    DateCompWrapper2.prototype.setInputPlaceholder = function(placeholder) {
      if (this.dateComp && this.dateComp.setInputPlaceholder) {
        this.dateComp.setInputPlaceholder(placeholder);
      }
    };
    DateCompWrapper2.prototype.setInputAriaLabel = function(label) {
      if (this.dateComp && this.dateComp.setInputAriaLabel) {
        this.dateComp.setInputAriaLabel(label);
      }
    };
    DateCompWrapper2.prototype.afterGuiAttached = function(params) {
      if (this.dateComp && typeof this.dateComp.afterGuiAttached === "function") {
        this.dateComp.afterGuiAttached(params);
      }
    };
    DateCompWrapper2.prototype.setDateCompDisabled = function(disabled) {
      if (this.dateComp == null) {
        return;
      }
      if (this.dateComp.setDisabled == null) {
        return;
      }
      this.dateComp.setDisabled(disabled);
    };
    return DateCompWrapper2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/optionsFactory.js
var __assign5 = function() {
  __assign5 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign5.apply(this, arguments);
};
var OptionsFactory = (
  /** @class */
  function() {
    function OptionsFactory2() {
      this.customFilterOptions = {};
    }
    OptionsFactory2.prototype.init = function(params, defaultOptions) {
      this.filterOptions = params.filterOptions || defaultOptions;
      this.mapCustomOptions();
      this.selectDefaultItem(params);
      this.checkForDeprecatedParams();
    };
    OptionsFactory2.prototype.checkForDeprecatedParams = function() {
      if (this.filterOptions.some(function(opt) {
        return typeof opt != "string" && opt.test != null;
      })) {
        console.warn("AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().");
      }
      if (this.filterOptions.some(function(opt) {
        return typeof opt != "string" && opt.hideFilterInput != null;
      })) {
        console.warn("AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.");
      }
    };
    OptionsFactory2.prototype.getFilterOptions = function() {
      return this.filterOptions;
    };
    OptionsFactory2.prototype.mapCustomOptions = function() {
      var _this = this;
      if (!this.filterOptions) {
        return;
      }
      this.filterOptions.forEach(function(filterOption) {
        if (typeof filterOption === "string") {
          return;
        }
        var requiredProperties = [["displayKey"], ["displayName"], ["predicate", "test"]];
        var propertyCheck = function(keys3) {
          if (!keys3.some(function(key) {
            return filterOption[key] != null;
          })) {
            console.warn("AG Grid: ignoring FilterOptionDef as it doesn't contain one of '" + keys3 + "'");
            return false;
          }
          return true;
        };
        if (!requiredProperties.every(propertyCheck)) {
          _this.filterOptions = _this.filterOptions.filter(function(v2) {
            return v2 === filterOption;
          }) || [];
          return;
        }
        var test = filterOption.test;
        var mutatedFilterOptions = __assign5({}, filterOption);
        if (test != null && filterOption.predicate == null) {
          mutatedFilterOptions.predicate = function(v2, cv) {
            return test(v2[0], cv);
          };
          delete mutatedFilterOptions.test;
        }
        if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {
          mutatedFilterOptions.numberOfInputs = 0;
          delete mutatedFilterOptions.hideFilterInput;
        }
        _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;
      });
    };
    OptionsFactory2.prototype.selectDefaultItem = function(params) {
      if (params.defaultOption) {
        this.defaultOption = params.defaultOption;
      } else if (this.filterOptions.length >= 1) {
        var firstFilterOption = this.filterOptions[0];
        if (typeof firstFilterOption === "string") {
          this.defaultOption = firstFilterOption;
        } else if (firstFilterOption.displayKey) {
          this.defaultOption = firstFilterOption.displayKey;
        } else {
          console.warn("AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'");
        }
      } else {
        console.warn("AG Grid: no filter options for filter");
      }
    };
    OptionsFactory2.prototype.getDefaultOption = function() {
      return this.defaultOption;
    };
    OptionsFactory2.prototype.getCustomOption = function(name) {
      return this.customFilterOptions[name];
    };
    return OptionsFactory2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/filterLocaleText.js
var DEFAULT_FILTER_LOCALE_TEXT = {
  applyFilter: "Apply",
  clearFilter: "Clear",
  resetFilter: "Reset",
  cancelFilter: "Cancel",
  textFilter: "Text Filter",
  numberFilter: "Number Filter",
  dateFilter: "Date Filter",
  setFilter: "Set Filter",
  filterOoo: "Filter...",
  empty: "Choose One",
  equals: "Equals",
  notEqual: "Not equal",
  lessThan: "Less than",
  greaterThan: "Greater than",
  inRange: "In range",
  inRangeStart: "From",
  inRangeEnd: "To",
  lessThanOrEqual: "Less than or equals",
  greaterThanOrEqual: "Greater than or equals",
  contains: "Contains",
  notContains: "Not contains",
  startsWith: "Starts with",
  endsWith: "Ends with",
  blank: "Blank",
  notBlank: "Not blank",
  andCondition: "AND",
  orCondition: "OR",
  dateFormatOoo: "yyyy-mm-dd"
};

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/managedFocusFeature.js
var __extends10 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign6 = function() {
  __assign6 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign6.apply(this, arguments);
};
var __decorate17 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ManagedFocusFeature = (
  /** @class */
  function(_super) {
    __extends10(ManagedFocusFeature2, _super);
    function ManagedFocusFeature2(eFocusableElement, callbacks) {
      if (callbacks === void 0) {
        callbacks = {};
      }
      var _this = _super.call(this) || this;
      _this.eFocusableElement = eFocusableElement;
      _this.callbacks = callbacks;
      _this.callbacks = __assign6({ shouldStopEventPropagation: function() {
        return false;
      }, onTabKeyDown: function(e2) {
        if (e2.defaultPrevented) {
          return;
        }
        var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e2.shiftKey);
        if (!nextRoot) {
          return;
        }
        nextRoot.focus();
        e2.preventDefault();
      } }, callbacks);
      return _this;
    }
    ManagedFocusFeature2.prototype.postConstruct = function() {
      this.eFocusableElement.classList.add(ManagedFocusFeature2.FOCUS_MANAGED_CLASS);
      this.addKeyDownListeners(this.eFocusableElement);
      if (this.callbacks.onFocusIn) {
        this.addManagedListener(this.eFocusableElement, "focusin", this.callbacks.onFocusIn);
      }
      if (this.callbacks.onFocusOut) {
        this.addManagedListener(this.eFocusableElement, "focusout", this.callbacks.onFocusOut);
      }
    };
    ManagedFocusFeature2.prototype.addKeyDownListeners = function(eGui) {
      var _this = this;
      this.addManagedListener(eGui, "keydown", function(e2) {
        if (e2.defaultPrevented || isStopPropagationForAgGrid(e2)) {
          return;
        }
        if (_this.callbacks.shouldStopEventPropagation(e2)) {
          stopPropagationForAgGrid(e2);
          return;
        }
        if (e2.key === KeyCode.TAB) {
          _this.callbacks.onTabKeyDown(e2);
        } else if (_this.callbacks.handleKeyDown) {
          _this.callbacks.handleKeyDown(e2);
        }
      });
    };
    ManagedFocusFeature2.FOCUS_MANAGED_CLASS = "ag-focus-managed";
    __decorate17([
      Autowired("focusService")
    ], ManagedFocusFeature2.prototype, "focusService", void 0);
    __decorate17([
      PostConstruct
    ], ManagedFocusFeature2.prototype, "postConstruct", null);
    return ManagedFocusFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/providedFilter.js
var __extends11 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate18 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ProvidedFilter = (
  /** @class */
  function(_super) {
    __extends11(ProvidedFilter2, _super);
    function ProvidedFilter2(filterNameKey) {
      var _this = _super.call(this) || this;
      _this.filterNameKey = filterNameKey;
      _this.applyActive = false;
      _this.hidePopup = null;
      _this.appliedModel = null;
      return _this;
    }
    ProvidedFilter2.prototype.postConstruct = function() {
      this.resetTemplate();
      this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {
        handleKeyDown: this.handleKeyDown.bind(this)
      }));
    };
    ProvidedFilter2.prototype.handleKeyDown = function(e2) {
    };
    ProvidedFilter2.prototype.getFilterTitle = function() {
      return this.translate(this.filterNameKey);
    };
    ProvidedFilter2.prototype.isFilterActive = function() {
      return !!this.appliedModel;
    };
    ProvidedFilter2.prototype.resetTemplate = function(paramsMap) {
      var eGui = this.getGui();
      if (eGui) {
        eGui.removeEventListener("submit", this.onFormSubmit);
      }
      var templateString = (
        /* html */
        '\n            <form class="ag-filter-wrapper">\n                <div class="ag-filter-body-wrapper ag-' + this.getCssIdentifier() + '-body-wrapper">\n                    ' + this.createBodyTemplate() + "\n                </div>\n            </form>"
      );
      this.setTemplate(templateString, paramsMap);
      eGui = this.getGui();
      if (eGui) {
        eGui.addEventListener("submit", this.onFormSubmit);
      }
    };
    ProvidedFilter2.prototype.isReadOnly = function() {
      return !!this.providedFilterParams.readOnly;
    };
    ProvidedFilter2.prototype.init = function(params) {
      var _this = this;
      this.setParams(params);
      this.resetUiToDefaults(true).then(function() {
        _this.updateUiVisibility();
        _this.setupOnBtApplyDebounce();
      });
    };
    ProvidedFilter2.prototype.setParams = function(params) {
      this.providedFilterParams = params;
      this.applyActive = ProvidedFilter2.isUseApplyButton(params);
      this.createButtonPanel();
    };
    ProvidedFilter2.prototype.createButtonPanel = function() {
      var _this = this;
      var buttons = this.providedFilterParams.buttons;
      if (!buttons || buttons.length < 1 || this.isReadOnly()) {
        return;
      }
      var eButtonsPanel = document.createElement("div");
      eButtonsPanel.classList.add("ag-filter-apply-panel");
      var addButton = function(type2) {
        var text;
        var clickListener;
        switch (type2) {
          case "apply":
            text = _this.translate("applyFilter");
            clickListener = function(e2) {
              return _this.onBtApply(false, false, e2);
            };
            break;
          case "clear":
            text = _this.translate("clearFilter");
            clickListener = function() {
              return _this.onBtClear();
            };
            break;
          case "reset":
            text = _this.translate("resetFilter");
            clickListener = function() {
              return _this.onBtReset();
            };
            break;
          case "cancel":
            text = _this.translate("cancelFilter");
            clickListener = function(e2) {
              _this.onBtCancel(e2);
            };
            break;
          default:
            console.warn("AG Grid: Unknown button type specified");
            return;
        }
        var buttonType = type2 === "apply" ? "submit" : "button";
        var button = loadTemplate(
          /* html */
          '<button\n                    type="' + buttonType + '"\n                    ref="' + type2 + 'FilterButton"\n                    class="ag-standard-button ag-filter-apply-panel-button"\n                >' + text + "\n                </button>"
        );
        eButtonsPanel.appendChild(button);
        _this.addManagedListener(button, "click", clickListener);
      };
      convertToSet(buttons).forEach(function(type2) {
        return addButton(type2);
      });
      this.getGui().appendChild(eButtonsPanel);
    };
    ProvidedFilter2.prototype.getDefaultDebounceMs = function() {
      return 0;
    };
    ProvidedFilter2.prototype.setupOnBtApplyDebounce = function() {
      var debounceMs = ProvidedFilter2.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());
      this.onBtApplyDebounce = debounce2(this.onBtApply.bind(this), debounceMs);
    };
    ProvidedFilter2.prototype.getModel = function() {
      return this.appliedModel ? this.appliedModel : null;
    };
    ProvidedFilter2.prototype.setModel = function(model) {
      var _this = this;
      var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();
      return promise.then(function() {
        _this.updateUiVisibility();
        _this.applyModel();
      });
    };
    ProvidedFilter2.prototype.onBtCancel = function(e2) {
      var _this = this;
      var currentModel = this.getModel();
      var afterAppliedFunc = function() {
        _this.onUiChanged(false, "prevent");
        if (_this.providedFilterParams.closeOnApply) {
          _this.close(e2);
        }
      };
      if (currentModel != null) {
        this.setModelIntoUi(currentModel).then(afterAppliedFunc);
      } else {
        this.resetUiToDefaults().then(afterAppliedFunc);
      }
    };
    ProvidedFilter2.prototype.onBtClear = function() {
      var _this = this;
      this.resetUiToDefaults().then(function() {
        return _this.onUiChanged();
      });
    };
    ProvidedFilter2.prototype.onBtReset = function() {
      this.onBtClear();
      this.onBtApply();
    };
    ProvidedFilter2.prototype.applyModel = function() {
      var newModel = this.getModelFromUi();
      if (!this.isModelValid(newModel)) {
        return false;
      }
      var previousModel = this.appliedModel;
      this.appliedModel = newModel;
      return !this.areModelsEqual(previousModel, newModel);
    };
    ProvidedFilter2.prototype.isModelValid = function(model) {
      return true;
    };
    ProvidedFilter2.prototype.onFormSubmit = function(e2) {
      e2.preventDefault();
    };
    ProvidedFilter2.prototype.onBtApply = function(afterFloatingFilter, afterDataChange, e2) {
      if (afterFloatingFilter === void 0) {
        afterFloatingFilter = false;
      }
      if (afterDataChange === void 0) {
        afterDataChange = false;
      }
      if (e2) {
        e2.preventDefault();
      }
      if (this.applyModel()) {
        this.providedFilterParams.filterChangedCallback({ afterFloatingFilter, afterDataChange });
      }
      var closeOnApply = this.providedFilterParams.closeOnApply;
      if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {
        this.close(e2);
      }
    };
    ProvidedFilter2.prototype.onNewRowsLoaded = function() {
    };
    ProvidedFilter2.prototype.close = function(e2) {
      if (!this.hidePopup) {
        return;
      }
      var keyboardEvent = e2;
      var key = keyboardEvent && keyboardEvent.key;
      var params;
      if (key === "Enter" || key === "Space") {
        params = { keyboardEvent };
      }
      this.hidePopup(params);
      this.hidePopup = null;
    };
    ProvidedFilter2.prototype.onUiChanged = function(fromFloatingFilter, apply) {
      if (fromFloatingFilter === void 0) {
        fromFloatingFilter = false;
      }
      this.updateUiVisibility();
      this.providedFilterParams.filterModifiedCallback();
      if (this.applyActive && !this.isReadOnly()) {
        var isValid = this.isModelValid(this.getModelFromUi());
        setDisabled(this.getRefElement("applyFilterButton"), !isValid);
      }
      if (fromFloatingFilter && !apply || apply === "immediately") {
        this.onBtApply(fromFloatingFilter);
      } else if (!this.applyActive && !apply || apply === "debounce") {
        this.onBtApplyDebounce();
      }
    };
    ProvidedFilter2.prototype.afterGuiAttached = function(params) {
      if (params == null) {
        return;
      }
      this.hidePopup = params.hidePopup;
    };
    ProvidedFilter2.getDebounceMs = function(params, debounceDefault) {
      if (ProvidedFilter2.isUseApplyButton(params)) {
        if (params.debounceMs != null) {
          console.warn("AG Grid: debounceMs is ignored when apply button is present");
        }
        return 0;
      }
      return params.debounceMs != null ? params.debounceMs : debounceDefault;
    };
    ProvidedFilter2.isUseApplyButton = function(params) {
      return !!params.buttons && params.buttons.indexOf("apply") >= 0;
    };
    ProvidedFilter2.prototype.destroy = function() {
      var eGui = this.getGui();
      if (eGui) {
        eGui.removeEventListener("submit", this.onFormSubmit);
      }
      this.hidePopup = null;
      _super.prototype.destroy.call(this);
    };
    ProvidedFilter2.prototype.translate = function(key) {
      var translate = this.localeService.getLocaleTextFunc();
      return translate(key, DEFAULT_FILTER_LOCALE_TEXT[key]);
    };
    ProvidedFilter2.prototype.getCellValue = function(rowNode) {
      var _a47 = this.providedFilterParams, api = _a47.api, colDef = _a47.colDef, column = _a47.column, columnApi = _a47.columnApi, context = _a47.context;
      return this.providedFilterParams.valueGetter({
        api,
        colDef,
        column,
        columnApi,
        context,
        data: rowNode.data,
        getValue: function(field) {
          return rowNode.data[field];
        },
        node: rowNode
      });
    };
    __decorate18([
      Autowired("rowModel")
    ], ProvidedFilter2.prototype, "rowModel", void 0);
    __decorate18([
      PostConstruct
    ], ProvidedFilter2.prototype, "postConstruct", null);
    return ProvidedFilter2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAbstractLabel.js
var __extends12 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate19 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgAbstractLabel = (
  /** @class */
  function(_super) {
    __extends12(AgAbstractLabel2, _super);
    function AgAbstractLabel2(config, template) {
      var _this = _super.call(this, template) || this;
      _this.labelSeparator = "";
      _this.labelAlignment = "left";
      _this.disabled = false;
      _this.label = "";
      _this.config = config || {};
      return _this;
    }
    AgAbstractLabel2.prototype.postConstruct = function() {
      this.addCssClass("ag-labeled");
      this.eLabel.classList.add("ag-label");
      var _a47 = this.config, labelSeparator = _a47.labelSeparator, label = _a47.label, labelWidth = _a47.labelWidth, labelAlignment = _a47.labelAlignment;
      if (labelSeparator != null) {
        this.setLabelSeparator(labelSeparator);
      }
      if (label != null) {
        this.setLabel(label);
      }
      if (labelWidth != null) {
        this.setLabelWidth(labelWidth);
      }
      this.setLabelAlignment(labelAlignment || this.labelAlignment);
      this.refreshLabel();
    };
    AgAbstractLabel2.prototype.refreshLabel = function() {
      clearElement(this.eLabel);
      if (typeof this.label === "string") {
        this.eLabel.innerText = this.label + this.labelSeparator;
      } else if (this.label) {
        this.eLabel.appendChild(this.label);
      }
      if (this.label === "") {
        setDisplayed(this.eLabel, false);
        setAriaRole(this.eLabel, "presentation");
      } else {
        setDisplayed(this.eLabel, true);
        setAriaRole(this.eLabel, null);
      }
    };
    AgAbstractLabel2.prototype.setLabelSeparator = function(labelSeparator) {
      if (this.labelSeparator === labelSeparator) {
        return this;
      }
      this.labelSeparator = labelSeparator;
      if (this.label != null) {
        this.refreshLabel();
      }
      return this;
    };
    AgAbstractLabel2.prototype.getLabelId = function() {
      this.eLabel.id = this.eLabel.id || "ag-" + this.getCompId() + "-label";
      return this.eLabel.id;
    };
    AgAbstractLabel2.prototype.getLabel = function() {
      return this.label;
    };
    AgAbstractLabel2.prototype.setLabel = function(label) {
      if (this.label === label) {
        return this;
      }
      this.label = label;
      this.refreshLabel();
      return this;
    };
    AgAbstractLabel2.prototype.setLabelAlignment = function(alignment) {
      var eGui = this.getGui();
      var eGuiClassList = eGui.classList;
      eGuiClassList.toggle("ag-label-align-left", alignment === "left");
      eGuiClassList.toggle("ag-label-align-right", alignment === "right");
      eGuiClassList.toggle("ag-label-align-top", alignment === "top");
      return this;
    };
    AgAbstractLabel2.prototype.setLabelEllipsis = function(hasEllipsis) {
      this.eLabel.classList.toggle("ag-label-ellipsis", hasEllipsis);
      return this;
    };
    AgAbstractLabel2.prototype.setLabelWidth = function(width) {
      if (this.label == null) {
        return this;
      }
      setElementWidth(this.eLabel, width);
      return this;
    };
    AgAbstractLabel2.prototype.setDisabled = function(disabled) {
      disabled = !!disabled;
      var element = this.getGui();
      setDisabled(element, disabled);
      element.classList.toggle("ag-disabled", disabled);
      this.disabled = disabled;
      return this;
    };
    AgAbstractLabel2.prototype.isDisabled = function() {
      return !!this.disabled;
    };
    __decorate19([
      PostConstruct
    ], AgAbstractLabel2.prototype, "postConstruct", null);
    return AgAbstractLabel2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAbstractField.js
var __extends13 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgAbstractField = (
  /** @class */
  function(_super) {
    __extends13(AgAbstractField2, _super);
    function AgAbstractField2(config, template, className) {
      var _this = _super.call(this, config, template) || this;
      _this.className = className;
      return _this;
    }
    AgAbstractField2.prototype.postConstruct = function() {
      _super.prototype.postConstruct.call(this);
      if (this.className) {
        this.addCssClass(this.className);
      }
    };
    AgAbstractField2.prototype.onValueChange = function(callbackFn) {
      var _this = this;
      this.addManagedListener(this, AgAbstractField2.EVENT_CHANGED, function() {
        return callbackFn(_this.getValue());
      });
      return this;
    };
    AgAbstractField2.prototype.getWidth = function() {
      return this.getGui().clientWidth;
    };
    AgAbstractField2.prototype.setWidth = function(width) {
      setFixedWidth(this.getGui(), width);
      return this;
    };
    AgAbstractField2.prototype.getPreviousValue = function() {
      return this.previousValue;
    };
    AgAbstractField2.prototype.getValue = function() {
      return this.value;
    };
    AgAbstractField2.prototype.setValue = function(value, silent) {
      if (this.value === value) {
        return this;
      }
      this.previousValue = this.value;
      this.value = value;
      if (!silent) {
        this.dispatchEvent({ type: AgAbstractField2.EVENT_CHANGED });
      }
      return this;
    };
    AgAbstractField2.EVENT_CHANGED = "valueChange";
    return AgAbstractField2;
  }(AgAbstractLabel)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agPickerField.js
var __extends14 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate20 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgPickerField = (
  /** @class */
  function(_super) {
    __extends14(AgPickerField2, _super);
    function AgPickerField2(config, className, pickerIcon, ariaRole) {
      var _this = _super.call(
        this,
        config,
        /* html */
        '<div class="ag-picker-field" role="presentation">\n                <div ref="eLabel"></div>\n                <div ref="eWrapper"\n                    class="ag-wrapper ag-picker-field-wrapper"\n                    tabIndex="-1"\n                    aria-expanded="false"\n                    ' + (ariaRole ? 'role="' + ariaRole + '"' : "") + '\n                >\n                    <div ref="eDisplayField" class="ag-picker-field-display"></div>\n                    <div ref="eIcon" class="ag-picker-field-icon" aria-hidden="true"></div>\n                </div>\n            </div>',
        className
      ) || this;
      _this.pickerIcon = pickerIcon;
      _this.isPickerDisplayed = false;
      _this.isDestroyingPicker = false;
      _this.skipClick = false;
      return _this;
    }
    AgPickerField2.prototype.postConstruct = function() {
      var _this = this;
      _super.prototype.postConstruct.call(this);
      var displayId = this.getCompId() + "-display";
      this.eDisplayField.setAttribute("id", displayId);
      setAriaDescribedBy(this.eWrapper, displayId);
      var clickHandler = function() {
        if (_this.skipClick) {
          _this.skipClick = false;
          return;
        }
        if (_this.isDisabled()) {
          return;
        }
        _this.pickerComponent = _this.showPicker();
      };
      var eGui = this.getGui();
      this.addManagedListener(eGui, "mousedown", function(e2) {
        if (!_this.skipClick && _this.pickerComponent && _this.pickerComponent.isAlive() && isVisible(_this.pickerComponent.getGui()) && eGui.contains(e2.target)) {
          _this.skipClick = true;
        }
      });
      this.addManagedListener(eGui, "keydown", function(e2) {
        switch (e2.key) {
          case KeyCode.UP:
          case KeyCode.DOWN:
          case KeyCode.ENTER:
          case KeyCode.SPACE:
            clickHandler();
          case KeyCode.ESCAPE:
            if (_this.isPickerDisplayed) {
              e2.preventDefault();
            }
            break;
        }
      });
      this.addManagedListener(this.eWrapper, "click", clickHandler);
      this.addManagedListener(this.eLabel, "click", clickHandler);
      if (this.pickerIcon) {
        var icon = createIconNoSpan(this.pickerIcon, this.gridOptionsService);
        if (icon) {
          this.eIcon.appendChild(icon);
        }
      }
    };
    AgPickerField2.prototype.refreshLabel = function() {
      if (exists(this.getLabel())) {
        setAriaLabelledBy(this.eWrapper, this.getLabelId());
      } else {
        this.eWrapper.removeAttribute("aria-labelledby");
      }
      _super.prototype.refreshLabel.call(this);
    };
    AgPickerField2.prototype.setAriaLabel = function(label) {
      setAriaLabel(this.eWrapper, label);
      return this;
    };
    AgPickerField2.prototype.setInputWidth = function(width) {
      setElementWidth(this.eWrapper, width);
      return this;
    };
    AgPickerField2.prototype.getFocusableElement = function() {
      return this.eWrapper;
    };
    __decorate20([
      RefSelector("eLabel")
    ], AgPickerField2.prototype, "eLabel", void 0);
    __decorate20([
      RefSelector("eWrapper")
    ], AgPickerField2.prototype, "eWrapper", void 0);
    __decorate20([
      RefSelector("eDisplayField")
    ], AgPickerField2.prototype, "eDisplayField", void 0);
    __decorate20([
      RefSelector("eIcon")
    ], AgPickerField2.prototype, "eIcon", void 0);
    return AgPickerField2;
  }(AgAbstractField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agList.js
var __extends15 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate21 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgList = (
  /** @class */
  function(_super) {
    __extends15(AgList2, _super);
    function AgList2(cssIdentifier) {
      if (cssIdentifier === void 0) {
        cssIdentifier = "default";
      }
      var _this = _super.call(
        this,
        /* html */
        '<div class="ag-list ag-' + cssIdentifier + '-list" role="listbox"></div>'
      ) || this;
      _this.cssIdentifier = cssIdentifier;
      _this.options = [];
      _this.itemEls = [];
      return _this;
    }
    AgList2.prototype.init = function() {
      this.addManagedListener(this.getGui(), "keydown", this.handleKeyDown.bind(this));
    };
    AgList2.prototype.handleKeyDown = function(e2) {
      var key = e2.key;
      switch (key) {
        case KeyCode.ENTER:
          if (!this.highlightedEl) {
            this.setValue(this.getValue());
          } else {
            var pos = this.itemEls.indexOf(this.highlightedEl);
            this.setValueByIndex(pos);
          }
          break;
        case KeyCode.DOWN:
        case KeyCode.UP:
          var isDown = key === KeyCode.DOWN;
          var itemToHighlight = void 0;
          e2.preventDefault();
          if (!this.highlightedEl) {
            itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];
          } else {
            var currentIdx = this.itemEls.indexOf(this.highlightedEl);
            var nextPos = currentIdx + (isDown ? 1 : -1);
            nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);
            itemToHighlight = this.itemEls[nextPos];
          }
          this.highlightItem(itemToHighlight);
          break;
      }
    };
    AgList2.prototype.addOptions = function(listOptions) {
      var _this = this;
      listOptions.forEach(function(listOption) {
        return _this.addOption(listOption);
      });
      return this;
    };
    AgList2.prototype.addOption = function(listOption) {
      var value = listOption.value, text = listOption.text;
      var sanitisedText = escapeString(text || value);
      this.options.push({ value, text: sanitisedText });
      this.renderOption(value, sanitisedText);
      this.updateIndices();
      return this;
    };
    AgList2.prototype.updateIndices = function() {
      var options = this.getGui().querySelectorAll(".ag-list-item");
      options.forEach(function(option, idx) {
        setAriaPosInSet(option, idx + 1);
        setAriaSetSize(option, options.length);
      });
    };
    AgList2.prototype.renderOption = function(value, text) {
      var _this = this;
      var itemEl = document.createElement("div");
      setAriaRole(itemEl, "option");
      itemEl.classList.add("ag-list-item", "ag-" + this.cssIdentifier + "-list-item");
      itemEl.innerHTML = "<span>" + text + "</span>";
      itemEl.tabIndex = -1;
      this.itemEls.push(itemEl);
      this.addManagedListener(itemEl, "mouseover", function() {
        return _this.highlightItem(itemEl);
      });
      this.addManagedListener(itemEl, "mouseleave", function() {
        return _this.clearHighlighted();
      });
      this.addManagedListener(itemEl, "click", function() {
        return _this.setValue(value);
      });
      this.getGui().appendChild(itemEl);
    };
    AgList2.prototype.setValue = function(value, silent) {
      if (this.value === value) {
        this.fireItemSelected();
        return this;
      }
      if (value == null) {
        this.reset();
        return this;
      }
      var idx = this.options.findIndex(function(option2) {
        return option2.value === value;
      });
      if (idx !== -1) {
        var option = this.options[idx];
        this.value = option.value;
        this.displayValue = option.text != null ? option.text : option.value;
        this.highlightItem(this.itemEls[idx]);
        if (!silent) {
          this.fireChangeEvent();
        }
      }
      return this;
    };
    AgList2.prototype.setValueByIndex = function(idx) {
      return this.setValue(this.options[idx].value);
    };
    AgList2.prototype.getValue = function() {
      return this.value;
    };
    AgList2.prototype.getDisplayValue = function() {
      return this.displayValue;
    };
    AgList2.prototype.refreshHighlighted = function() {
      var _this = this;
      this.clearHighlighted();
      var idx = this.options.findIndex(function(option) {
        return option.value === _this.value;
      });
      if (idx !== -1) {
        this.highlightItem(this.itemEls[idx]);
      }
    };
    AgList2.prototype.reset = function() {
      this.value = null;
      this.displayValue = null;
      this.clearHighlighted();
      this.fireChangeEvent();
    };
    AgList2.prototype.highlightItem = function(el) {
      if (!el.offsetParent) {
        return;
      }
      this.clearHighlighted();
      this.highlightedEl = el;
      this.highlightedEl.classList.add(AgList2.ACTIVE_CLASS);
      setAriaSelected(this.highlightedEl, true);
      this.highlightedEl.focus();
    };
    AgList2.prototype.clearHighlighted = function() {
      if (!this.highlightedEl || !this.highlightedEl.offsetParent) {
        return;
      }
      this.highlightedEl.classList.remove(AgList2.ACTIVE_CLASS);
      setAriaSelected(this.highlightedEl, false);
      this.highlightedEl = null;
    };
    AgList2.prototype.fireChangeEvent = function() {
      this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });
      this.fireItemSelected();
    };
    AgList2.prototype.fireItemSelected = function() {
      this.dispatchEvent({ type: AgList2.EVENT_ITEM_SELECTED });
    };
    AgList2.EVENT_ITEM_SELECTED = "selectedItem";
    AgList2.ACTIVE_CLASS = "ag-active-item";
    __decorate21([
      PostConstruct
    ], AgList2.prototype, "init", null);
    return AgList2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agSelect.js
var __extends16 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate22 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgSelect = (
  /** @class */
  function(_super) {
    __extends16(AgSelect2, _super);
    function AgSelect2(config) {
      return _super.call(this, config, "ag-select", "smallDown", "listbox") || this;
    }
    AgSelect2.prototype.init = function() {
      var _this = this;
      this.listComponent = this.createBean(new AgList("select"));
      this.listComponent.setParentComponent(this);
      this.eWrapper.tabIndex = 0;
      this.listComponent.addManagedListener(this.listComponent, AgList.EVENT_ITEM_SELECTED, function() {
        if (_this.hideList) {
          _this.hideList();
        }
      });
      this.listComponent.addManagedListener(this.listComponent, AgAbstractField.EVENT_CHANGED, function() {
        _this.setValue(_this.listComponent.getValue(), false, true);
        if (_this.hideList) {
          _this.hideList();
        }
      });
    };
    AgSelect2.prototype.showPicker = function() {
      var _this = this;
      var listGui = this.listComponent.getGui();
      var eDocument = this.gridOptionsService.getDocument();
      var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, "wheel", function(e2) {
        if (!listGui.contains(e2.target) && _this.hideList) {
          _this.hideList();
        }
      });
      var destroyFocusOutFunc = this.addManagedListener(listGui, "focusout", function(e2) {
        if (!listGui.contains(e2.relatedTarget) && _this.hideList) {
          _this.hideList();
        }
      });
      var translate = this.localeService.getLocaleTextFunc();
      var addPopupRes = this.popupService.addPopup({
        modal: true,
        eChild: listGui,
        closeOnEsc: true,
        closedCallback: function() {
          _this.hideList = null;
          _this.isPickerDisplayed = false;
          destroyFocusOutFunc();
          destroyMouseWheelFunc();
          if (_this.isAlive()) {
            setAriaExpanded(_this.eWrapper, false);
            _this.getFocusableElement().focus();
          }
        },
        ariaLabel: translate("ariaLabelSelectField", "Select Field")
      });
      if (addPopupRes) {
        this.hideList = addPopupRes.hideFunc;
      }
      this.isPickerDisplayed = true;
      setElementWidth(listGui, getAbsoluteWidth(this.eWrapper));
      setAriaExpanded(this.eWrapper, true);
      listGui.style.maxHeight = getInnerHeight(this.popupService.getPopupParent()) + "px";
      listGui.style.position = "absolute";
      this.popupService.positionPopupByComponent({
        type: "ag-list",
        eventSource: this.eWrapper,
        ePopup: listGui,
        position: "under",
        keepWithinBounds: true
      });
      this.listComponent.refreshHighlighted();
      return this.listComponent;
    };
    AgSelect2.prototype.addOptions = function(options) {
      var _this = this;
      options.forEach(function(option) {
        return _this.addOption(option);
      });
      return this;
    };
    AgSelect2.prototype.addOption = function(option) {
      this.listComponent.addOption(option);
      return this;
    };
    AgSelect2.prototype.setValue = function(value, silent, fromPicker) {
      if (this.value === value) {
        return this;
      }
      if (!fromPicker) {
        this.listComponent.setValue(value, true);
      }
      var newValue = this.listComponent.getValue();
      if (newValue === this.getValue()) {
        return this;
      }
      this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();
      return _super.prototype.setValue.call(this, value, silent);
    };
    AgSelect2.prototype.destroy = function() {
      if (this.hideList) {
        this.hideList();
      }
      this.destroyBean(this.listComponent);
      _super.prototype.destroy.call(this);
    };
    __decorate22([
      Autowired("popupService")
    ], AgSelect2.prototype, "popupService", void 0);
    __decorate22([
      PostConstruct
    ], AgSelect2.prototype, "init", null);
    return AgSelect2;
  }(AgPickerField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAbstractInputField.js
var __extends17 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate23 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgAbstractInputField = (
  /** @class */
  function(_super) {
    __extends17(AgAbstractInputField2, _super);
    function AgAbstractInputField2(config, className, inputType, displayFieldTag) {
      if (inputType === void 0) {
        inputType = "text";
      }
      if (displayFieldTag === void 0) {
        displayFieldTag = "input";
      }
      var _this = _super.call(
        this,
        config,
        /* html */
        '\n            <div role="presentation">\n                <div ref="eLabel" class="ag-input-field-label"></div>\n                <div ref="eWrapper" class="ag-wrapper ag-input-wrapper" role="presentation">\n                    <' + displayFieldTag + ' ref="eInput" class="ag-input-field-input"></' + displayFieldTag + ">\n                </div>\n            </div>",
        className
      ) || this;
      _this.inputType = inputType;
      _this.displayFieldTag = displayFieldTag;
      return _this;
    }
    AgAbstractInputField2.prototype.postConstruct = function() {
      _super.prototype.postConstruct.call(this);
      this.setInputType();
      this.eLabel.classList.add(this.className + "-label");
      this.eWrapper.classList.add(this.className + "-input-wrapper");
      this.eInput.classList.add(this.className + "-input");
      this.addCssClass("ag-input-field");
      this.eInput.id = this.eInput.id || "ag-" + this.getCompId() + "-input";
      var _a47 = this.config, width = _a47.width, value = _a47.value;
      if (width != null) {
        this.setWidth(width);
      }
      if (value != null) {
        this.setValue(value);
      }
      this.addInputListeners();
    };
    AgAbstractInputField2.prototype.refreshLabel = function() {
      if (exists(this.getLabel())) {
        setAriaLabelledBy(this.eInput, this.getLabelId());
      } else {
        this.eInput.removeAttribute("aria-labelledby");
      }
      _super.prototype.refreshLabel.call(this);
    };
    AgAbstractInputField2.prototype.addInputListeners = function() {
      var _this = this;
      this.addManagedListener(this.eInput, "input", function(e2) {
        return _this.setValue(e2.target.value);
      });
    };
    AgAbstractInputField2.prototype.setInputType = function() {
      if (this.displayFieldTag === "input") {
        this.eInput.setAttribute("type", this.inputType);
      }
    };
    AgAbstractInputField2.prototype.getInputElement = function() {
      return this.eInput;
    };
    AgAbstractInputField2.prototype.setInputWidth = function(width) {
      setElementWidth(this.eWrapper, width);
      return this;
    };
    AgAbstractInputField2.prototype.setInputName = function(name) {
      this.getInputElement().setAttribute("name", name);
      return this;
    };
    AgAbstractInputField2.prototype.getFocusableElement = function() {
      return this.eInput;
    };
    AgAbstractInputField2.prototype.setMaxLength = function(length) {
      var eInput = this.eInput;
      eInput.maxLength = length;
      return this;
    };
    AgAbstractInputField2.prototype.setInputPlaceholder = function(placeholder) {
      addOrRemoveAttribute(this.eInput, "placeholder", placeholder);
      return this;
    };
    AgAbstractInputField2.prototype.setInputAriaLabel = function(label) {
      setAriaLabel(this.eInput, label);
      return this;
    };
    AgAbstractInputField2.prototype.setDisabled = function(disabled) {
      setDisabled(this.eInput, disabled);
      return _super.prototype.setDisabled.call(this, disabled);
    };
    __decorate23([
      RefSelector("eLabel")
    ], AgAbstractInputField2.prototype, "eLabel", void 0);
    __decorate23([
      RefSelector("eWrapper")
    ], AgAbstractInputField2.prototype, "eWrapper", void 0);
    __decorate23([
      RefSelector("eInput")
    ], AgAbstractInputField2.prototype, "eInput", void 0);
    return AgAbstractInputField2;
  }(AgAbstractField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/simpleFilter.js
var __extends18 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate24 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ConditionPosition;
(function(ConditionPosition2) {
  ConditionPosition2[ConditionPosition2["One"] = 0] = "One";
  ConditionPosition2[ConditionPosition2["Two"] = 1] = "Two";
})(ConditionPosition || (ConditionPosition = {}));
var SimpleFilter = (
  /** @class */
  function(_super) {
    __extends18(SimpleFilter2, _super);
    function SimpleFilter2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SimpleFilter2.prototype.getNumberOfInputs = function(type2) {
      var customOpts = this.optionsFactory.getCustomOption(type2);
      if (customOpts) {
        var numberOfInputs = customOpts.numberOfInputs;
        return numberOfInputs != null ? numberOfInputs : 1;
      }
      var zeroInputTypes = [
        SimpleFilter2.EMPTY,
        SimpleFilter2.NOT_BLANK,
        SimpleFilter2.BLANK
      ];
      if (type2 && zeroInputTypes.indexOf(type2) >= 0) {
        return 0;
      } else if (type2 === SimpleFilter2.IN_RANGE) {
        return 2;
      }
      return 1;
    };
    SimpleFilter2.prototype.onFloatingFilterChanged = function(type2, value) {
      this.setTypeFromFloatingFilter(type2);
      this.setValueFromFloatingFilter(value);
      this.onUiChanged(true);
    };
    SimpleFilter2.prototype.setTypeFromFloatingFilter = function(type2) {
      this.eType1.setValue(type2);
      this.eType2.setValue(this.optionsFactory.getDefaultOption());
      (this.isDefaultOperator("AND") ? this.eJoinOperatorAnd : this.eJoinOperatorOr).setValue(true);
    };
    SimpleFilter2.prototype.getModelFromUi = function() {
      if (!this.isConditionUiComplete(ConditionPosition.One)) {
        return null;
      }
      if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {
        return {
          filterType: this.getFilterType(),
          operator: this.getJoinOperator(),
          condition1: this.createCondition(ConditionPosition.One),
          condition2: this.createCondition(ConditionPosition.Two)
        };
      }
      return this.createCondition(ConditionPosition.One);
    };
    SimpleFilter2.prototype.getConditionTypes = function() {
      return [
        this.eType1.getValue(),
        this.eType2.getValue()
      ];
    };
    SimpleFilter2.prototype.getJoinOperator = function() {
      return this.eJoinOperatorOr.getValue() === true ? "OR" : "AND";
    };
    SimpleFilter2.prototype.areModelsEqual = function(a2, b2) {
      if (!a2 && !b2) {
        return true;
      }
      if (!a2 && b2 || a2 && !b2) {
        return false;
      }
      var aIsSimple = !a2.operator;
      var bIsSimple = !b2.operator;
      var oneSimpleOneCombined = !aIsSimple && bIsSimple || aIsSimple && !bIsSimple;
      if (oneSimpleOneCombined) {
        return false;
      }
      var res;
      if (aIsSimple) {
        var aSimple = a2;
        var bSimple = b2;
        res = this.areSimpleModelsEqual(aSimple, bSimple);
      } else {
        var aCombined = a2;
        var bCombined = b2;
        res = aCombined.operator === bCombined.operator && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1) && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);
      }
      return res;
    };
    SimpleFilter2.prototype.setModelIntoUi = function(model) {
      var isCombined = model.operator;
      if (isCombined) {
        var combinedModel = model;
        var orChecked = combinedModel.operator === "OR";
        this.eJoinOperatorAnd.setValue(!orChecked);
        this.eJoinOperatorOr.setValue(orChecked);
        this.eType1.setValue(combinedModel.condition1.type);
        this.eType2.setValue(combinedModel.condition2.type);
        this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);
        this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);
      } else {
        var simpleModel = model;
        this.eJoinOperatorAnd.setValue(this.isDefaultOperator("AND"));
        this.eJoinOperatorOr.setValue(this.isDefaultOperator("OR"));
        this.eType1.setValue(simpleModel.type);
        this.eType2.setValue(this.optionsFactory.getDefaultOption());
        this.setConditionIntoUi(simpleModel, ConditionPosition.One);
        this.setConditionIntoUi(null, ConditionPosition.Two);
      }
      return AgPromise.resolve();
    };
    SimpleFilter2.prototype.doesFilterPass = function(params) {
      var _this = this;
      var model = this.getModel();
      if (model == null) {
        return true;
      }
      var operator = model.operator;
      var models = [];
      if (operator) {
        var combinedModel = model;
        models.push(combinedModel.condition1, combinedModel.condition2);
      } else {
        models.push(model);
      }
      var combineFunction = operator && operator === "OR" ? "some" : "every";
      return models[combineFunction](function(m2) {
        return _this.individualConditionPasses(params, m2);
      });
    };
    SimpleFilter2.prototype.setParams = function(params) {
      _super.prototype.setParams.call(this, params);
      this.optionsFactory = new OptionsFactory();
      this.optionsFactory.init(params, this.getDefaultFilterOptions());
      this.allowTwoConditions = !params.suppressAndOrCondition;
      this.alwaysShowBothConditions = !!params.alwaysShowBothConditions;
      this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);
      this.filterPlaceholder = params.filterPlaceholder;
      this.putOptionsIntoDropdown();
      this.addChangedListeners();
    };
    SimpleFilter2.prototype.getDefaultJoinOperator = function(defaultJoinOperator) {
      return includes(["AND", "OR"], defaultJoinOperator) ? defaultJoinOperator : "AND";
    };
    SimpleFilter2.prototype.putOptionsIntoDropdown = function() {
      var _this = this;
      var filterOptions = this.optionsFactory.getFilterOptions();
      var eTypes = [this.eType1, this.eType2];
      filterOptions.forEach(function(option) {
        var listOption = typeof option === "string" ? _this.createBoilerplateListOption(option) : _this.createCustomListOption(option);
        eTypes.forEach(function(eType) {
          return eType.addOption(listOption);
        });
      });
      eTypes.forEach(function(eType) {
        return eType.setDisabled(filterOptions.length <= 1);
      });
    };
    SimpleFilter2.prototype.createBoilerplateListOption = function(option) {
      return { value: option, text: this.translate(option) };
    };
    SimpleFilter2.prototype.createCustomListOption = function(option) {
      var displayKey = option.displayKey;
      var customOption = this.optionsFactory.getCustomOption(option.displayKey);
      return {
        value: displayKey,
        text: customOption ? this.localeService.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) : this.translate(displayKey)
      };
    };
    SimpleFilter2.prototype.isAllowTwoConditions = function() {
      return this.allowTwoConditions;
    };
    SimpleFilter2.prototype.createBodyTemplate = function() {
      return (
        /* html */
        '\n            <ag-select class="ag-filter-select" ref="eOptions1"></ag-select>\n            ' + this.createValueTemplate(ConditionPosition.One) + '\n            <div class="ag-filter-condition" ref="eJoinOperatorPanel">\n               <ag-radio-button ref="eJoinOperatorAnd" class="ag-filter-condition-operator ag-filter-condition-operator-and"></ag-radio-button>\n               <ag-radio-button ref="eJoinOperatorOr" class="ag-filter-condition-operator ag-filter-condition-operator-or"></ag-radio-button>\n            </div>\n            <ag-select class="ag-filter-select" ref="eOptions2"></ag-select>\n            ' + this.createValueTemplate(ConditionPosition.Two)
      );
    };
    SimpleFilter2.prototype.getCssIdentifier = function() {
      return "simple-filter";
    };
    SimpleFilter2.prototype.updateUiVisibility = function() {
      var _this = this;
      var elementConditionGroups = [
        [this.eType1],
        [this.eType2, this.eJoinOperatorPanel, this.eJoinOperatorAnd, this.eJoinOperatorOr]
      ];
      var elementBodies = [this.eCondition1Body, this.eCondition2Body];
      elementConditionGroups.forEach(function(group, position) {
        var visible = _this.isConditionVisible(position);
        var disabled = _this.isConditionDisabled(position);
        group.forEach(function(element) {
          if (element instanceof AgAbstractInputField || element instanceof AgSelect) {
            element.setDisabled(disabled);
            element.setDisplayed(visible);
          } else {
            setDisabled(element, disabled);
            setDisplayed(element, visible);
          }
        });
      });
      elementBodies.forEach(function(element, index) {
        setDisplayed(element, _this.isConditionBodyVisible(index));
      });
      this.forEachInput(function(element, index, position, numberOfInputs) {
        _this.setElementDisplayed(element, index < numberOfInputs);
        _this.setElementDisabled(element, _this.isConditionDisabled(position));
      });
      this.resetPlaceholder();
    };
    SimpleFilter2.prototype.afterGuiAttached = function(params) {
      _super.prototype.afterGuiAttached.call(this, params);
      this.resetPlaceholder();
      if (!params || !params.suppressFocus && !this.isReadOnly()) {
        var firstInput = this.getInputs()[0][0];
        if (!firstInput) {
          return;
        }
        if (firstInput instanceof AgAbstractInputField) {
          firstInput.getInputElement().focus();
        }
      }
    };
    SimpleFilter2.prototype.getPlaceholderText = function(defaultPlaceholder, position) {
      var placeholder = this.translate(defaultPlaceholder);
      if (isFunction2(this.filterPlaceholder)) {
        var filterPlaceholderFn = this.filterPlaceholder;
        var filterOptionKey = position === 0 ? this.eType1.getValue() : this.eType2.getValue();
        var filterOption = this.translate(filterOptionKey);
        placeholder = filterPlaceholderFn({
          filterOptionKey,
          filterOption,
          placeholder
        });
      } else if (typeof this.filterPlaceholder === "string") {
        placeholder = this.filterPlaceholder;
      }
      return placeholder;
    };
    SimpleFilter2.prototype.resetPlaceholder = function() {
      var _this = this;
      var globalTranslate = this.localeService.getLocaleTextFunc();
      this.forEachInput(function(element, index, position, numberOfInputs) {
        if (!(element instanceof AgAbstractInputField)) {
          return;
        }
        var placeholder = index === 0 && numberOfInputs > 1 ? "inRangeStart" : index === 0 ? "filterOoo" : "inRangeEnd";
        var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate("ariaFilterFromValue", "Filter from value") : index === 0 ? globalTranslate("ariaFilterValue", "Filter Value") : globalTranslate("ariaFilterToValue", "Filter to Value");
        element.setInputPlaceholder(_this.getPlaceholderText(placeholder, position));
        element.setInputAriaLabel(ariaLabel);
      });
    };
    SimpleFilter2.prototype.setElementValue = function(element, value, silent) {
      if (element instanceof AgAbstractInputField) {
        element.setValue(value != null ? String(value) : null, silent);
      }
    };
    SimpleFilter2.prototype.setElementDisplayed = function(element, displayed) {
      if (element instanceof Component2) {
        setDisplayed(element.getGui(), displayed);
      }
    };
    SimpleFilter2.prototype.setElementDisabled = function(element, disabled) {
      if (element instanceof Component2) {
        setDisabled(element.getGui(), disabled);
      }
    };
    SimpleFilter2.prototype.attachElementOnChange = function(element, listener) {
      if (element instanceof AgAbstractInputField) {
        element.onValueChange(listener);
      }
    };
    SimpleFilter2.prototype.forEachInput = function(cb) {
      var _this = this;
      var inputs = this.getInputs();
      this.getConditionTypes().forEach(function(type2, position) {
        var numberOfInputs = _this.getNumberOfInputs(type2);
        for (var index = 0; index < inputs[position].length; index++) {
          var input = inputs[position][index];
          if (input != null) {
            cb(input, index, position, numberOfInputs);
          }
        }
      });
    };
    SimpleFilter2.prototype.isConditionVisible = function(position) {
      if (position === 0) {
        return true;
      }
      if (!this.allowTwoConditions) {
        return false;
      }
      if (this.isReadOnly()) {
        return this.isConditionUiComplete(position);
      }
      if (this.alwaysShowBothConditions) {
        return true;
      }
      return this.isConditionUiComplete(position - 1);
    };
    SimpleFilter2.prototype.isConditionDisabled = function(position) {
      if (this.isReadOnly()) {
        return true;
      }
      if (!this.isConditionVisible(position)) {
        return true;
      }
      if (position === 0) {
        return false;
      }
      return !this.isConditionUiComplete(position - 1);
    };
    SimpleFilter2.prototype.isConditionBodyVisible = function(position) {
      if (!this.isConditionVisible(position)) {
        return false;
      }
      var type2 = this.getConditionTypes()[position];
      var numberOfInputs = this.getNumberOfInputs(type2);
      return numberOfInputs > 0;
    };
    SimpleFilter2.prototype.isConditionUiComplete = function(position) {
      var type2 = this.getConditionTypes()[position];
      if (type2 === SimpleFilter2.EMPTY) {
        return false;
      }
      if (this.getValues(position).some(function(v2) {
        return v2 == null;
      })) {
        return false;
      }
      return true;
    };
    SimpleFilter2.prototype.resetUiToDefaults = function(silent) {
      var _this = this;
      var translate = this.localeService.getLocaleTextFunc();
      var filteringLabel = translate("ariaFilteringOperator", "Filtering operator");
      var uniqueGroupId = "ag-simple-filter-and-or-" + this.getCompId();
      var defaultOption = this.optionsFactory.getDefaultOption();
      this.eType1.setValue(defaultOption, silent).setAriaLabel(filteringLabel).setDisabled(this.isReadOnly());
      this.eType2.setValue(this.optionsFactory.getDefaultOption(), silent).setAriaLabel(filteringLabel).setDisabled(this.isReadOnly());
      this.eJoinOperatorAnd.setValue(this.isDefaultOperator("AND"), silent).setName(uniqueGroupId).setLabel(this.translate("andCondition")).setDisabled(this.isReadOnly());
      this.eJoinOperatorOr.setValue(this.isDefaultOperator("OR"), silent).setName(uniqueGroupId).setLabel(this.translate("orCondition")).setDisabled(this.isReadOnly());
      this.forEachInput(function(element) {
        _this.setElementValue(element, null, silent);
        _this.setElementDisabled(element, _this.isReadOnly());
      });
      this.resetPlaceholder();
      return AgPromise.resolve();
    };
    SimpleFilter2.prototype.setConditionIntoUi = function(model, position) {
      var _this = this;
      var values2 = this.mapValuesFromModel(model);
      this.forEachInput(function(element, index, elPosition, _3) {
        if (elPosition !== position) {
          return;
        }
        _this.setElementValue(element, values2[index] != null ? values2[index] : null);
      });
    };
    SimpleFilter2.prototype.setValueFromFloatingFilter = function(value) {
      var _this = this;
      this.forEachInput(function(element, index, position, _3) {
        _this.setElementValue(element, index === 0 && position === 0 ? value : null);
      });
    };
    SimpleFilter2.prototype.isDefaultOperator = function(operator) {
      return operator === this.defaultJoinOperator;
    };
    SimpleFilter2.prototype.addChangedListeners = function() {
      var _this = this;
      if (this.isReadOnly()) {
        return;
      }
      var listener = function() {
        return _this.onUiChanged();
      };
      this.eType1.onValueChange(listener);
      this.eType2.onValueChange(listener);
      this.eJoinOperatorOr.onValueChange(listener);
      this.eJoinOperatorAnd.onValueChange(listener);
      this.forEachInput(function(element) {
        _this.attachElementOnChange(element, listener);
      });
    };
    SimpleFilter2.prototype.individualConditionPasses = function(params, filterModel) {
      var cellValue = this.getCellValue(params.node);
      var values2 = this.mapValuesFromModel(filterModel);
      var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);
      var customFilterResult = this.evaluateCustomFilter(customFilterOption, values2, cellValue);
      if (customFilterResult != null) {
        return customFilterResult;
      }
      if (cellValue == null) {
        return this.evaluateNullValue(filterModel.type);
      }
      return this.evaluateNonNullValue(values2, cellValue, filterModel, params);
    };
    SimpleFilter2.prototype.evaluateCustomFilter = function(customFilterOption, values2, cellValue) {
      if (customFilterOption == null) {
        return;
      }
      var predicate = customFilterOption.predicate;
      if (predicate != null && !values2.some(function(v2) {
        return v2 == null;
      })) {
        return predicate(values2, cellValue);
      }
      return;
    };
    SimpleFilter2.prototype.isBlank = function(cellValue) {
      return cellValue == null || typeof cellValue === "string" && cellValue.trim().length === 0;
    };
    SimpleFilter2.EMPTY = "empty";
    SimpleFilter2.BLANK = "blank";
    SimpleFilter2.NOT_BLANK = "notBlank";
    SimpleFilter2.EQUALS = "equals";
    SimpleFilter2.NOT_EQUAL = "notEqual";
    SimpleFilter2.LESS_THAN = "lessThan";
    SimpleFilter2.LESS_THAN_OR_EQUAL = "lessThanOrEqual";
    SimpleFilter2.GREATER_THAN = "greaterThan";
    SimpleFilter2.GREATER_THAN_OR_EQUAL = "greaterThanOrEqual";
    SimpleFilter2.IN_RANGE = "inRange";
    SimpleFilter2.CONTAINS = "contains";
    SimpleFilter2.NOT_CONTAINS = "notContains";
    SimpleFilter2.STARTS_WITH = "startsWith";
    SimpleFilter2.ENDS_WITH = "endsWith";
    __decorate24([
      RefSelector("eOptions1")
    ], SimpleFilter2.prototype, "eType1", void 0);
    __decorate24([
      RefSelector("eOptions2")
    ], SimpleFilter2.prototype, "eType2", void 0);
    __decorate24([
      RefSelector("eJoinOperatorPanel")
    ], SimpleFilter2.prototype, "eJoinOperatorPanel", void 0);
    __decorate24([
      RefSelector("eJoinOperatorAnd")
    ], SimpleFilter2.prototype, "eJoinOperatorAnd", void 0);
    __decorate24([
      RefSelector("eJoinOperatorOr")
    ], SimpleFilter2.prototype, "eJoinOperatorOr", void 0);
    __decorate24([
      RefSelector("eCondition1Body")
    ], SimpleFilter2.prototype, "eCondition1Body", void 0);
    __decorate24([
      RefSelector("eCondition2Body")
    ], SimpleFilter2.prototype, "eCondition2Body", void 0);
    return SimpleFilter2;
  }(ProvidedFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/scalarFilter.js
var __extends19 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var ScalarFilter = (
  /** @class */
  function(_super) {
    __extends19(ScalarFilter2, _super);
    function ScalarFilter2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ScalarFilter2.prototype.setParams = function(params) {
      _super.prototype.setParams.call(this, params);
      this.scalarFilterParams = params;
    };
    ScalarFilter2.prototype.evaluateNullValue = function(filterType) {
      switch (filterType) {
        case ScalarFilter2.EQUALS:
        case ScalarFilter2.NOT_EQUAL:
          if (this.scalarFilterParams.includeBlanksInEquals) {
            return true;
          }
          break;
        case ScalarFilter2.GREATER_THAN:
        case ScalarFilter2.GREATER_THAN_OR_EQUAL:
          if (this.scalarFilterParams.includeBlanksInGreaterThan) {
            return true;
          }
          break;
        case ScalarFilter2.LESS_THAN:
        case ScalarFilter2.LESS_THAN_OR_EQUAL:
          if (this.scalarFilterParams.includeBlanksInLessThan) {
            return true;
          }
          break;
        case ScalarFilter2.IN_RANGE:
          if (this.scalarFilterParams.includeBlanksInRange) {
            return true;
          }
          break;
        case ScalarFilter2.BLANK:
          return true;
        case ScalarFilter2.NOT_BLANK:
          return false;
      }
      return false;
    };
    ScalarFilter2.prototype.evaluateNonNullValue = function(values2, cellValue, filterModel) {
      var comparator = this.comparator();
      var compareResult = values2[0] != null ? comparator(values2[0], cellValue) : 0;
      switch (filterModel.type) {
        case ScalarFilter2.EQUALS:
          return compareResult === 0;
        case ScalarFilter2.NOT_EQUAL:
          return compareResult !== 0;
        case ScalarFilter2.GREATER_THAN:
          return compareResult > 0;
        case ScalarFilter2.GREATER_THAN_OR_EQUAL:
          return compareResult >= 0;
        case ScalarFilter2.LESS_THAN:
          return compareResult < 0;
        case ScalarFilter2.LESS_THAN_OR_EQUAL:
          return compareResult <= 0;
        case ScalarFilter2.IN_RANGE: {
          var compareToResult = comparator(values2[1], cellValue);
          return this.scalarFilterParams.inRangeInclusive ? compareResult >= 0 && compareToResult <= 0 : compareResult > 0 && compareToResult < 0;
        }
        case ScalarFilter2.BLANK:
          return this.isBlank(cellValue);
        case ScalarFilter2.NOT_BLANK:
          return !this.isBlank(cellValue);
        default:
          console.warn('AG Grid: Unexpected type of filter "' + filterModel.type + '", it looks like the filter was configured with incorrect Filter Options');
          return true;
      }
    };
    return ScalarFilter2;
  }(SimpleFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateFilter.js
var __extends20 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign7 = function() {
  __assign7 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign7.apply(this, arguments);
};
var __decorate25 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DEFAULT_MIN_YEAR = 1e3;
var DEFAULT_MAX_YEAR = Infinity;
var DateFilter = (
  /** @class */
  function(_super) {
    __extends20(DateFilter2, _super);
    function DateFilter2() {
      var _this = _super.call(this, "dateFilter") || this;
      _this.minValidYear = DEFAULT_MIN_YEAR;
      _this.maxValidYear = DEFAULT_MAX_YEAR;
      return _this;
    }
    DateFilter2.prototype.afterGuiAttached = function(params) {
      _super.prototype.afterGuiAttached.call(this, params);
      this.dateCondition1FromComp.afterGuiAttached(params);
    };
    DateFilter2.prototype.mapValuesFromModel = function(filterModel) {
      var _a47 = filterModel || {}, dateFrom = _a47.dateFrom, dateTo = _a47.dateTo, type2 = _a47.type;
      return [
        dateFrom && parseDateTimeFromString(dateFrom) || null,
        dateTo && parseDateTimeFromString(dateTo) || null
      ].slice(0, this.getNumberOfInputs(type2));
    };
    DateFilter2.prototype.comparator = function() {
      return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);
    };
    DateFilter2.prototype.defaultComparator = function(filterDate, cellValue) {
      var cellAsDate = cellValue;
      if (cellValue == null || cellAsDate < filterDate) {
        return -1;
      }
      if (cellAsDate > filterDate) {
        return 1;
      }
      return 0;
    };
    DateFilter2.prototype.setParams = function(params) {
      _super.prototype.setParams.call(this, params);
      this.dateFilterParams = params;
      var yearParser = function(param, fallback) {
        if (params[param] != null) {
          if (!isNaN(params[param])) {
            return params[param] == null ? fallback : Number(params[param]);
          } else {
            console.warn("AG Grid: DateFilter " + param + " is not a number");
          }
        }
        return fallback;
      };
      this.minValidYear = yearParser("minValidYear", DEFAULT_MIN_YEAR);
      this.maxValidYear = yearParser("maxValidYear", DEFAULT_MAX_YEAR);
      if (this.minValidYear > this.maxValidYear) {
        console.warn("AG Grid: DateFilter minValidYear should be <= maxValidYear");
      }
      this.createDateComponents();
    };
    DateFilter2.prototype.createDateComponents = function() {
      var _this = this;
      var createDateCompWrapper = function(element) {
        return new DateCompWrapper(_this.getContext(), _this.userComponentFactory, {
          onDateChanged: function() {
            return _this.onUiChanged();
          },
          filterParams: _this.dateFilterParams
        }, element);
      };
      this.dateCondition1FromComp = createDateCompWrapper(this.eCondition1PanelFrom);
      this.dateCondition1ToComp = createDateCompWrapper(this.eCondition1PanelTo);
      this.dateCondition2FromComp = createDateCompWrapper(this.eCondition2PanelFrom);
      this.dateCondition2ToComp = createDateCompWrapper(this.eCondition2PanelTo);
      this.addDestroyFunc(function() {
        _this.forEachInput(function(element) {
          return element.destroy();
        });
      });
    };
    DateFilter2.prototype.setElementValue = function(element, value, silent) {
      element.setDate(value);
    };
    DateFilter2.prototype.setElementDisplayed = function(element, displayed) {
      element.setDisplayed(displayed);
    };
    DateFilter2.prototype.setElementDisabled = function(element, disabled) {
      element.setDisabled(disabled);
    };
    DateFilter2.prototype.getDefaultFilterOptions = function() {
      return DateFilter2.DEFAULT_FILTER_OPTIONS;
    };
    DateFilter2.prototype.createValueTemplate = function(position) {
      var pos = position === ConditionPosition.One ? "1" : "2";
      return (
        /* html */
        '\n            <div class="ag-filter-body" ref="eCondition' + pos + 'Body">\n                <div class="ag-filter-from ag-filter-date-from" ref="eCondition' + pos + 'PanelFrom"></div>\n                <div class="ag-filter-to ag-filter-date-to" ref="eCondition' + pos + 'PanelTo"></div>\n            </div>'
      );
    };
    DateFilter2.prototype.isConditionUiComplete = function(position) {
      var _this = this;
      if (!_super.prototype.isConditionUiComplete.call(this, position)) {
        return false;
      }
      var isValidDate = function(value) {
        return value != null && value.getUTCFullYear() >= _this.minValidYear && value.getUTCFullYear() <= _this.maxValidYear;
      };
      var valid = true;
      this.forEachInput(function(element, index, elPosition, numberOfInputs) {
        if (elPosition !== position || !valid || index >= numberOfInputs) {
          return;
        }
        valid = valid && isValidDate(element.getDate());
      });
      return valid;
    };
    DateFilter2.prototype.areSimpleModelsEqual = function(aSimple, bSimple) {
      return aSimple.dateFrom === bSimple.dateFrom && aSimple.dateTo === bSimple.dateTo && aSimple.type === bSimple.type;
    };
    DateFilter2.prototype.getFilterType = function() {
      return "date";
    };
    DateFilter2.prototype.createCondition = function(position) {
      var type2 = this.getConditionTypes()[position];
      var model = {};
      var values2 = this.getValues(position);
      if (values2.length > 0) {
        model.dateFrom = serialiseDate(values2[0]);
      }
      if (values2.length > 1) {
        model.dateTo = serialiseDate(values2[1]);
      }
      return __assign7({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type2 }, model);
    };
    DateFilter2.prototype.resetPlaceholder = function() {
      var globalTranslate = this.localeService.getLocaleTextFunc();
      var placeholder = this.translate("dateFormatOoo");
      var ariaLabel = globalTranslate("ariaFilterValue", "Filter Value");
      this.forEachInput(function(element) {
        element.setInputPlaceholder(placeholder);
        element.setInputAriaLabel(ariaLabel);
      });
    };
    DateFilter2.prototype.getInputs = function() {
      return [
        [this.dateCondition1FromComp, this.dateCondition1ToComp],
        [this.dateCondition2FromComp, this.dateCondition2ToComp]
      ];
    };
    DateFilter2.prototype.getValues = function(position) {
      var result = [];
      this.forEachInput(function(element, index, elPosition, numberOfInputs) {
        if (position === elPosition && index < numberOfInputs) {
          result.push(element.getDate());
        }
      });
      return result;
    };
    DateFilter2.DEFAULT_FILTER_OPTIONS = [
      ScalarFilter.EQUALS,
      ScalarFilter.GREATER_THAN,
      ScalarFilter.LESS_THAN,
      ScalarFilter.NOT_EQUAL,
      ScalarFilter.IN_RANGE,
      ScalarFilter.BLANK,
      ScalarFilter.NOT_BLANK
    ];
    __decorate25([
      RefSelector("eCondition1PanelFrom")
    ], DateFilter2.prototype, "eCondition1PanelFrom", void 0);
    __decorate25([
      RefSelector("eCondition1PanelTo")
    ], DateFilter2.prototype, "eCondition1PanelTo", void 0);
    __decorate25([
      RefSelector("eCondition2PanelFrom")
    ], DateFilter2.prototype, "eCondition2PanelFrom", void 0);
    __decorate25([
      RefSelector("eCondition2PanelTo")
    ], DateFilter2.prototype, "eCondition2PanelTo", void 0);
    __decorate25([
      Autowired("userComponentFactory")
    ], DateFilter2.prototype, "userComponentFactory", void 0);
    return DateFilter2;
  }(ScalarFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/provided/simpleFloatingFilter.js
var __extends21 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var SimpleFloatingFilter = (
  /** @class */
  function(_super) {
    __extends21(SimpleFloatingFilter2, _super);
    function SimpleFloatingFilter2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SimpleFloatingFilter2.prototype.getDefaultDebounceMs = function() {
      return 0;
    };
    SimpleFloatingFilter2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    SimpleFloatingFilter2.prototype.getTextFromModel = function(model) {
      if (!model) {
        return null;
      }
      var isCombined = model.operator != null;
      if (isCombined) {
        var combinedModel = model;
        var _a47 = combinedModel || {}, condition1 = _a47.condition1, condition2 = _a47.condition2;
        var customOption1 = this.getTextFromModel(condition1);
        var customOption2 = this.getTextFromModel(condition2);
        return [
          customOption1,
          combinedModel.operator,
          customOption2
        ].join(" ");
      } else if (model.type === SimpleFilter.BLANK || model.type === SimpleFilter.NOT_BLANK) {
        var translate = this.localeService.getLocaleTextFunc();
        return translate(model.type, model.type);
      } else {
        var condition = model;
        var customOption = this.optionsFactory.getCustomOption(condition.type);
        var _b = customOption || {}, displayKey = _b.displayKey, displayName = _b.displayName, numberOfInputs = _b.numberOfInputs;
        if (displayKey && displayName && numberOfInputs === 0) {
          this.localeService.getLocaleTextFunc()(displayKey, displayName);
          return displayName;
        }
        return this.conditionToString(condition, customOption);
      }
    };
    SimpleFloatingFilter2.prototype.isEventFromFloatingFilter = function(event) {
      return event && event.afterFloatingFilter;
    };
    SimpleFloatingFilter2.prototype.isEventFromDataChange = function(event) {
      return event === null || event === void 0 ? void 0 : event.afterDataChange;
    };
    SimpleFloatingFilter2.prototype.getLastType = function() {
      return this.lastType;
    };
    SimpleFloatingFilter2.prototype.isReadOnly = function() {
      return this.readOnly;
    };
    SimpleFloatingFilter2.prototype.setLastTypeFromModel = function(model) {
      if (!model) {
        this.lastType = this.optionsFactory.getDefaultOption();
        return;
      }
      var isCombined = model.operator;
      var condition;
      if (isCombined) {
        var combinedModel = model;
        condition = combinedModel.condition1;
      } else {
        condition = model;
      }
      this.lastType = condition.type;
    };
    SimpleFloatingFilter2.prototype.canWeEditAfterModelFromParentFilter = function(model) {
      if (!model) {
        return this.isTypeEditable(this.lastType);
      }
      var isCombined = model.operator;
      if (isCombined) {
        return false;
      }
      var simpleModel = model;
      return this.isTypeEditable(simpleModel.type);
    };
    SimpleFloatingFilter2.prototype.init = function(params) {
      this.optionsFactory = new OptionsFactory();
      this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());
      this.lastType = this.optionsFactory.getDefaultOption();
      this.readOnly = !!params.filterParams.readOnly;
      var editable = this.isTypeEditable(this.lastType);
      this.setEditable(editable);
    };
    SimpleFloatingFilter2.prototype.doesFilterHaveSingleInput = function(filterType) {
      var customFilterOption = this.optionsFactory.getCustomOption(filterType);
      var numberOfInputs = (customFilterOption || {}).numberOfInputs;
      return numberOfInputs == null || numberOfInputs == 1;
    };
    SimpleFloatingFilter2.prototype.isTypeEditable = function(type2) {
      var uneditableTypes = [
        SimpleFilter.IN_RANGE,
        SimpleFilter.EMPTY,
        SimpleFilter.BLANK,
        SimpleFilter.NOT_BLANK
      ];
      return !!type2 && !this.isReadOnly() && this.doesFilterHaveSingleInput(type2) && uneditableTypes.indexOf(type2) < 0;
    };
    return SimpleFloatingFilter2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateFloatingFilter.js
var __extends22 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate26 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DateFloatingFilter = (
  /** @class */
  function(_super) {
    __extends22(DateFloatingFilter2, _super);
    function DateFloatingFilter2() {
      return _super.call(
        this,
        /* html */
        '\n            <div class="ag-floating-filter-input" role="presentation">\n                <ag-input-text-field ref="eReadOnlyText"></ag-input-text-field>\n                <div ref="eDateWrapper" style="display: flex;"></div>\n            </div>'
      ) || this;
    }
    DateFloatingFilter2.prototype.getDefaultFilterOptions = function() {
      return DateFilter.DEFAULT_FILTER_OPTIONS;
    };
    DateFloatingFilter2.prototype.conditionToString = function(condition, options) {
      var type2 = condition.type;
      var numberOfInputs = (options || {}).numberOfInputs;
      var isRange = type2 == SimpleFilter.IN_RANGE || numberOfInputs === 2;
      var dateFrom = parseDateTimeFromString(condition.dateFrom);
      var dateTo = parseDateTimeFromString(condition.dateTo);
      var format = this.filterParams.inRangeFloatingFilterDateFormat;
      if (isRange) {
        var formattedFrom = dateFrom !== null ? dateToFormattedString(dateFrom, format) : "null";
        var formattedTo = dateTo !== null ? dateToFormattedString(dateTo, format) : "null";
        return formattedFrom + "-" + formattedTo;
      }
      if (dateFrom != null) {
        return dateToFormattedString(dateFrom, format);
      }
      return "" + type2;
    };
    DateFloatingFilter2.prototype.init = function(params) {
      _super.prototype.init.call(this, params);
      this.params = params;
      this.filterParams = params.filterParams;
      this.createDateComponent();
      var translate = this.localeService.getLocaleTextFunc();
      this.eReadOnlyText.setDisabled(true).setInputAriaLabel(translate("ariaDateFilterInput", "Date Filter Input"));
    };
    DateFloatingFilter2.prototype.setEditable = function(editable) {
      setDisplayed(this.eDateWrapper, editable);
      setDisplayed(this.eReadOnlyText.getGui(), !editable);
    };
    DateFloatingFilter2.prototype.onParentModelChanged = function(model, event) {
      if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {
        return;
      }
      _super.prototype.setLastTypeFromModel.call(this, model);
      var allowEditing = !this.isReadOnly() && this.canWeEditAfterModelFromParentFilter(model);
      this.setEditable(allowEditing);
      if (allowEditing) {
        if (model) {
          var dateModel = model;
          this.dateComp.setDate(parseDateTimeFromString(dateModel.dateFrom));
        } else {
          this.dateComp.setDate(null);
        }
        this.eReadOnlyText.setValue("");
      } else {
        this.eReadOnlyText.setValue(this.getTextFromModel(model));
        this.dateComp.setDate(null);
      }
    };
    DateFloatingFilter2.prototype.onDateChanged = function() {
      var _this = this;
      var filterValueDate = this.dateComp.getDate();
      var filterValueText = serialiseDate(filterValueDate);
      this.params.parentFilterInstance(function(filterInstance) {
        if (filterInstance) {
          var date = parseDateTimeFromString(filterValueText);
          filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);
        }
      });
    };
    DateFloatingFilter2.prototype.createDateComponent = function() {
      var _this = this;
      var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());
      var dateComponentParams = {
        onDateChanged: debounce2(this.onDateChanged.bind(this), debounceMs),
        filterParams: this.params.column.getColDef().filterParams
      };
      this.dateComp = new DateCompWrapper(this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);
      this.addDestroyFunc(function() {
        return _this.dateComp.destroy();
      });
    };
    __decorate26([
      Autowired("userComponentFactory")
    ], DateFloatingFilter2.prototype, "userComponentFactory", void 0);
    __decorate26([
      RefSelector("eReadOnlyText")
    ], DateFloatingFilter2.prototype, "eReadOnlyText", void 0);
    __decorate26([
      RefSelector("eDateWrapper")
    ], DateFloatingFilter2.prototype, "eDateWrapper", void 0);
    return DateFloatingFilter2;
  }(SimpleFloatingFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/defaultDateComponent.js
var __extends23 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate27 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DefaultDateComponent = (
  /** @class */
  function(_super) {
    __extends23(DefaultDateComponent2, _super);
    function DefaultDateComponent2() {
      return _super.call(
        this,
        /* html */
        '\n            <div class="ag-filter-filter">\n                <ag-input-text-field class="ag-date-filter" ref="eDateInput"></ag-input-text-field>\n            </div>'
      ) || this;
    }
    DefaultDateComponent2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    DefaultDateComponent2.prototype.init = function(params) {
      var _this = this;
      var eDocument = this.gridOptionsService.getDocument();
      var inputElement = this.eDateInput.getInputElement();
      if (this.shouldUseBrowserDatePicker(params)) {
        inputElement.type = "date";
      }
      this.addManagedListener(inputElement, "mousedown", function() {
        if (_this.eDateInput.isDisabled()) {
          return;
        }
        inputElement.focus();
      });
      this.addManagedListener(inputElement, "input", function(e2) {
        if (e2.target !== eDocument.activeElement) {
          return;
        }
        if (_this.eDateInput.isDisabled()) {
          return;
        }
        params.onDateChanged();
      });
      var _a47 = params.filterParams || {}, minValidYear = _a47.minValidYear, maxValidYear = _a47.maxValidYear;
      if (minValidYear) {
        inputElement.min = minValidYear + "-01-01";
      }
      if (maxValidYear) {
        inputElement.max = maxValidYear + "-12-31";
      }
    };
    DefaultDateComponent2.prototype.getDate = function() {
      return parseDateTimeFromString(this.eDateInput.getValue());
    };
    DefaultDateComponent2.prototype.setDate = function(date) {
      this.eDateInput.setValue(serialiseDate(date, false));
    };
    DefaultDateComponent2.prototype.setInputPlaceholder = function(placeholder) {
      this.eDateInput.setInputPlaceholder(placeholder);
    };
    DefaultDateComponent2.prototype.setDisabled = function(disabled) {
      this.eDateInput.setDisabled(disabled);
    };
    DefaultDateComponent2.prototype.afterGuiAttached = function(params) {
      if (!params || !params.suppressFocus) {
        this.eDateInput.getInputElement().focus();
      }
    };
    DefaultDateComponent2.prototype.shouldUseBrowserDatePicker = function(params) {
      if (params.filterParams && params.filterParams.browserDatePicker != null) {
        return params.filterParams.browserDatePicker;
      }
      return isBrowserChrome() || isBrowserFirefox();
    };
    __decorate27([
      RefSelector("eDateInput")
    ], DefaultDateComponent2.prototype, "eDateInput", void 0);
    return DefaultDateComponent2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/number/numberFilter.js
var __extends24 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate28 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var NumberFilter = (
  /** @class */
  function(_super) {
    __extends24(NumberFilter2, _super);
    function NumberFilter2() {
      return _super.call(this, "numberFilter") || this;
    }
    NumberFilter2.prototype.mapValuesFromModel = function(filterModel) {
      var _a47 = filterModel || {}, filter2 = _a47.filter, filterTo = _a47.filterTo, type2 = _a47.type;
      return [
        filter2 == null ? null : filter2,
        filterTo == null ? null : filterTo
      ].slice(0, this.getNumberOfInputs(type2));
    };
    NumberFilter2.prototype.getDefaultDebounceMs = function() {
      return 500;
    };
    NumberFilter2.prototype.comparator = function() {
      return function(left, right) {
        if (left === right) {
          return 0;
        }
        return left < right ? 1 : -1;
      };
    };
    NumberFilter2.prototype.setParams = function(params) {
      this.numberFilterParams = params;
      var allowedCharPattern = this.getAllowedCharPattern();
      if (allowedCharPattern) {
        var config = { allowedCharPattern };
        this.resetTemplate({
          "eValue-index0-1": config,
          "eValue-index1-1": config,
          "eValue-index0-2": config,
          "eValue-index1-2": config
        });
      }
      _super.prototype.setParams.call(this, params);
    };
    NumberFilter2.prototype.getDefaultFilterOptions = function() {
      return NumberFilter2.DEFAULT_FILTER_OPTIONS;
    };
    NumberFilter2.prototype.createValueTemplate = function(position) {
      var pos = position === ConditionPosition.One ? "1" : "2";
      var allowedCharPattern = this.getAllowedCharPattern();
      var agElementTag = allowedCharPattern ? "ag-input-text-field" : "ag-input-number-field";
      return (
        /* html */
        '\n            <div class="ag-filter-body" ref="eCondition' + pos + 'Body" role="presentation">\n                <' + agElementTag + ' class="ag-filter-from ag-filter-filter" ref="eValue-index0-' + pos + '"></' + agElementTag + ">\n                <" + agElementTag + ' class="ag-filter-to ag-filter-filter" ref="eValue-index1-' + pos + '"></' + agElementTag + ">\n            </div>"
      );
    };
    NumberFilter2.prototype.getValues = function(position) {
      var _this = this;
      var result = [];
      this.forEachInput(function(element, index, elPosition, numberOfInputs) {
        if (position === elPosition && index < numberOfInputs) {
          result.push(_this.stringToFloat(element.getValue()));
        }
      });
      return result;
    };
    NumberFilter2.prototype.areSimpleModelsEqual = function(aSimple, bSimple) {
      return aSimple.filter === bSimple.filter && aSimple.filterTo === bSimple.filterTo && aSimple.type === bSimple.type;
    };
    NumberFilter2.prototype.getFilterType = function() {
      return "number";
    };
    NumberFilter2.prototype.stringToFloat = function(value) {
      if (typeof value === "number") {
        return value;
      }
      var filterText = makeNull(value);
      if (filterText != null && filterText.trim() === "") {
        filterText = null;
      }
      if (this.numberFilterParams.numberParser) {
        return this.numberFilterParams.numberParser(filterText);
      }
      return filterText == null || filterText.trim() === "-" ? null : parseFloat(filterText);
    };
    NumberFilter2.prototype.createCondition = function(position) {
      var type2 = this.getConditionTypes()[position];
      var model = {
        filterType: this.getFilterType(),
        type: type2
      };
      var values2 = this.getValues(position);
      if (values2.length > 0) {
        model.filter = values2[0];
      }
      if (values2.length > 1) {
        model.filterTo = values2[1];
      }
      return model;
    };
    NumberFilter2.prototype.getInputs = function() {
      return [
        [this.eValueFrom1, this.eValueTo1],
        [this.eValueFrom2, this.eValueTo2]
      ];
    };
    NumberFilter2.prototype.getAllowedCharPattern = function() {
      var allowedCharPattern = (this.numberFilterParams || {}).allowedCharPattern;
      if (allowedCharPattern) {
        return allowedCharPattern;
      }
      if (!isBrowserChrome() && !isBrowserEdge()) {
        return "\\d\\-\\.";
      }
      return null;
    };
    NumberFilter2.DEFAULT_FILTER_OPTIONS = [
      ScalarFilter.EQUALS,
      ScalarFilter.NOT_EQUAL,
      ScalarFilter.LESS_THAN,
      ScalarFilter.LESS_THAN_OR_EQUAL,
      ScalarFilter.GREATER_THAN,
      ScalarFilter.GREATER_THAN_OR_EQUAL,
      ScalarFilter.IN_RANGE,
      ScalarFilter.BLANK,
      ScalarFilter.NOT_BLANK
    ];
    __decorate28([
      RefSelector("eValue-index0-1")
    ], NumberFilter2.prototype, "eValueFrom1", void 0);
    __decorate28([
      RefSelector("eValue-index1-1")
    ], NumberFilter2.prototype, "eValueTo1", void 0);
    __decorate28([
      RefSelector("eValue-index0-2")
    ], NumberFilter2.prototype, "eValueFrom2", void 0);
    __decorate28([
      RefSelector("eValue-index1-2")
    ], NumberFilter2.prototype, "eValueTo2", void 0);
    return NumberFilter2;
  }(ScalarFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/text/textFilter.js
var __extends25 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign8 = function() {
  __assign8 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign8.apply(this, arguments);
};
var __decorate29 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TextFilter = (
  /** @class */
  function(_super) {
    __extends25(TextFilter2, _super);
    function TextFilter2() {
      return _super.call(this, "textFilter") || this;
    }
    TextFilter2.trimInput = function(value) {
      var trimmedInput = value && value.trim();
      return trimmedInput === "" ? value : trimmedInput;
    };
    TextFilter2.prototype.getDefaultDebounceMs = function() {
      return 500;
    };
    TextFilter2.prototype.setParams = function(params) {
      _super.prototype.setParams.call(this, params);
      this.textFilterParams = params;
      this.matcher = this.getTextMatcher();
      this.formatter = this.textFilterParams.textFormatter || (this.textFilterParams.caseSensitive ? TextFilter2.DEFAULT_FORMATTER : TextFilter2.DEFAULT_LOWERCASE_FORMATTER);
    };
    TextFilter2.prototype.getTextMatcher = function() {
      var legacyComparator = this.textFilterParams.textCustomComparator;
      if (legacyComparator) {
        _2.doOnce(function() {
          return console.warn("AG Grid - textCustomComparator is deprecated, use textMatcher instead.");
        }, "textCustomComparator.deprecated");
        return function(_a47) {
          var filterOption = _a47.filterOption, value = _a47.value, filterText = _a47.filterText;
          return legacyComparator(filterOption, value, filterText);
        };
      }
      return this.textFilterParams.textMatcher || TextFilter2.DEFAULT_MATCHER;
    };
    TextFilter2.prototype.createCondition = function(position) {
      var type2 = this.getConditionTypes()[position];
      var model = {
        filterType: this.getFilterType(),
        type: type2
      };
      var values2 = this.getValues(position);
      if (values2.length > 0) {
        model.filter = values2[0];
      }
      if (values2.length > 1) {
        model.filterTo = values2[1];
      }
      return model;
    };
    TextFilter2.prototype.getFilterType = function() {
      return "text";
    };
    TextFilter2.prototype.areSimpleModelsEqual = function(aSimple, bSimple) {
      return aSimple.filter === bSimple.filter && aSimple.filterTo === bSimple.filterTo && aSimple.type === bSimple.type;
    };
    TextFilter2.prototype.getInputs = function() {
      return [
        [this.eValueFrom1, this.eValueTo1],
        [this.eValueFrom2, this.eValueTo2]
      ];
    };
    TextFilter2.prototype.getValues = function(position) {
      var _this = this;
      var result = [];
      this.forEachInput(function(element, index, elPosition, numberOfInputs) {
        if (position === elPosition && index < numberOfInputs) {
          var value = makeNull(element.getValue());
          var cleanValue = (_this.textFilterParams.trimInput ? TextFilter2.trimInput(value) : value) || null;
          result.push(cleanValue);
          element.setValue(cleanValue, true);
        }
      });
      return result;
    };
    TextFilter2.prototype.getDefaultFilterOptions = function() {
      return TextFilter2.DEFAULT_FILTER_OPTIONS;
    };
    TextFilter2.prototype.createValueTemplate = function(position) {
      var pos = position === ConditionPosition.One ? "1" : "2";
      return (
        /* html */
        '\n            <div class="ag-filter-body" ref="eCondition' + pos + 'Body" role="presentation">\n                <ag-input-text-field class=".ag-filter-from ag-filter-filter" ref="eValue-index0-' + pos + '"></ag-input-text-field>\n                <ag-input-text-field class="ag-filter-to ag-filter-filter" ref="eValue-index1-' + pos + '"></ag-input-text-field>\n            </div>'
      );
    };
    TextFilter2.prototype.mapValuesFromModel = function(filterModel) {
      var _a47 = filterModel || {}, filter2 = _a47.filter, filterTo = _a47.filterTo, type2 = _a47.type;
      return [
        filter2 || null,
        filterTo || null
      ].slice(0, this.getNumberOfInputs(type2));
    };
    TextFilter2.prototype.evaluateNullValue = function(filterType) {
      var filterTypesAllowNulls = [
        SimpleFilter.NOT_EQUAL,
        SimpleFilter.NOT_CONTAINS,
        SimpleFilter.BLANK
      ];
      return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;
    };
    TextFilter2.prototype.evaluateNonNullValue = function(values2, cellValue, filterModel, params) {
      var _this = this;
      var formattedValues = values2.map(function(v2) {
        return _this.formatter(v2);
      }) || [];
      var cellValueFormatted = this.formatter(cellValue);
      var _a47 = this.textFilterParams, api = _a47.api, colDef = _a47.colDef, column = _a47.column, columnApi = _a47.columnApi, context = _a47.context, textFormatter = _a47.textFormatter;
      if (filterModel.type === SimpleFilter.BLANK) {
        return this.isBlank(cellValue);
      } else if (filterModel.type === SimpleFilter.NOT_BLANK) {
        return !this.isBlank(cellValue);
      }
      var matcherParams = {
        api,
        colDef,
        column,
        columnApi,
        context,
        node: params.node,
        data: params.data,
        filterOption: filterModel.type,
        value: cellValueFormatted,
        textFormatter
      };
      return formattedValues.some(function(v2) {
        return _this.matcher(__assign8(__assign8({}, matcherParams), { filterText: v2 }));
      });
    };
    TextFilter2.DEFAULT_FILTER_OPTIONS = [
      SimpleFilter.CONTAINS,
      SimpleFilter.NOT_CONTAINS,
      SimpleFilter.EQUALS,
      SimpleFilter.NOT_EQUAL,
      SimpleFilter.STARTS_WITH,
      SimpleFilter.ENDS_WITH,
      SimpleFilter.BLANK,
      SimpleFilter.NOT_BLANK
    ];
    TextFilter2.DEFAULT_FORMATTER = function(from2) {
      return from2;
    };
    TextFilter2.DEFAULT_LOWERCASE_FORMATTER = function(from2) {
      return from2 == null ? null : from2.toString().toLowerCase();
    };
    TextFilter2.DEFAULT_MATCHER = function(_a47) {
      var filterOption = _a47.filterOption, value = _a47.value, filterText = _a47.filterText;
      if (filterText == null) {
        return false;
      }
      switch (filterOption) {
        case TextFilter2.CONTAINS:
          return value.indexOf(filterText) >= 0;
        case TextFilter2.NOT_CONTAINS:
          return value.indexOf(filterText) < 0;
        case TextFilter2.EQUALS:
          return value === filterText;
        case TextFilter2.NOT_EQUAL:
          return value != filterText;
        case TextFilter2.STARTS_WITH:
          return value.indexOf(filterText) === 0;
        case TextFilter2.ENDS_WITH:
          var index = value.lastIndexOf(filterText);
          return index >= 0 && index === value.length - filterText.length;
        default:
          return false;
      }
    };
    __decorate29([
      RefSelector("eValue-index0-1")
    ], TextFilter2.prototype, "eValueFrom1", void 0);
    __decorate29([
      RefSelector("eValue-index1-1")
    ], TextFilter2.prototype, "eValueTo1", void 0);
    __decorate29([
      RefSelector("eValue-index0-2")
    ], TextFilter2.prototype, "eValueFrom2", void 0);
    __decorate29([
      RefSelector("eValue-index1-2")
    ], TextFilter2.prototype, "eValueTo2", void 0);
    return TextFilter2;
  }(SimpleFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/provided/textInputFloatingFilter.js
var __extends26 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate30 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TextInputFloatingFilter = (
  /** @class */
  function(_super) {
    __extends26(TextInputFloatingFilter2, _super);
    function TextInputFloatingFilter2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    TextInputFloatingFilter2.prototype.postConstruct = function() {
      this.resetTemplate();
    };
    TextInputFloatingFilter2.prototype.resetTemplate = function(paramsMap) {
      this.setTemplate(
        /* html */
        '\n            <div class="ag-floating-filter-input" role="presentation">\n                <ag-input-text-field ref="eFloatingFilterInput"></ag-input-text-field>\n            </div>\n        ',
        paramsMap
      );
    };
    TextInputFloatingFilter2.prototype.getDefaultDebounceMs = function() {
      return 500;
    };
    TextInputFloatingFilter2.prototype.onParentModelChanged = function(model, event) {
      if (this.isEventFromFloatingFilter(event) || this.isEventFromDataChange(event)) {
        return;
      }
      this.setLastTypeFromModel(model);
      this.eFloatingFilterInput.setValue(this.getTextFromModel(model));
      this.setEditable(this.canWeEditAfterModelFromParentFilter(model));
    };
    TextInputFloatingFilter2.prototype.init = function(params) {
      _super.prototype.init.call(this, params);
      this.params = params;
      this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);
      var allowedCharPattern = this.params.filterParams.allowedCharPattern;
      if (allowedCharPattern != null) {
        this.resetTemplate({ eFloatingFilterInput: { allowedCharPattern } });
      }
      if (!this.isReadOnly()) {
        var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());
        var toDebounce = debounce2(this.syncUpWithParentFilter.bind(this), debounceMs);
        var filterGui = this.eFloatingFilterInput.getGui();
        this.addManagedListener(filterGui, "input", toDebounce);
        this.addManagedListener(filterGui, "keypress", toDebounce);
        this.addManagedListener(filterGui, "keydown", toDebounce);
      }
      var columnDef = params.column.getDefinition();
      if (this.isReadOnly() || columnDef.filterParams && columnDef.filterParams.filterOptions && columnDef.filterParams.filterOptions.length === 1 && columnDef.filterParams.filterOptions[0] === "inRange") {
        this.eFloatingFilterInput.setDisabled(true);
      }
      var displayName = this.columnModel.getDisplayNameForColumn(params.column, "header", true);
      var translate = this.localeService.getLocaleTextFunc();
      this.eFloatingFilterInput.setInputAriaLabel(displayName + " " + translate("ariaFilterInput", "Filter Input"));
    };
    TextInputFloatingFilter2.prototype.syncUpWithParentFilter = function(e2) {
      var _this = this;
      var enterKeyPressed = e2.key === KeyCode.ENTER;
      if (this.applyActive && !enterKeyPressed) {
        return;
      }
      var value = this.eFloatingFilterInput.getValue();
      if (this.params.filterParams.trimInput) {
        value = TextFilter.trimInput(value);
        this.eFloatingFilterInput.setValue(value, true);
      }
      this.params.parentFilterInstance(function(filterInstance) {
        if (filterInstance) {
          filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);
        }
      });
    };
    TextInputFloatingFilter2.prototype.conditionToString = function(condition, options) {
      var numberOfInputs = (options || {}).numberOfInputs;
      var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;
      if (isRange) {
        return condition.filter + "-" + condition.filterTo;
      }
      if (condition.filter != null) {
        return "" + condition.filter;
      }
      return "" + condition.type;
    };
    TextInputFloatingFilter2.prototype.setEditable = function(editable) {
      this.eFloatingFilterInput.setDisabled(!editable);
    };
    __decorate30([
      Autowired("columnModel")
    ], TextInputFloatingFilter2.prototype, "columnModel", void 0);
    __decorate30([
      RefSelector("eFloatingFilterInput")
    ], TextInputFloatingFilter2.prototype, "eFloatingFilterInput", void 0);
    __decorate30([
      PostConstruct
    ], TextInputFloatingFilter2.prototype, "postConstruct", null);
    return TextInputFloatingFilter2;
  }(SimpleFloatingFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/number/numberFloatingFilter.js
var __extends27 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var NumberFloatingFilter = (
  /** @class */
  function(_super) {
    __extends27(NumberFloatingFilter2, _super);
    function NumberFloatingFilter2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    NumberFloatingFilter2.prototype.getDefaultFilterOptions = function() {
      return NumberFilter.DEFAULT_FILTER_OPTIONS;
    };
    return NumberFloatingFilter2;
  }(TextInputFloatingFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/text/textFloatingFilter.js
var __extends28 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var TextFloatingFilter = (
  /** @class */
  function(_super) {
    __extends28(TextFloatingFilter2, _super);
    function TextFloatingFilter2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    TextFloatingFilter2.prototype.getDefaultFilterOptions = function() {
      return TextFilter.DEFAULT_FILTER_OPTIONS;
    };
    return TextFloatingFilter2;
  }(TextInputFloatingFilter)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/touchListener.js
var TouchListener = (
  /** @class */
  function() {
    function TouchListener2(eElement, preventMouseClick) {
      var _this = this;
      if (preventMouseClick === void 0) {
        preventMouseClick = false;
      }
      this.destroyFuncs = [];
      this.touching = false;
      this.eventService = new EventService();
      this.eElement = eElement;
      this.preventMouseClick = preventMouseClick;
      var startListener = this.onTouchStart.bind(this);
      var moveListener = this.onTouchMove.bind(this);
      var endListener = this.onTouchEnd.bind(this);
      this.eElement.addEventListener("touchstart", startListener, { passive: true });
      this.eElement.addEventListener("touchmove", moveListener, { passive: true });
      this.eElement.addEventListener("touchend", endListener, { passive: false });
      this.destroyFuncs.push(function() {
        _this.eElement.removeEventListener("touchstart", startListener, { passive: true });
        _this.eElement.removeEventListener("touchmove", moveListener, { passive: true });
        _this.eElement.removeEventListener("touchend", endListener, { passive: false });
      });
    }
    TouchListener2.prototype.getActiveTouch = function(touchList) {
      for (var i2 = 0; i2 < touchList.length; i2++) {
        var matches = touchList[i2].identifier === this.touchStart.identifier;
        if (matches) {
          return touchList[i2];
        }
      }
      return null;
    };
    TouchListener2.prototype.addEventListener = function(eventType, listener) {
      this.eventService.addEventListener(eventType, listener);
    };
    TouchListener2.prototype.removeEventListener = function(eventType, listener) {
      this.eventService.removeEventListener(eventType, listener);
    };
    TouchListener2.prototype.onTouchStart = function(touchEvent) {
      var _this = this;
      if (this.touching) {
        return;
      }
      this.touchStart = touchEvent.touches[0];
      this.touching = true;
      this.moved = false;
      var touchStartCopy = this.touchStart;
      window.setTimeout(function() {
        var touchesMatch = _this.touchStart === touchStartCopy;
        if (_this.touching && touchesMatch && !_this.moved) {
          _this.moved = true;
          var event_1 = {
            type: TouchListener2.EVENT_LONG_TAP,
            touchStart: _this.touchStart,
            touchEvent
          };
          _this.eventService.dispatchEvent(event_1);
        }
      }, 500);
    };
    TouchListener2.prototype.onTouchMove = function(touchEvent) {
      if (!this.touching) {
        return;
      }
      var touch = this.getActiveTouch(touchEvent.touches);
      if (!touch) {
        return;
      }
      var eventIsFarAway = !areEventsNear(touch, this.touchStart, 4);
      if (eventIsFarAway) {
        this.moved = true;
      }
    };
    TouchListener2.prototype.onTouchEnd = function(touchEvent) {
      if (!this.touching) {
        return;
      }
      if (!this.moved) {
        var event_2 = {
          type: TouchListener2.EVENT_TAP,
          touchStart: this.touchStart
        };
        this.eventService.dispatchEvent(event_2);
        this.checkForDoubleTap();
      }
      if (this.preventMouseClick && touchEvent.cancelable) {
        touchEvent.preventDefault();
      }
      this.touching = false;
    };
    TouchListener2.prototype.checkForDoubleTap = function() {
      var now = (/* @__PURE__ */ new Date()).getTime();
      if (this.lastTapTime && this.lastTapTime > 0) {
        var interval = now - this.lastTapTime;
        if (interval > TouchListener2.DOUBLE_TAP_MILLIS) {
          var event_3 = {
            type: TouchListener2.EVENT_DOUBLE_TAP,
            touchStart: this.touchStart
          };
          this.eventService.dispatchEvent(event_3);
          this.lastTapTime = null;
        } else {
          this.lastTapTime = now;
        }
      } else {
        this.lastTapTime = now;
      }
    };
    TouchListener2.prototype.destroy = function() {
      this.destroyFuncs.forEach(function(func) {
        return func();
      });
    };
    TouchListener2.EVENT_TAP = "tap";
    TouchListener2.EVENT_DOUBLE_TAP = "doubleTap";
    TouchListener2.EVENT_LONG_TAP = "longTap";
    TouchListener2.DOUBLE_TAP_MILLIS = 500;
    return TouchListener2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/sortIndicatorComp.js
var __extends29 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate31 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SortIndicatorComp = (
  /** @class */
  function(_super) {
    __extends29(SortIndicatorComp2, _super);
    function SortIndicatorComp2(skipTemplate) {
      var _this = _super.call(this) || this;
      if (!skipTemplate) {
        _this.setTemplate(SortIndicatorComp2.TEMPLATE);
      }
      return _this;
    }
    SortIndicatorComp2.prototype.attachCustomElements = function(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {
      this.eSortOrder = eSortOrder;
      this.eSortAsc = eSortAsc;
      this.eSortDesc = eSortDesc;
      this.eSortMixed = eSortMixed;
      this.eSortNone = eSortNone;
    };
    SortIndicatorComp2.prototype.setupSort = function(column, suppressOrder) {
      var _this = this;
      if (suppressOrder === void 0) {
        suppressOrder = false;
      }
      this.column = column;
      this.suppressOrder = suppressOrder;
      this.setupMultiSortIndicator();
      var canSort = !!this.column.getColDef().sortable;
      if (!canSort) {
        return;
      }
      this.addInIcon("sortAscending", this.eSortAsc, column);
      this.addInIcon("sortDescending", this.eSortDesc, column);
      this.addInIcon("sortUnSort", this.eSortNone, column);
      this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function() {
        return _this.onSortChanged();
      });
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function() {
        return _this.onSortChanged();
      });
      this.onSortChanged();
    };
    SortIndicatorComp2.prototype.addInIcon = function(iconName, eParent, column) {
      if (eParent == null) {
        return;
      }
      var eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);
      if (eIcon) {
        eParent.appendChild(eIcon);
      }
    };
    SortIndicatorComp2.prototype.onSortChanged = function() {
      this.updateIcons();
      if (!this.suppressOrder) {
        this.updateSortOrder();
      }
    };
    SortIndicatorComp2.prototype.updateIcons = function() {
      var sortDirection = this.sortController.getDisplaySortForColumn(this.column);
      if (this.eSortAsc) {
        var isAscending = sortDirection === "asc";
        setDisplayed(this.eSortAsc, isAscending, { skipAriaHidden: true });
      }
      if (this.eSortDesc) {
        var isDescending = sortDirection === "desc";
        setDisplayed(this.eSortDesc, isDescending, { skipAriaHidden: true });
      }
      if (this.eSortNone) {
        var alwaysHideNoSort = !this.column.getColDef().unSortIcon && !this.gridOptionsService.is("unSortIcon");
        var isNone = sortDirection === null || sortDirection === void 0;
        setDisplayed(this.eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });
      }
    };
    SortIndicatorComp2.prototype.setupMultiSortIndicator = function() {
      var _this = this;
      this.addInIcon("sortUnSort", this.eSortMixed, this.column);
      var isColumnShowingRowGroup = this.column.getColDef().showRowGroup;
      var areGroupsCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      if (areGroupsCoupled && isColumnShowingRowGroup) {
        this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function() {
          return _this.updateMultiSortIndicator();
        });
        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function() {
          return _this.updateMultiSortIndicator();
        });
        this.updateMultiSortIndicator();
      }
    };
    SortIndicatorComp2.prototype.updateMultiSortIndicator = function() {
      if (this.eSortMixed) {
        var isMixedSort = this.sortController.getDisplaySortForColumn(this.column) === "mixed";
        setDisplayed(this.eSortMixed, isMixedSort, { skipAriaHidden: true });
      }
    };
    SortIndicatorComp2.prototype.updateSortOrder = function() {
      var _this = this;
      var _a47;
      if (!this.eSortOrder) {
        return;
      }
      var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();
      var indexThisCol = (_a47 = this.sortController.getDisplaySortIndexForColumn(this.column)) !== null && _a47 !== void 0 ? _a47 : -1;
      var moreThanOneColSorting = allColumnsWithSorting.some(function(col) {
        var _a48;
        return (_a48 = _this.sortController.getDisplaySortIndexForColumn(col)) !== null && _a48 !== void 0 ? _a48 : -1 >= 1;
      });
      var showIndex = indexThisCol >= 0 && moreThanOneColSorting;
      setDisplayed(this.eSortOrder, showIndex, { skipAriaHidden: true });
      if (indexThisCol >= 0) {
        this.eSortOrder.innerHTML = (indexThisCol + 1).toString();
      } else {
        clearElement(this.eSortOrder);
      }
    };
    SortIndicatorComp2.TEMPLATE = '<span class="ag-sort-indicator-container">\n            <span ref="eSortOrder" class="ag-sort-indicator-icon ag-sort-order ag-hidden" aria-hidden="true"></span>\n            <span ref="eSortAsc" class="ag-sort-indicator-icon ag-sort-ascending-icon ag-hidden" aria-hidden="true"></span>\n            <span ref="eSortDesc" class="ag-sort-indicator-icon ag-sort-descending-icon ag-hidden" aria-hidden="true"></span>\n            <span ref="eSortMixed" class="ag-sort-indicator-icon ag-sort-mixed-icon ag-hidden" aria-hidden="true"></span>\n            <span ref="eSortNone" class="ag-sort-indicator-icon ag-sort-none-icon ag-hidden" aria-hidden="true"></span>\n        </span>';
    __decorate31([
      RefSelector("eSortOrder")
    ], SortIndicatorComp2.prototype, "eSortOrder", void 0);
    __decorate31([
      RefSelector("eSortAsc")
    ], SortIndicatorComp2.prototype, "eSortAsc", void 0);
    __decorate31([
      RefSelector("eSortDesc")
    ], SortIndicatorComp2.prototype, "eSortDesc", void 0);
    __decorate31([
      RefSelector("eSortMixed")
    ], SortIndicatorComp2.prototype, "eSortMixed", void 0);
    __decorate31([
      RefSelector("eSortNone")
    ], SortIndicatorComp2.prototype, "eSortNone", void 0);
    __decorate31([
      Autowired("columnModel")
    ], SortIndicatorComp2.prototype, "columnModel", void 0);
    __decorate31([
      Autowired("sortController")
    ], SortIndicatorComp2.prototype, "sortController", void 0);
    return SortIndicatorComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerComp.js
var __extends30 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate32 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderComp = (
  /** @class */
  function(_super) {
    __extends30(HeaderComp2, _super);
    function HeaderComp2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.lastMovingChanged = 0;
      return _this;
    }
    HeaderComp2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    HeaderComp2.prototype.refresh = function(params) {
      this.params = params;
      if (this.workOutTemplate() != this.currentTemplate) {
        return false;
      }
      if (this.workOutShowMenu() != this.currentShowMenu) {
        return false;
      }
      if (this.workOutSort() != this.currentSort) {
        return false;
      }
      this.setDisplayName(params);
      return true;
    };
    HeaderComp2.prototype.workOutTemplate = function() {
      var template = firstExistingValue(this.params.template, HeaderComp2.TEMPLATE);
      template = template && template.trim ? template.trim() : template;
      return template;
    };
    HeaderComp2.prototype.init = function(params) {
      this.params = params;
      this.currentTemplate = this.workOutTemplate();
      this.setTemplate(this.currentTemplate);
      this.setupTap();
      this.setupIcons(params.column);
      this.setMenu();
      this.setupSort();
      this.setupFilterIcon();
      this.setDisplayName(params);
    };
    HeaderComp2.prototype.setDisplayName = function(params) {
      if (this.currentDisplayName != params.displayName) {
        this.currentDisplayName = params.displayName;
        var displayNameSanitised = escapeString(this.currentDisplayName);
        if (this.eText) {
          this.eText.innerHTML = displayNameSanitised;
        }
      }
    };
    HeaderComp2.prototype.setupIcons = function(column) {
      this.addInIcon("menu", this.eMenu, column);
      this.addInIcon("filter", this.eFilter, column);
    };
    HeaderComp2.prototype.addInIcon = function(iconName, eParent, column) {
      if (eParent == null) {
        return;
      }
      var eIcon = createIconNoSpan(iconName, this.gridOptionsService, column);
      if (eIcon) {
        eParent.appendChild(eIcon);
      }
    };
    HeaderComp2.prototype.setupTap = function() {
      var _this = this;
      var gridOptionsService = this.gridOptionsService;
      if (gridOptionsService.is("suppressTouch")) {
        return;
      }
      var touchListener = new TouchListener(this.getGui(), true);
      var suppressMenuHide = gridOptionsService.is("suppressMenuHide");
      var tapMenuButton = suppressMenuHide && exists(this.eMenu);
      var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;
      if (this.params.enableMenu) {
        var eventType = tapMenuButton ? "EVENT_TAP" : "EVENT_LONG_TAP";
        var showMenuFn = function(event) {
          gridOptionsService.get("api").showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);
        };
        this.addManagedListener(menuTouchListener, TouchListener[eventType], showMenuFn);
      }
      if (this.params.enableSorting) {
        var tapListener = function(event) {
          var target = event.touchStart.target;
          if (suppressMenuHide && _this.eMenu.contains(target)) {
            return;
          }
          _this.sortController.progressSort(_this.params.column, false, "uiColumnSorted");
        };
        this.addManagedListener(touchListener, TouchListener.EVENT_TAP, tapListener);
      }
      this.addDestroyFunc(function() {
        return touchListener.destroy();
      });
      if (tapMenuButton) {
        this.addDestroyFunc(function() {
          return menuTouchListener.destroy();
        });
      }
    };
    HeaderComp2.prototype.workOutShowMenu = function() {
      var menuHides = !this.gridOptionsService.is("suppressMenuHide");
      var onIpadAndMenuHides = isIOSUserAgent() && menuHides;
      var showMenu = this.params.enableMenu && !onIpadAndMenuHides;
      return showMenu;
    };
    HeaderComp2.prototype.setMenu = function() {
      var _this = this;
      if (!this.eMenu) {
        return;
      }
      this.currentShowMenu = this.workOutShowMenu();
      if (!this.currentShowMenu) {
        removeFromParent(this.eMenu);
        return;
      }
      var suppressMenuHide = this.gridOptionsService.is("suppressMenuHide");
      this.addManagedListener(this.eMenu, "click", function() {
        return _this.showMenu(_this.eMenu);
      });
      this.eMenu.classList.toggle("ag-header-menu-always-show", suppressMenuHide);
    };
    HeaderComp2.prototype.showMenu = function(eventSource) {
      if (!eventSource) {
        eventSource = this.eMenu;
      }
      this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, "columnMenu");
    };
    HeaderComp2.prototype.workOutSort = function() {
      return this.params.enableSorting;
    };
    HeaderComp2.prototype.setupSort = function() {
      var _this = this;
      this.currentSort = this.params.enableSorting;
      if (!this.eSortIndicator) {
        this.eSortIndicator = this.context.createBean(new SortIndicatorComp(true));
        this.eSortIndicator.attachCustomElements(this.eSortOrder, this.eSortAsc, this.eSortDesc, this.eSortMixed, this.eSortNone);
      }
      this.eSortIndicator.setupSort(this.params.column);
      if (!this.currentSort) {
        return;
      }
      var sortUsingCtrl = this.gridOptionsService.get("multiSortKey") === "ctrl";
      this.addManagedListener(this.params.column, Column.EVENT_MOVING_CHANGED, function() {
        _this.lastMovingChanged = (/* @__PURE__ */ new Date()).getTime();
      });
      if (this.eLabel) {
        this.addManagedListener(this.eLabel, "click", function(event) {
          var moving = _this.params.column.isMoving();
          var nowTime = (/* @__PURE__ */ new Date()).getTime();
          var movedRecently = nowTime - _this.lastMovingChanged < 50;
          var columnMoving = moving || movedRecently;
          if (!columnMoving) {
            var multiSort = sortUsingCtrl ? event.ctrlKey || event.metaKey : event.shiftKey;
            _this.params.progressSort(multiSort);
          }
        });
      }
      var onSortingChanged = function() {
        _this.addOrRemoveCssClass("ag-header-cell-sorted-asc", _this.params.column.isSortAscending());
        _this.addOrRemoveCssClass("ag-header-cell-sorted-desc", _this.params.column.isSortDescending());
        _this.addOrRemoveCssClass("ag-header-cell-sorted-none", _this.params.column.isSortNone());
        if (_this.params.column.getColDef().showRowGroup) {
          var sourceColumns = _this.columnModel.getSourceColumnsForGroupColumn(_this.params.column);
          var sortDirectionsMatch = sourceColumns === null || sourceColumns === void 0 ? void 0 : sourceColumns.every(function(sourceCol) {
            return _this.params.column.getSort() == sourceCol.getSort();
          });
          var isMultiSorting = !sortDirectionsMatch;
          _this.addOrRemoveCssClass("ag-header-cell-sorted-mixed", isMultiSorting);
        }
      };
      this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, onSortingChanged);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, onSortingChanged);
    };
    HeaderComp2.prototype.setupFilterIcon = function() {
      if (!this.eFilter) {
        return;
      }
      this.addManagedListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
      this.onFilterChanged();
    };
    HeaderComp2.prototype.onFilterChanged = function() {
      var filterPresent = this.params.column.isFilterActive();
      setDisplayed(this.eFilter, filterPresent, { skipAriaHidden: true });
    };
    HeaderComp2.TEMPLATE = '<div class="ag-cell-label-container" role="presentation">\n            <span ref="eMenu" class="ag-header-icon ag-header-cell-menu-button" aria-hidden="true"></span>\n            <div ref="eLabel" class="ag-header-cell-label" role="presentation">\n                <span ref="eText" class="ag-header-cell-text"></span>\n                <span ref="eFilter" class="ag-header-icon ag-header-label-icon ag-filter-icon" aria-hidden="true"></span>\n                <ag-sort-indicator ref="eSortIndicator"></ag-sort-indicator>\n            </div>\n        </div>';
    __decorate32([
      Autowired("sortController")
    ], HeaderComp2.prototype, "sortController", void 0);
    __decorate32([
      Autowired("menuFactory")
    ], HeaderComp2.prototype, "menuFactory", void 0);
    __decorate32([
      Autowired("columnModel")
    ], HeaderComp2.prototype, "columnModel", void 0);
    __decorate32([
      RefSelector("eFilter")
    ], HeaderComp2.prototype, "eFilter", void 0);
    __decorate32([
      RefSelector("eSortIndicator")
    ], HeaderComp2.prototype, "eSortIndicator", void 0);
    __decorate32([
      RefSelector("eMenu")
    ], HeaderComp2.prototype, "eMenu", void 0);
    __decorate32([
      RefSelector("eLabel")
    ], HeaderComp2.prototype, "eLabel", void 0);
    __decorate32([
      RefSelector("eText")
    ], HeaderComp2.prototype, "eText", void 0);
    __decorate32([
      RefSelector("eSortOrder")
    ], HeaderComp2.prototype, "eSortOrder", void 0);
    __decorate32([
      RefSelector("eSortAsc")
    ], HeaderComp2.prototype, "eSortAsc", void 0);
    __decorate32([
      RefSelector("eSortDesc")
    ], HeaderComp2.prototype, "eSortDesc", void 0);
    __decorate32([
      RefSelector("eSortMixed")
    ], HeaderComp2.prototype, "eSortMixed", void 0);
    __decorate32([
      RefSelector("eSortNone")
    ], HeaderComp2.prototype, "eSortNone", void 0);
    return HeaderComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupComp.js
var __extends31 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate33 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderGroupComp = (
  /** @class */
  function(_super) {
    __extends31(HeaderGroupComp2, _super);
    function HeaderGroupComp2() {
      return _super.call(this, HeaderGroupComp2.TEMPLATE) || this;
    }
    HeaderGroupComp2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    HeaderGroupComp2.prototype.init = function(params) {
      this.params = params;
      this.checkWarnings();
      this.setupLabel();
      this.addGroupExpandIcon();
      this.setupExpandIcons();
    };
    HeaderGroupComp2.prototype.checkWarnings = function() {
      var paramsAny = this.params;
      if (paramsAny.template) {
        var message_1 = "AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)";
        doOnce(function() {
          return console.warn(message_1);
        }, "HeaderGroupComp.templateNotSupported");
      }
    };
    HeaderGroupComp2.prototype.setupExpandIcons = function() {
      var _this = this;
      this.addInIcon("columnGroupOpened", "agOpened");
      this.addInIcon("columnGroupClosed", "agClosed");
      var expandAction = function(event) {
        if (isStopPropagationForAgGrid(event)) {
          return;
        }
        var newExpandedValue = !_this.params.columnGroup.isExpanded();
        _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, "uiColumnExpanded");
      };
      this.addTouchAndClickListeners(this.eCloseIcon, expandAction);
      this.addTouchAndClickListeners(this.eOpenIcon, expandAction);
      var stopPropagationAction = function(event) {
        stopPropagationForAgGrid(event);
      };
      this.addManagedListener(this.eCloseIcon, "dblclick", stopPropagationAction);
      this.addManagedListener(this.eOpenIcon, "dblclick", stopPropagationAction);
      this.addManagedListener(this.getGui(), "dblclick", expandAction);
      this.updateIconVisibility();
      var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();
      this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));
      this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));
    };
    HeaderGroupComp2.prototype.addTouchAndClickListeners = function(eElement, action) {
      var touchListener = new TouchListener(eElement, true);
      this.addManagedListener(touchListener, TouchListener.EVENT_TAP, action);
      this.addDestroyFunc(function() {
        return touchListener.destroy();
      });
      this.addManagedListener(eElement, "click", action);
    };
    HeaderGroupComp2.prototype.updateIconVisibility = function() {
      var columnGroup = this.params.columnGroup;
      if (columnGroup.isExpandable()) {
        var expanded = this.params.columnGroup.isExpanded();
        setDisplayed(this.eOpenIcon, expanded);
        setDisplayed(this.eCloseIcon, !expanded);
      } else {
        setDisplayed(this.eOpenIcon, false);
        setDisplayed(this.eCloseIcon, false);
      }
    };
    HeaderGroupComp2.prototype.addInIcon = function(iconName, refName) {
      var eIcon = createIconNoSpan(iconName, this.gridOptionsService, null);
      if (eIcon) {
        this.getRefElement(refName).appendChild(eIcon);
      }
    };
    HeaderGroupComp2.prototype.addGroupExpandIcon = function() {
      if (!this.params.columnGroup.isExpandable()) {
        setDisplayed(this.eOpenIcon, false);
        setDisplayed(this.eCloseIcon, false);
        return;
      }
    };
    HeaderGroupComp2.prototype.setupLabel = function() {
      var displayName = this.params.displayName;
      if (exists(displayName)) {
        var displayNameSanitised = escapeString(displayName);
        this.getRefElement("agLabel").innerHTML = displayNameSanitised;
      }
    };
    HeaderGroupComp2.TEMPLATE = '<div class="ag-header-group-cell-label" ref="agContainer" role="presentation">\n            <span ref="agLabel" class="ag-header-group-text" role="presentation"></span>\n            <span ref="agOpened" class="ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded"></span>\n            <span ref="agClosed" class="ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed"></span>\n        </div>';
    __decorate33([
      Autowired("columnModel")
    ], HeaderGroupComp2.prototype, "columnModel", void 0);
    __decorate33([
      RefSelector("agOpened")
    ], HeaderGroupComp2.prototype, "eOpenIcon", void 0);
    __decorate33([
      RefSelector("agClosed")
    ], HeaderGroupComp2.prototype, "eCloseIcon", void 0);
    return HeaderGroupComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/popupComponent.js
var __extends32 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var PopupComponent = (
  /** @class */
  function(_super) {
    __extends32(PopupComponent2, _super);
    function PopupComponent2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    PopupComponent2.prototype.isPopup = function() {
      return true;
    };
    PopupComponent2.prototype.setParentComponent = function(container) {
      container.addCssClass("ag-has-popup");
      _super.prototype.setParentComponent.call(this, container);
    };
    PopupComponent2.prototype.destroy = function() {
      var parentComp = this.parentComponent;
      var hasParent = parentComp && parentComp.isAlive();
      if (hasParent) {
        parentComp.getGui().classList.remove("ag-has-popup");
      }
      _super.prototype.destroy.call(this);
    };
    return PopupComponent2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/largeTextCellEditor.js
var __extends33 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate34 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var LargeTextCellEditor = (
  /** @class */
  function(_super) {
    __extends33(LargeTextCellEditor2, _super);
    function LargeTextCellEditor2() {
      return _super.call(this, LargeTextCellEditor2.TEMPLATE) || this;
    }
    LargeTextCellEditor2.prototype.init = function(params) {
      this.params = params;
      this.focusAfterAttached = params.cellStartedEdit;
      this.eTextArea.setMaxLength(params.maxLength || 200).setCols(params.cols || 60).setRows(params.rows || 10);
      if (exists(params.value)) {
        this.eTextArea.setValue(params.value.toString(), true);
      }
      this.addGuiEventListener("keydown", this.onKeyDown.bind(this));
    };
    LargeTextCellEditor2.prototype.onKeyDown = function(event) {
      var key = event.key;
      if (key === KeyCode.LEFT || key === KeyCode.UP || key === KeyCode.RIGHT || key === KeyCode.DOWN || event.shiftKey && key === KeyCode.ENTER) {
        event.stopPropagation();
      }
    };
    LargeTextCellEditor2.prototype.afterGuiAttached = function() {
      var translate = this.localeService.getLocaleTextFunc();
      this.eTextArea.setInputAriaLabel(translate("ariaInputEditor", "Input Editor"));
      if (this.focusAfterAttached) {
        this.eTextArea.getFocusableElement().focus();
      }
    };
    LargeTextCellEditor2.prototype.getValue = function() {
      return this.params.parseValue(this.eTextArea.getValue());
    };
    LargeTextCellEditor2.TEMPLATE = '<div class="ag-large-text" tabindex="0">\n            <ag-input-text-area ref="eTextArea" class="ag-large-text-input"></ag-input-text-area>\n        </div>';
    __decorate34([
      RefSelector("eTextArea")
    ], LargeTextCellEditor2.prototype, "eTextArea", void 0);
    return LargeTextCellEditor2;
  }(PopupComponent)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/selectCellEditor.js
var __extends34 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate35 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SelectCellEditor = (
  /** @class */
  function(_super) {
    __extends34(SelectCellEditor2, _super);
    function SelectCellEditor2() {
      var _this = _super.call(this, '<div class="ag-cell-edit-wrapper"><ag-select class="ag-cell-editor" ref="eSelect"></ag-select></div>') || this;
      _this.startedByEnter = false;
      return _this;
    }
    SelectCellEditor2.prototype.init = function(params) {
      var _this = this;
      this.focusAfterAttached = params.cellStartedEdit;
      if (missing(params.values)) {
        console.warn("AG Grid: no values found for select cellEditor");
        return;
      }
      this.startedByEnter = params.eventKey != null ? params.eventKey === KeyCode.ENTER : false;
      var hasValue = false;
      params.values.forEach(function(value) {
        var option = { value };
        var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, value);
        var valueFormattedExits = valueFormatted !== null && valueFormatted !== void 0;
        option.text = valueFormattedExits ? valueFormatted : value;
        _this.eSelect.addOption(option);
        hasValue = hasValue || params.value === value;
      });
      if (hasValue) {
        this.eSelect.setValue(params.value, true);
      } else if (params.values.length) {
        this.eSelect.setValue(params.values[0], true);
      }
      if (this.gridOptionsService.get("editType") !== "fullRow") {
        this.eSelect.onValueChange(function() {
          return params.stopEditing();
        });
      }
    };
    SelectCellEditor2.prototype.afterGuiAttached = function() {
      if (this.focusAfterAttached) {
        this.eSelect.getFocusableElement().focus();
      }
      if (this.startedByEnter) {
        this.eSelect.showPicker();
      }
    };
    SelectCellEditor2.prototype.focusIn = function() {
      this.eSelect.getFocusableElement().focus();
    };
    SelectCellEditor2.prototype.getValue = function() {
      return this.eSelect.getValue();
    };
    SelectCellEditor2.prototype.isPopup = function() {
      return false;
    };
    __decorate35([
      Autowired("valueFormatterService")
    ], SelectCellEditor2.prototype, "valueFormatterService", void 0);
    __decorate35([
      RefSelector("eSelect")
    ], SelectCellEditor2.prototype, "eSelect", void 0);
    return SelectCellEditor2;
  }(PopupComponent)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/textCellEditor.js
var __extends35 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate36 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TextCellEditor = (
  /** @class */
  function(_super) {
    __extends35(TextCellEditor2, _super);
    function TextCellEditor2() {
      return _super.call(this, TextCellEditor2.TEMPLATE) || this;
    }
    TextCellEditor2.prototype.init = function(params) {
      this.params = params;
      var eInput = this.eInput;
      var startValue;
      if (params.cellStartedEdit) {
        this.focusAfterAttached = true;
        if (params.eventKey === KeyCode.BACKSPACE || params.eventKey === KeyCode.DELETE) {
          startValue = "";
        } else if (params.charPress) {
          startValue = params.charPress;
        } else {
          startValue = this.getStartValue(params);
          if (params.eventKey !== KeyCode.F2) {
            this.highlightAllOnFocus = true;
          }
        }
      } else {
        this.focusAfterAttached = false;
        startValue = this.getStartValue(params);
      }
      if (startValue != null) {
        eInput.setValue(startValue, true);
      }
      if (params.maxLength != null) {
        eInput.setMaxLength(params.maxLength);
      }
      this.addManagedListener(eInput.getGui(), "keydown", function(event) {
        var key = event.key;
        if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {
          event.preventDefault();
        }
      });
    };
    TextCellEditor2.prototype.afterGuiAttached = function() {
      var translate = this.localeService.getLocaleTextFunc();
      var eInput = this.eInput;
      eInput.setInputAriaLabel(translate("ariaInputEditor", "Input Editor"));
      if (!this.focusAfterAttached) {
        return;
      }
      if (!isBrowserSafari()) {
        eInput.getFocusableElement().focus();
      }
      var inputEl = eInput.getInputElement();
      if (this.highlightAllOnFocus) {
        inputEl.select();
      } else {
        var value = eInput.getValue();
        var len = exists(value) && value.length || 0;
        if (len) {
          inputEl.setSelectionRange(len, len);
        }
      }
    };
    TextCellEditor2.prototype.focusIn = function() {
      var eInput = this.eInput;
      var focusEl = eInput.getFocusableElement();
      var inputEl = eInput.getInputElement();
      focusEl.focus();
      inputEl.select();
    };
    TextCellEditor2.prototype.getValue = function() {
      var eInput = this.eInput;
      return this.params.parseValue(eInput.getValue());
    };
    TextCellEditor2.prototype.getStartValue = function(params) {
      var formatValue = params.useFormatter || params.column.getColDef().refData;
      return formatValue ? params.formatValue(params.value) : params.value;
    };
    TextCellEditor2.prototype.isPopup = function() {
      return false;
    };
    TextCellEditor2.TEMPLATE = '<div class="ag-cell-edit-wrapper">\n            <ag-input-text-field class="ag-cell-editor" ref="eInput"></ag-input-text-field>\n        </div>';
    __decorate36([
      RefSelector("eInput")
    ], TextCellEditor2.prototype, "eInput", void 0);
    return TextCellEditor2;
  }(PopupComponent)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/animateShowChangeCellRenderer.js
var __extends36 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate37 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ARROW_UP = "\u2191";
var ARROW_DOWN = "\u2193";
var AnimateShowChangeCellRenderer = (
  /** @class */
  function(_super) {
    __extends36(AnimateShowChangeCellRenderer2, _super);
    function AnimateShowChangeCellRenderer2() {
      var _this = _super.call(this, AnimateShowChangeCellRenderer2.TEMPLATE) || this;
      _this.refreshCount = 0;
      return _this;
    }
    AnimateShowChangeCellRenderer2.prototype.init = function(params) {
      this.eValue = this.queryForHtmlElement(".ag-value-change-value");
      this.eDelta = this.queryForHtmlElement(".ag-value-change-delta");
      this.refresh(params);
    };
    AnimateShowChangeCellRenderer2.prototype.showDelta = function(params, delta) {
      var absDelta = Math.abs(delta);
      var valueFormatted = params.formatValue(absDelta);
      var valueToUse = exists(valueFormatted) ? valueFormatted : absDelta;
      var deltaUp = delta >= 0;
      if (deltaUp) {
        this.eDelta.innerHTML = ARROW_UP + valueToUse;
      } else {
        this.eDelta.innerHTML = ARROW_DOWN + valueToUse;
      }
      this.eDelta.classList.toggle("ag-value-change-delta-up", deltaUp);
      this.eDelta.classList.toggle("ag-value-change-delta-down", !deltaUp);
    };
    AnimateShowChangeCellRenderer2.prototype.setTimerToRemoveDelta = function() {
      var _this = this;
      this.refreshCount++;
      var refreshCountCopy = this.refreshCount;
      window.setTimeout(function() {
        if (refreshCountCopy === _this.refreshCount) {
          _this.hideDeltaValue();
        }
      }, 2e3);
    };
    AnimateShowChangeCellRenderer2.prototype.hideDeltaValue = function() {
      this.eValue.classList.remove("ag-value-change-value-highlight");
      clearElement(this.eDelta);
    };
    AnimateShowChangeCellRenderer2.prototype.refresh = function(params) {
      var value = params.value;
      if (value === this.lastValue) {
        return false;
      }
      if (exists(params.valueFormatted)) {
        this.eValue.innerHTML = params.valueFormatted;
      } else if (exists(params.value)) {
        this.eValue.innerHTML = value;
      } else {
        clearElement(this.eValue);
      }
      if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {
        return false;
      }
      if (typeof value === "number" && typeof this.lastValue === "number") {
        var delta = value - this.lastValue;
        this.showDelta(params, delta);
      }
      if (this.lastValue) {
        this.eValue.classList.add("ag-value-change-value-highlight");
      }
      this.setTimerToRemoveDelta();
      this.lastValue = value;
      return true;
    };
    AnimateShowChangeCellRenderer2.TEMPLATE = '<span><span class="ag-value-change-delta"></span><span class="ag-value-change-value"></span></span>';
    __decorate37([
      Autowired("filterManager")
    ], AnimateShowChangeCellRenderer2.prototype, "filterManager", void 0);
    return AnimateShowChangeCellRenderer2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/animateSlideCellRenderer.js
var __extends37 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate38 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AnimateSlideCellRenderer = (
  /** @class */
  function(_super) {
    __extends37(AnimateSlideCellRenderer2, _super);
    function AnimateSlideCellRenderer2() {
      var _this = _super.call(this, AnimateSlideCellRenderer2.TEMPLATE) || this;
      _this.refreshCount = 0;
      _this.eCurrent = _this.queryForHtmlElement(".ag-value-slide-current");
      return _this;
    }
    AnimateSlideCellRenderer2.prototype.init = function(params) {
      this.refresh(params);
    };
    AnimateSlideCellRenderer2.prototype.addSlideAnimation = function() {
      var _this = this;
      this.refreshCount++;
      var refreshCountCopy = this.refreshCount;
      if (this.ePrevious) {
        this.getGui().removeChild(this.ePrevious);
      }
      this.ePrevious = loadTemplate('<span class="ag-value-slide-previous ag-value-slide-out"></span>');
      this.ePrevious.innerHTML = this.eCurrent.innerHTML;
      this.getGui().insertBefore(this.ePrevious, this.eCurrent);
      window.setTimeout(function() {
        if (refreshCountCopy !== _this.refreshCount) {
          return;
        }
        _this.ePrevious.classList.add("ag-value-slide-out-end");
      }, 50);
      window.setTimeout(function() {
        if (refreshCountCopy !== _this.refreshCount) {
          return;
        }
        _this.getGui().removeChild(_this.ePrevious);
        _this.ePrevious = null;
      }, 3e3);
    };
    AnimateSlideCellRenderer2.prototype.refresh = function(params) {
      var value = params.value;
      if (missing(value)) {
        value = "";
      }
      if (value === this.lastValue) {
        return false;
      }
      if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {
        return false;
      }
      this.addSlideAnimation();
      this.lastValue = value;
      if (exists(params.valueFormatted)) {
        this.eCurrent.innerHTML = params.valueFormatted;
      } else if (exists(params.value)) {
        this.eCurrent.innerHTML = value;
      } else {
        clearElement(this.eCurrent);
      }
      return true;
    };
    AnimateSlideCellRenderer2.TEMPLATE = '<span>\n            <span class="ag-value-slide-current"></span>\n        </span>';
    __decorate38([
      Autowired("filterManager")
    ], AnimateSlideCellRenderer2.prototype, "filterManager", void 0);
    return AnimateSlideCellRenderer2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/rowNode.js
var __assign9 = function() {
  __assign9 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign9.apply(this, arguments);
};
var RowNode = (
  /** @class */
  function() {
    function RowNode2(beans) {
      this.rowIndex = null;
      this.key = null;
      this.childrenMapped = {};
      this.displayed = false;
      this.rowTop = null;
      this.oldRowTop = null;
      this.selectable = true;
      this.__objectId = RowNode2.OBJECT_ID_SEQUENCE++;
      this.__autoHeights = {};
      this.alreadyRendered = false;
      this.highlighted = null;
      this.selected = false;
      this.beans = beans;
    }
    RowNode2.prototype.setData = function(data) {
      this.setDataCommon(data, false);
    };
    RowNode2.prototype.updateData = function(data) {
      this.setDataCommon(data, true);
    };
    RowNode2.prototype.setDataCommon = function(data, update) {
      var oldData = this.data;
      this.data = data;
      this.beans.valueCache.onDataChanged();
      this.updateDataOnDetailNode();
      this.checkRowSelectable();
      var event = this.createDataChangedEvent(data, oldData, update);
      this.dispatchLocalEvent(event);
    };
    RowNode2.prototype.updateDataOnDetailNode = function() {
      if (this.detailNode) {
        this.detailNode.data = this.data;
      }
    };
    RowNode2.prototype.createDataChangedEvent = function(newData, oldData, update) {
      return {
        type: RowNode2.EVENT_DATA_CHANGED,
        node: this,
        oldData,
        newData,
        update
      };
    };
    RowNode2.prototype.createLocalRowEvent = function(type2) {
      return {
        type: type2,
        node: this
      };
    };
    RowNode2.prototype.getRowIndexString = function() {
      if (this.rowPinned === "top") {
        return "t-" + this.rowIndex;
      }
      if (this.rowPinned === "bottom") {
        return "b-" + this.rowIndex;
      }
      return this.rowIndex.toString();
    };
    RowNode2.prototype.createDaemonNode = function() {
      var oldNode = new RowNode2(this.beans);
      oldNode.id = this.id;
      oldNode.data = this.data;
      oldNode.__daemon = true;
      oldNode.selected = this.selected;
      oldNode.level = this.level;
      return oldNode;
    };
    RowNode2.prototype.setDataAndId = function(data, id) {
      var oldNode = exists(this.id) ? this.createDaemonNode() : null;
      var oldData = this.data;
      this.data = data;
      this.updateDataOnDetailNode();
      this.setId(id);
      this.beans.selectionService.syncInRowNode(this, oldNode);
      this.checkRowSelectable();
      var event = this.createDataChangedEvent(data, oldData, false);
      this.dispatchLocalEvent(event);
    };
    RowNode2.prototype.checkRowSelectable = function() {
      var isRowSelectableFunc = this.beans.gridOptionsService.get("isRowSelectable");
      this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);
    };
    RowNode2.prototype.setRowSelectable = function(newVal) {
      if (this.selectable !== newVal) {
        this.selectable = newVal;
        if (this.eventService) {
          this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_SELECTABLE_CHANGED));
        }
        var isGroupSelectsChildren = this.beans.gridOptionsService.is("groupSelectsChildren");
        if (isGroupSelectsChildren) {
          var selected = this.calculateSelectedFromChildren();
          this.setSelectedParams({ newValue: selected !== null && selected !== void 0 ? selected : false, source: "selectableChanged" });
        }
      }
    };
    RowNode2.prototype.setId = function(id) {
      var getRowIdFunc = this.beans.gridOptionsService.getRowIdFunc();
      if (getRowIdFunc) {
        if (this.data) {
          var parentKeys = this.getGroupKeys(true);
          this.id = getRowIdFunc({
            data: this.data,
            parentKeys: parentKeys.length > 0 ? parentKeys : void 0,
            level: this.level
          });
          if (this.id !== null && typeof this.id === "string" && this.id.startsWith(RowNode2.ID_PREFIX_ROW_GROUP)) {
            console.error("AG Grid: Row IDs cannot start with " + RowNode2.ID_PREFIX_ROW_GROUP + ", this is a reserved prefix for AG Grid's row grouping feature.");
          }
          if (this.id !== null && typeof this.id !== "string") {
            this.id = "" + this.id;
          }
        } else {
          this.id = void 0;
        }
      } else {
        this.id = id;
      }
    };
    RowNode2.prototype.getGroupKeys = function(excludeSelf) {
      if (excludeSelf === void 0) {
        excludeSelf = false;
      }
      var keys3 = [];
      var pointer = this;
      if (excludeSelf) {
        pointer = pointer.parent;
      }
      while (pointer && pointer.level >= 0) {
        keys3.push(pointer.key);
        pointer = pointer.parent;
      }
      keys3.reverse();
      return keys3;
    };
    RowNode2.prototype.isPixelInRange = function(pixel) {
      if (!exists(this.rowTop) || !exists(this.rowHeight)) {
        return false;
      }
      return pixel >= this.rowTop && pixel < this.rowTop + this.rowHeight;
    };
    RowNode2.prototype.setFirstChild = function(firstChild) {
      if (this.firstChild === firstChild) {
        return;
      }
      this.firstChild = firstChild;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_FIRST_CHILD_CHANGED));
      }
    };
    RowNode2.prototype.setLastChild = function(lastChild) {
      if (this.lastChild === lastChild) {
        return;
      }
      this.lastChild = lastChild;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_LAST_CHILD_CHANGED));
      }
    };
    RowNode2.prototype.setChildIndex = function(childIndex) {
      if (this.childIndex === childIndex) {
        return;
      }
      this.childIndex = childIndex;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_CHILD_INDEX_CHANGED));
      }
    };
    RowNode2.prototype.setRowTop = function(rowTop) {
      this.oldRowTop = this.rowTop;
      if (this.rowTop === rowTop) {
        return;
      }
      this.rowTop = rowTop;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_TOP_CHANGED));
      }
      this.setDisplayed(rowTop !== null);
    };
    RowNode2.prototype.clearRowTopAndRowIndex = function() {
      this.oldRowTop = null;
      this.setRowTop(null);
      this.setRowIndex(null);
    };
    RowNode2.prototype.setDisplayed = function(displayed) {
      if (this.displayed === displayed) {
        return;
      }
      this.displayed = displayed;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_DISPLAYED_CHANGED));
      }
    };
    RowNode2.prototype.setDragging = function(dragging) {
      if (this.dragging === dragging) {
        return;
      }
      this.dragging = dragging;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_DRAGGING_CHANGED));
      }
    };
    RowNode2.prototype.setHighlighted = function(highlighted) {
      if (highlighted === this.highlighted) {
        return;
      }
      this.highlighted = highlighted;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_HIGHLIGHT_CHANGED));
      }
    };
    RowNode2.prototype.setAllChildrenCount = function(allChildrenCount) {
      if (this.allChildrenCount === allChildrenCount) {
        return;
      }
      this.allChildrenCount = allChildrenCount;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_ALL_CHILDREN_COUNT_CHANGED));
      }
    };
    RowNode2.prototype.setMaster = function(master) {
      if (this.master === master) {
        return;
      }
      if (this.master && !master) {
        this.expanded = false;
      }
      this.master = master;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_MASTER_CHANGED));
      }
    };
    RowNode2.prototype.setGroup = function(group) {
      if (this.group === group) {
        return;
      }
      if (this.group && !group) {
        this.expanded = false;
      }
      this.group = group;
      this.updateHasChildren();
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_GROUP_CHANGED));
      }
    };
    RowNode2.prototype.setRowHeight = function(rowHeight, estimated) {
      if (estimated === void 0) {
        estimated = false;
      }
      this.rowHeight = rowHeight;
      this.rowHeightEstimated = estimated;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_HEIGHT_CHANGED));
      }
    };
    RowNode2.prototype.setRowAutoHeight = function(cellHeight, column) {
      if (!this.__autoHeights) {
        this.__autoHeights = {};
      }
      var autoHeights = this.__autoHeights;
      autoHeights[column.getId()] = cellHeight;
      if (cellHeight != null) {
        if (this.checkAutoHeightsDebounced == null) {
          this.checkAutoHeightsDebounced = debounce2(this.checkAutoHeights.bind(this), 1);
        }
        this.checkAutoHeightsDebounced();
      }
    };
    RowNode2.prototype.checkAutoHeights = function() {
      var notAllPresent = false;
      var nonePresent = true;
      var newRowHeight = 0;
      var autoHeights = this.__autoHeights;
      if (autoHeights == null) {
        return;
      }
      var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();
      displayedAutoHeightCols.forEach(function(col) {
        var cellHeight = autoHeights[col.getId()];
        if (cellHeight == null) {
          notAllPresent = true;
          return;
        }
        nonePresent = false;
        if (cellHeight > newRowHeight) {
          newRowHeight = cellHeight;
        }
      });
      if (notAllPresent) {
        return;
      }
      if (nonePresent || newRowHeight < 10) {
        newRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this).height;
      }
      if (newRowHeight == this.rowHeight) {
        return;
      }
      this.setRowHeight(newRowHeight);
      var rowModel = this.beans.rowModel;
      if (rowModel.onRowHeightChangedDebounced) {
        rowModel.onRowHeightChangedDebounced();
      }
    };
    RowNode2.prototype.setRowIndex = function(rowIndex) {
      if (this.rowIndex === rowIndex) {
        return;
      }
      this.rowIndex = rowIndex;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_ROW_INDEX_CHANGED));
      }
    };
    RowNode2.prototype.setUiLevel = function(uiLevel) {
      if (this.uiLevel === uiLevel) {
        return;
      }
      this.uiLevel = uiLevel;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_UI_LEVEL_CHANGED));
      }
    };
    RowNode2.prototype.setExpanded = function(expanded, e2) {
      if (this.expanded === expanded) {
        return;
      }
      this.expanded = expanded;
      if (this.eventService) {
        this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_EXPANDED_CHANGED));
      }
      var event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED), {
        expanded,
        event: e2 || null
      });
      this.beans.rowNodeEventThrottle.dispatchExpanded(event);
      if (this.beans.gridOptionsService.is("groupIncludeFooter")) {
        this.beans.rowRenderer.refreshCells({ rowNodes: [this] });
      }
    };
    RowNode2.prototype.createGlobalRowEvent = function(type2) {
      return {
        type: type2,
        node: this,
        data: this.data,
        rowIndex: this.rowIndex,
        rowPinned: this.rowPinned,
        context: this.beans.gridOptionsService.get("context"),
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi")
      };
    };
    RowNode2.prototype.dispatchLocalEvent = function(event) {
      if (this.eventService) {
        this.eventService.dispatchEvent(event);
      }
    };
    RowNode2.prototype.setDataValue = function(colKey, newValue, eventSource) {
      var column = this.beans.columnModel.getPrimaryColumn(colKey);
      var oldValue = this.beans.valueService.getValue(column, this);
      var valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);
      this.dispatchCellChangedEvent(column, newValue, oldValue);
      this.checkRowSelectable();
      return valueChanged;
    };
    RowNode2.prototype.setGroupValue = function(colKey, newValue) {
      var column = this.beans.columnModel.getGridColumn(colKey);
      if (missing(this.groupData)) {
        this.groupData = {};
      }
      var columnId = column.getColId();
      var oldValue = this.groupData[columnId];
      if (oldValue === newValue) {
        return;
      }
      this.groupData[columnId] = newValue;
      this.dispatchCellChangedEvent(column, newValue, oldValue);
    };
    RowNode2.prototype.setAggData = function(newAggData) {
      var _this = this;
      var colIds = getAllKeysInObjects([this.aggData, newAggData]);
      var oldAggData = this.aggData;
      this.aggData = newAggData;
      if (this.eventService) {
        colIds.forEach(function(colId) {
          var column = _this.beans.columnModel.getGridColumn(colId);
          var value = _this.aggData ? _this.aggData[colId] : void 0;
          var oldValue = oldAggData ? oldAggData[colId] : void 0;
          _this.dispatchCellChangedEvent(column, value, oldValue);
        });
      }
    };
    RowNode2.prototype.updateHasChildren = function() {
      var newValue = this.group && !this.footer || this.childrenAfterGroup && this.childrenAfterGroup.length > 0;
      if (newValue !== this.__hasChildren) {
        this.__hasChildren = !!newValue;
        if (this.eventService) {
          this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode2.EVENT_HAS_CHILDREN_CHANGED));
        }
      }
    };
    RowNode2.prototype.hasChildren = function() {
      if (this.__hasChildren == null) {
        this.updateHasChildren();
      }
      return this.__hasChildren;
    };
    RowNode2.prototype.isEmptyRowGroupNode = function() {
      return this.group && missingOrEmpty(this.childrenAfterGroup);
    };
    RowNode2.prototype.dispatchCellChangedEvent = function(column, newValue, oldValue) {
      var cellChangedEvent = {
        type: RowNode2.EVENT_CELL_CHANGED,
        node: this,
        column,
        newValue,
        oldValue
      };
      this.dispatchLocalEvent(cellChangedEvent);
    };
    RowNode2.prototype.resetQuickFilterAggregateText = function() {
      this.quickFilterAggregateText = null;
    };
    RowNode2.prototype.isExpandable = function() {
      return this.hasChildren() && !this.footer || this.master ? true : false;
    };
    RowNode2.prototype.isSelected = function() {
      if (this.footer) {
        return this.sibling.isSelected();
      }
      return this.selected;
    };
    RowNode2.prototype.depthFirstSearch = function(callback) {
      if (this.childrenAfterGroup) {
        this.childrenAfterGroup.forEach(function(child) {
          return child.depthFirstSearch(callback);
        });
      }
      callback(this);
    };
    RowNode2.prototype.calculateSelectedFromChildren = function() {
      var _a47;
      var atLeastOneSelected = false;
      var atLeastOneDeSelected = false;
      var atLeastOneMixed = false;
      if (!((_a47 = this.childrenAfterGroup) === null || _a47 === void 0 ? void 0 : _a47.length)) {
        return this.selectable ? this.selected : null;
      }
      for (var i2 = 0; i2 < this.childrenAfterGroup.length; i2++) {
        var child = this.childrenAfterGroup[i2];
        var childState = child.isSelected();
        if (!child.selectable) {
          var selectable = child.calculateSelectedFromChildren();
          if (selectable === null) {
            continue;
          }
          childState = selectable;
        }
        switch (childState) {
          case true:
            atLeastOneSelected = true;
            break;
          case false:
            atLeastOneDeSelected = true;
            break;
          default:
            atLeastOneMixed = true;
            break;
        }
      }
      if (atLeastOneMixed || atLeastOneSelected && atLeastOneDeSelected) {
        return void 0;
      } else if (atLeastOneSelected) {
        return true;
      } else if (atLeastOneDeSelected) {
        return false;
      } else if (!this.selectable) {
        return null;
      } else {
        return this.selected;
      }
    };
    RowNode2.prototype.setSelectedInitialValue = function(selected) {
      this.selected = selected;
    };
    RowNode2.prototype.setSelected = function(newValue, clearSelection, suppressFinishActions, source) {
      if (clearSelection === void 0) {
        clearSelection = false;
      }
      if (suppressFinishActions === void 0) {
        suppressFinishActions = false;
      }
      if (source === void 0) {
        source = "api";
      }
      this.setSelectedParams({
        newValue,
        clearSelection,
        suppressFinishActions,
        rangeSelect: false,
        source
      });
    };
    RowNode2.prototype.isRowPinned = function() {
      return this.rowPinned === "top" || this.rowPinned === "bottom";
    };
    RowNode2.prototype.setSelectedParams = function(params) {
      var _a47, _b;
      var groupSelectsChildren = this.beans.gridOptionsService.is("groupSelectsChildren");
      var newValue = params.newValue === true;
      var clearSelection = params.clearSelection === true;
      var suppressFinishActions = params.suppressFinishActions === true;
      var rangeSelect = params.rangeSelect === true;
      var groupSelectsFiltered = groupSelectsChildren && params.groupSelectsFiltered === true;
      var source = (_a47 = params.source) !== null && _a47 !== void 0 ? _a47 : "api";
      if (this.id === void 0) {
        console.warn("AG Grid: cannot select node until id for node is known");
        return 0;
      }
      if (this.rowPinned) {
        console.warn("AG Grid: cannot select pinned rows");
        return 0;
      }
      if (this.footer) {
        return this.sibling.setSelectedParams(params);
      }
      if (rangeSelect && this.beans.selectionService.getLastSelectedNode()) {
        var newRowClicked = this.beans.selectionService.getLastSelectedNode() !== this;
        var allowMultiSelect = this.beans.gridOptionsService.get("rowSelection") === "multiple";
        if (newRowClicked && allowMultiSelect) {
          var nodesChanged = this.doRowRangeSelection(params.newValue, source);
          this.beans.selectionService.setLastSelectedNode(this);
          return nodesChanged;
        }
      }
      var updatedCount = 0;
      var skipThisNode = groupSelectsFiltered && this.group;
      if (!skipThisNode) {
        var thisNodeWasSelected = this.selectThisNode(newValue, params.event, source);
        if (thisNodeWasSelected) {
          updatedCount++;
        }
      }
      if (groupSelectsChildren && ((_b = this.childrenAfterGroup) === null || _b === void 0 ? void 0 : _b.length)) {
        updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered, source);
      }
      if (!suppressFinishActions) {
        var clearOtherNodes = newValue && (clearSelection || this.beans.gridOptionsService.get("rowSelection") !== "multiple");
        if (clearOtherNodes) {
          updatedCount += this.beans.selectionService.clearOtherNodes(this, source);
        }
        if (updatedCount > 0) {
          this.beans.selectionService.updateGroupsFromChildrenSelections(source);
          var event_1 = {
            type: Events.EVENT_SELECTION_CHANGED,
            source
          };
          this.beans.eventService.dispatchEvent(event_1);
        }
        if (newValue) {
          this.beans.selectionService.setLastSelectedNode(this);
        }
      }
      return updatedCount;
    };
    RowNode2.prototype.doRowRangeSelection = function(value, source) {
      var _this = this;
      if (value === void 0) {
        value = true;
      }
      var groupsSelectChildren = this.beans.gridOptionsService.is("groupSelectsChildren");
      var lastSelectedNode = this.beans.selectionService.getLastSelectedNode();
      var nodesToSelect = this.beans.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);
      var updatedCount = 0;
      nodesToSelect.forEach(function(rowNode) {
        if (rowNode.group && groupsSelectChildren || value === false && _this === rowNode) {
          return;
        }
        var nodeWasSelected = rowNode.selectThisNode(value, void 0, source);
        if (nodeWasSelected) {
          updatedCount++;
        }
      });
      this.beans.selectionService.updateGroupsFromChildrenSelections(source);
      var event = {
        type: Events.EVENT_SELECTION_CHANGED,
        source
      };
      this.beans.eventService.dispatchEvent(event);
      return updatedCount;
    };
    RowNode2.prototype.isParentOfNode = function(potentialParent) {
      var parentNode = this.parent;
      while (parentNode) {
        if (parentNode === potentialParent) {
          return true;
        }
        parentNode = parentNode.parent;
      }
      return false;
    };
    RowNode2.prototype.selectThisNode = function(newValue, e2, source) {
      if (source === void 0) {
        source = "api";
      }
      var selectionNotAllowed = !this.selectable && newValue;
      var selectionNotChanged = this.selected === newValue;
      if (selectionNotAllowed || selectionNotChanged) {
        return false;
      }
      this.selected = newValue;
      if (this.eventService) {
        this.dispatchLocalEvent(this.createLocalRowEvent(RowNode2.EVENT_ROW_SELECTED));
      }
      var event = __assign9(__assign9({}, this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED)), { event: e2 || null, source });
      this.beans.eventService.dispatchEvent(event);
      return true;
    };
    RowNode2.prototype.selectChildNodes = function(newValue, groupSelectsFiltered, source) {
      var children = groupSelectsFiltered ? this.childrenAfterAggFilter : this.childrenAfterGroup;
      if (missing(children)) {
        return 0;
      }
      var updatedCount = 0;
      for (var i2 = 0; i2 < children.length; i2++) {
        updatedCount += children[i2].setSelectedParams({
          newValue,
          clearSelection: false,
          suppressFinishActions: true,
          groupSelectsFiltered,
          source
        });
      }
      return updatedCount;
    };
    RowNode2.prototype.addEventListener = function(eventType, listener) {
      if (!this.eventService) {
        this.eventService = new EventService();
      }
      this.eventService.addEventListener(eventType, listener);
    };
    RowNode2.prototype.removeEventListener = function(eventType, listener) {
      if (!this.eventService) {
        return;
      }
      this.eventService.removeEventListener(eventType, listener);
      if (this.eventService.noRegisteredListenersExist()) {
        this.eventService = null;
      }
    };
    RowNode2.prototype.onMouseEnter = function() {
      this.dispatchLocalEvent(this.createLocalRowEvent(RowNode2.EVENT_MOUSE_ENTER));
    };
    RowNode2.prototype.onMouseLeave = function() {
      this.dispatchLocalEvent(this.createLocalRowEvent(RowNode2.EVENT_MOUSE_LEAVE));
    };
    RowNode2.prototype.getFirstChildOfFirstChild = function(rowGroupColumn) {
      var currentRowNode = this;
      var isCandidate = true;
      var foundFirstChildPath = false;
      var nodeToSwapIn = null;
      while (isCandidate && !foundFirstChildPath) {
        var parentRowNode = currentRowNode.parent;
        var firstChild = exists(parentRowNode) && currentRowNode.firstChild;
        if (firstChild) {
          if (parentRowNode.rowGroupColumn === rowGroupColumn) {
            foundFirstChildPath = true;
            nodeToSwapIn = parentRowNode;
          }
        } else {
          isCandidate = false;
        }
        currentRowNode = parentRowNode;
      }
      return foundFirstChildPath ? nodeToSwapIn : null;
    };
    RowNode2.prototype.isFullWidthCell = function() {
      var isFullWidthCellFunc = this.getIsFullWidthCellFunc();
      return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;
    };
    RowNode2.prototype.getIsFullWidthCellFunc = function() {
      var isFullWidthRow = this.beans.gridOptionsService.getCallback("isFullWidthRow");
      if (isFullWidthRow) {
        return isFullWidthRow;
      }
      var isFullWidthCell = this.beans.gridOptionsService.get("isFullWidthCell");
      if (isFullWidthCell) {
        return function(params) {
          return isFullWidthCell(params.rowNode);
        };
      }
    };
    RowNode2.prototype.getRoute = function() {
      if (this.key == null) {
        return;
      }
      var res = [];
      var pointer = this;
      while (pointer.key != null) {
        res.push(pointer.key);
        pointer = pointer.parent;
      }
      return res.reverse();
    };
    RowNode2.prototype.createFooter = function() {
      var _this = this;
      if (this.sibling) {
        return;
      }
      var footerNode = new RowNode2(this.beans);
      Object.keys(this).forEach(function(key) {
        footerNode[key] = _this[key];
      });
      footerNode.footer = true;
      footerNode.setRowTop(null);
      footerNode.setRowIndex(null);
      footerNode.oldRowTop = null;
      footerNode.id = "rowGroupFooter_" + this.id;
      footerNode.sibling = this;
      this.sibling = footerNode;
    };
    RowNode2.ID_PREFIX_ROW_GROUP = "row-group-";
    RowNode2.ID_PREFIX_TOP_PINNED = "t-";
    RowNode2.ID_PREFIX_BOTTOM_PINNED = "b-";
    RowNode2.OBJECT_ID_SEQUENCE = 0;
    RowNode2.EVENT_ROW_SELECTED = "rowSelected";
    RowNode2.EVENT_DATA_CHANGED = "dataChanged";
    RowNode2.EVENT_CELL_CHANGED = "cellChanged";
    RowNode2.EVENT_ALL_CHILDREN_COUNT_CHANGED = "allChildrenCountChanged";
    RowNode2.EVENT_MASTER_CHANGED = "masterChanged";
    RowNode2.EVENT_GROUP_CHANGED = "groupChanged";
    RowNode2.EVENT_MOUSE_ENTER = "mouseEnter";
    RowNode2.EVENT_MOUSE_LEAVE = "mouseLeave";
    RowNode2.EVENT_HEIGHT_CHANGED = "heightChanged";
    RowNode2.EVENT_TOP_CHANGED = "topChanged";
    RowNode2.EVENT_DISPLAYED_CHANGED = "displayedChanged";
    RowNode2.EVENT_FIRST_CHILD_CHANGED = "firstChildChanged";
    RowNode2.EVENT_LAST_CHILD_CHANGED = "lastChildChanged";
    RowNode2.EVENT_CHILD_INDEX_CHANGED = "childIndexChanged";
    RowNode2.EVENT_ROW_INDEX_CHANGED = "rowIndexChanged";
    RowNode2.EVENT_EXPANDED_CHANGED = "expandedChanged";
    RowNode2.EVENT_HAS_CHILDREN_CHANGED = "hasChildrenChanged";
    RowNode2.EVENT_SELECTABLE_CHANGED = "selectableChanged";
    RowNode2.EVENT_UI_LEVEL_CHANGED = "uiLevelChanged";
    RowNode2.EVENT_HIGHLIGHT_CHANGED = "rowHighlightChanged";
    RowNode2.EVENT_DRAGGING_CHANGED = "draggingChanged";
    return RowNode2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/checkboxSelectionComponent.js
var __extends38 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign10 = function() {
  __assign10 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign10.apply(this, arguments);
};
var __decorate39 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var CheckboxSelectionComponent = (
  /** @class */
  function(_super) {
    __extends38(CheckboxSelectionComponent2, _super);
    function CheckboxSelectionComponent2() {
      return _super.call(
        this,
        /* html*/
        '\n            <div class="ag-selection-checkbox" role="presentation">\n                <ag-checkbox role="presentation" ref="eCheckbox"></ag-checkbox>\n            </div>'
      ) || this;
    }
    CheckboxSelectionComponent2.prototype.postConstruct = function() {
      this.eCheckbox.setPassive(true);
    };
    CheckboxSelectionComponent2.prototype.getCheckboxId = function() {
      return this.eCheckbox.getInputElement().id;
    };
    CheckboxSelectionComponent2.prototype.onDataChanged = function() {
      this.onSelectionChanged();
    };
    CheckboxSelectionComponent2.prototype.onSelectableChanged = function() {
      this.showOrHideSelect();
    };
    CheckboxSelectionComponent2.prototype.onSelectionChanged = function() {
      var translate = this.localeService.getLocaleTextFunc();
      var state2 = this.rowNode.isSelected();
      var stateName = state2 === void 0 ? translate("ariaIndeterminate", "indeterminate") : state2 === true ? translate("ariaChecked", "checked") : translate("ariaUnchecked", "unchecked");
      var ariaLabel = translate("ariaRowToggleSelection", "Press Space to toggle row selection");
      this.eCheckbox.setValue(state2, true);
      this.eCheckbox.setInputAriaLabel(ariaLabel + " (" + stateName + ")");
    };
    CheckboxSelectionComponent2.prototype.onCheckedClicked = function(event) {
      var groupSelectsFiltered = this.gridOptionsService.is("groupSelectsFiltered");
      var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered, event, source: "checkboxSelected" });
      return updatedCount;
    };
    CheckboxSelectionComponent2.prototype.onUncheckedClicked = function(event) {
      var groupSelectsFiltered = this.gridOptionsService.is("groupSelectsFiltered");
      var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered, event, source: "checkboxSelected" });
      return updatedCount;
    };
    CheckboxSelectionComponent2.prototype.init = function(params) {
      var _this = this;
      this.rowNode = params.rowNode;
      this.column = params.column;
      this.overrides = params.overrides;
      this.onSelectionChanged();
      this.addManagedListener(this.eCheckbox.getInputElement(), "dblclick", function(event) {
        stopPropagationForAgGrid(event);
      });
      this.addManagedListener(this.eCheckbox.getInputElement(), "click", function(event) {
        stopPropagationForAgGrid(event);
        var isSelected = _this.eCheckbox.getValue();
        var previousValue = _this.eCheckbox.getPreviousValue();
        if (previousValue === void 0 || isSelected === void 0) {
          var result = _this.onUncheckedClicked(event || {});
          if (result === 0) {
            _this.onCheckedClicked(event);
          }
        } else if (isSelected) {
          _this.onCheckedClicked(event);
        } else {
          _this.onUncheckedClicked(event || {});
        }
      });
      this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));
      var isRowSelectableFunc = this.gridOptionsService.get("isRowSelectable");
      var checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === "function";
      if (checkboxVisibleIsDynamic) {
        var showOrHideSelectListener = this.showOrHideSelect.bind(this);
        this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);
        this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, showOrHideSelectListener);
        this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, showOrHideSelectListener);
        this.showOrHideSelect();
      }
      this.eCheckbox.getInputElement().setAttribute("tabindex", "-1");
    };
    CheckboxSelectionComponent2.prototype.showOrHideSelect = function() {
      var _a47, _b, _c, _d;
      var selectable = this.rowNode.selectable;
      var isVisible2 = this.getIsVisible();
      if (selectable) {
        if (typeof isVisible2 === "function") {
          var extraParams = (_a47 = this.overrides) === null || _a47 === void 0 ? void 0 : _a47.callbackParams;
          var params = (_b = this.column) === null || _b === void 0 ? void 0 : _b.createColumnFunctionCallbackParams(this.rowNode);
          selectable = params ? isVisible2(__assign10(__assign10({}, extraParams), params)) : false;
        } else {
          selectable = isVisible2 !== null && isVisible2 !== void 0 ? isVisible2 : false;
        }
      }
      var disableInsteadOfHide = (_c = this.column) === null || _c === void 0 ? void 0 : _c.getColDef().showDisabledCheckboxes;
      if (disableInsteadOfHide) {
        this.eCheckbox.setDisabled(!selectable);
        this.setVisible(true);
        this.setDisplayed(true);
        return;
      }
      if ((_d = this.overrides) === null || _d === void 0 ? void 0 : _d.removeHidden) {
        this.setDisplayed(selectable);
        return;
      }
      this.setVisible(selectable);
    };
    CheckboxSelectionComponent2.prototype.getIsVisible = function() {
      var _a47, _b;
      if (this.overrides) {
        return this.overrides.isVisible;
      }
      return (_b = (_a47 = this.column) === null || _a47 === void 0 ? void 0 : _a47.getColDef()) === null || _b === void 0 ? void 0 : _b.checkboxSelection;
    };
    __decorate39([
      RefSelector("eCheckbox")
    ], CheckboxSelectionComponent2.prototype, "eCheckbox", void 0);
    __decorate39([
      PostConstruct
    ], CheckboxSelectionComponent2.prototype, "postConstruct", null);
    return CheckboxSelectionComponent2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/dragAndDrop/dragAndDropService.js
var __extends39 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate40 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __values3 = function(o2) {
  var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0;
  if (m2)
    return m2.call(o2);
  if (o2 && typeof o2.length === "number")
    return {
      next: function() {
        if (o2 && i2 >= o2.length)
          o2 = void 0;
        return { value: o2 && o2[i2++], done: !o2 };
      }
    };
  throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var DragSourceType;
(function(DragSourceType2) {
  DragSourceType2[DragSourceType2["ToolPanel"] = 0] = "ToolPanel";
  DragSourceType2[DragSourceType2["HeaderCell"] = 1] = "HeaderCell";
  DragSourceType2[DragSourceType2["RowDrag"] = 2] = "RowDrag";
  DragSourceType2[DragSourceType2["ChartPanel"] = 3] = "ChartPanel";
})(DragSourceType || (DragSourceType = {}));
var VerticalDirection;
(function(VerticalDirection2) {
  VerticalDirection2[VerticalDirection2["Up"] = 0] = "Up";
  VerticalDirection2[VerticalDirection2["Down"] = 1] = "Down";
})(VerticalDirection || (VerticalDirection = {}));
var HorizontalDirection;
(function(HorizontalDirection2) {
  HorizontalDirection2[HorizontalDirection2["Left"] = 0] = "Left";
  HorizontalDirection2[HorizontalDirection2["Right"] = 1] = "Right";
})(HorizontalDirection || (HorizontalDirection = {}));
var DragAndDropService = (
  /** @class */
  function(_super) {
    __extends39(DragAndDropService2, _super);
    function DragAndDropService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.dragSourceAndParamsList = [];
      _this.dropTargets = [];
      return _this;
    }
    DragAndDropService_1 = DragAndDropService2;
    DragAndDropService2.prototype.init = function() {
      this.ePinnedIcon = createIcon("columnMovePin", this.gridOptionsService, null);
      this.eHideIcon = createIcon("columnMoveHide", this.gridOptionsService, null);
      this.eMoveIcon = createIcon("columnMoveMove", this.gridOptionsService, null);
      this.eLeftIcon = createIcon("columnMoveLeft", this.gridOptionsService, null);
      this.eRightIcon = createIcon("columnMoveRight", this.gridOptionsService, null);
      this.eGroupIcon = createIcon("columnMoveGroup", this.gridOptionsService, null);
      this.eAggregateIcon = createIcon("columnMoveValue", this.gridOptionsService, null);
      this.ePivotIcon = createIcon("columnMovePivot", this.gridOptionsService, null);
      this.eDropNotAllowedIcon = createIcon("dropNotAllowed", this.gridOptionsService, null);
    };
    DragAndDropService2.prototype.addDragSource = function(dragSource, allowTouch) {
      if (allowTouch === void 0) {
        allowTouch = false;
      }
      var params = {
        eElement: dragSource.eElement,
        dragStartPixels: dragSource.dragStartPixels,
        onDragStart: this.onDragStart.bind(this, dragSource),
        onDragStop: this.onDragStop.bind(this),
        onDragging: this.onDragging.bind(this)
      };
      this.dragSourceAndParamsList.push({ params, dragSource });
      this.dragService.addDragSource(params, allowTouch);
    };
    DragAndDropService2.prototype.removeDragSource = function(dragSource) {
      var sourceAndParams = this.dragSourceAndParamsList.find(function(item) {
        return item.dragSource === dragSource;
      });
      if (sourceAndParams) {
        this.dragService.removeDragSource(sourceAndParams.params);
        removeFromArray(this.dragSourceAndParamsList, sourceAndParams);
      }
    };
    DragAndDropService2.prototype.clearDragSourceParamsList = function() {
      var _this = this;
      this.dragSourceAndParamsList.forEach(function(sourceAndParams) {
        return _this.dragService.removeDragSource(sourceAndParams.params);
      });
      this.dragSourceAndParamsList.length = 0;
    };
    DragAndDropService2.prototype.nudge = function() {
      if (this.dragging) {
        this.onDragging(this.eventLastTime, true);
      }
    };
    DragAndDropService2.prototype.onDragStart = function(dragSource, mouseEvent) {
      this.dragging = true;
      this.dragSource = dragSource;
      this.eventLastTime = mouseEvent;
      this.dragItem = this.dragSource.getDragItem();
      this.lastDropTarget = this.dragSource.dragSourceDropTarget;
      if (this.dragSource.onDragStarted) {
        this.dragSource.onDragStarted();
      }
      this.createGhost();
    };
    DragAndDropService2.prototype.onDragStop = function(mouseEvent) {
      this.eventLastTime = null;
      this.dragging = false;
      if (this.dragSource.onDragStopped) {
        this.dragSource.onDragStopped();
      }
      if (this.lastDropTarget && this.lastDropTarget.onDragStop) {
        var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);
        this.lastDropTarget.onDragStop(draggingEvent);
      }
      this.lastDropTarget = null;
      this.dragItem = null;
      this.removeGhost();
    };
    DragAndDropService2.prototype.onDragging = function(mouseEvent, fromNudge) {
      var _this = this;
      var _a47, _b, _c, _d;
      var hDirection = this.getHorizontalDirection(mouseEvent);
      var vDirection = this.getVerticalDirection(mouseEvent);
      this.eventLastTime = mouseEvent;
      this.positionGhost(mouseEvent);
      var validDropTargets = this.dropTargets.filter(function(target) {
        return _this.isMouseOnDropTarget(mouseEvent, target);
      });
      var dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);
      if (dropTarget !== this.lastDropTarget) {
        this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);
        if (this.lastDropTarget !== null && dropTarget === null) {
          (_b = (_a47 = this.dragSource).onGridExit) === null || _b === void 0 ? void 0 : _b.call(_a47, this.dragItem);
        }
        if (this.lastDropTarget === null && dropTarget !== null) {
          (_d = (_c = this.dragSource).onGridEnter) === null || _d === void 0 ? void 0 : _d.call(_c, this.dragItem);
        }
        this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
        this.lastDropTarget = dropTarget;
      } else if (dropTarget && dropTarget.onDragging) {
        var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
        dropTarget.onDragging(draggingEvent);
      }
    };
    DragAndDropService2.prototype.getAllContainersFromDropTarget = function(dropTarget) {
      var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;
      var containers = [[dropTarget.getContainer()]];
      return secondaryContainers ? containers.concat(secondaryContainers) : containers;
    };
    DragAndDropService2.prototype.allContainersIntersect = function(mouseEvent, containers) {
      var e_1, _a47;
      try {
        for (var containers_1 = __values3(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {
          var container = containers_1_1.value;
          var rect = container.getBoundingClientRect();
          if (rect.width === 0 || rect.height === 0) {
            return false;
          }
          var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;
          var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;
          if (!horizontalFit || !verticalFit) {
            return false;
          }
        }
      } catch (e_1_1) {
        e_1 = { error: e_1_1 };
      } finally {
        try {
          if (containers_1_1 && !containers_1_1.done && (_a47 = containers_1.return))
            _a47.call(containers_1);
        } finally {
          if (e_1)
            throw e_1.error;
        }
      }
      return true;
    };
    DragAndDropService2.prototype.isMouseOnDropTarget = function(mouseEvent, dropTarget) {
      var e_2, _a47;
      var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);
      var mouseOverTarget = false;
      try {
        for (var allContainersFromDropTarget_1 = __values3(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {
          var currentContainers = allContainersFromDropTarget_1_1.value;
          if (this.allContainersIntersect(mouseEvent, currentContainers)) {
            mouseOverTarget = true;
            break;
          }
        }
      } catch (e_2_1) {
        e_2 = { error: e_2_1 };
      } finally {
        try {
          if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a47 = allContainersFromDropTarget_1.return))
            _a47.call(allContainersFromDropTarget_1);
        } finally {
          if (e_2)
            throw e_2.error;
        }
      }
      if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {
        return false;
      }
      return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);
    };
    DragAndDropService2.prototype.findCurrentDropTarget = function(mouseEvent, validDropTargets) {
      var e_3, _a47, e_4, _b;
      var len = validDropTargets.length;
      if (len === 0) {
        return null;
      }
      if (len === 1) {
        return validDropTargets[0];
      }
      var rootNode = this.gridOptionsService.getRootNode();
      var elementStack = rootNode.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);
      try {
        for (var elementStack_1 = __values3(elementStack), elementStack_1_1 = elementStack_1.next(); !elementStack_1_1.done; elementStack_1_1 = elementStack_1.next()) {
          var el = elementStack_1_1.value;
          try {
            for (var validDropTargets_1 = (e_4 = void 0, __values3(validDropTargets)), validDropTargets_1_1 = validDropTargets_1.next(); !validDropTargets_1_1.done; validDropTargets_1_1 = validDropTargets_1.next()) {
              var dropTarget = validDropTargets_1_1.value;
              var containers = flatten(this.getAllContainersFromDropTarget(dropTarget));
              if (containers.indexOf(el) !== -1) {
                return dropTarget;
              }
            }
          } catch (e_4_1) {
            e_4 = { error: e_4_1 };
          } finally {
            try {
              if (validDropTargets_1_1 && !validDropTargets_1_1.done && (_b = validDropTargets_1.return))
                _b.call(validDropTargets_1);
            } finally {
              if (e_4)
                throw e_4.error;
            }
          }
        }
      } catch (e_3_1) {
        e_3 = { error: e_3_1 };
      } finally {
        try {
          if (elementStack_1_1 && !elementStack_1_1.done && (_a47 = elementStack_1.return))
            _a47.call(elementStack_1);
        } finally {
          if (e_3)
            throw e_3.error;
        }
      }
      return null;
    };
    DragAndDropService2.prototype.enterDragTargetIfExists = function(dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {
      if (!dropTarget) {
        return;
      }
      if (dropTarget.onDragEnter) {
        var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
        dropTarget.onDragEnter(dragEnterEvent);
      }
      this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);
    };
    DragAndDropService2.prototype.leaveLastTargetIfExists = function(mouseEvent, hDirection, vDirection, fromNudge) {
      if (!this.lastDropTarget) {
        return;
      }
      if (this.lastDropTarget.onDragLeave) {
        var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);
        this.lastDropTarget.onDragLeave(dragLeaveEvent);
      }
      this.setGhostIcon(null);
    };
    DragAndDropService2.prototype.addDropTarget = function(dropTarget) {
      this.dropTargets.push(dropTarget);
    };
    DragAndDropService2.prototype.removeDropTarget = function(dropTarget) {
      this.dropTargets = this.dropTargets.filter(function(target) {
        return target.getContainer() !== dropTarget.getContainer();
      });
    };
    DragAndDropService2.prototype.hasExternalDropZones = function() {
      return this.dropTargets.some(function(zones) {
        return zones.external;
      });
    };
    DragAndDropService2.prototype.findExternalZone = function(params) {
      var externalTargets = this.dropTargets.filter(function(target) {
        return target.external;
      });
      return externalTargets.find(function(zone) {
        return zone.getContainer() === params.getContainer();
      }) || null;
    };
    DragAndDropService2.prototype.getHorizontalDirection = function(event) {
      var clientX = this.eventLastTime && this.eventLastTime.clientX;
      var eClientX = event.clientX;
      if (clientX === eClientX) {
        return null;
      }
      return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;
    };
    DragAndDropService2.prototype.getVerticalDirection = function(event) {
      var clientY = this.eventLastTime && this.eventLastTime.clientY;
      var eClientY = event.clientY;
      if (clientY === eClientY) {
        return null;
      }
      return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;
    };
    DragAndDropService2.prototype.createDropTargetEvent = function(dropTarget, event, hDirection, vDirection, fromNudge) {
      var dropZoneTarget = dropTarget.getContainer();
      var rect = dropZoneTarget.getBoundingClientRect();
      var _a47 = this, api = _a47.gridApi, columnApi = _a47.columnApi, dragItem = _a47.dragItem, dragSource = _a47.dragSource;
      var x2 = event.clientX - rect.left;
      var y2 = event.clientY - rect.top;
      return { event, x: x2, y: y2, vDirection, hDirection, dragSource, fromNudge, dragItem, api, columnApi, dropZoneTarget };
    };
    DragAndDropService2.prototype.positionGhost = function(event) {
      var ghost = this.eGhost;
      if (!ghost) {
        return;
      }
      var ghostRect = ghost.getBoundingClientRect();
      var ghostHeight = ghostRect.height;
      var browserWidth = getBodyWidth() - 2;
      var browserHeight = getBodyHeight() - 2;
      var top = event.pageY - ghostHeight / 2;
      var left = event.pageX - 10;
      var eDocument = this.gridOptionsService.getDocument();
      var win = eDocument.defaultView || window;
      var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;
      var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;
      if (browserWidth > 0 && left + ghost.clientWidth > browserWidth + windowScrollX) {
        left = browserWidth + windowScrollX - ghost.clientWidth;
      }
      if (left < 0) {
        left = 0;
      }
      if (browserHeight > 0 && top + ghost.clientHeight > browserHeight + windowScrollY) {
        top = browserHeight + windowScrollY - ghost.clientHeight;
      }
      if (top < 0) {
        top = 0;
      }
      ghost.style.left = left + "px";
      ghost.style.top = top + "px";
    };
    DragAndDropService2.prototype.removeGhost = function() {
      if (this.eGhost && this.eGhostParent) {
        this.eGhostParent.removeChild(this.eGhost);
      }
      this.eGhost = null;
    };
    DragAndDropService2.prototype.createGhost = function() {
      this.eGhost = loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);
      this.mouseEventService.stampTopLevelGridCompWithGridInstance(this.eGhost);
      var theme = this.environment.getTheme().theme;
      if (theme) {
        this.eGhost.classList.add(theme);
      }
      this.eGhostIcon = this.eGhost.querySelector(".ag-dnd-ghost-icon");
      this.setGhostIcon(null);
      var eText = this.eGhost.querySelector(".ag-dnd-ghost-label");
      var dragItemName = this.dragSource.dragItemName;
      if (isFunction2(dragItemName)) {
        dragItemName = dragItemName();
      }
      eText.innerHTML = escapeString(dragItemName) || "";
      this.eGhost.style.height = "25px";
      this.eGhost.style.top = "20px";
      this.eGhost.style.left = "20px";
      var eDocument = this.gridOptionsService.getDocument();
      var targetEl = null;
      try {
        targetEl = eDocument.fullscreenElement;
      } catch (e2) {
      } finally {
        if (!targetEl) {
          var rootNode = this.gridOptionsService.getRootNode();
          var body = rootNode.querySelector("body");
          if (body) {
            targetEl = body;
          } else if (rootNode instanceof ShadowRoot) {
            targetEl = rootNode;
          } else {
            targetEl = rootNode === null || rootNode === void 0 ? void 0 : rootNode.documentElement;
          }
        }
      }
      this.eGhostParent = targetEl;
      if (!this.eGhostParent) {
        console.warn("AG Grid: could not find document body, it is needed for dragging columns");
      } else {
        this.eGhostParent.appendChild(this.eGhost);
      }
    };
    DragAndDropService2.prototype.setGhostIcon = function(iconName, shake) {
      if (shake === void 0) {
        shake = false;
      }
      clearElement(this.eGhostIcon);
      var eIcon = null;
      if (!iconName) {
        iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;
      }
      switch (iconName) {
        case DragAndDropService_1.ICON_PINNED:
          eIcon = this.ePinnedIcon;
          break;
        case DragAndDropService_1.ICON_MOVE:
          eIcon = this.eMoveIcon;
          break;
        case DragAndDropService_1.ICON_LEFT:
          eIcon = this.eLeftIcon;
          break;
        case DragAndDropService_1.ICON_RIGHT:
          eIcon = this.eRightIcon;
          break;
        case DragAndDropService_1.ICON_GROUP:
          eIcon = this.eGroupIcon;
          break;
        case DragAndDropService_1.ICON_AGGREGATE:
          eIcon = this.eAggregateIcon;
          break;
        case DragAndDropService_1.ICON_PIVOT:
          eIcon = this.ePivotIcon;
          break;
        case DragAndDropService_1.ICON_NOT_ALLOWED:
          eIcon = this.eDropNotAllowedIcon;
          break;
        case DragAndDropService_1.ICON_HIDE:
          eIcon = this.eHideIcon;
          break;
      }
      this.eGhostIcon.classList.toggle("ag-shake-left-to-right", shake);
      if (eIcon === this.eHideIcon && this.gridOptionsService.is("suppressDragLeaveHidesColumns")) {
        return;
      }
      if (eIcon) {
        this.eGhostIcon.appendChild(eIcon);
      }
    };
    var DragAndDropService_1;
    DragAndDropService2.ICON_PINNED = "pinned";
    DragAndDropService2.ICON_MOVE = "move";
    DragAndDropService2.ICON_LEFT = "left";
    DragAndDropService2.ICON_RIGHT = "right";
    DragAndDropService2.ICON_GROUP = "group";
    DragAndDropService2.ICON_AGGREGATE = "aggregate";
    DragAndDropService2.ICON_PIVOT = "pivot";
    DragAndDropService2.ICON_NOT_ALLOWED = "notAllowed";
    DragAndDropService2.ICON_HIDE = "hide";
    DragAndDropService2.GHOST_TEMPLATE = '<div class="ag-dnd-ghost ag-unselectable">\n            <span class="ag-dnd-ghost-icon ag-shake-left-to-right"></span>\n            <div class="ag-dnd-ghost-label"></div>\n        </div>';
    __decorate40([
      Autowired("dragService")
    ], DragAndDropService2.prototype, "dragService", void 0);
    __decorate40([
      Autowired("mouseEventService")
    ], DragAndDropService2.prototype, "mouseEventService", void 0);
    __decorate40([
      Autowired("columnApi")
    ], DragAndDropService2.prototype, "columnApi", void 0);
    __decorate40([
      Autowired("gridApi")
    ], DragAndDropService2.prototype, "gridApi", void 0);
    __decorate40([
      PostConstruct
    ], DragAndDropService2.prototype, "init", null);
    __decorate40([
      PreDestroy
    ], DragAndDropService2.prototype, "clearDragSourceParamsList", null);
    DragAndDropService2 = DragAndDropService_1 = __decorate40([
      Bean("dragAndDropService")
    ], DragAndDropService2);
    return DragAndDropService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowDragComp.js
var __extends40 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate41 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RowDragComp = (
  /** @class */
  function(_super) {
    __extends40(RowDragComp2, _super);
    function RowDragComp2(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {
      var _this = _super.call(this) || this;
      _this.cellValueFn = cellValueFn;
      _this.rowNode = rowNode;
      _this.column = column;
      _this.customGui = customGui;
      _this.dragStartPixels = dragStartPixels;
      _this.suppressVisibilityChange = suppressVisibilityChange;
      _this.dragSource = null;
      return _this;
    }
    RowDragComp2.prototype.isCustomGui = function() {
      return this.customGui != null;
    };
    RowDragComp2.prototype.postConstruct = function() {
      if (!this.customGui) {
        this.setTemplate(
          /* html */
          '<div class="ag-drag-handle ag-row-drag" aria-hidden="true"></div>'
        );
        this.getGui().appendChild(createIconNoSpan("rowDrag", this.beans.gridOptionsService, null));
        this.addDragSource();
      } else {
        this.setDragElement(this.customGui, this.dragStartPixels);
      }
      this.checkCompatibility();
      if (!this.suppressVisibilityChange) {
        var strategy = this.beans.gridOptionsService.is("rowDragManaged") ? new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) : new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);
        this.createManagedBean(strategy, this.beans.context);
      }
    };
    RowDragComp2.prototype.setDragElement = function(dragElement, dragStartPixels) {
      this.setTemplateFromElement(dragElement);
      this.addDragSource(dragStartPixels);
    };
    RowDragComp2.prototype.getSelectedNodes = function() {
      var isRowDragMultiRow = this.beans.gridOptionsService.is("rowDragMultiRow");
      if (!isRowDragMultiRow) {
        return [this.rowNode];
      }
      var selection = this.beans.selectionService.getSelectedNodes();
      return selection.indexOf(this.rowNode) !== -1 ? selection : [this.rowNode];
    };
    RowDragComp2.prototype.checkCompatibility = function() {
      var managed = this.beans.gridOptionsService.is("rowDragManaged");
      var treeData = this.beans.gridOptionsService.isTreeData();
      if (treeData && managed) {
        doOnce(function() {
          return console.warn("AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true");
        }, "RowDragComp.managedAndTreeData");
      }
    };
    RowDragComp2.prototype.getDragItem = function() {
      return {
        rowNode: this.rowNode,
        rowNodes: this.getSelectedNodes(),
        columns: this.column ? [this.column] : void 0,
        defaultTextValue: this.cellValueFn()
      };
    };
    RowDragComp2.prototype.getRowDragText = function(column) {
      if (column) {
        var colDef = column.getColDef();
        if (colDef.rowDragText) {
          return colDef.rowDragText;
        }
      }
      return this.gridOptionsService.get("rowDragText");
    };
    RowDragComp2.prototype.addDragSource = function(dragStartPixels) {
      var _this = this;
      if (dragStartPixels === void 0) {
        dragStartPixels = 4;
      }
      if (this.dragSource) {
        this.removeDragSource();
      }
      var rowDragText = this.getRowDragText(this.column);
      var translate = this.localeService.getLocaleTextFunc();
      this.dragSource = {
        type: DragSourceType.RowDrag,
        eElement: this.getGui(),
        dragItemName: function() {
          var _a47;
          var dragItem = _this.getDragItem();
          var dragItemCount = ((_a47 = dragItem.rowNodes) === null || _a47 === void 0 ? void 0 : _a47.length) || 1;
          if (rowDragText) {
            return rowDragText(dragItem, dragItemCount);
          }
          return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + " " + translate("rowDragRows", "rows");
        },
        getDragItem: function() {
          return _this.getDragItem();
        },
        dragStartPixels,
        dragSourceDomDataKey: this.beans.gridOptionsService.getDomDataKey()
      };
      this.beans.dragAndDropService.addDragSource(this.dragSource, true);
    };
    RowDragComp2.prototype.removeDragSource = function() {
      if (this.dragSource) {
        this.beans.dragAndDropService.removeDragSource(this.dragSource);
      }
      this.dragSource = null;
    };
    __decorate41([
      Autowired("beans")
    ], RowDragComp2.prototype, "beans", void 0);
    __decorate41([
      PostConstruct
    ], RowDragComp2.prototype, "postConstruct", null);
    __decorate41([
      PreDestroy
    ], RowDragComp2.prototype, "removeDragSource", null);
    return RowDragComp2;
  }(Component2)
);
var VisibilityStrategy = (
  /** @class */
  function(_super) {
    __extends40(VisibilityStrategy2, _super);
    function VisibilityStrategy2(parent2, rowNode, column) {
      var _this = _super.call(this) || this;
      _this.parent = parent2;
      _this.rowNode = rowNode;
      _this.column = column;
      return _this;
    }
    VisibilityStrategy2.prototype.setDisplayedOrVisible = function(neverDisplayed) {
      var displayedOptions = { skipAriaHidden: true };
      if (neverDisplayed) {
        this.parent.setDisplayed(false, displayedOptions);
      } else {
        var shown = true;
        var isShownSometimes = false;
        if (this.column) {
          shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();
          isShownSometimes = isFunction2(this.column.getColDef().rowDrag);
        }
        if (isShownSometimes) {
          this.parent.setDisplayed(true, displayedOptions);
          this.parent.setVisible(shown, displayedOptions);
        } else {
          this.parent.setDisplayed(shown, displayedOptions);
          this.parent.setVisible(true, displayedOptions);
        }
      }
    };
    return VisibilityStrategy2;
  }(BeanStub)
);
var NonManagedVisibilityStrategy = (
  /** @class */
  function(_super) {
    __extends40(NonManagedVisibilityStrategy2, _super);
    function NonManagedVisibilityStrategy2(parent2, beans, rowNode, column) {
      var _this = _super.call(this, parent2, rowNode, column) || this;
      _this.beans = beans;
      return _this;
    }
    NonManagedVisibilityStrategy2.prototype.postConstruct = function() {
      this.addManagedPropertyListener("suppressRowDrag", this.onSuppressRowDrag.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));
      this.workOutVisibility();
    };
    NonManagedVisibilityStrategy2.prototype.onSuppressRowDrag = function() {
      this.workOutVisibility();
    };
    NonManagedVisibilityStrategy2.prototype.workOutVisibility = function() {
      var neverDisplayed = this.beans.gridOptionsService.is("suppressRowDrag");
      this.setDisplayedOrVisible(neverDisplayed);
    };
    __decorate41([
      PostConstruct
    ], NonManagedVisibilityStrategy2.prototype, "postConstruct", null);
    return NonManagedVisibilityStrategy2;
  }(VisibilityStrategy)
);
var ManagedVisibilityStrategy = (
  /** @class */
  function(_super) {
    __extends40(ManagedVisibilityStrategy2, _super);
    function ManagedVisibilityStrategy2(parent2, beans, rowNode, column) {
      var _this = _super.call(this, parent2, rowNode, column) || this;
      _this.beans = beans;
      return _this;
    }
    ManagedVisibilityStrategy2.prototype.postConstruct = function() {
      this.addManagedListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
      this.addManagedPropertyListener("suppressRowDrag", this.onSuppressRowDrag.bind(this));
      this.workOutVisibility();
    };
    ManagedVisibilityStrategy2.prototype.onSuppressRowDrag = function() {
      this.workOutVisibility();
    };
    ManagedVisibilityStrategy2.prototype.workOutVisibility = function() {
      var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();
      var rowDragFeature = gridBodyCon.getRowDragFeature();
      var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();
      var suppressRowDrag = this.beans.gridOptionsService.is("suppressRowDrag");
      var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();
      var neverDisplayed = shouldPreventRowMove && !hasExternalDropZones || suppressRowDrag;
      this.setDisplayedOrVisible(neverDisplayed);
    };
    __decorate41([
      PostConstruct
    ], ManagedVisibilityStrategy2.prototype, "postConstruct", null);
    return ManagedVisibilityStrategy2;
  }(VisibilityStrategy)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/groupCellRendererCtrl.js
var __extends41 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign11 = function() {
  __assign11 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign11.apply(this, arguments);
};
var __decorate42 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GroupCellRendererCtrl = (
  /** @class */
  function(_super) {
    __extends41(GroupCellRendererCtrl2, _super);
    function GroupCellRendererCtrl2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    GroupCellRendererCtrl2.prototype.init = function(comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {
      this.params = params;
      this.eGui = eGui;
      this.eCheckbox = eCheckbox;
      this.eExpanded = eExpanded;
      this.eContracted = eContracted;
      this.comp = comp;
      this.compClass = compClass;
      var topLevelFooter = this.isTopLevelFooter();
      var embeddedRowMismatch = this.isEmbeddedRowMismatch();
      var nullValue = params.value == null;
      var skipCell = false;
      if (this.gridOptionsService.is("groupIncludeFooter") && this.gridOptionsService.is("groupHideOpenParents")) {
        var node = params.node;
        if (node.footer) {
          var showRowGroup = params.colDef && params.colDef.showRowGroup;
          var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();
          skipCell = showRowGroup !== rowGroupColumnId;
        }
      }
      this.cellIsBlank = topLevelFooter ? false : embeddedRowMismatch || nullValue || skipCell;
      if (this.cellIsBlank) {
        return;
      }
      this.setupShowingValueForOpenedParent();
      this.findDisplayedGroupNode();
      this.addFullWidthRowDraggerIfNeeded();
      this.addExpandAndContract();
      this.addCheckboxIfNeeded();
      this.addValueElement();
      this.setupIndent();
      this.refreshAriaExpanded();
    };
    GroupCellRendererCtrl2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
      this.expandListener = null;
    };
    GroupCellRendererCtrl2.prototype.refreshAriaExpanded = function() {
      var _a47 = this.params, node = _a47.node, eParentOfValue = _a47.eParentOfValue;
      if (this.expandListener) {
        this.expandListener = this.expandListener();
      }
      if (!this.isExpandable()) {
        removeAriaExpanded(eParentOfValue);
        return;
      }
      var listener = function() {
        setAriaExpanded(eParentOfValue, !!node.expanded);
      };
      this.expandListener = this.addManagedListener(node, RowNode.EVENT_EXPANDED_CHANGED, listener) || null;
      listener();
    };
    GroupCellRendererCtrl2.prototype.isTopLevelFooter = function() {
      if (!this.gridOptionsService.is("groupIncludeTotalFooter")) {
        return false;
      }
      if (this.params.value != null || this.params.node.level != -1) {
        return false;
      }
      var colDef = this.params.colDef;
      var doingFullWidth = colDef == null;
      if (doingFullWidth) {
        return true;
      }
      if (colDef.showRowGroup === true) {
        return true;
      }
      var rowGroupCols = this.columnModel.getRowGroupColumns();
      if (!rowGroupCols || rowGroupCols.length === 0) {
        return true;
      }
      var firstRowGroupCol = rowGroupCols[0];
      return firstRowGroupCol.getId() === colDef.showRowGroup;
    };
    GroupCellRendererCtrl2.prototype.isEmbeddedRowMismatch = function() {
      if (!this.params.fullWidth || !this.gridOptionsService.is("embedFullWidthRows")) {
        return false;
      }
      var pinnedLeftCell = this.params.pinned === "left";
      var pinnedRightCell = this.params.pinned === "right";
      var bodyCell = !pinnedLeftCell && !pinnedRightCell;
      if (this.gridOptionsService.is("enableRtl")) {
        if (this.columnModel.isPinningLeft()) {
          return !pinnedRightCell;
        }
        return !bodyCell;
      }
      if (this.columnModel.isPinningLeft()) {
        return !pinnedLeftCell;
      }
      return !bodyCell;
    };
    GroupCellRendererCtrl2.prototype.findDisplayedGroupNode = function() {
      var column = this.params.column;
      var rowNode = this.params.node;
      if (this.showingValueForOpenedParent) {
        var pointer = rowNode.parent;
        while (pointer != null) {
          if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {
            this.displayedGroupNode = pointer;
            break;
          }
          pointer = pointer.parent;
        }
      }
      if (missing(this.displayedGroupNode)) {
        this.displayedGroupNode = rowNode;
      }
    };
    GroupCellRendererCtrl2.prototype.setupShowingValueForOpenedParent = function() {
      var rowNode = this.params.node;
      var column = this.params.column;
      if (!this.gridOptionsService.is("groupHideOpenParents")) {
        this.showingValueForOpenedParent = false;
        return;
      }
      if (!rowNode.groupData) {
        this.showingValueForOpenedParent = false;
        return;
      }
      var showingGroupNode = rowNode.rowGroupColumn != null;
      if (showingGroupNode) {
        var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();
        var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);
        if (configuredToShowThisGroupLevel) {
          this.showingValueForOpenedParent = false;
          return;
        }
      }
      var valPresent = rowNode.groupData[column.getId()] != null;
      this.showingValueForOpenedParent = valPresent;
    };
    GroupCellRendererCtrl2.prototype.addValueElement = function() {
      if (this.displayedGroupNode.footer) {
        this.addFooterValue();
      } else {
        this.addGroupValue();
        this.addChildCount();
      }
    };
    GroupCellRendererCtrl2.prototype.addGroupValue = function() {
      var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();
      var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);
      var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;
      var valueWhenNoRenderer = valueFormatted;
      if (valueWhenNoRenderer == null) {
        if (value === "" && this.params.node.group) {
          var localeTextFunc = this.localeService.getLocaleTextFunc();
          valueWhenNoRenderer = localeTextFunc("blanks", "(Blanks)");
        } else {
          valueWhenNoRenderer = value;
        }
      }
      this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);
    };
    GroupCellRendererCtrl2.prototype.adjustParamsWithDetailsFromRelatedColumn = function() {
      var relatedColumn = this.displayedGroupNode.rowGroupColumn;
      var column = this.params.column;
      if (!relatedColumn) {
        return this.params;
      }
      var notFullWidth = column != null;
      if (notFullWidth) {
        var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());
        if (!showingThisRowGroup) {
          return this.params;
        }
      }
      var params = this.params;
      var _a47 = this.params, value = _a47.value, node = _a47.node;
      var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, value);
      var paramsAdjusted = __assign11(__assign11({}, params), { valueFormatted });
      return paramsAdjusted;
    };
    GroupCellRendererCtrl2.prototype.addFooterValue = function() {
      var footerValueGetter = this.params.footerValueGetter;
      var footerValue = "";
      if (footerValueGetter) {
        var paramsClone = cloneObject(this.params);
        paramsClone.value = this.params.value;
        if (typeof footerValueGetter === "function") {
          footerValue = footerValueGetter(paramsClone);
        } else if (typeof footerValueGetter === "string") {
          footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);
        } else {
          console.warn("AG Grid: footerValueGetter should be either a function or a string (expression)");
        }
      } else {
        footerValue = "Total " + (this.params.value != null ? this.params.value : "");
      }
      var innerCompDetails = this.getInnerCompDetails(this.params);
      this.comp.setInnerRenderer(innerCompDetails, footerValue);
    };
    GroupCellRendererCtrl2.prototype.getInnerCompDetails = function(params) {
      var _this = this;
      if (params.fullWidth) {
        return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptionsService.get("groupRowRendererParams"), params);
      }
      var innerCompDetails = this.userComponentFactory.getInnerRendererDetails(params, params);
      var isGroupRowRenderer = function(details) {
        return details && details.componentClass == _this.compClass;
      };
      if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {
        return innerCompDetails;
      }
      var relatedColumn = this.displayedGroupNode.rowGroupColumn;
      var relatedColDef = relatedColumn ? relatedColumn.getColDef() : void 0;
      if (!relatedColDef) {
        return;
      }
      var relatedCompDetails = this.userComponentFactory.getCellRendererDetails(relatedColDef, params);
      if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {
        return relatedCompDetails;
      }
      if (isGroupRowRenderer(relatedCompDetails) && relatedColDef.cellRendererParams && relatedColDef.cellRendererParams.innerRenderer) {
        var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);
        return res;
      }
    };
    GroupCellRendererCtrl2.prototype.addChildCount = function() {
      if (this.params.suppressCount) {
        return;
      }
      this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));
      this.updateChildCount();
    };
    GroupCellRendererCtrl2.prototype.updateChildCount = function() {
      var allChildrenCount = this.displayedGroupNode.allChildrenCount;
      var showingGroupForThisNode = this.isShowRowGroupForThisRow();
      var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;
      var countString = showCount ? "(" + allChildrenCount + ")" : "";
      this.comp.setChildCount(countString);
    };
    GroupCellRendererCtrl2.prototype.isShowRowGroupForThisRow = function() {
      if (this.gridOptionsService.isTreeData()) {
        return true;
      }
      var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;
      if (!rowGroupColumn) {
        return false;
      }
      var column = this.params.column;
      var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());
      return thisColumnIsInterested;
    };
    GroupCellRendererCtrl2.prototype.addExpandAndContract = function() {
      var params = this.params;
      var eExpandedIcon = createIconNoSpan("groupExpanded", this.gridOptionsService, null);
      var eContractedIcon = createIconNoSpan("groupContracted", this.gridOptionsService, null);
      if (eExpandedIcon) {
        this.eExpanded.appendChild(eExpandedIcon);
      }
      if (eContractedIcon) {
        this.eContracted.appendChild(eContractedIcon);
      }
      var eGroupCell = params.eGridCell;
      if (!this.gridOptionsService.is("enableGroupEdit") && this.isExpandable() && !params.suppressDoubleClickExpand) {
        this.addManagedListener(eGroupCell, "dblclick", this.onCellDblClicked.bind(this));
      }
      this.addManagedListener(this.eExpanded, "click", this.onExpandClicked.bind(this));
      this.addManagedListener(this.eContracted, "click", this.onExpandClicked.bind(this));
      this.addManagedListener(eGroupCell, "keydown", this.onKeyDown.bind(this));
      this.addManagedListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));
      this.showExpandAndContractIcons();
      var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);
      this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);
      this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_MASTER_CHANGED, expandableChangedListener);
      this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_GROUP_CHANGED, expandableChangedListener);
      this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);
    };
    GroupCellRendererCtrl2.prototype.onExpandClicked = function(mouseEvent) {
      if (isStopPropagationForAgGrid(mouseEvent)) {
        return;
      }
      stopPropagationForAgGrid(mouseEvent);
      this.onExpandOrContract(mouseEvent);
    };
    GroupCellRendererCtrl2.prototype.onExpandOrContract = function(e2) {
      var rowNode = this.displayedGroupNode;
      var nextExpandState = !rowNode.expanded;
      if (!nextExpandState && rowNode.sticky) {
        this.scrollToStickyNode(rowNode);
      }
      rowNode.setExpanded(nextExpandState, e2);
    };
    GroupCellRendererCtrl2.prototype.scrollToStickyNode = function(rowNode) {
      var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();
      var scrollFeature = gridBodyCtrl.getScrollFeature();
      scrollFeature.setVerticalScrollPosition(rowNode.rowTop - rowNode.stickyRowTop);
    };
    GroupCellRendererCtrl2.prototype.isExpandable = function() {
      if (this.showingValueForOpenedParent) {
        return true;
      }
      var rowNode = this.displayedGroupNode;
      var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;
      var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;
      if (!expandableGroup) {
        return false;
      }
      var column = this.params.column;
      var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === "string";
      if (displayingForOneColumnOnly) {
        var showing = this.isShowRowGroupForThisRow();
        return showing;
      }
      return true;
    };
    GroupCellRendererCtrl2.prototype.showExpandAndContractIcons = function() {
      var _a47 = this, params = _a47.params, displayedGroup = _a47.displayedGroupNode, columnModel = _a47.columnModel;
      var node = params.node;
      var isExpandable = this.isExpandable();
      if (isExpandable) {
        var expanded = this.showingValueForOpenedParent ? true : node.expanded;
        this.comp.setExpandedDisplayed(expanded);
        this.comp.setContractedDisplayed(!expanded);
      } else {
        this.comp.setExpandedDisplayed(false);
        this.comp.setContractedDisplayed(false);
      }
      var pivotMode = columnModel.isPivotMode();
      var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;
      var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;
      var isTotalFooterNode = node.footer && node.level === -1;
      this.comp.addOrRemoveCssClass("ag-cell-expandable", addExpandableCss);
      this.comp.addOrRemoveCssClass("ag-row-group", addExpandableCss);
      if (pivotMode) {
        this.comp.addOrRemoveCssClass("ag-pivot-leaf-group", pivotModeAndLeafGroup);
      } else if (!isTotalFooterNode) {
        this.comp.addOrRemoveCssClass("ag-row-group-leaf-indent", !addExpandableCss);
      }
    };
    GroupCellRendererCtrl2.prototype.onRowNodeIsExpandableChanged = function() {
      this.showExpandAndContractIcons();
      this.setIndent();
      this.refreshAriaExpanded();
    };
    GroupCellRendererCtrl2.prototype.setupIndent = function() {
      var node = this.params.node;
      var suppressPadding = this.params.suppressPadding;
      if (!suppressPadding) {
        this.addManagedListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));
        this.setIndent();
      }
    };
    GroupCellRendererCtrl2.prototype.setIndent = function() {
      if (this.gridOptionsService.is("groupHideOpenParents")) {
        return;
      }
      var params = this.params;
      var rowNode = params.node;
      var fullWithRow = !!params.colDef;
      var treeData = this.gridOptionsService.isTreeData();
      var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;
      var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;
      if (this.indentClass) {
        this.comp.addOrRemoveCssClass(this.indentClass, false);
      }
      this.indentClass = "ag-row-group-indent-" + paddingCount;
      this.comp.addOrRemoveCssClass(this.indentClass, true);
    };
    GroupCellRendererCtrl2.prototype.addFullWidthRowDraggerIfNeeded = function() {
      var _this = this;
      if (!this.params.fullWidth || !this.params.rowDrag) {
        return;
      }
      var rowDragComp = new RowDragComp(function() {
        return _this.params.value;
      }, this.params.node);
      this.createManagedBean(rowDragComp, this.context);
      this.eGui.insertAdjacentElement("afterbegin", rowDragComp.getGui());
    };
    GroupCellRendererCtrl2.prototype.isUserWantsSelected = function() {
      var paramsCheckbox = this.params.checkbox;
      return typeof paramsCheckbox === "function" || paramsCheckbox === true;
    };
    GroupCellRendererCtrl2.prototype.addCheckboxIfNeeded = function() {
      var _this = this;
      var rowNode = this.displayedGroupNode;
      var checkboxNeeded = this.isUserWantsSelected() && // footers cannot be selected
      !rowNode.footer && // pinned rows cannot be selected
      !rowNode.rowPinned && // details cannot be selected
      !rowNode.detail;
      if (checkboxNeeded) {
        var cbSelectionComponent_1 = new CheckboxSelectionComponent();
        this.getContext().createBean(cbSelectionComponent_1);
        cbSelectionComponent_1.init({
          rowNode,
          column: this.params.column,
          overrides: {
            isVisible: this.params.checkbox,
            callbackParams: this.params,
            removeHidden: true
          }
        });
        this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());
        this.addDestroyFunc(function() {
          return _this.getContext().destroyBean(cbSelectionComponent_1);
        });
      }
      this.comp.setCheckboxVisible(checkboxNeeded);
    };
    GroupCellRendererCtrl2.prototype.onKeyDown = function(event) {
      var enterKeyPressed = event.key === KeyCode.ENTER;
      if (!enterKeyPressed || this.params.suppressEnterExpand) {
        return;
      }
      var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);
      if (cellEditable) {
        return;
      }
      this.onExpandOrContract(event);
    };
    GroupCellRendererCtrl2.prototype.onCellDblClicked = function(mouseEvent) {
      if (isStopPropagationForAgGrid(mouseEvent)) {
        return;
      }
      var targetIsExpandIcon = isElementInEventPath(this.eExpanded, mouseEvent) || isElementInEventPath(this.eContracted, mouseEvent);
      if (!targetIsExpandIcon) {
        this.onExpandOrContract(mouseEvent);
      }
    };
    __decorate42([
      Autowired("expressionService")
    ], GroupCellRendererCtrl2.prototype, "expressionService", void 0);
    __decorate42([
      Autowired("valueFormatterService")
    ], GroupCellRendererCtrl2.prototype, "valueFormatterService", void 0);
    __decorate42([
      Autowired("columnModel")
    ], GroupCellRendererCtrl2.prototype, "columnModel", void 0);
    __decorate42([
      Autowired("userComponentFactory")
    ], GroupCellRendererCtrl2.prototype, "userComponentFactory", void 0);
    __decorate42([
      Autowired("ctrlsService")
    ], GroupCellRendererCtrl2.prototype, "ctrlsService", void 0);
    return GroupCellRendererCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/groupCellRenderer.js
var __extends42 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate43 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GroupCellRenderer = (
  /** @class */
  function(_super) {
    __extends42(GroupCellRenderer2, _super);
    function GroupCellRenderer2() {
      return _super.call(this, GroupCellRenderer2.TEMPLATE) || this;
    }
    GroupCellRenderer2.prototype.init = function(params) {
      var _this = this;
      var compProxy = {
        setInnerRenderer: function(compDetails, valueToDisplay) {
          return _this.setRenderDetails(compDetails, valueToDisplay);
        },
        setChildCount: function(count) {
          return _this.eChildCount.innerHTML = count;
        },
        addOrRemoveCssClass: function(cssClass, value) {
          return _this.addOrRemoveCssClass(cssClass, value);
        },
        setContractedDisplayed: function(expanded) {
          return setDisplayed(_this.eContracted, expanded);
        },
        setExpandedDisplayed: function(expanded) {
          return setDisplayed(_this.eExpanded, expanded);
        },
        setCheckboxVisible: function(visible) {
          return _this.eCheckbox.classList.toggle("ag-invisible", !visible);
        }
      };
      var ctrl = this.createManagedBean(new GroupCellRendererCtrl());
      var fullWidth = !params.colDef;
      var eGui = this.getGui();
      ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);
      if (fullWidth) {
        setAriaRole(eGui, "gridcell");
      }
    };
    GroupCellRenderer2.prototype.setRenderDetails = function(compDetails, valueToDisplay) {
      var _this = this;
      if (compDetails) {
        var componentPromise = compDetails.newAgStackInstance();
        if (!componentPromise) {
          return;
        }
        componentPromise.then(function(comp) {
          if (!comp) {
            return;
          }
          var destroyComp = function() {
            return _this.context.destroyBean(comp);
          };
          if (_this.isAlive()) {
            _this.eValue.appendChild(comp.getGui());
            _this.addDestroyFunc(destroyComp);
          } else {
            destroyComp();
          }
        });
      } else {
        this.eValue.innerText = valueToDisplay;
      }
    };
    GroupCellRenderer2.prototype.destroy = function() {
      this.getContext().destroyBean(this.innerCellRenderer);
      _super.prototype.destroy.call(this);
    };
    GroupCellRenderer2.prototype.refresh = function() {
      return false;
    };
    GroupCellRenderer2.TEMPLATE = '<span class="ag-cell-wrapper">\n            <span class="ag-group-expanded" ref="eExpanded"></span>\n            <span class="ag-group-contracted" ref="eContracted"></span>\n            <span class="ag-group-checkbox ag-invisible" ref="eCheckbox"></span>\n            <span class="ag-group-value" ref="eValue"></span>\n            <span class="ag-group-child-count" ref="eChildCount"></span>\n        </span>';
    __decorate43([
      RefSelector("eExpanded")
    ], GroupCellRenderer2.prototype, "eExpanded", void 0);
    __decorate43([
      RefSelector("eContracted")
    ], GroupCellRenderer2.prototype, "eContracted", void 0);
    __decorate43([
      RefSelector("eCheckbox")
    ], GroupCellRenderer2.prototype, "eCheckbox", void 0);
    __decorate43([
      RefSelector("eValue")
    ], GroupCellRenderer2.prototype, "eValue", void 0);
    __decorate43([
      RefSelector("eChildCount")
    ], GroupCellRenderer2.prototype, "eChildCount", void 0);
    return GroupCellRenderer2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/loadingCellRenderer.js
var __extends43 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate44 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var LoadingCellRenderer = (
  /** @class */
  function(_super) {
    __extends43(LoadingCellRenderer2, _super);
    function LoadingCellRenderer2() {
      return _super.call(this, LoadingCellRenderer2.TEMPLATE) || this;
    }
    LoadingCellRenderer2.prototype.init = function(params) {
      params.node.failedLoad ? this.setupFailed() : this.setupLoading();
    };
    LoadingCellRenderer2.prototype.setupFailed = function() {
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      this.eLoadingText.innerText = localeTextFunc("loadingError", "ERR");
    };
    LoadingCellRenderer2.prototype.setupLoading = function() {
      var eLoadingIcon = createIconNoSpan("groupLoading", this.gridOptionsService, null);
      if (eLoadingIcon) {
        this.eLoadingIcon.appendChild(eLoadingIcon);
      }
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      this.eLoadingText.innerText = localeTextFunc("loadingOoo", "Loading");
    };
    LoadingCellRenderer2.prototype.refresh = function(params) {
      return false;
    };
    LoadingCellRenderer2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    LoadingCellRenderer2.TEMPLATE = '<div class="ag-loading">\n            <span class="ag-loading-icon" ref="eLoadingIcon"></span>\n            <span class="ag-loading-text" ref="eLoadingText"></span>\n        </div>';
    __decorate44([
      RefSelector("eLoadingIcon")
    ], LoadingCellRenderer2.prototype, "eLoadingIcon", void 0);
    __decorate44([
      RefSelector("eLoadingText")
    ], LoadingCellRenderer2.prototype, "eLoadingText", void 0);
    return LoadingCellRenderer2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/overlays/loadingOverlayComponent.js
var __extends44 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var LoadingOverlayComponent = (
  /** @class */
  function(_super) {
    __extends44(LoadingOverlayComponent3, _super);
    function LoadingOverlayComponent3() {
      return _super.call(this) || this;
    }
    LoadingOverlayComponent3.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    LoadingOverlayComponent3.prototype.init = function(params) {
      var _a47;
      var template = (_a47 = this.gridOptionsService.get("overlayLoadingTemplate")) !== null && _a47 !== void 0 ? _a47 : LoadingOverlayComponent3.DEFAULT_LOADING_OVERLAY_TEMPLATE;
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      var localisedTemplate = template.replace("[LOADING...]", localeTextFunc("loadingOoo", "Loading..."));
      this.setTemplate(localisedTemplate);
    };
    LoadingOverlayComponent3.DEFAULT_LOADING_OVERLAY_TEMPLATE = '<span class="ag-overlay-loading-center">[LOADING...]</span>';
    return LoadingOverlayComponent3;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/overlays/noRowsOverlayComponent.js
var __extends45 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var NoRowsOverlayComponent = (
  /** @class */
  function(_super) {
    __extends45(NoRowsOverlayComponent3, _super);
    function NoRowsOverlayComponent3() {
      return _super.call(this) || this;
    }
    NoRowsOverlayComponent3.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    NoRowsOverlayComponent3.prototype.init = function(params) {
      var _a47;
      var template = (_a47 = this.gridOptionsService.get("overlayNoRowsTemplate")) !== null && _a47 !== void 0 ? _a47 : NoRowsOverlayComponent3.DEFAULT_NO_ROWS_TEMPLATE;
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      var localisedTemplate = template.replace("[NO_ROWS_TO_SHOW]", localeTextFunc("noRowsToShow", "No Rows To Show"));
      this.setTemplate(localisedTemplate);
    };
    NoRowsOverlayComponent3.DEFAULT_NO_ROWS_TEMPLATE = '<span class="ag-overlay-no-rows-center">[NO_ROWS_TO_SHOW]</span>';
    return NoRowsOverlayComponent3;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/tooltipComponent.js
var __extends46 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var TooltipComponent = (
  /** @class */
  function(_super) {
    __extends46(TooltipComponent3, _super);
    function TooltipComponent3() {
      return _super.call(
        this,
        /* html */
        '<div class="ag-tooltip"></div>'
      ) || this;
    }
    TooltipComponent3.prototype.init = function(params) {
      var value = params.value;
      this.getGui().innerHTML = escapeString(value);
    };
    return TooltipComponent3;
  }(PopupComponent)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/userComponentRegistry.js
var __extends47 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate45 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var UserComponentRegistry = (
  /** @class */
  function(_super) {
    __extends47(UserComponentRegistry2, _super);
    function UserComponentRegistry2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.agGridDefaults = {
        //date
        agDateInput: DefaultDateComponent,
        //header
        agColumnHeader: HeaderComp,
        agColumnGroupHeader: HeaderGroupComp,
        agSortIndicator: SortIndicatorComp,
        //floating filters
        agTextColumnFloatingFilter: TextFloatingFilter,
        agNumberColumnFloatingFilter: NumberFloatingFilter,
        agDateColumnFloatingFilter: DateFloatingFilter,
        agReadOnlyFloatingFilter: ReadOnlyFloatingFilter,
        // renderers
        agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,
        agAnimateSlideCellRenderer: AnimateSlideCellRenderer,
        agGroupCellRenderer: GroupCellRenderer,
        agGroupRowRenderer: GroupCellRenderer,
        agLoadingCellRenderer: LoadingCellRenderer,
        //editors
        agCellEditor: TextCellEditor,
        agTextCellEditor: TextCellEditor,
        agSelectCellEditor: SelectCellEditor,
        agLargeTextCellEditor: LargeTextCellEditor,
        //filter
        agTextColumnFilter: TextFilter,
        agNumberColumnFilter: NumberFilter,
        agDateColumnFilter: DateFilter,
        //overlays
        agLoadingOverlay: LoadingOverlayComponent,
        agNoRowsOverlay: NoRowsOverlayComponent,
        // tooltips
        agTooltipComponent: TooltipComponent
      };
      _this.enterpriseAgDefaultCompsModule = {
        agSetColumnFilter: ModuleNames.SetFilterModule,
        agSetColumnFloatingFilter: ModuleNames.SetFilterModule,
        agMultiColumnFilter: ModuleNames.MultiFilterModule,
        agMultiColumnFloatingFilter: ModuleNames.MultiFilterModule,
        agRichSelect: ModuleNames.RichSelectModule,
        agRichSelectCellEditor: ModuleNames.RichSelectModule,
        agDetailCellRenderer: ModuleNames.MasterDetailModule,
        agSparklineCellRenderer: ModuleNames.SparklinesModule
      };
      _this.deprecatedAgGridDefaults = {
        agPopupTextCellEditor: 'AG Grid: Since v27.1 The agPopupTextCellEditor is deprecated. Instead use { cellEditor: "agTextCellEditor", cellEditorPopup: true }',
        agPopupSelectCellEditor: 'AG Grid: Since v27.1 the agPopupSelectCellEditor is deprecated. Instead use { cellEditor: "agSelectCellEditor", cellEditorPopup: true }'
      };
      _this.jsComps = {};
      _this.fwComps = {};
      return _this;
    }
    UserComponentRegistry2.prototype.init = function() {
      var _this = this;
      if (this.gridOptions.components != null) {
        iterateObject(this.gridOptions.components, function(key, component) {
          return _this.registerJsComponent(key, component);
        });
      }
      if (this.gridOptions.frameworkComponents != null) {
        iterateObject(this.gridOptions.frameworkComponents, function(key, component) {
          return _this.registerFwComponent(key, component);
        });
      }
    };
    UserComponentRegistry2.prototype.registerDefaultComponent = function(name, component) {
      if (this.agGridDefaults[name]) {
        console.error("Trying to overwrite a default component. You should call registerComponent");
        return;
      }
      this.agGridDefaults[name] = component;
    };
    UserComponentRegistry2.prototype.registerJsComponent = function(name, component) {
      if (this.fwComps[name]) {
        console.error("Trying to register a component that you have already registered for frameworks: " + name);
        return;
      }
      this.jsComps[name] = component;
    };
    UserComponentRegistry2.prototype.registerFwComponent = function(name, component) {
      var warningMessage = "AG Grid: As of v27, registering components via grid property frameworkComponents is deprecated. Instead register both JavaScript AND Framework Components via the components property.";
      doOnce(function() {
        return console.warn(warningMessage);
      }, "UserComponentRegistry.frameworkComponentsDeprecated");
      this.fwComps[name] = component;
    };
    UserComponentRegistry2.prototype.retrieve = function(name) {
      var _this = this;
      var createResult = function(component, componentFromFramework) {
        return { componentFromFramework, component };
      };
      var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name, this.gridOptions.components);
      if (registeredViaFrameworkComp != null) {
        return createResult(registeredViaFrameworkComp, true);
      }
      var frameworkComponent = this.fwComps[name];
      if (frameworkComponent) {
        return createResult(frameworkComponent, true);
      }
      var jsComponent = this.jsComps[name];
      if (jsComponent) {
        var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);
        return createResult(jsComponent, isFwkComp);
      }
      var defaultComponent = this.agGridDefaults[name];
      if (defaultComponent) {
        return createResult(defaultComponent, false);
      }
      var moduleForComponent = this.enterpriseAgDefaultCompsModule[name];
      if (moduleForComponent) {
        ModuleRegistry.assertRegistered(moduleForComponent, "AG Grid component [" + name + "]");
      } else if (this.deprecatedAgGridDefaults[name]) {
        doOnce(function() {
          return console.warn(_this.deprecatedAgGridDefaults[name]);
        }, name);
      } else {
        doOnce(function() {
          return console.warn("AG Grid: Looking for component [" + name + "] but it wasn't found. Have you registered the component? See https://ag-grid.com/javascript-data-grid/components/");
        }, "MissingComp" + name);
      }
      return null;
    };
    __decorate45([
      Autowired("gridOptions")
    ], UserComponentRegistry2.prototype, "gridOptions", void 0);
    __decorate45([
      PostConstruct
    ], UserComponentRegistry2.prototype, "init", null);
    UserComponentRegistry2 = __decorate45([
      Bean("userComponentRegistry")
    ], UserComponentRegistry2);
    return UserComponentRegistry2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/componentTypes.js
var DateComponent = {
  propertyName: "dateComponent",
  cellRenderer: false
};
var HeaderComponent = {
  propertyName: "headerComponent",
  cellRenderer: false
};
var HeaderGroupComponent = {
  propertyName: "headerGroupComponent",
  cellRenderer: false
};
var CellRendererComponent = {
  propertyName: "cellRenderer",
  cellRenderer: true
};
var CellEditorComponent = {
  propertyName: "cellEditor",
  cellRenderer: false
};
var InnerRendererComponent = {
  propertyName: "innerRenderer",
  cellRenderer: true
};
var LoadingOverlayComponent2 = {
  propertyName: "loadingOverlayComponent",
  cellRenderer: false
};
var NoRowsOverlayComponent2 = {
  propertyName: "noRowsOverlayComponent",
  cellRenderer: false
};
var TooltipComponent2 = {
  propertyName: "tooltipComponent",
  cellRenderer: false
};
var FilterComponent = {
  propertyName: "filter",
  cellRenderer: false
};
var FloatingFilterComponent = {
  propertyName: "floatingFilterComponent",
  cellRenderer: false
};
var ToolPanelComponent = {
  propertyName: "toolPanel",
  cellRenderer: false
};
var StatusPanelComponent = {
  propertyName: "statusPanel",
  cellRenderer: false
};
var FullWidth = {
  propertyName: "fullWidthCellRenderer",
  cellRenderer: true
};
var FullWidthLoading = {
  propertyName: "loadingCellRenderer",
  cellRenderer: true
};
var FullWidthGroup = {
  propertyName: "groupRowRenderer",
  cellRenderer: true
};
var FullWidthDetail = {
  propertyName: "detailCellRenderer",
  cellRenderer: true
};

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/floatingFilterMapper.js
var FloatingFilterMapper = (
  /** @class */
  function() {
    function FloatingFilterMapper2() {
    }
    FloatingFilterMapper2.getFloatingFilterType = function(filterType) {
      return this.filterToFloatingFilterMapping[filterType];
    };
    FloatingFilterMapper2.filterToFloatingFilterMapping = {
      set: "agSetColumnFloatingFilter",
      agSetColumnFilter: "agSetColumnFloatingFilter",
      multi: "agMultiColumnFloatingFilter",
      agMultiColumnFilter: "agMultiColumnFloatingFilter",
      number: "agNumberColumnFloatingFilter",
      agNumberColumnFilter: "agNumberColumnFloatingFilter",
      date: "agDateColumnFloatingFilter",
      agDateColumnFilter: "agDateColumnFloatingFilter",
      text: "agTextColumnFloatingFilter",
      agTextColumnFilter: "agTextColumnFloatingFilter"
    };
    return FloatingFilterMapper2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/userComponentFactory.js
var __extends48 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate46 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var UserComponentFactory = (
  /** @class */
  function(_super) {
    __extends48(UserComponentFactory2, _super);
    function UserComponentFactory2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    UserComponentFactory2.prototype.getHeaderCompDetails = function(colDef, params) {
      return this.getCompDetails(colDef, HeaderComponent, "agColumnHeader", params);
    };
    UserComponentFactory2.prototype.getHeaderGroupCompDetails = function(params) {
      var colGroupDef = params.columnGroup.getColGroupDef();
      return this.getCompDetails(colGroupDef, HeaderGroupComponent, "agColumnGroupHeader", params);
    };
    UserComponentFactory2.prototype.getFullWidthCellRendererDetails = function(params) {
      return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);
    };
    UserComponentFactory2.prototype.getFullWidthLoadingCellRendererDetails = function(params) {
      return this.getCompDetails(this.gridOptions, FullWidthLoading, "agLoadingCellRenderer", params, true);
    };
    UserComponentFactory2.prototype.getFullWidthGroupCellRendererDetails = function(params) {
      return this.getCompDetails(this.gridOptions, FullWidthGroup, "agGroupRowRenderer", params, true);
    };
    UserComponentFactory2.prototype.getFullWidthDetailCellRendererDetails = function(params) {
      return this.getCompDetails(this.gridOptions, FullWidthDetail, "agDetailCellRenderer", params, true);
    };
    UserComponentFactory2.prototype.getInnerRendererDetails = function(def, params) {
      return this.getCompDetails(def, InnerRendererComponent, null, params);
    };
    UserComponentFactory2.prototype.getFullWidthGroupRowInnerCellRenderer = function(def, params) {
      return this.getCompDetails(def, InnerRendererComponent, null, params);
    };
    UserComponentFactory2.prototype.getCellRendererDetails = function(def, params) {
      return this.getCompDetails(def, CellRendererComponent, null, params);
    };
    UserComponentFactory2.prototype.getCellEditorDetails = function(def, params) {
      return this.getCompDetails(def, CellEditorComponent, "agCellEditor", params, true);
    };
    UserComponentFactory2.prototype.getFilterDetails = function(def, params, defaultFilter) {
      return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);
    };
    UserComponentFactory2.prototype.getDateCompDetails = function(params) {
      return this.getCompDetails(this.gridOptions, DateComponent, "agDateInput", params, true);
    };
    UserComponentFactory2.prototype.getLoadingOverlayCompDetails = function(params) {
      return this.getCompDetails(this.gridOptions, LoadingOverlayComponent2, "agLoadingOverlay", params, true);
    };
    UserComponentFactory2.prototype.getNoRowsOverlayCompDetails = function(params) {
      return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent2, "agNoRowsOverlay", params, true);
    };
    UserComponentFactory2.prototype.getTooltipCompDetails = function(params) {
      return this.getCompDetails(params.colDef, TooltipComponent2, "agTooltipComponent", params, true);
    };
    UserComponentFactory2.prototype.getSetFilterCellRendererDetails = function(def, params) {
      return this.getCompDetails(def, CellRendererComponent, null, params);
    };
    UserComponentFactory2.prototype.getFloatingFilterCompDetails = function(def, params, defaultFloatingFilter) {
      return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);
    };
    UserComponentFactory2.prototype.getToolPanelCompDetails = function(toolPanelDef, params) {
      return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);
    };
    UserComponentFactory2.prototype.getStatusPanelCompDetails = function(def, params) {
      return this.getCompDetails(def, StatusPanelComponent, null, params, true);
    };
    UserComponentFactory2.prototype.getCompDetails = function(defObject, type2, defaultName, params, mandatory) {
      var _this = this;
      if (mandatory === void 0) {
        mandatory = false;
      }
      var propertyName = type2.propertyName, cellRenderer = type2.cellRenderer;
      var _a47 = this.getCompKeys(defObject, type2, params), compName = _a47.compName, jsComp = _a47.jsComp, fwComp = _a47.fwComp, paramsFromSelector = _a47.paramsFromSelector, popupFromSelector = _a47.popupFromSelector, popupPositionFromSelector = _a47.popupPositionFromSelector;
      var lookupFromRegistry = function(key) {
        var item = _this.userComponentRegistry.retrieve(key);
        if (item) {
          jsComp = !item.componentFromFramework ? item.component : void 0;
          fwComp = item.componentFromFramework ? item.component : void 0;
        }
      };
      if (compName != null) {
        lookupFromRegistry(compName);
      }
      if (jsComp == null && fwComp == null && defaultName != null) {
        lookupFromRegistry(defaultName);
      }
      if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {
        jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);
      }
      if (!jsComp && !fwComp) {
        if (mandatory) {
          console.error("AG Grid: Could not find component " + compName + ", did you forget to configure this component?");
        }
        return;
      }
      var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type2, params, paramsFromSelector);
      var componentFromFramework = jsComp == null;
      var componentClass = jsComp ? jsComp : fwComp;
      return {
        componentFromFramework,
        componentClass,
        params: paramsMerged,
        type: type2,
        popupFromSelector,
        popupPositionFromSelector,
        newAgStackInstance: function() {
          return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type2);
        }
      };
    };
    UserComponentFactory2.prototype.getCompKeys = function(defObject, type2, params) {
      var _this = this;
      var propertyName = type2.propertyName;
      var compName;
      var jsComp;
      var fwComp;
      var paramsFromSelector;
      var popupFromSelector;
      var popupPositionFromSelector;
      if (defObject) {
        var defObjectAny = defObject;
        var selectorFunc = defObjectAny[propertyName + "Selector"];
        var selectorRes = selectorFunc ? selectorFunc(params) : null;
        var assignComp = function(providedJsComp, providedFwComp) {
          var xxxFrameworkDeprecatedWarn = function() {
            var warningMessage = "AG Grid: As of v27, the property " + propertyName + "Framework is deprecated. The property " + propertyName + " can now be used for JavaScript AND Framework Components.";
            doOnce(function() {
              return console.warn(warningMessage);
            }, "UserComponentFactory." + propertyName + "FrameworkDeprecated");
          };
          if (typeof providedJsComp === "string") {
            compName = providedJsComp;
          } else if (typeof providedFwComp === "string") {
            xxxFrameworkDeprecatedWarn();
            compName = providedFwComp;
          } else if (providedJsComp != null && providedJsComp !== true) {
            var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);
            if (isFwkComp) {
              fwComp = providedJsComp;
            } else {
              jsComp = providedJsComp;
            }
          } else if (providedFwComp != null) {
            xxxFrameworkDeprecatedWarn();
            fwComp = providedFwComp;
          }
        };
        if (selectorRes) {
          if (selectorRes.frameworkComponent != null) {
            var warningMessage_1 = "AG Grid: As of v27, the return for " + propertyName + "Selector has attributes [component, params] only. The attribute frameworkComponent is deprecated. You should now return back Framework Components using the 'component' attribute and the grid works out if it's a framework component or not.";
            doOnce(function() {
              return console.warn(warningMessage_1);
            }, "UserComponentFactory." + propertyName + "FrameworkSelectorDeprecated");
            assignComp(selectorRes.frameworkComponent, void 0);
          } else {
            assignComp(selectorRes.component, void 0);
          }
          paramsFromSelector = selectorRes.params;
          popupFromSelector = selectorRes.popup;
          popupPositionFromSelector = selectorRes.popupPosition;
        } else {
          assignComp(defObjectAny[propertyName], defObjectAny[propertyName + "Framework"]);
        }
      }
      return { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector };
    };
    UserComponentFactory2.prototype.newAgStackInstance = function(ComponentClass, componentFromFramework, params, type2) {
      var propertyName = type2.propertyName;
      var jsComponent = !componentFromFramework;
      var instance;
      if (jsComponent) {
        instance = new ComponentClass();
      } else {
        var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);
        instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type2);
      }
      var deferredInit = this.initComponent(instance, params);
      if (deferredInit == null) {
        return AgPromise.resolve(instance);
      }
      return deferredInit.then(function() {
        return instance;
      });
    };
    UserComponentFactory2.prototype.mergeParamsWithApplicationProvidedParams = function(defObject, type2, paramsFromGrid, paramsFromSelector) {
      if (paramsFromSelector === void 0) {
        paramsFromSelector = null;
      }
      var params = {
        context: this.gridOptionsService.get("context"),
        columnApi: this.gridOptionsService.get("columnApi"),
        api: this.gridOptionsService.get("api")
      };
      mergeDeep(params, paramsFromGrid);
      var defObjectAny = defObject;
      var userParams = defObjectAny && defObjectAny[type2.propertyName + "Params"];
      if (typeof userParams === "function") {
        var userParamsFromFunc = userParams(paramsFromGrid);
        mergeDeep(params, userParamsFromFunc);
      } else if (typeof userParams === "object") {
        mergeDeep(params, userParams);
      }
      mergeDeep(params, paramsFromSelector);
      return params;
    };
    UserComponentFactory2.prototype.initComponent = function(component, params) {
      this.context.createBean(component);
      if (component.init == null) {
        return;
      }
      return component.init(params);
    };
    UserComponentFactory2.prototype.getDefaultFloatingFilterType = function(def) {
      if (def == null) {
        return null;
      }
      var defaultFloatingFilterType = null;
      var _a47 = this.getCompKeys(def, FilterComponent), compName = _a47.compName, jsComp = _a47.jsComp, fwComp = _a47.fwComp;
      if (compName) {
        defaultFloatingFilterType = FloatingFilterMapper.getFloatingFilterType(compName);
      } else {
        var usingDefaultFilter = jsComp == null && fwComp == null && def.filter === true;
        if (usingDefaultFilter) {
          var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);
          defaultFloatingFilterType = setFilterModuleLoaded ? "agSetColumnFloatingFilter" : "agTextColumnFloatingFilter";
        }
      }
      return defaultFloatingFilterType;
    };
    __decorate46([
      Autowired("gridOptions")
    ], UserComponentFactory2.prototype, "gridOptions", void 0);
    __decorate46([
      Autowired("agComponentUtils")
    ], UserComponentFactory2.prototype, "agComponentUtils", void 0);
    __decorate46([
      Autowired("componentMetadataProvider")
    ], UserComponentFactory2.prototype, "componentMetadataProvider", void 0);
    __decorate46([
      Autowired("userComponentRegistry")
    ], UserComponentFactory2.prototype, "userComponentRegistry", void 0);
    __decorate46([
      Optional2("frameworkComponentWrapper")
    ], UserComponentFactory2.prototype, "frameworkComponentWrapper", void 0);
    UserComponentFactory2 = __decorate46([
      Bean("userComponentFactory")
    ], UserComponentFactory2);
    return UserComponentFactory2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/iExcelCreator.js
var ExcelFactoryMode;
(function(ExcelFactoryMode2) {
  ExcelFactoryMode2[ExcelFactoryMode2["SINGLE_SHEET"] = 0] = "SINGLE_SHEET";
  ExcelFactoryMode2[ExcelFactoryMode2["MULTI_SHEET"] = 1] = "MULTI_SHEET";
})(ExcelFactoryMode || (ExcelFactoryMode = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/dragAndDrop/dragService.js
var __extends49 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate47 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DragService = (
  /** @class */
  function(_super) {
    __extends49(DragService2, _super);
    function DragService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.dragEndFunctions = [];
      _this.dragSources = [];
      return _this;
    }
    DragService2.prototype.init = function() {
      this.logger = this.loggerFactory.create("DragService");
    };
    DragService2.prototype.removeAllListeners = function() {
      this.dragSources.forEach(this.removeListener.bind(this));
      this.dragSources.length = 0;
    };
    DragService2.prototype.removeListener = function(dragSourceAndListener) {
      var element = dragSourceAndListener.dragSource.eElement;
      var mouseDownListener = dragSourceAndListener.mouseDownListener;
      element.removeEventListener("mousedown", mouseDownListener);
      if (dragSourceAndListener.touchEnabled) {
        var touchStartListener = dragSourceAndListener.touchStartListener;
        element.removeEventListener("touchstart", touchStartListener, { passive: true });
      }
    };
    DragService2.prototype.removeDragSource = function(params) {
      var dragSourceAndListener = this.dragSources.find(function(item) {
        return item.dragSource === params;
      });
      if (!dragSourceAndListener) {
        return;
      }
      this.removeListener(dragSourceAndListener);
      removeFromArray(this.dragSources, dragSourceAndListener);
    };
    DragService2.prototype.isDragging = function() {
      return this.dragging;
    };
    DragService2.prototype.addDragSource = function(params, includeTouch) {
      var _this = this;
      if (includeTouch === void 0) {
        includeTouch = false;
      }
      var mouseListener = this.onMouseDown.bind(this, params);
      params.eElement.addEventListener("mousedown", mouseListener);
      var touchListener = null;
      var suppressTouch = this.gridOptionsService.is("suppressTouch");
      if (includeTouch && !suppressTouch) {
        touchListener = function(touchEvent) {
          if (isFocusableFormField(touchEvent.target)) {
            return;
          }
          if (touchEvent.cancelable) {
            touchEvent.preventDefault();
          }
          _this.onTouchStart(params, touchEvent);
        };
        params.eElement.addEventListener("touchstart", touchListener, { passive: false });
      }
      this.dragSources.push({
        dragSource: params,
        mouseDownListener: mouseListener,
        touchStartListener: touchListener,
        touchEnabled: includeTouch
      });
    };
    DragService2.prototype.onTouchStart = function(params, touchEvent) {
      var _this = this;
      this.currentDragParams = params;
      this.dragging = false;
      var touch = touchEvent.touches[0];
      this.touchLastTime = touch;
      this.touchStart = touch;
      var touchMoveEvent = function(e2) {
        return _this.onTouchMove(e2, params.eElement);
      };
      var touchEndEvent = function(e2) {
        return _this.onTouchUp(e2, params.eElement);
      };
      var documentTouchMove = function(e2) {
        if (e2.cancelable) {
          e2.preventDefault();
        }
      };
      var target = touchEvent.target;
      var events = [
        // Prevents the page document from moving while we are dragging items around.
        // preventDefault needs to be called in the touchmove listener and never inside the
        // touchstart, because using touchstart causes the click event to be cancelled on touch devices.
        { target: document, type: "touchmove", listener: documentTouchMove, options: { passive: false } },
        { target, type: "touchmove", listener: touchMoveEvent, options: { passive: true } },
        { target, type: "touchend", listener: touchEndEvent, options: { passive: true } },
        { target, type: "touchcancel", listener: touchEndEvent, options: { passive: true } }
      ];
      this.addTemporaryEvents(events);
      if (params.dragStartPixels === 0) {
        this.onCommonMove(touch, this.touchStart, params.eElement);
      }
    };
    DragService2.prototype.onMouseDown = function(params, mouseEvent) {
      var _this = this;
      var e2 = mouseEvent;
      if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {
        return;
      }
      if (e2._alreadyProcessedByDragService) {
        return;
      }
      e2._alreadyProcessedByDragService = true;
      if (mouseEvent.button !== 0) {
        return;
      }
      this.currentDragParams = params;
      this.dragging = false;
      this.mouseStartEvent = mouseEvent;
      var eDocument = this.gridOptionsService.getDocument();
      var mouseMoveEvent = function(event) {
        return _this.onMouseMove(event, params.eElement);
      };
      var mouseUpEvent = function(event) {
        return _this.onMouseUp(event, params.eElement);
      };
      var contextEvent = function(event) {
        return event.preventDefault();
      };
      var target = eDocument;
      var events = [
        { target, type: "mousemove", listener: mouseMoveEvent },
        { target, type: "mouseup", listener: mouseUpEvent },
        { target, type: "contextmenu", listener: contextEvent }
      ];
      this.addTemporaryEvents(events);
      if (params.dragStartPixels === 0) {
        this.onMouseMove(mouseEvent, params.eElement);
      }
    };
    DragService2.prototype.addTemporaryEvents = function(events) {
      events.forEach(function(currentEvent) {
        var target = currentEvent.target, type2 = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;
        target.addEventListener(type2, listener, options);
      });
      this.dragEndFunctions.push(function() {
        events.forEach(function(currentEvent) {
          var target = currentEvent.target, type2 = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;
          target.removeEventListener(type2, listener, options);
        });
      });
    };
    DragService2.prototype.isEventNearStartEvent = function(currentEvent, startEvent) {
      var dragStartPixels = this.currentDragParams.dragStartPixels;
      var requiredPixelDiff = exists(dragStartPixels) ? dragStartPixels : 4;
      return areEventsNear(currentEvent, startEvent, requiredPixelDiff);
    };
    DragService2.prototype.getFirstActiveTouch = function(touchList) {
      for (var i2 = 0; i2 < touchList.length; i2++) {
        if (touchList[i2].identifier === this.touchStart.identifier) {
          return touchList[i2];
        }
      }
      return null;
    };
    DragService2.prototype.onCommonMove = function(currentEvent, startEvent, el) {
      if (!this.dragging) {
        if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {
          return;
        }
        this.dragging = true;
        var event_1 = {
          type: Events.EVENT_DRAG_STARTED,
          target: el
        };
        this.eventService.dispatchEvent(event_1);
        this.currentDragParams.onDragStart(startEvent);
        this.currentDragParams.onDragging(startEvent);
      }
      this.currentDragParams.onDragging(currentEvent);
    };
    DragService2.prototype.onTouchMove = function(touchEvent, el) {
      var touch = this.getFirstActiveTouch(touchEvent.touches);
      if (!touch) {
        return;
      }
      this.onCommonMove(touch, this.touchStart, el);
    };
    DragService2.prototype.onMouseMove = function(mouseEvent, el) {
      if ((this.gridOptionsService.is("enableCellTextSelection") || isBrowserSafari()) && // The event type can be `mousedown` when `dragStartPixels=0`
      // we should only preventDefault on `mousemove`.
      mouseEvent.type === "mousemove" && mouseEvent.cancelable && this.mouseEventService.isEventFromThisGrid(mouseEvent) && // we should not prevent mouseMove when above a form field
      // as that would prevent the text in the field from being selected
      !this.isOverFormFieldElement(mouseEvent)) {
        mouseEvent.preventDefault();
      }
      this.onCommonMove(mouseEvent, this.mouseStartEvent, el);
    };
    DragService2.prototype.isOverFormFieldElement = function(mouseEvent) {
      var el = mouseEvent.target;
      var tagName = el === null || el === void 0 ? void 0 : el.tagName.toLocaleLowerCase();
      return !!(tagName === null || tagName === void 0 ? void 0 : tagName.match("^a$|textarea|input|select|button"));
    };
    DragService2.prototype.onTouchUp = function(touchEvent, el) {
      var touch = this.getFirstActiveTouch(touchEvent.changedTouches);
      if (!touch) {
        touch = this.touchLastTime;
      }
      this.onUpCommon(touch, el);
    };
    DragService2.prototype.onMouseUp = function(mouseEvent, el) {
      this.onUpCommon(mouseEvent, el);
    };
    DragService2.prototype.onUpCommon = function(eventOrTouch, el) {
      if (this.dragging) {
        this.dragging = false;
        this.currentDragParams.onDragStop(eventOrTouch);
        var event_2 = {
          type: Events.EVENT_DRAG_STOPPED,
          target: el
        };
        this.eventService.dispatchEvent(event_2);
      }
      this.mouseStartEvent = null;
      this.touchStart = null;
      this.touchLastTime = null;
      this.currentDragParams = null;
      this.dragEndFunctions.forEach(function(func) {
        return func();
      });
      this.dragEndFunctions.length = 0;
    };
    __decorate47([
      Autowired("loggerFactory")
    ], DragService2.prototype, "loggerFactory", void 0);
    __decorate47([
      Autowired("mouseEventService")
    ], DragService2.prototype, "mouseEventService", void 0);
    __decorate47([
      PostConstruct
    ], DragService2.prototype, "init", null);
    __decorate47([
      PreDestroy
    ], DragService2.prototype, "removeAllListeners", null);
    DragService2 = __decorate47([
      Bean("dragService")
    ], DragService2);
    return DragService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/iRowNode.js
var RowHighlightPosition;
(function(RowHighlightPosition2) {
  RowHighlightPosition2[RowHighlightPosition2["Above"] = 0] = "Above";
  RowHighlightPosition2[RowHighlightPosition2["Below"] = 1] = "Below";
})(RowHighlightPosition || (RowHighlightPosition = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/filter/filterManager.js
var __extends50 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign12 = function() {
  __assign12 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign12.apply(this, arguments);
};
var __decorate48 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var FilterManager = (
  /** @class */
  function(_super) {
    __extends50(FilterManager2, _super);
    function FilterManager2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.allColumnFilters = /* @__PURE__ */ new Map();
      _this.activeAggregateFilters = [];
      _this.activeColumnFilters = [];
      _this.quickFilter = null;
      _this.quickFilterParts = null;
      _this.processingFilterChange = false;
      return _this;
    }
    FilterManager_1 = FilterManager2;
    FilterManager2.prototype.init = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, function() {
        return _this.onColumnsChanged();
      });
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, function() {
        return _this.refreshFiltersForAggregations();
      });
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function() {
        return _this.refreshFiltersForAggregations();
      });
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function() {
        return _this.refreshFiltersForAggregations();
      });
      this.addManagedPropertyListener("quickFilterText", function(e2) {
        return _this.setQuickFilter(e2.currentValue);
      });
      this.quickFilter = this.parseQuickFilter(this.gridOptionsService.get("quickFilterText"));
      this.setQuickFilterParts();
      this.allowShowChangeAfterFilter = this.gridOptionsService.is("allowShowChangeAfterFilter");
      this.externalFilterPresent = this.isExternalFilterPresentCallback();
    };
    FilterManager2.prototype.isExternalFilterPresentCallback = function() {
      var isFilterPresent = this.gridOptionsService.getCallback("isExternalFilterPresent");
      if (typeof isFilterPresent === "function") {
        return isFilterPresent({});
      }
      return false;
    };
    FilterManager2.prototype.doesExternalFilterPass = function(node) {
      var doesFilterPass = this.gridOptionsService.get("doesExternalFilterPass");
      if (typeof doesFilterPass === "function") {
        return doesFilterPass(node);
      }
      return false;
    };
    FilterManager2.prototype.setQuickFilterParts = function() {
      this.quickFilterParts = this.quickFilter ? this.quickFilter.split(" ") : null;
    };
    FilterManager2.prototype.setFilterModel = function(model) {
      var _this = this;
      var allPromises = [];
      var previousModel = this.getFilterModel();
      if (model) {
        var modelKeys_1 = convertToSet(Object.keys(model));
        this.allColumnFilters.forEach(function(filterWrapper, colId) {
          var newModel = model[colId];
          allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));
          modelKeys_1.delete(colId);
        });
        modelKeys_1.forEach(function(colId) {
          var column = _this.columnModel.getPrimaryColumn(colId) || _this.columnModel.getGridColumn(colId);
          if (!column) {
            console.warn("AG Grid: setFilterModel() - no column found for colId: " + colId);
            return;
          }
          if (!column.isFilterAllowed()) {
            console.warn("AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: " + colId);
            return;
          }
          var filterWrapper = _this.getOrCreateFilterWrapper(column, "NO_UI");
          if (!filterWrapper) {
            console.warn("AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: " + colId);
            return;
          }
          allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));
        });
      } else {
        this.allColumnFilters.forEach(function(filterWrapper) {
          allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));
        });
      }
      AgPromise.all(allPromises).then(function() {
        var currentModel = _this.getFilterModel();
        var columns = [];
        _this.allColumnFilters.forEach(function(filterWrapper, colId) {
          var before2 = previousModel ? previousModel[colId] : null;
          var after = currentModel ? currentModel[colId] : null;
          if (!_2.jsonEquals(before2, after)) {
            columns.push(filterWrapper.column);
          }
        });
        if (columns.length > 0) {
          _this.onFilterChanged({ columns });
        }
      });
    };
    FilterManager2.prototype.setModelOnFilterWrapper = function(filterPromise, newModel) {
      return new AgPromise(function(resolve) {
        filterPromise.then(function(filter2) {
          if (typeof filter2.setModel !== "function") {
            console.warn("AG Grid: filter missing setModel method, which is needed for setFilterModel");
            resolve();
          }
          (filter2.setModel(newModel) || AgPromise.resolve()).then(function() {
            return resolve();
          });
        });
      });
    };
    FilterManager2.prototype.getFilterModel = function() {
      var result = {};
      this.allColumnFilters.forEach(function(filterWrapper, key) {
        var filterPromise = filterWrapper.filterPromise;
        var filter2 = filterPromise.resolveNow(null, function(promiseFilter) {
          return promiseFilter;
        });
        if (filter2 == null) {
          return null;
        }
        if (typeof filter2.getModel !== "function") {
          console.warn("AG Grid: filter API missing getModel method, which is needed for getFilterModel");
          return;
        }
        var model = filter2.getModel();
        if (exists(model)) {
          result[key] = model;
        }
      });
      return result;
    };
    FilterManager2.prototype.isColumnFilterPresent = function() {
      return this.activeColumnFilters.length > 0;
    };
    FilterManager2.prototype.isAggregateFilterPresent = function() {
      return !!this.activeAggregateFilters.length;
    };
    FilterManager2.prototype.isExternalFilterPresent = function() {
      return this.externalFilterPresent;
    };
    FilterManager2.prototype.doAggregateFiltersPass = function(node, filterToSkip) {
      return this.doColumnFiltersPass(node, filterToSkip, true);
    };
    FilterManager2.prototype.updateActiveFilters = function() {
      var _this = this;
      this.activeColumnFilters.length = 0;
      this.activeAggregateFilters.length = 0;
      var isFilterActive = function(filter2) {
        if (!filter2) {
          return false;
        }
        if (!filter2.isFilterActive) {
          console.warn("AG Grid: Filter is missing isFilterActive() method");
          return false;
        }
        return filter2.isFilterActive();
      };
      var groupFilterEnabled = !!this.gridOptionsService.getGroupAggFiltering();
      var isAggFilter = function(column) {
        var isSecondary = !column.isPrimary();
        if (isSecondary) {
          return true;
        }
        var isShowingPrimaryColumns = !_this.columnModel.isPivotActive();
        var isValueActive = column.isValueActive();
        if (!isValueActive || !isShowingPrimaryColumns) {
          return false;
        }
        if (_this.columnModel.isPivotMode()) {
          return true;
        } else {
          return groupFilterEnabled;
        }
      };
      this.allColumnFilters.forEach(function(filterWrapper) {
        if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {
          var filterComp = filterWrapper.filterPromise.resolveNow(null, function(filter2) {
            return filter2;
          });
          if (isAggFilter(filterWrapper.column)) {
            _this.activeAggregateFilters.push(filterComp);
          } else {
            _this.activeColumnFilters.push(filterComp);
          }
        }
      });
    };
    FilterManager2.prototype.updateFilterFlagInColumns = function(source, additionalEventAttributes) {
      this.allColumnFilters.forEach(function(filterWrapper) {
        var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function(filter2) {
          return filter2.isFilterActive();
        });
        filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);
      });
    };
    FilterManager2.prototype.isAnyFilterPresent = function() {
      return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.isExternalFilterPresent();
    };
    FilterManager2.prototype.doColumnFiltersPass = function(node, filterToSkip, targetAggregates) {
      var data = node.data, aggData = node.aggData;
      var targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;
      var targetedData = targetAggregates ? aggData : data;
      for (var i2 = 0; i2 < targetedFilters.length; i2++) {
        var filter2 = targetedFilters[i2];
        if (filter2 == null || filter2 === filterToSkip) {
          continue;
        }
        if (typeof filter2.doesFilterPass !== "function") {
          throw new Error("Filter is missing method doesFilterPass");
        }
        if (!filter2.doesFilterPass({ node, data: targetedData })) {
          return false;
        }
      }
      return true;
    };
    FilterManager2.prototype.parseQuickFilter = function(newFilter) {
      if (!exists(newFilter)) {
        return null;
      }
      if (!this.gridOptionsService.isRowModelType("clientSide")) {
        console.warn("AG Grid - Quick filtering only works with the Client-Side Row Model");
        return null;
      }
      return newFilter.toUpperCase();
    };
    FilterManager2.prototype.setQuickFilter = function(newFilter) {
      if (newFilter != null && typeof newFilter !== "string") {
        console.warn("AG Grid - setQuickFilter() only supports string inputs, received: " + typeof newFilter);
        return;
      }
      var parsedFilter = this.parseQuickFilter(newFilter);
      if (this.quickFilter !== parsedFilter) {
        this.quickFilter = parsedFilter;
        this.setQuickFilterParts();
        this.onFilterChanged();
      }
    };
    FilterManager2.prototype.refreshFiltersForAggregations = function() {
      var isAggFiltering = this.gridOptionsService.getGroupAggFiltering();
      if (isAggFiltering) {
        this.onFilterChanged();
      }
    };
    FilterManager2.prototype.callOnFilterChangedOutsideRenderCycle = function(params) {
      var _this = this;
      if (params === void 0) {
        params = {};
      }
      var action = function() {
        return _this.onFilterChanged(params);
      };
      if (this.rowRenderer.isRefreshInProgress()) {
        setTimeout(action, 0);
      } else {
        action();
      }
    };
    FilterManager2.prototype.onFilterChanged = function(params) {
      if (params === void 0) {
        params = {};
      }
      var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;
      this.updateActiveFilters();
      this.updateFilterFlagInColumns("filterChanged", additionalEventAttributes);
      this.externalFilterPresent = this.isExternalFilterPresentCallback();
      this.allColumnFilters.forEach(function(filterWrapper) {
        if (!filterWrapper.filterPromise) {
          return;
        }
        filterWrapper.filterPromise.then(function(filter2) {
          if (filter2 && filter2 !== filterInstance && filter2.onAnyFilterChanged) {
            filter2.onAnyFilterChanged();
          }
        });
      });
      var filterChangedEvent = {
        type: Events.EVENT_FILTER_CHANGED,
        columns: columns || []
      };
      if (additionalEventAttributes) {
        mergeDeep(filterChangedEvent, additionalEventAttributes);
      }
      this.processingFilterChange = true;
      this.eventService.dispatchEvent(filterChangedEvent);
      this.processingFilterChange = false;
    };
    FilterManager2.prototype.isSuppressFlashingCellsBecauseFiltering = function() {
      return !this.allowShowChangeAfterFilter && this.processingFilterChange;
    };
    FilterManager2.prototype.isQuickFilterPresent = function() {
      return this.quickFilter !== null;
    };
    FilterManager2.prototype.doesRowPassOtherFilters = function(filterToSkip, node) {
      return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });
    };
    FilterManager2.prototype.doesRowPassQuickFilterNoCache = function(node, filterPart) {
      var _this = this;
      var columns = this.columnModel.getAllColumnsForQuickFilter();
      return columns.some(function(column) {
        var part = _this.getQuickFilterTextForColumn(column, node);
        return exists(part) && part.indexOf(filterPart) >= 0;
      });
    };
    FilterManager2.prototype.doesRowPassQuickFilterCache = function(node, filterPart) {
      if (!node.quickFilterAggregateText) {
        this.aggregateRowForQuickFilter(node);
      }
      return node.quickFilterAggregateText.indexOf(filterPart) >= 0;
    };
    FilterManager2.prototype.doesRowPassQuickFilter = function(node) {
      var _this = this;
      var usingCache = this.gridOptionsService.is("cacheQuickFilter");
      return this.quickFilterParts.every(function(part) {
        return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);
      });
    };
    FilterManager2.prototype.doesRowPassAggregateFilters = function(params) {
      if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {
        return false;
      }
      return true;
    };
    FilterManager2.prototype.doesRowPassFilter = function(params) {
      if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {
        return false;
      }
      if (this.isExternalFilterPresent() && !this.doesExternalFilterPass(params.rowNode)) {
        return false;
      }
      if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {
        return false;
      }
      return true;
    };
    FilterManager2.prototype.getQuickFilterTextForColumn = function(column, node) {
      var value = this.valueService.getValue(column, node, true);
      var colDef = column.getColDef();
      if (colDef.getQuickFilterText) {
        var params = {
          value,
          node,
          data: node.data,
          column,
          colDef,
          api: this.gridOptionsService.get("api"),
          columnApi: this.gridOptionsService.get("columnApi"),
          context: this.gridOptionsService.get("context")
        };
        value = colDef.getQuickFilterText(params);
      }
      return exists(value) ? value.toString().toUpperCase() : null;
    };
    FilterManager2.prototype.aggregateRowForQuickFilter = function(node) {
      var _this = this;
      var stringParts = [];
      var columns = this.columnModel.getAllColumnsForQuickFilter();
      columns.forEach(function(column) {
        var part = _this.getQuickFilterTextForColumn(column, node);
        if (exists(part)) {
          stringParts.push(part);
        }
      });
      node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);
    };
    FilterManager2.prototype.onNewRowsLoaded = function(source) {
      this.allColumnFilters.forEach(function(filterWrapper) {
        filterWrapper.filterPromise.then(function(filter2) {
          if (filter2.onNewRowsLoaded) {
            filter2.onNewRowsLoaded();
          }
        });
      });
      this.updateFilterFlagInColumns(source, { afterDataChange: true });
      this.updateActiveFilters();
    };
    FilterManager2.prototype.createValueGetter = function(column) {
      var _this = this;
      return function(_a47) {
        var node = _a47.node;
        return _this.valueService.getValue(column, node, true);
      };
    };
    FilterManager2.prototype.getFilterComponent = function(column, source, createIfDoesNotExist) {
      var _a47;
      if (createIfDoesNotExist === void 0) {
        createIfDoesNotExist = true;
      }
      if (createIfDoesNotExist) {
        return ((_a47 = this.getOrCreateFilterWrapper(column, source)) === null || _a47 === void 0 ? void 0 : _a47.filterPromise) || null;
      }
      var filterWrapper = this.cachedFilter(column);
      return filterWrapper ? filterWrapper.filterPromise : null;
    };
    FilterManager2.prototype.isFilterActive = function(column) {
      var filterWrapper = this.cachedFilter(column);
      return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function(filter2) {
        return filter2.isFilterActive();
      });
    };
    FilterManager2.prototype.getOrCreateFilterWrapper = function(column, source) {
      if (!column.isFilterAllowed()) {
        return null;
      }
      var filterWrapper = this.cachedFilter(column);
      if (!filterWrapper) {
        filterWrapper = this.createFilterWrapper(column, source);
        this.allColumnFilters.set(column.getColId(), filterWrapper);
      } else if (source !== "NO_UI") {
        this.putIntoGui(filterWrapper, source);
      }
      return filterWrapper;
    };
    FilterManager2.prototype.cachedFilter = function(column) {
      return this.allColumnFilters.get(column.getColId());
    };
    FilterManager2.prototype.createFilterInstance = function(column) {
      var _this = this;
      var defaultFilter = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule) ? "agSetColumnFilter" : "agTextColumnFilter";
      var colDef = column.getColDef();
      var filterInstance;
      var params = __assign12(__assign12({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: function() {
        var event = {
          type: Events.EVENT_FILTER_MODIFIED,
          column,
          filterInstance
        };
        _this.eventService.dispatchEvent(event);
      }, filterChangedCallback: function(additionalEventAttributes) {
        var params2 = { filterInstance, additionalEventAttributes, columns: [column] };
        _this.callOnFilterChangedOutsideRenderCycle(params2);
      }, doesRowPassOtherFilter: function(node) {
        return _this.doesRowPassOtherFilters(filterInstance, node);
      } });
      var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);
      if (!compDetails) {
        return null;
      }
      var componentPromise = compDetails.newAgStackInstance();
      if (componentPromise) {
        componentPromise.then(function(r2) {
          return filterInstance = r2;
        });
      }
      return componentPromise;
    };
    FilterManager2.prototype.createFilterParams = function(column, colDef) {
      var params = {
        column,
        colDef: cloneObject(colDef),
        rowModel: this.rowModel,
        filterChangedCallback: function() {
        },
        filterModifiedCallback: function() {
        },
        valueGetter: this.createValueGetter(column),
        doesRowPassOtherFilter: function() {
          return true;
        },
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context")
      };
      return params;
    };
    FilterManager2.prototype.createFilterWrapper = function(column, source) {
      var filterWrapper = {
        column,
        filterPromise: null,
        compiledElement: null,
        guiPromise: AgPromise.resolve(null)
      };
      filterWrapper.filterPromise = this.createFilterInstance(column);
      if (filterWrapper.filterPromise) {
        this.putIntoGui(filterWrapper, source);
      }
      return filterWrapper;
    };
    FilterManager2.prototype.putIntoGui = function(filterWrapper, source) {
      var _this = this;
      var eFilterGui = document.createElement("div");
      eFilterGui.className = "ag-filter";
      filterWrapper.guiPromise = new AgPromise(function(resolve) {
        filterWrapper.filterPromise.then(function(filter2) {
          var guiFromFilter = filter2.getGui();
          if (!exists(guiFromFilter)) {
            console.warn("AG Grid: getGui method from filter returned " + guiFromFilter + ", it should be a DOM element or an HTML template string.");
          }
          if (typeof guiFromFilter === "string") {
            guiFromFilter = loadTemplate(guiFromFilter);
          }
          eFilterGui.appendChild(guiFromFilter);
          resolve(eFilterGui);
          var event = {
            type: Events.EVENT_FILTER_OPENED,
            column: filterWrapper.column,
            source,
            eGui: eFilterGui
          };
          _this.eventService.dispatchEvent(event);
        });
      });
    };
    FilterManager2.prototype.onColumnsChanged = function() {
      var _this = this;
      var columns = [];
      this.allColumnFilters.forEach(function(wrapper, colId) {
        var currentColumn;
        if (wrapper.column.isPrimary()) {
          currentColumn = _this.columnModel.getPrimaryColumn(colId);
        } else {
          currentColumn = _this.columnModel.getGridColumn(colId);
        }
        if (currentColumn) {
          return;
        }
        columns.push(wrapper.column);
        _this.disposeFilterWrapper(wrapper, "filterDestroyed");
      });
      if (columns.length > 0) {
        this.onFilterChanged({ columns });
      }
    };
    FilterManager2.prototype.destroyFilter = function(column, source) {
      if (source === void 0) {
        source = "api";
      }
      var filterWrapper = this.allColumnFilters.get(column.getColId());
      if (filterWrapper) {
        this.disposeFilterWrapper(filterWrapper, source);
        this.onFilterChanged({ columns: [column] });
      }
    };
    FilterManager2.prototype.disposeFilterWrapper = function(filterWrapper, source) {
      var _this = this;
      filterWrapper.filterPromise.then(function(filter2) {
        (filter2.setModel(null) || AgPromise.resolve()).then(function() {
          _this.getContext().destroyBean(filter2);
          filterWrapper.column.setFilterActive(false, source);
          _this.allColumnFilters.delete(filterWrapper.column.getColId());
        });
      });
    };
    FilterManager2.prototype.destroy = function() {
      var _this = this;
      _super.prototype.destroy.call(this);
      this.allColumnFilters.forEach(function(filterWrapper) {
        return _this.disposeFilterWrapper(filterWrapper, "filterDestroyed");
      });
    };
    var FilterManager_1;
    FilterManager2.QUICK_FILTER_SEPARATOR = "\n";
    __decorate48([
      Autowired("valueService")
    ], FilterManager2.prototype, "valueService", void 0);
    __decorate48([
      Autowired("columnModel")
    ], FilterManager2.prototype, "columnModel", void 0);
    __decorate48([
      Autowired("rowModel")
    ], FilterManager2.prototype, "rowModel", void 0);
    __decorate48([
      Autowired("userComponentFactory")
    ], FilterManager2.prototype, "userComponentFactory", void 0);
    __decorate48([
      Autowired("rowRenderer")
    ], FilterManager2.prototype, "rowRenderer", void 0);
    __decorate48([
      PostConstruct
    ], FilterManager2.prototype, "init", null);
    __decorate48([
      PreDestroy
    ], FilterManager2.prototype, "destroy", null);
    FilterManager2 = FilterManager_1 = __decorate48([
      Bean("filterManager")
    ], FilterManager2);
    return FilterManager2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/abstractCell/abstractHeaderCellComp.js
var __extends51 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AbstractHeaderCellComp = (
  /** @class */
  function(_super) {
    __extends51(AbstractHeaderCellComp2, _super);
    function AbstractHeaderCellComp2(template, ctrl) {
      var _this = _super.call(this, template) || this;
      _this.ctrl = ctrl;
      return _this;
    }
    AbstractHeaderCellComp2.prototype.getCtrl = function() {
      return this.ctrl;
    };
    return AbstractHeaderCellComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/floatingFilter/headerFilterCellComp.js
var __extends52 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate49 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderFilterCellComp = (
  /** @class */
  function(_super) {
    __extends52(HeaderFilterCellComp2, _super);
    function HeaderFilterCellComp2(ctrl) {
      return _super.call(this, HeaderFilterCellComp2.TEMPLATE, ctrl) || this;
    }
    HeaderFilterCellComp2.prototype.postConstruct = function() {
      var _this = this;
      var eGui = this.getGui();
      var compProxy = {
        addOrRemoveCssClass: function(cssClassName, on2) {
          return _this.addOrRemoveCssClass(cssClassName, on2);
        },
        addOrRemoveBodyCssClass: function(cssClassName, on2) {
          return _this.eFloatingFilterBody.classList.toggle(cssClassName, on2);
        },
        setButtonWrapperDisplayed: function(displayed) {
          return setDisplayed(_this.eButtonWrapper, displayed);
        },
        setCompDetails: function(compDetails) {
          return _this.setCompDetails(compDetails);
        },
        getFloatingFilterComp: function() {
          return _this.compPromise;
        },
        setWidth: function(width) {
          return eGui.style.width = width;
        },
        setMenuIcon: function(eIcon) {
          return _this.eButtonShowMainFilter.appendChild(eIcon);
        }
      };
      this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);
    };
    HeaderFilterCellComp2.prototype.setCompDetails = function(compDetails) {
      var _this = this;
      this.compPromise = compDetails.newAgStackInstance();
      this.compPromise.then(function(comp) {
        return _this.afterCompCreated(comp);
      });
    };
    HeaderFilterCellComp2.prototype.afterCompCreated = function(comp) {
      var _this = this;
      if (!comp) {
        return;
      }
      this.addDestroyFunc(function() {
        return _this.context.destroyBean(comp);
      });
      if (!this.isAlive()) {
        return;
      }
      this.eFloatingFilterBody.appendChild(comp.getGui());
      if (comp.afterGuiAttached) {
        comp.afterGuiAttached();
      }
    };
    HeaderFilterCellComp2.TEMPLATE = '<div class="ag-header-cell ag-floating-filter" role="gridcell" tabindex="-1">\n            <div ref="eFloatingFilterBody" role="presentation"></div>\n            <div class="ag-floating-filter-button ag-hidden" ref="eButtonWrapper" role="presentation">\n                <button type="button" aria-label="Open Filter Menu" class="ag-floating-filter-button-button" ref="eButtonShowMainFilter" tabindex="-1"></button>\n            </div>\n        </div>';
    __decorate49([
      RefSelector("eFloatingFilterBody")
    ], HeaderFilterCellComp2.prototype, "eFloatingFilterBody", void 0);
    __decorate49([
      RefSelector("eButtonWrapper")
    ], HeaderFilterCellComp2.prototype, "eButtonWrapper", void 0);
    __decorate49([
      RefSelector("eButtonShowMainFilter")
    ], HeaderFilterCellComp2.prototype, "eButtonShowMainFilter", void 0);
    __decorate49([
      PostConstruct
    ], HeaderFilterCellComp2.prototype, "postConstruct", null);
    return HeaderFilterCellComp2;
  }(AbstractHeaderCellComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/styling/layoutFeature.js
var __extends53 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate50 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var LayoutCssClasses;
(function(LayoutCssClasses2) {
  LayoutCssClasses2["AUTO_HEIGHT"] = "ag-layout-auto-height";
  LayoutCssClasses2["NORMAL"] = "ag-layout-normal";
  LayoutCssClasses2["PRINT"] = "ag-layout-print";
})(LayoutCssClasses || (LayoutCssClasses = {}));
var LayoutFeature = (
  /** @class */
  function(_super) {
    __extends53(LayoutFeature2, _super);
    function LayoutFeature2(view) {
      var _this = _super.call(this) || this;
      _this.view = view;
      return _this;
    }
    LayoutFeature2.prototype.postConstruct = function() {
      this.addManagedPropertyListener("domLayout", this.updateLayoutClasses.bind(this));
      this.updateLayoutClasses();
    };
    LayoutFeature2.prototype.updateLayoutClasses = function() {
      var domLayout = this.getDomLayout();
      var params = {
        autoHeight: domLayout === "autoHeight",
        normal: domLayout === "normal",
        print: domLayout === "print"
      };
      var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT : params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;
      this.view.updateLayoutClasses(cssClass, params);
    };
    LayoutFeature2.prototype.getDomLayout = function() {
      var _a47;
      var domLayout = (_a47 = this.gridOptionsService.get("domLayout")) !== null && _a47 !== void 0 ? _a47 : "normal";
      var validLayouts = ["normal", "print", "autoHeight"];
      if (validLayouts.indexOf(domLayout) === -1) {
        doOnce(function() {
          return console.warn("AG Grid: " + domLayout + " is not valid for DOM Layout, valid values are 'normal', 'autoHeight', 'print'.");
        }, "warn about dom layout values");
        return "normal";
      }
      return domLayout;
    };
    __decorate50([
      PostConstruct
    ], LayoutFeature2.prototype, "postConstruct", null);
    return LayoutFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyScrollFeature.js
var __extends54 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate51 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GridBodyScrollFeature = (
  /** @class */
  function(_super) {
    __extends54(GridBodyScrollFeature2, _super);
    function GridBodyScrollFeature2(eBodyViewport) {
      var _this = _super.call(this) || this;
      _this.scrollLeft = -1;
      _this.nextScrollTop = -1;
      _this.scrollTop = -1;
      _this.eBodyViewport = eBodyViewport;
      _this.resetLastHScrollDebounced = debounce2(function() {
        return _this.eLastHScroll = null;
      }, 500);
      _this.resetLastVScrollDebounced = debounce2(function() {
        return _this.eLastVScroll = null;
      }, 500);
      return _this;
    }
    GridBodyScrollFeature2.prototype.postConstruct = function() {
      var _this = this;
      this.enableRtl = this.gridOptionsService.is("enableRtl");
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));
      this.ctrlsService.whenReady(function(p2) {
        _this.centerRowContainerCtrl = p2.centerRowContainerCtrl;
        _this.onDisplayedColumnsWidthChanged();
        _this.addScrollListener();
      });
    };
    GridBodyScrollFeature2.prototype.addScrollListener = function() {
      var fakeHScroll = this.ctrlsService.getFakeHScrollComp();
      var fakeVScroll = this.ctrlsService.getFakeVScrollComp();
      this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), "scroll", this.onHScroll.bind(this));
      this.addManagedListener(fakeHScroll.getViewport(), "scroll", this.onFakeHScroll.bind(this));
      var isDebounce = this.gridOptionsService.is("debounceVerticalScrollbar");
      var onVScroll = isDebounce ? debounce2(this.onVScroll.bind(this), 100) : this.onVScroll.bind(this);
      var onFakeVScroll = isDebounce ? debounce2(this.onFakeVScroll.bind(this), 100) : this.onFakeVScroll.bind(this);
      this.addManagedListener(this.eBodyViewport, "scroll", onVScroll);
      this.addManagedListener(fakeVScroll.getViewport(), "scroll", onFakeVScroll);
    };
    GridBodyScrollFeature2.prototype.onDisplayedColumnsWidthChanged = function() {
      if (this.enableRtl) {
        this.horizontallyScrollHeaderCenterAndFloatingCenter();
      }
    };
    GridBodyScrollFeature2.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function(scrollLeft2) {
      var notYetInitialised = this.centerRowContainerCtrl == null;
      if (notYetInitialised) {
        return;
      }
      if (scrollLeft2 === void 0) {
        scrollLeft2 = this.centerRowContainerCtrl.getCenterViewportScrollLeft();
      }
      var offset = this.enableRtl ? scrollLeft2 : -scrollLeft2;
      var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();
      var stickyTopCenterContainer = this.ctrlsService.getStickyTopCenterRowContainerCtrl();
      var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();
      var fakeHScroll = this.ctrlsService.getFakeHScrollComp();
      var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
      centerHeaderContainer.setHorizontalScroll(offset);
      bottomCenterContainer.setContainerTranslateX(offset);
      topCenterContainer.setContainerTranslateX(offset);
      stickyTopCenterContainer.setContainerTranslateX(offset);
      var centerViewport = this.centerRowContainerCtrl.getViewportElement();
      var isCenterViewportLastHorizontal = this.eLastHScroll === centerViewport;
      var partner = isCenterViewportLastHorizontal ? fakeHScroll.getViewport() : this.centerRowContainerCtrl.getViewportElement();
      setScrollLeft(partner, Math.abs(scrollLeft2), this.enableRtl);
    };
    GridBodyScrollFeature2.prototype.isControllingHScroll = function(eDiv) {
      if (!this.eLastHScroll) {
        this.eLastHScroll = eDiv;
        return true;
      }
      return eDiv === this.eLastHScroll;
    };
    GridBodyScrollFeature2.prototype.isControllingVScroll = function(eDiv) {
      if (!this.eLastVScroll) {
        this.eLastVScroll = eDiv;
        return true;
      }
      return eDiv === this.eLastVScroll;
    };
    GridBodyScrollFeature2.prototype.onFakeHScroll = function() {
      var fakeHScrollViewport = this.ctrlsService.getFakeHScrollComp().getViewport();
      if (!this.isControllingHScroll(fakeHScrollViewport)) {
        return;
      }
      this.onHScrollCommon(fakeHScrollViewport);
    };
    GridBodyScrollFeature2.prototype.onHScroll = function() {
      var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();
      if (!this.isControllingHScroll(centerContainerViewport)) {
        return;
      }
      this.onHScrollCommon(centerContainerViewport);
    };
    GridBodyScrollFeature2.prototype.onHScrollCommon = function(eSource) {
      var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();
      var scrollLeft2 = centerContainerViewport.scrollLeft;
      if (this.shouldBlockScrollUpdate("horizontal", scrollLeft2, true)) {
        return;
      }
      this.doHorizontalScroll(Math.round(getScrollLeft(eSource, this.enableRtl)));
      this.resetLastHScrollDebounced();
    };
    GridBodyScrollFeature2.prototype.onFakeVScroll = function() {
      var fakeVScrollViewport = this.ctrlsService.getFakeVScrollComp().getViewport();
      if (!this.isControllingVScroll(fakeVScrollViewport)) {
        return;
      }
      this.onVScrollCommon(fakeVScrollViewport);
    };
    GridBodyScrollFeature2.prototype.onVScroll = function() {
      if (!this.isControllingVScroll(this.eBodyViewport)) {
        return;
      }
      this.onVScrollCommon(this.eBodyViewport);
    };
    GridBodyScrollFeature2.prototype.onVScrollCommon = function(eSource) {
      var scrollTop2 = eSource.scrollTop;
      if (this.shouldBlockScrollUpdate("vertical", scrollTop2, true)) {
        return;
      }
      this.animationFrameService.setScrollTop(scrollTop2);
      this.nextScrollTop = scrollTop2;
      if (this.gridOptionsService.is("suppressAnimationFrame")) {
        this.scrollTop = this.nextScrollTop;
        this.redrawRowsAfterScroll();
      } else {
        this.animationFrameService.schedule();
      }
      if (eSource === this.eBodyViewport) {
        var fakeVScrollViewport = this.ctrlsService.getFakeVScrollComp().getViewport();
        fakeVScrollViewport.scrollTop = scrollTop2;
      } else {
        this.eBodyViewport.scrollTop = scrollTop2;
      }
      this.resetLastVScrollDebounced();
    };
    GridBodyScrollFeature2.prototype.doHorizontalScroll = function(scrollLeft2) {
      var fakeHScrollViewport = this.ctrlsService.getFakeHScrollComp().getViewport();
      var fakeScrollLeft = getScrollLeft(fakeHScrollViewport, this.enableRtl);
      if (this.scrollLeft === scrollLeft2 && scrollLeft2 === fakeScrollLeft) {
        return;
      }
      this.scrollLeft = scrollLeft2;
      this.fireScrollEvent("horizontal");
      this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft2);
      this.onHorizontalViewportChanged();
    };
    GridBodyScrollFeature2.prototype.fireScrollEvent = function(direction) {
      var _this = this;
      var bodyScrollEvent = {
        type: Events.EVENT_BODY_SCROLL,
        direction,
        left: this.scrollLeft,
        top: this.scrollTop
      };
      this.eventService.dispatchEvent(bodyScrollEvent);
      window.clearTimeout(this.scrollTimer);
      this.scrollTimer = void 0;
      this.scrollTimer = window.setTimeout(function() {
        var bodyScrollEndEvent = Object.assign({}, bodyScrollEvent, {
          type: Events.EVENT_BODY_SCROLL_END
        });
        _this.eventService.dispatchEvent(bodyScrollEndEvent);
      }, 100);
    };
    GridBodyScrollFeature2.prototype.shouldBlockScrollUpdate = function(direction, scrollTo, touchOnly) {
      if (touchOnly === void 0) {
        touchOnly = false;
      }
      if (touchOnly && !isIOSUserAgent()) {
        return false;
      }
      if (direction === "vertical") {
        var clientHeight = getInnerHeight(this.eBodyViewport);
        var scrollHeight = this.eBodyViewport.scrollHeight;
        if (scrollTo < 0 || scrollTo + clientHeight > scrollHeight) {
          return true;
        }
      }
      if (direction === "horizontal") {
        var clientWidth = this.centerRowContainerCtrl.getCenterWidth();
        var scrollWidth = this.centerRowContainerCtrl.getViewportElement().scrollWidth;
        if (this.enableRtl && isRtlNegativeScroll()) {
          if (scrollTo > 0) {
            return true;
          }
        } else if (scrollTo < 0) {
          return true;
        }
        if (Math.abs(scrollTo) + clientWidth > scrollWidth) {
          return true;
        }
      }
      return false;
    };
    GridBodyScrollFeature2.prototype.redrawRowsAfterScroll = function() {
      this.fireScrollEvent("vertical");
    };
    GridBodyScrollFeature2.prototype.onHorizontalViewportChanged = function() {
      this.centerRowContainerCtrl.onHorizontalViewportChanged();
    };
    GridBodyScrollFeature2.prototype.checkScrollLeft = function() {
      if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {
        this.onHScrollCommon(this.centerRowContainerCtrl.getViewportElement());
      }
    };
    GridBodyScrollFeature2.prototype.executeAnimationFrameScroll = function() {
      var frameNeeded = this.scrollTop != this.nextScrollTop;
      if (frameNeeded) {
        this.scrollTop = this.nextScrollTop;
        this.redrawRowsAfterScroll();
      }
      return frameNeeded;
    };
    GridBodyScrollFeature2.prototype.setHorizontalScrollPosition = function(hScrollPosition) {
      var minScrollLeft = 0;
      var maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();
      if (this.shouldBlockScrollUpdate("horizontal", hScrollPosition)) {
        if (this.enableRtl && isRtlNegativeScroll()) {
          hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;
        } else {
          hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);
        }
      }
      setScrollLeft(this.centerRowContainerCtrl.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);
      this.doHorizontalScroll(hScrollPosition);
    };
    GridBodyScrollFeature2.prototype.setVerticalScrollPosition = function(vScrollPosition) {
      this.eBodyViewport.scrollTop = vScrollPosition;
    };
    GridBodyScrollFeature2.prototype.getVScrollPosition = function() {
      var result = {
        top: this.eBodyViewport.scrollTop,
        bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight
      };
      return result;
    };
    GridBodyScrollFeature2.prototype.getHScrollPosition = function() {
      return this.centerRowContainerCtrl.getHScrollPosition();
    };
    GridBodyScrollFeature2.prototype.isHorizontalScrollShowing = function() {
      return this.centerRowContainerCtrl.isHorizontalScrollShowing();
    };
    GridBodyScrollFeature2.prototype.scrollHorizontally = function(pixels) {
      var oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;
      this.setHorizontalScrollPosition(oldScrollPosition + pixels);
      return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;
    };
    GridBodyScrollFeature2.prototype.scrollToTop = function() {
      this.eBodyViewport.scrollTop = 0;
    };
    GridBodyScrollFeature2.prototype.ensureNodeVisible = function(comparator, position) {
      if (position === void 0) {
        position = null;
      }
      var rowCount = this.rowModel.getRowCount();
      var indexToSelect = -1;
      for (var i2 = 0; i2 < rowCount; i2++) {
        var node = this.rowModel.getRow(i2);
        if (typeof comparator === "function") {
          var predicate = comparator;
          if (node && predicate(node)) {
            indexToSelect = i2;
            break;
          }
        } else {
          if (comparator === node || comparator === node.data) {
            indexToSelect = i2;
            break;
          }
        }
      }
      if (indexToSelect >= 0) {
        this.ensureIndexVisible(indexToSelect, position);
      }
    };
    GridBodyScrollFeature2.prototype.ensureIndexVisible = function(index, position) {
      if (this.gridOptionsService.isDomLayout("print")) {
        return;
      }
      var rowCount = this.paginationProxy.getRowCount();
      if (typeof index !== "number" || index < 0 || index >= rowCount) {
        console.warn("AG Grid: Invalid row index for ensureIndexVisible: " + index);
        return;
      }
      var isPaging = this.gridOptionsService.is("pagination");
      var paginationPanelEnabled = isPaging && !this.gridOptionsService.is("suppressPaginationPanel");
      if (!paginationPanelEnabled) {
        this.paginationProxy.goToPageWithIndex(index);
      }
      var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();
      var stickyTopHeight = gridBodyCtrl.getStickyTopHeight();
      var rowNode = this.paginationProxy.getRow(index);
      var rowGotShiftedDuringOperation;
      do {
        var startingRowTop = rowNode.rowTop;
        var startingRowHeight = rowNode.rowHeight;
        var paginationOffset = this.paginationProxy.getPixelOffset();
        var rowTopPixel = rowNode.rowTop - paginationOffset;
        var rowBottomPixel = rowTopPixel + rowNode.rowHeight;
        var scrollPosition = this.getVScrollPosition();
        var heightOffset = this.heightScaler.getDivStretchOffset();
        var vScrollTop = scrollPosition.top + heightOffset;
        var vScrollBottom = scrollPosition.bottom + heightOffset;
        var viewportHeight = vScrollBottom - vScrollTop;
        var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);
        var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);
        var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);
        var rowAboveViewport = vScrollTop + stickyTopHeight > rowTopPixel;
        var rowBelowViewport = vScrollBottom < rowBottomPixel;
        var newScrollPosition = null;
        if (position === "top") {
          newScrollPosition = pxTop;
        } else if (position === "bottom") {
          newScrollPosition = pxBottom;
        } else if (position === "middle") {
          newScrollPosition = pxMiddle;
        } else if (rowAboveViewport) {
          newScrollPosition = pxTop - stickyTopHeight;
        } else if (rowBelowViewport) {
          newScrollPosition = pxBottom;
        }
        if (newScrollPosition !== null) {
          this.eBodyViewport.scrollTop = newScrollPosition;
          this.rowRenderer.redrawAfterScroll();
        }
        rowGotShiftedDuringOperation = startingRowTop !== rowNode.rowTop || startingRowHeight !== rowNode.rowHeight;
      } while (rowGotShiftedDuringOperation);
      this.animationFrameService.flushAllFrames();
    };
    GridBodyScrollFeature2.prototype.ensureColumnVisible = function(key, position) {
      if (position === void 0) {
        position = "auto";
      }
      var column = this.columnModel.getGridColumn(key);
      if (!column) {
        return;
      }
      if (column.isPinned()) {
        return;
      }
      if (!this.columnModel.isColumnDisplayed(column)) {
        return;
      }
      var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);
      if (newHorizontalScroll !== null) {
        this.centerRowContainerCtrl.setCenterViewportScrollLeft(newHorizontalScroll);
      }
      this.centerRowContainerCtrl.onHorizontalViewportChanged();
      this.animationFrameService.flushAllFrames();
    };
    GridBodyScrollFeature2.prototype.getPositionedHorizontalScroll = function(column, position) {
      var _a47 = this.isColumnOutsideViewport(column), columnBeforeStart = _a47.columnBeforeStart, columnAfterEnd = _a47.columnAfterEnd;
      var viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();
      var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();
      var isRtl = this.enableRtl;
      var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;
      var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;
      if (position !== "auto") {
        alignColToStart = position === "start";
        alignColToEnd = position === "end";
      }
      var isMiddle = position === "middle";
      if (alignColToStart || alignColToEnd || isMiddle) {
        var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;
        if (isMiddle) {
          return colMiddle - viewportWidth / 2;
        }
        if (alignColToStart) {
          return isRtl ? colRight : colLeft;
        }
        return isRtl ? colLeft - viewportWidth : colRight - viewportWidth;
      }
      return null;
    };
    GridBodyScrollFeature2.prototype.isColumnOutsideViewport = function(column) {
      var _a47 = this.getViewportBounds(), viewportStart = _a47.start, viewportEnd = _a47.end;
      var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;
      var isRtl = this.enableRtl;
      var columnBeforeStart = isRtl ? viewportStart > colRight : viewportEnd < colRight;
      var columnAfterEnd = isRtl ? viewportEnd < colLeft : viewportStart > colLeft;
      return { columnBeforeStart, columnAfterEnd };
    };
    GridBodyScrollFeature2.prototype.getColumnBounds = function(column) {
      var isRtl = this.enableRtl;
      var bodyWidth = this.columnModel.getBodyContainerWidth();
      var colWidth = column.getActualWidth();
      var colLeft = column.getLeft();
      var multiplier = isRtl ? -1 : 1;
      var colLeftPixel = isRtl ? bodyWidth - colLeft : colLeft;
      var colRightPixel = colLeftPixel + colWidth * multiplier;
      var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;
      return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };
    };
    GridBodyScrollFeature2.prototype.getViewportBounds = function() {
      var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();
      var scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();
      var viewportStartPixel = scrollPosition;
      var viewportEndPixel = viewportWidth + scrollPosition;
      return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };
    };
    __decorate51([
      Autowired("ctrlsService")
    ], GridBodyScrollFeature2.prototype, "ctrlsService", void 0);
    __decorate51([
      Autowired("animationFrameService")
    ], GridBodyScrollFeature2.prototype, "animationFrameService", void 0);
    __decorate51([
      Autowired("paginationProxy")
    ], GridBodyScrollFeature2.prototype, "paginationProxy", void 0);
    __decorate51([
      Autowired("rowModel")
    ], GridBodyScrollFeature2.prototype, "rowModel", void 0);
    __decorate51([
      Autowired("rowContainerHeightService")
    ], GridBodyScrollFeature2.prototype, "heightScaler", void 0);
    __decorate51([
      Autowired("rowRenderer")
    ], GridBodyScrollFeature2.prototype, "rowRenderer", void 0);
    __decorate51([
      Autowired("columnModel")
    ], GridBodyScrollFeature2.prototype, "columnModel", void 0);
    __decorate51([
      PostConstruct
    ], GridBodyScrollFeature2.prototype, "postConstruct", null);
    return GridBodyScrollFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/autoScrollService.js
var AutoScrollService = (
  /** @class */
  function() {
    function AutoScrollService2(params) {
      this.tickingInterval = null;
      this.onScrollCallback = null;
      this.scrollContainer = params.scrollContainer;
      this.scrollHorizontally = params.scrollAxis.indexOf("x") !== -1;
      this.scrollVertically = params.scrollAxis.indexOf("y") !== -1;
      this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;
      if (params.onScrollCallback) {
        this.onScrollCallback = params.onScrollCallback;
      }
      if (this.scrollVertically) {
        this.getVerticalPosition = params.getVerticalPosition;
        this.setVerticalPosition = params.setVerticalPosition;
      }
      if (this.scrollHorizontally) {
        this.getHorizontalPosition = params.getHorizontalPosition;
        this.setHorizontalPosition = params.setHorizontalPosition;
      }
      this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || function() {
        return false;
      };
      this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || function() {
        return false;
      };
    }
    AutoScrollService2.prototype.check = function(mouseEvent, forceSkipVerticalScroll) {
      if (forceSkipVerticalScroll === void 0) {
        forceSkipVerticalScroll = false;
      }
      var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();
      if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {
        return;
      }
      var rect = this.scrollContainer.getBoundingClientRect();
      var scrollTick = this.scrollByTick;
      this.tickLeft = mouseEvent.clientX < rect.left + scrollTick;
      this.tickRight = mouseEvent.clientX > rect.right - scrollTick;
      this.tickUp = mouseEvent.clientY < rect.top + scrollTick && !skipVerticalScroll;
      this.tickDown = mouseEvent.clientY > rect.bottom - scrollTick && !skipVerticalScroll;
      if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {
        this.ensureTickingStarted();
      } else {
        this.ensureCleared();
      }
    };
    AutoScrollService2.prototype.ensureTickingStarted = function() {
      if (this.tickingInterval === null) {
        this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);
        this.tickCount = 0;
      }
    };
    AutoScrollService2.prototype.doTick = function() {
      this.tickCount++;
      var tickAmount;
      tickAmount = this.tickCount > 20 ? 200 : this.tickCount > 10 ? 80 : 40;
      if (this.scrollVertically) {
        var vScrollPosition = this.getVerticalPosition();
        if (this.tickUp) {
          this.setVerticalPosition(vScrollPosition - tickAmount);
        }
        if (this.tickDown) {
          this.setVerticalPosition(vScrollPosition + tickAmount);
        }
      }
      if (this.scrollHorizontally) {
        var hScrollPosition = this.getHorizontalPosition();
        if (this.tickLeft) {
          this.setHorizontalPosition(hScrollPosition - tickAmount);
        }
        if (this.tickRight) {
          this.setHorizontalPosition(hScrollPosition + tickAmount);
        }
      }
      if (this.onScrollCallback) {
        this.onScrollCallback();
      }
    };
    AutoScrollService2.prototype.ensureCleared = function() {
      if (this.tickingInterval) {
        window.clearInterval(this.tickingInterval);
        this.tickingInterval = null;
      }
    };
    return AutoScrollService2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowDragFeature.js
var __extends55 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign13 = function() {
  __assign13 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign13.apply(this, arguments);
};
var __decorate52 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read8 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread6 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read8(arguments[i2]));
  return ar;
};
var RowDragFeature = (
  /** @class */
  function(_super) {
    __extends55(RowDragFeature2, _super);
    function RowDragFeature2(eContainer) {
      var _this = _super.call(this) || this;
      _this.isMultiRowDrag = false;
      _this.isGridSorted = false;
      _this.isGridFiltered = false;
      _this.isRowGroupActive = false;
      _this.eContainer = eContainer;
      return _this;
    }
    RowDragFeature2.prototype.postConstruct = function() {
      var _this = this;
      if (this.gridOptionsService.isRowModelType("clientSide")) {
        this.clientSideRowModel = this.rowModel;
      }
      var refreshStatus = function() {
        _this.onSortChanged();
        _this.onFilterChanged();
        _this.onRowGroupChanged();
      };
      this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function() {
        refreshStatus();
      });
      refreshStatus();
      this.ctrlsService.whenReady(function() {
        var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
        _this.autoScrollService = new AutoScrollService({
          scrollContainer: gridBodyCon.getBodyViewportElement(),
          scrollAxis: "y",
          getVerticalPosition: function() {
            return gridBodyCon.getScrollFeature().getVScrollPosition().top;
          },
          setVerticalPosition: function(position) {
            return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position);
          },
          onScrollCallback: function() {
            _this.onDragging(_this.lastDraggingEvent);
          }
        });
      });
    };
    RowDragFeature2.prototype.onSortChanged = function() {
      this.isGridSorted = this.sortController.isSortActive();
    };
    RowDragFeature2.prototype.onFilterChanged = function() {
      this.isGridFiltered = this.filterManager.isAnyFilterPresent();
    };
    RowDragFeature2.prototype.onRowGroupChanged = function() {
      var rowGroups = this.columnModel.getRowGroupColumns();
      this.isRowGroupActive = !missingOrEmpty(rowGroups);
    };
    RowDragFeature2.prototype.getContainer = function() {
      return this.eContainer;
    };
    RowDragFeature2.prototype.isInterestedIn = function(type2) {
      return type2 === DragSourceType.RowDrag;
    };
    RowDragFeature2.prototype.getIconName = function() {
      var managedDrag = this.gridOptionsService.is("rowDragManaged");
      if (managedDrag && this.shouldPreventRowMove()) {
        return DragAndDropService.ICON_NOT_ALLOWED;
      }
      return DragAndDropService.ICON_MOVE;
    };
    RowDragFeature2.prototype.shouldPreventRowMove = function() {
      return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;
    };
    RowDragFeature2.prototype.getRowNodes = function(draggingEvent) {
      var _this = this;
      if (!this.isFromThisGrid(draggingEvent)) {
        return draggingEvent.dragItem.rowNodes || [];
      }
      var isRowDragMultiRow = this.gridOptionsService.is("rowDragMultiRow");
      var selectedNodes = __spread6(this.selectionService.getSelectedNodes()).sort(function(a2, b2) {
        if (a2.rowIndex == null || b2.rowIndex == null) {
          return 0;
        }
        return _this.getRowIndexNumber(a2) - _this.getRowIndexNumber(b2);
      });
      var currentNode = draggingEvent.dragItem.rowNode;
      if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {
        this.isMultiRowDrag = true;
        return selectedNodes;
      }
      this.isMultiRowDrag = false;
      return [currentNode];
    };
    RowDragFeature2.prototype.onDragEnter = function(draggingEvent) {
      draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);
      this.dispatchGridEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);
      this.getRowNodes(draggingEvent).forEach(function(rowNode) {
        rowNode.setDragging(true);
      });
      this.onEnterOrDragging(draggingEvent);
    };
    RowDragFeature2.prototype.onDragging = function(draggingEvent) {
      this.onEnterOrDragging(draggingEvent);
    };
    RowDragFeature2.prototype.isFromThisGrid = function(draggingEvent) {
      var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;
      return dragSourceDomDataKey === this.gridOptionsService.getDomDataKey();
    };
    RowDragFeature2.prototype.isDropZoneWithinThisGrid = function(draggingEvent) {
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var gridGui = gridBodyCon.getGui();
      var dropZoneTarget = draggingEvent.dropZoneTarget;
      return !gridGui.contains(dropZoneTarget);
    };
    RowDragFeature2.prototype.onEnterOrDragging = function(draggingEvent) {
      this.dispatchGridEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);
      this.lastDraggingEvent = draggingEvent;
      var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
      var managedDrag = this.gridOptionsService.is("rowDragManaged");
      if (managedDrag) {
        this.doManagedDrag(draggingEvent, pixel);
      }
      this.autoScrollService.check(draggingEvent.event);
    };
    RowDragFeature2.prototype.doManagedDrag = function(draggingEvent, pixel) {
      var isFromThisGrid = this.isFromThisGrid(draggingEvent);
      var managedDrag = this.gridOptionsService.is("rowDragManaged");
      var rowNodes = draggingEvent.dragItem.rowNodes;
      if (managedDrag && this.shouldPreventRowMove()) {
        return;
      }
      if (this.gridOptionsService.is("suppressMoveWhenRowDragging") || !isFromThisGrid) {
        if (!this.isDropZoneWithinThisGrid(draggingEvent)) {
          this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);
        }
      } else {
        this.moveRows(rowNodes, pixel);
      }
    };
    RowDragFeature2.prototype.getRowIndexNumber = function(rowNode) {
      return parseInt(last(rowNode.getRowIndexString().split("-")), 10);
    };
    RowDragFeature2.prototype.moveRowAndClearHighlight = function(draggingEvent) {
      var _this = this;
      var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();
      var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;
      var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
      var rowNodes = draggingEvent.dragItem.rowNodes;
      var increment = isBelow ? 1 : 0;
      if (this.isFromThisGrid(draggingEvent)) {
        rowNodes.forEach(function(rowNode) {
          if (rowNode.rowTop < pixel) {
            increment -= 1;
          }
        });
        this.moveRows(rowNodes, pixel, increment);
      } else {
        var getRowIdFunc_1 = this.gridOptionsService.getRowIdFunc();
        var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;
        if (this.clientSideRowModel.getHighlightPosition(pixel) === RowHighlightPosition.Above) {
          addIndex--;
        }
        this.clientSideRowModel.updateRowData({
          add: rowNodes.map(function(node) {
            return node.data;
          }).filter(function(data) {
            return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data, level: 0 }) : data.id);
          }),
          addIndex
        });
      }
      this.clearRowHighlight();
    };
    RowDragFeature2.prototype.clearRowHighlight = function() {
      this.clientSideRowModel.highlightRowAtPixel(null);
    };
    RowDragFeature2.prototype.moveRows = function(rowNodes, pixel, increment) {
      if (increment === void 0) {
        increment = 0;
      }
      var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);
      if (rowWasMoved) {
        this.focusService.clearFocusedCell();
        if (this.rangeService) {
          this.rangeService.removeAllCellRanges();
        }
      }
    };
    RowDragFeature2.prototype.addRowDropZone = function(params) {
      var _this = this;
      if (!params.getContainer()) {
        doOnce(function() {
          return console.warn("AG Grid: addRowDropZone - A container target needs to be provided");
        }, "add-drop-zone-empty-target");
        return;
      }
      if (this.dragAndDropService.findExternalZone(params)) {
        console.warn("AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.");
        return;
      }
      var processedParams = {
        getContainer: params.getContainer
      };
      if (params.fromGrid) {
        params.fromGrid = void 0;
        processedParams = params;
      } else {
        if (params.onDragEnter) {
          processedParams.onDragEnter = function(e2) {
            params.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e2));
          };
        }
        if (params.onDragLeave) {
          processedParams.onDragLeave = function(e2) {
            params.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e2));
          };
        }
        if (params.onDragging) {
          processedParams.onDragging = function(e2) {
            params.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e2));
          };
        }
        if (params.onDragStop) {
          processedParams.onDragStop = function(e2) {
            params.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e2));
          };
        }
      }
      this.dragAndDropService.addDropTarget(__assign13({ isInterestedIn: function(type2) {
        return type2 === DragSourceType.RowDrag;
      }, getIconName: function() {
        return DragAndDropService.ICON_MOVE;
      }, external: true }, processedParams));
    };
    RowDragFeature2.prototype.getRowDropZone = function(events) {
      var _this = this;
      var getContainer = this.getContainer.bind(this);
      var onDragEnter = this.onDragEnter.bind(this);
      var onDragLeave = this.onDragLeave.bind(this);
      var onDragging = this.onDragging.bind(this);
      var onDragStop = this.onDragStop.bind(this);
      if (!events) {
        return {
          getContainer,
          onDragEnter,
          onDragLeave,
          onDragging,
          onDragStop,
          /* @private */
          fromGrid: true
        };
      }
      return {
        getContainer,
        onDragEnter: events.onDragEnter ? function(e2) {
          onDragEnter(e2);
          events.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e2));
        } : onDragEnter,
        onDragLeave: events.onDragLeave ? function(e2) {
          onDragLeave(e2);
          events.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e2));
        } : onDragLeave,
        onDragging: events.onDragging ? function(e2) {
          onDragging(e2);
          events.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e2));
        } : onDragging,
        onDragStop: events.onDragStop ? function(e2) {
          onDragStop(e2);
          events.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e2));
        } : onDragStop,
        fromGrid: true
        /* @private */
      };
    };
    RowDragFeature2.prototype.draggingToRowDragEvent = function(type2, draggingEvent) {
      var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
      var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();
      var overIndex = -1;
      var overNode;
      if (!mouseIsPastLastRow) {
        overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);
        overNode = this.rowModel.getRow(overIndex);
      }
      var vDirectionString;
      switch (draggingEvent.vDirection) {
        case VerticalDirection.Down:
          vDirectionString = "down";
          break;
        case VerticalDirection.Up:
          vDirectionString = "up";
          break;
        default:
          vDirectionString = null;
          break;
      }
      var event = {
        type: type2,
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context"),
        event: draggingEvent.event,
        node: draggingEvent.dragItem.rowNode,
        nodes: draggingEvent.dragItem.rowNodes,
        overIndex,
        overNode,
        y: yNormalised,
        vDirection: vDirectionString
      };
      return event;
    };
    RowDragFeature2.prototype.dispatchGridEvent = function(type2, draggingEvent) {
      var event = this.draggingToRowDragEvent(type2, draggingEvent);
      this.eventService.dispatchEvent(event);
    };
    RowDragFeature2.prototype.onDragLeave = function(draggingEvent) {
      this.dispatchGridEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);
      this.stopDragging(draggingEvent);
      if (this.gridOptionsService.is("rowDragManaged")) {
        this.clearRowHighlight();
      }
      if (this.isFromThisGrid(draggingEvent)) {
        this.isMultiRowDrag = false;
      }
    };
    RowDragFeature2.prototype.onDragStop = function(draggingEvent) {
      this.dispatchGridEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);
      this.stopDragging(draggingEvent);
      if (this.gridOptionsService.is("rowDragManaged") && (this.gridOptionsService.is("suppressMoveWhenRowDragging") || !this.isFromThisGrid(draggingEvent)) && !this.isDropZoneWithinThisGrid(draggingEvent)) {
        this.moveRowAndClearHighlight(draggingEvent);
      }
    };
    RowDragFeature2.prototype.stopDragging = function(draggingEvent) {
      this.autoScrollService.ensureCleared();
      this.getRowNodes(draggingEvent).forEach(function(rowNode) {
        rowNode.setDragging(false);
      });
    };
    __decorate52([
      Autowired("dragAndDropService")
    ], RowDragFeature2.prototype, "dragAndDropService", void 0);
    __decorate52([
      Autowired("rowModel")
    ], RowDragFeature2.prototype, "rowModel", void 0);
    __decorate52([
      Autowired("paginationProxy")
    ], RowDragFeature2.prototype, "paginationProxy", void 0);
    __decorate52([
      Autowired("columnModel")
    ], RowDragFeature2.prototype, "columnModel", void 0);
    __decorate52([
      Autowired("focusService")
    ], RowDragFeature2.prototype, "focusService", void 0);
    __decorate52([
      Autowired("sortController")
    ], RowDragFeature2.prototype, "sortController", void 0);
    __decorate52([
      Autowired("filterManager")
    ], RowDragFeature2.prototype, "filterManager", void 0);
    __decorate52([
      Autowired("selectionService")
    ], RowDragFeature2.prototype, "selectionService", void 0);
    __decorate52([
      Autowired("mouseEventService")
    ], RowDragFeature2.prototype, "mouseEventService", void 0);
    __decorate52([
      Autowired("ctrlsService")
    ], RowDragFeature2.prototype, "ctrlsService", void 0);
    __decorate52([
      Optional2("rangeService")
    ], RowDragFeature2.prototype, "rangeService", void 0);
    __decorate52([
      PostConstruct
    ], RowDragFeature2.prototype, "postConstruct", null);
    return RowDragFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyCtrl.js
var __extends56 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate53 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RowAnimationCssClasses;
(function(RowAnimationCssClasses2) {
  RowAnimationCssClasses2["ANIMATION_ON"] = "ag-row-animation";
  RowAnimationCssClasses2["ANIMATION_OFF"] = "ag-row-no-animation";
})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));
var CSS_CLASS_CELL_SELECTABLE = "ag-selectable";
var CSS_CLASS_FORCE_VERTICAL_SCROLL = "ag-force-vertical-scroll";
var CSS_CLASS_COLUMN_MOVING = "ag-column-moving";
var GridBodyCtrl = (
  /** @class */
  function(_super) {
    __extends56(GridBodyCtrl2, _super);
    function GridBodyCtrl2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.stickyTopHeight = 0;
      return _this;
    }
    GridBodyCtrl2.prototype.getScrollFeature = function() {
      return this.bodyScrollFeature;
    };
    GridBodyCtrl2.prototype.getBodyViewportElement = function() {
      return this.eBodyViewport;
    };
    GridBodyCtrl2.prototype.setComp = function(comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop) {
      this.comp = comp;
      this.eGridBody = eGridBody;
      this.eBodyViewport = eBodyViewport;
      this.eTop = eTop;
      this.eBottom = eBottom;
      this.eStickyTop = eStickyTop;
      this.setCellTextSelection(this.gridOptionsService.is("enableCellTextSelection"));
      this.createManagedBean(new LayoutFeature(this.comp));
      this.bodyScrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));
      this.addRowDragListener();
      this.setupRowAnimationCssClass();
      this.addEventListeners();
      this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop]);
      this.onGridColumnsChanged();
      this.addBodyViewportListener();
      this.setFloatingHeights();
      this.disableBrowserDragging();
      this.addStopEditingWhenGridLosesFocus();
      this.ctrlsService.registerGridBodyCtrl(this);
    };
    GridBodyCtrl2.prototype.getComp = function() {
      return this.comp;
    };
    GridBodyCtrl2.prototype.addEventListeners = function() {
      this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));
    };
    GridBodyCtrl2.prototype.addFocusListeners = function(elements) {
      var _this = this;
      elements.forEach(function(element) {
        _this.addManagedListener(element, "focusin", function(e2) {
          var target = e2.target;
          var isFocusedElementNested = isElementChildOfClass(target, "ag-root", element);
          element.classList.toggle("ag-has-focus", !isFocusedElementNested);
        });
        _this.addManagedListener(element, "focusout", function(e2) {
          var target = e2.target, relatedTarget = e2.relatedTarget;
          var gridContainRelatedTarget = element.contains(relatedTarget);
          var isNestedRelatedTarget = isElementChildOfClass(relatedTarget, "ag-root", element);
          var isNestedTarget = isElementChildOfClass(target, "ag-root", element);
          if (isNestedTarget) {
            return;
          }
          if (!gridContainRelatedTarget || isNestedRelatedTarget) {
            element.classList.remove("ag-has-focus");
          }
        });
      });
    };
    GridBodyCtrl2.prototype.setColumnMovingCss = function(moving) {
      this.comp.setColumnMovingCss(moving ? CSS_CLASS_COLUMN_MOVING : null, moving);
    };
    GridBodyCtrl2.prototype.setCellTextSelection = function(selectable) {
      if (selectable === void 0) {
        selectable = false;
      }
      var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;
      this.comp.setCellSelectableCss(cssClass, selectable);
    };
    GridBodyCtrl2.prototype.onScrollVisibilityChanged = function() {
      var visible = this.scrollVisibleService.isVerticalScrollShowing();
      this.setVerticalScrollPaddingVisible(visible);
      this.setStickyTopWidth(visible);
      var scrollbarWidth = visible ? this.gridOptionsService.getScrollbarWidth() || 0 : 0;
      var pad = isInvisibleScrollbar() ? 16 : 0;
      var width = "calc(100% + " + (scrollbarWidth + pad) + "px)";
      this.comp.setBodyViewportWidth(width);
    };
    GridBodyCtrl2.prototype.onGridColumnsChanged = function() {
      var columns = this.columnModel.getAllGridColumns();
      this.comp.setColumnCount(columns ? columns.length : 0);
    };
    GridBodyCtrl2.prototype.disableBrowserDragging = function() {
      this.addManagedListener(this.eGridBody, "dragstart", function(event) {
        if (event.target instanceof HTMLImageElement) {
          event.preventDefault();
          return false;
        }
      });
    };
    GridBodyCtrl2.prototype.addStopEditingWhenGridLosesFocus = function() {
      var _this = this;
      if (!this.gridOptionsService.is("stopEditingWhenCellsLoseFocus")) {
        return;
      }
      var focusOutListener = function(event) {
        var elementWithFocus = event.relatedTarget;
        if (getTabIndex(elementWithFocus) === null) {
          _this.rowRenderer.stopEditing();
          return;
        }
        var clickInsideGrid = (
          // see if click came from inside the viewports
          viewports.some(function(viewport) {
            return viewport.contains(elementWithFocus);
          }) && _this.mouseEventService.isElementInThisGrid(elementWithFocus)
        );
        if (!clickInsideGrid) {
          var popupService = _this.popupService;
          clickInsideGrid = popupService.getActivePopups().some(function(popup) {
            return popup.contains(elementWithFocus);
          }) || popupService.isElementWithinCustomPopup(elementWithFocus);
        }
        if (!clickInsideGrid) {
          _this.rowRenderer.stopEditing();
        }
      };
      var viewports = [this.eBodyViewport, this.eBottom, this.eTop, this.eStickyTop];
      viewports.forEach(function(viewport) {
        return _this.addManagedListener(viewport, "focusout", focusOutListener);
      });
    };
    GridBodyCtrl2.prototype.updateRowCount = function() {
      var headerCount = this.headerNavigationService.getHeaderRowCount();
      var rowCount = this.rowModel.isLastRowIndexKnown() ? this.rowModel.getRowCount() : -1;
      var total = rowCount === -1 ? -1 : headerCount + rowCount;
      this.comp.setRowCount(total);
    };
    GridBodyCtrl2.prototype.registerBodyViewportResizeListener = function(listener) {
      this.comp.registerBodyViewportResizeListener(listener);
    };
    GridBodyCtrl2.prototype.setVerticalScrollPaddingVisible = function(visible) {
      var overflowY = visible ? "scroll" : "hidden";
      this.comp.setPinnedTopBottomOverflowY(overflowY);
    };
    GridBodyCtrl2.prototype.isVerticalScrollShowing = function() {
      var show = this.gridOptionsService.is("alwaysShowVerticalScroll");
      var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;
      var allowVerticalScroll = this.gridOptionsService.isDomLayout("normal");
      this.comp.setAlwaysVerticalScrollClass(cssClass, show);
      return show || allowVerticalScroll && isVerticalScrollShowing(this.eBodyViewport);
    };
    GridBodyCtrl2.prototype.setupRowAnimationCssClass = function() {
      var _this = this;
      var listener = function() {
        var animateRows = _this.gridOptionsService.isAnimateRows() && !_this.rowContainerHeightService.isStretching();
        var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;
        _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);
      };
      listener();
      this.addManagedListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);
      this.addManagedPropertyListener("animateRows", listener);
    };
    GridBodyCtrl2.prototype.getGridBodyElement = function() {
      return this.eGridBody;
    };
    GridBodyCtrl2.prototype.addBodyViewportListener = function() {
      var _this = this;
      var listener = function(mouseEvent, touch, touchEvent) {
        if (!mouseEvent && !touchEvent) {
          return;
        }
        if (_this.gridOptionsService.is("preventDefaultOnContextMenu")) {
          var event_1 = mouseEvent || touchEvent;
          event_1.preventDefault();
        }
        var target = (mouseEvent || touch).target;
        if (target === _this.eBodyViewport || target === _this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {
          if (_this.contextMenuFactory) {
            if (mouseEvent) {
              _this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, _this.eGridBody);
            } else if (touchEvent) {
              _this.contextMenuFactory.onContextMenu(null, touchEvent, null, null, null, _this.eGridBody);
            }
          }
        }
      };
      this.addManagedListener(this.eBodyViewport, "contextmenu", listener);
      this.mockContextMenuForIPad(listener);
      this.addManagedListener(this.eBodyViewport, "wheel", this.onBodyViewportWheel.bind(this));
      this.addManagedListener(this.eStickyTop, "wheel", this.onStickyTopWheel.bind(this));
    };
    GridBodyCtrl2.prototype.mockContextMenuForIPad = function(listener) {
      if (!isIOSUserAgent()) {
        return;
      }
      var touchListener = new TouchListener(this.eBodyViewport);
      var longTapListener = function(event) {
        listener(void 0, event.touchStart, event.touchEvent);
      };
      this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);
      this.addDestroyFunc(function() {
        return touchListener.destroy();
      });
    };
    GridBodyCtrl2.prototype.onBodyViewportWheel = function(e2) {
      if (!this.gridOptionsService.is("suppressScrollWhenPopupsAreOpen")) {
        return;
      }
      if (this.popupService.hasAnchoredPopup()) {
        e2.preventDefault();
      }
    };
    GridBodyCtrl2.prototype.onStickyTopWheel = function(e2) {
      e2.preventDefault();
      if (e2.offsetY) {
        this.scrollVertically(e2.deltaY);
      }
    };
    GridBodyCtrl2.prototype.getGui = function() {
      return this.eGridBody;
    };
    GridBodyCtrl2.prototype.scrollVertically = function(pixels) {
      var oldScrollPosition = this.eBodyViewport.scrollTop;
      this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);
      return this.eBodyViewport.scrollTop - oldScrollPosition;
    };
    GridBodyCtrl2.prototype.addRowDragListener = function() {
      this.rowDragFeature = this.createManagedBean(new RowDragFeature(this.eBodyViewport));
      this.dragAndDropService.addDropTarget(this.rowDragFeature);
    };
    GridBodyCtrl2.prototype.getRowDragFeature = function() {
      return this.rowDragFeature;
    };
    GridBodyCtrl2.prototype.onPinnedRowDataChanged = function() {
      this.setFloatingHeights();
    };
    GridBodyCtrl2.prototype.setFloatingHeights = function() {
      var pinnedRowModel = this.pinnedRowModel;
      var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();
      if (floatingTopHeight) {
        floatingTopHeight += 1;
      }
      var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();
      if (floatingBottomHeight) {
        floatingBottomHeight += 1;
      }
      this.comp.setTopHeight(floatingTopHeight);
      this.comp.setBottomHeight(floatingBottomHeight);
      this.comp.setTopDisplay(floatingTopHeight ? "inherit" : "none");
      this.comp.setBottomDisplay(floatingBottomHeight ? "inherit" : "none");
      this.setStickyTopOffsetTop();
    };
    GridBodyCtrl2.prototype.setStickyTopHeight = function(height) {
      if (height === void 0) {
        height = 0;
      }
      this.comp.setStickyTopHeight(height + "px");
      this.stickyTopHeight = height;
    };
    GridBodyCtrl2.prototype.getStickyTopHeight = function() {
      return this.stickyTopHeight;
    };
    GridBodyCtrl2.prototype.setStickyTopWidth = function(vScrollVisible) {
      if (!vScrollVisible) {
        this.comp.setStickyTopWidth("100%");
      } else {
        var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();
        this.comp.setStickyTopWidth("calc(100% - " + scrollbarWidth + "px)");
      }
    };
    GridBodyCtrl2.prototype.onHeaderHeightChanged = function() {
      this.setStickyTopOffsetTop();
    };
    GridBodyCtrl2.prototype.setStickyTopOffsetTop = function() {
      var headerCtrl = this.ctrlsService.getGridHeaderCtrl();
      var headerHeight = headerCtrl.getHeaderHeight();
      var pinnedTopHeight = this.pinnedRowModel.getPinnedTopTotalHeight();
      var height = 0;
      if (headerHeight > 0) {
        height += headerHeight + 1;
      }
      if (pinnedTopHeight > 0) {
        height += pinnedTopHeight + 1;
      }
      this.comp.setStickyTopTop(height + "px");
    };
    GridBodyCtrl2.prototype.sizeColumnsToFit = function(params, nextTimeout) {
      var _this = this;
      var removeScrollWidth = this.isVerticalScrollShowing();
      var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsService.getScrollbarWidth() : 0;
      var bodyViewportWidth = getInnerWidth(this.eBodyViewport);
      var availableWidth = bodyViewportWidth - scrollWidthToRemove;
      if (availableWidth > 0) {
        this.columnModel.sizeColumnsToFit(availableWidth, "sizeColumnsToFit", false, params);
        return;
      }
      if (nextTimeout === void 0) {
        window.setTimeout(function() {
          _this.sizeColumnsToFit(params, 100);
        }, 0);
      } else if (nextTimeout === 100) {
        window.setTimeout(function() {
          _this.sizeColumnsToFit(params, 500);
        }, 100);
      } else if (nextTimeout === 500) {
        window.setTimeout(function() {
          _this.sizeColumnsToFit(params, -1);
        }, 500);
      } else {
        console.warn("AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with zero width, maybe the grid is not visible yet on the screen?");
      }
    };
    GridBodyCtrl2.prototype.addScrollEventListener = function(listener) {
      this.eBodyViewport.addEventListener("scroll", listener, { passive: true });
    };
    GridBodyCtrl2.prototype.removeScrollEventListener = function(listener) {
      this.eBodyViewport.removeEventListener("scroll", listener);
    };
    __decorate53([
      Autowired("rowContainerHeightService")
    ], GridBodyCtrl2.prototype, "rowContainerHeightService", void 0);
    __decorate53([
      Autowired("ctrlsService")
    ], GridBodyCtrl2.prototype, "ctrlsService", void 0);
    __decorate53([
      Autowired("columnModel")
    ], GridBodyCtrl2.prototype, "columnModel", void 0);
    __decorate53([
      Autowired("scrollVisibleService")
    ], GridBodyCtrl2.prototype, "scrollVisibleService", void 0);
    __decorate53([
      Optional2("contextMenuFactory")
    ], GridBodyCtrl2.prototype, "contextMenuFactory", void 0);
    __decorate53([
      Autowired("headerNavigationService")
    ], GridBodyCtrl2.prototype, "headerNavigationService", void 0);
    __decorate53([
      Autowired("dragAndDropService")
    ], GridBodyCtrl2.prototype, "dragAndDropService", void 0);
    __decorate53([
      Autowired("pinnedRowModel")
    ], GridBodyCtrl2.prototype, "pinnedRowModel", void 0);
    __decorate53([
      Autowired("rowRenderer")
    ], GridBodyCtrl2.prototype, "rowRenderer", void 0);
    __decorate53([
      Autowired("popupService")
    ], GridBodyCtrl2.prototype, "popupService", void 0);
    __decorate53([
      Autowired("mouseEventService")
    ], GridBodyCtrl2.prototype, "mouseEventService", void 0);
    __decorate53([
      Autowired("rowModel")
    ], GridBodyCtrl2.prototype, "rowModel", void 0);
    return GridBodyCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/IRangeService.js
var SelectionHandleType;
(function(SelectionHandleType2) {
  SelectionHandleType2[SelectionHandleType2["FILL"] = 0] = "FILL";
  SelectionHandleType2[SelectionHandleType2["RANGE"] = 1] = "RANGE";
})(SelectionHandleType || (SelectionHandleType = {}));
var CellRangeType;
(function(CellRangeType2) {
  CellRangeType2[CellRangeType2["VALUE"] = 0] = "VALUE";
  CellRangeType2[CellRangeType2["DIMENSION"] = 1] = "DIMENSION";
})(CellRangeType || (CellRangeType = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellRangeFeature.js
var CSS_CELL_RANGE_SELECTED = "ag-cell-range-selected";
var CSS_CELL_RANGE_CHART = "ag-cell-range-chart";
var CSS_CELL_RANGE_SINGLE_CELL = "ag-cell-range-single-cell";
var CSS_CELL_RANGE_CHART_CATEGORY = "ag-cell-range-chart-category";
var CSS_CELL_RANGE_HANDLE = "ag-cell-range-handle";
var CSS_CELL_RANGE_TOP = "ag-cell-range-top";
var CSS_CELL_RANGE_RIGHT = "ag-cell-range-right";
var CSS_CELL_RANGE_BOTTOM = "ag-cell-range-bottom";
var CSS_CELL_RANGE_LEFT = "ag-cell-range-left";
var CellRangeFeature = (
  /** @class */
  function() {
    function CellRangeFeature2(beans, ctrl) {
      this.beans = beans;
      this.cellCtrl = ctrl;
    }
    CellRangeFeature2.prototype.setComp = function(cellComp, eGui) {
      this.cellComp = cellComp;
      this.eGui = eGui;
      this.onRangeSelectionChanged();
    };
    CellRangeFeature2.prototype.onRangeSelectionChanged = function() {
      if (!this.cellComp) {
        return;
      }
      this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());
      this.hasChartRange = this.getHasChartRange();
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-1", this.rangeCount === 1);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-2", this.rangeCount === 2);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-3", this.rangeCount === 3);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-4", this.rangeCount >= 4);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);
      setAriaSelected(this.eGui, this.rangeCount > 0 ? true : void 0);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());
      this.updateRangeBorders();
      this.refreshHandle();
    };
    CellRangeFeature2.prototype.updateRangeBorders = function() {
      var rangeBorders = this.getRangeBorders();
      var isSingleCell = this.isSingleCell();
      var isTop = !isSingleCell && rangeBorders.top;
      var isRight = !isSingleCell && rangeBorders.right;
      var isBottom = !isSingleCell && rangeBorders.bottom;
      var isLeft = !isSingleCell && rangeBorders.left;
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);
    };
    CellRangeFeature2.prototype.isSingleCell = function() {
      var rangeService = this.beans.rangeService;
      return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();
    };
    CellRangeFeature2.prototype.getHasChartRange = function() {
      var rangeService = this.beans.rangeService;
      if (!this.rangeCount || !rangeService) {
        return false;
      }
      var cellRanges = rangeService.getCellRanges();
      return cellRanges.length > 0 && cellRanges.every(function(range) {
        return includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type);
      });
    };
    CellRangeFeature2.prototype.updateRangeBordersIfRangeCount = function() {
      if (this.rangeCount > 0) {
        this.updateRangeBorders();
        this.refreshHandle();
      }
    };
    CellRangeFeature2.prototype.getRangeBorders = function() {
      var _this = this;
      var isRtl = this.beans.gridOptionsService.is("enableRtl");
      var top = false;
      var right = false;
      var bottom = false;
      var left = false;
      var thisCol = this.cellCtrl.getCellPosition().column;
      var _a47 = this.beans, rangeService = _a47.rangeService, columnModel = _a47.columnModel;
      var leftCol;
      var rightCol;
      if (isRtl) {
        leftCol = columnModel.getDisplayedColAfter(thisCol);
        rightCol = columnModel.getDisplayedColBefore(thisCol);
      } else {
        leftCol = columnModel.getDisplayedColBefore(thisCol);
        rightCol = columnModel.getDisplayedColAfter(thisCol);
      }
      var ranges = rangeService.getCellRanges().filter(function(range2) {
        return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range2);
      });
      if (!leftCol) {
        left = true;
      }
      if (!rightCol) {
        right = true;
      }
      for (var i2 = 0; i2 < ranges.length; i2++) {
        if (top && right && bottom && left) {
          break;
        }
        var range = ranges[i2];
        var startRow = rangeService.getRangeStartRow(range);
        var endRow = rangeService.getRangeEndRow(range);
        if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {
          top = true;
        }
        if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {
          bottom = true;
        }
        if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {
          left = true;
        }
        if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {
          right = true;
        }
      }
      return { top, right, bottom, left };
    };
    CellRangeFeature2.prototype.refreshHandle = function() {
      if (!this.beans.rangeService) {
        return;
      }
      var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();
      if (this.selectionHandle && !shouldHaveSelectionHandle) {
        this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);
      }
      if (shouldHaveSelectionHandle) {
        this.addSelectionHandle();
      }
      this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);
    };
    CellRangeFeature2.prototype.shouldHaveSelectionHandle = function() {
      var _a47 = this.beans, gridOptionsService = _a47.gridOptionsService, rangeService = _a47.rangeService;
      var cellRanges = rangeService.getCellRanges();
      var rangesLen = cellRanges.length;
      if (this.rangeCount < 1 || rangesLen < 1) {
        return false;
      }
      var cellRange = last(cellRanges);
      var cellPosition = this.cellCtrl.getCellPosition();
      var isFillHandleAvailable = gridOptionsService.is("enableFillHandle") && !this.cellCtrl.isSuppressFillHandle();
      var isRangeHandleAvailable = gridOptionsService.is("enableRangeHandle");
      var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);
      if (this.hasChartRange) {
        var hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;
        var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);
        this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);
        handleIsAvailable = cellRange.type === CellRangeType.VALUE;
      }
      return handleIsAvailable && cellRange.endRow != null && rangeService.isContiguousRange(cellRange) && rangeService.isBottomRightCell(cellRange, cellPosition);
    };
    CellRangeFeature2.prototype.addSelectionHandle = function() {
      var _a47 = this.beans, gridOptionsService = _a47.gridOptionsService, rangeService = _a47.rangeService;
      var cellRangeType = last(rangeService.getCellRanges()).type;
      var selectionHandleFill = gridOptionsService.is("enableFillHandle") && missing(cellRangeType);
      var type2 = selectionHandleFill ? SelectionHandleType.FILL : SelectionHandleType.RANGE;
      if (this.selectionHandle && this.selectionHandle.getType() !== type2) {
        this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);
      }
      if (!this.selectionHandle) {
        this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type2);
      }
      this.selectionHandle.refresh(this.cellCtrl);
    };
    CellRangeFeature2.prototype.destroy = function() {
      this.beans.context.destroyBean(this.selectionHandle);
    };
    return CellRangeFeature2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellPositionFeature.js
var __extends57 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var CellPositionFeature = (
  /** @class */
  function(_super) {
    __extends57(CellPositionFeature2, _super);
    function CellPositionFeature2(ctrl, beans) {
      var _this = _super.call(this) || this;
      _this.cellCtrl = ctrl;
      _this.beans = beans;
      _this.column = ctrl.getColumn();
      _this.rowNode = ctrl.getRowNode();
      _this.setupColSpan();
      _this.setupRowSpan();
      return _this;
    }
    CellPositionFeature2.prototype.setupRowSpan = function() {
      this.rowSpan = this.column.getRowSpan(this.rowNode);
    };
    CellPositionFeature2.prototype.setComp = function(eGui) {
      this.eGui = eGui;
      this.onLeftChanged();
      this.onWidthChanged();
      this.applyRowSpan();
    };
    CellPositionFeature2.prototype.onDisplayColumnsChanged = function() {
      var colsSpanning = this.getColSpanningList();
      if (!areEqual(this.colsSpanning, colsSpanning)) {
        this.colsSpanning = colsSpanning;
        this.onWidthChanged();
        this.onLeftChanged();
      }
    };
    CellPositionFeature2.prototype.setupColSpan = function() {
      if (this.column.getColDef().colSpan == null) {
        return;
      }
      this.colsSpanning = this.getColSpanningList();
      this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));
      this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));
    };
    CellPositionFeature2.prototype.onWidthChanged = function() {
      if (!this.eGui) {
        return;
      }
      var width = this.getCellWidth();
      this.eGui.style.width = width + "px";
    };
    CellPositionFeature2.prototype.getCellWidth = function() {
      if (!this.colsSpanning) {
        return this.column.getActualWidth();
      }
      return this.colsSpanning.reduce(function(width, col) {
        return width + col.getActualWidth();
      }, 0);
    };
    CellPositionFeature2.prototype.getColSpanningList = function() {
      var colSpan = this.column.getColSpan(this.rowNode);
      var colsSpanning = [];
      if (colSpan === 1) {
        colsSpanning.push(this.column);
      } else {
        var pointer = this.column;
        var pinned = this.column.getPinned();
        for (var i2 = 0; pointer && i2 < colSpan; i2++) {
          colsSpanning.push(pointer);
          pointer = this.beans.columnModel.getDisplayedColAfter(pointer);
          if (!pointer || missing(pointer)) {
            break;
          }
          if (pinned !== pointer.getPinned()) {
            break;
          }
        }
      }
      return colsSpanning;
    };
    CellPositionFeature2.prototype.onLeftChanged = function() {
      if (!this.eGui) {
        return;
      }
      var left = this.modifyLeftForPrintLayout(this.getCellLeft());
      this.eGui.style.left = left + "px";
    };
    CellPositionFeature2.prototype.getCellLeft = function() {
      var mostLeftCol;
      if (this.beans.gridOptionsService.is("enableRtl") && this.colsSpanning) {
        mostLeftCol = last(this.colsSpanning);
      } else {
        mostLeftCol = this.column;
      }
      return mostLeftCol.getLeft();
    };
    CellPositionFeature2.prototype.modifyLeftForPrintLayout = function(leftPosition) {
      if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === "left") {
        return leftPosition;
      }
      var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();
      if (this.column.getPinned() === "right") {
        var bodyWidth = this.beans.columnModel.getBodyContainerWidth();
        return leftWidth + bodyWidth + (leftPosition || 0);
      }
      return leftWidth + (leftPosition || 0);
    };
    CellPositionFeature2.prototype.applyRowSpan = function() {
      if (this.rowSpan === 1) {
        return;
      }
      var singleRowHeight = this.beans.gridOptionsService.getRowHeightAsNumber();
      var totalRowHeight = singleRowHeight * this.rowSpan;
      this.eGui.style.height = totalRowHeight + "px";
      this.eGui.style.zIndex = "1";
    };
    CellPositionFeature2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    return CellPositionFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellCustomStyleFeature.js
var __extends58 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var CellCustomStyleFeature = (
  /** @class */
  function(_super) {
    __extends58(CellCustomStyleFeature2, _super);
    function CellCustomStyleFeature2(ctrl, beans) {
      var _this = _super.call(this) || this;
      _this.staticClasses = [];
      _this.cellCtrl = ctrl;
      _this.beans = beans;
      _this.column = ctrl.getColumn();
      _this.rowNode = ctrl.getRowNode();
      return _this;
    }
    CellCustomStyleFeature2.prototype.setComp = function(comp) {
      this.cellComp = comp;
      this.applyUserStyles();
      this.applyCellClassRules();
      this.applyClassesFromColDef();
    };
    CellCustomStyleFeature2.prototype.applyCellClassRules = function() {
      var _this = this;
      var colDef = this.column.getColDef();
      var cellClassParams = {
        value: this.cellCtrl.getValue(),
        data: this.rowNode.data,
        node: this.rowNode,
        colDef,
        column: this.column,
        rowIndex: this.rowNode.rowIndex,
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        context: this.beans.gridOptionsService.get("context")
      };
      this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function(className) {
        return _this.cellComp.addOrRemoveCssClass(className, true);
      }, function(className) {
        return _this.cellComp.addOrRemoveCssClass(className, false);
      });
    };
    CellCustomStyleFeature2.prototype.applyUserStyles = function() {
      var colDef = this.column.getColDef();
      if (!colDef.cellStyle) {
        return;
      }
      var styles;
      if (typeof colDef.cellStyle === "function") {
        var cellStyleParams = {
          column: this.column,
          value: this.cellCtrl.getValue(),
          colDef,
          data: this.rowNode.data,
          node: this.rowNode,
          rowIndex: this.rowNode.rowIndex,
          api: this.beans.gridOptionsService.get("api"),
          columnApi: this.beans.gridOptionsService.get("columnApi"),
          context: this.beans.gridOptionsService.get("context")
        };
        var cellStyleFunc = colDef.cellStyle;
        styles = cellStyleFunc(cellStyleParams);
      } else {
        styles = colDef.cellStyle;
      }
      this.cellComp.setUserStyles(styles);
    };
    CellCustomStyleFeature2.prototype.applyClassesFromColDef = function() {
      var _this = this;
      var colDef = this.column.getColDef();
      var cellClassParams = {
        value: this.cellCtrl.getValue(),
        data: this.rowNode.data,
        node: this.rowNode,
        column: this.column,
        colDef,
        rowIndex: this.rowNode.rowIndex,
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        context: this.beans.gridOptionsService.get("context")
      };
      if (this.staticClasses.length) {
        this.staticClasses.forEach(function(className) {
          return _this.cellComp.addOrRemoveCssClass(className, false);
        });
      }
      this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);
      if (this.staticClasses.length) {
        this.staticClasses.forEach(function(className) {
          return _this.cellComp.addOrRemoveCssClass(className, true);
        });
      }
    };
    CellCustomStyleFeature2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    return CellCustomStyleFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/tooltipFeature.js
var __extends59 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var TooltipFeature = (
  /** @class */
  function(_super) {
    __extends59(TooltipFeature2, _super);
    function TooltipFeature2(ctrl, beans) {
      var _this = _super.call(this) || this;
      _this.ctrl = ctrl;
      _this.beans = beans;
      return _this;
    }
    TooltipFeature2.prototype.setComp = function(comp) {
      this.comp = comp;
      this.setupTooltip();
    };
    TooltipFeature2.prototype.setupTooltip = function() {
      this.browserTooltips = this.beans.gridOptionsService.is("enableBrowserTooltips");
      this.updateTooltipText();
      if (this.browserTooltips) {
        this.comp.setTitle(this.tooltip != null ? this.tooltip : void 0);
      } else {
        this.createTooltipFeatureIfNeeded();
      }
    };
    TooltipFeature2.prototype.updateTooltipText = function() {
      this.tooltip = this.ctrl.getTooltipValue();
    };
    TooltipFeature2.prototype.createTooltipFeatureIfNeeded = function() {
      var _this = this;
      if (this.genericTooltipFeature != null) {
        return;
      }
      var parent2 = {
        getTooltipParams: function() {
          return _this.getTooltipParams();
        },
        getGui: function() {
          return _this.ctrl.getGui();
        }
      };
      this.genericTooltipFeature = this.createManagedBean(new CustomTooltipFeature(parent2), this.beans.context);
    };
    TooltipFeature2.prototype.refreshToolTip = function() {
      this.updateTooltipText();
      if (this.browserTooltips) {
        this.comp.setTitle(this.tooltip != null ? this.tooltip : void 0);
      }
    };
    TooltipFeature2.prototype.getTooltipParams = function() {
      var ctrl = this.ctrl;
      var column = ctrl.getColumn ? ctrl.getColumn() : void 0;
      var colDef = ctrl.getColDef ? ctrl.getColDef() : void 0;
      var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : void 0;
      return {
        location: ctrl.getLocation(),
        colDef,
        column,
        rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : void 0,
        node: rowNode,
        data: rowNode ? rowNode.data : void 0,
        value: this.getTooltipText(),
        valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : void 0
      };
    };
    TooltipFeature2.prototype.getTooltipText = function() {
      return this.tooltip;
    };
    TooltipFeature2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    return TooltipFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/beans.js
var __decorate54 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var Beans = (
  /** @class */
  function() {
    function Beans2() {
    }
    Beans2.prototype.postConstruct = function() {
      this.doingMasterDetail = this.gridOptionsService.isMasterDetail();
      if (this.gridOptionsService.isRowModelType("clientSide")) {
        this.clientSideRowModel = this.rowModel;
      }
      if (this.gridOptionsService.isRowModelType("serverSide")) {
        this.serverSideRowModel = this.rowModel;
      }
    };
    __decorate54([
      Autowired("resizeObserverService")
    ], Beans2.prototype, "resizeObserverService", void 0);
    __decorate54([
      Autowired("paginationProxy")
    ], Beans2.prototype, "paginationProxy", void 0);
    __decorate54([
      Autowired("context")
    ], Beans2.prototype, "context", void 0);
    __decorate54([
      Autowired("columnApi")
    ], Beans2.prototype, "columnApi", void 0);
    __decorate54([
      Autowired("gridApi")
    ], Beans2.prototype, "gridApi", void 0);
    __decorate54([
      Autowired("gridOptionsService")
    ], Beans2.prototype, "gridOptionsService", void 0);
    __decorate54([
      Autowired("expressionService")
    ], Beans2.prototype, "expressionService", void 0);
    __decorate54([
      Autowired("environment")
    ], Beans2.prototype, "environment", void 0);
    __decorate54([
      Autowired("rowRenderer")
    ], Beans2.prototype, "rowRenderer", void 0);
    __decorate54([
      Autowired("templateService")
    ], Beans2.prototype, "templateService", void 0);
    __decorate54([
      Autowired("valueService")
    ], Beans2.prototype, "valueService", void 0);
    __decorate54([
      Autowired("eventService")
    ], Beans2.prototype, "eventService", void 0);
    __decorate54([
      Autowired("columnModel")
    ], Beans2.prototype, "columnModel", void 0);
    __decorate54([
      Autowired("headerNavigationService")
    ], Beans2.prototype, "headerNavigationService", void 0);
    __decorate54([
      Autowired("navigationService")
    ], Beans2.prototype, "navigationService", void 0);
    __decorate54([
      Autowired("columnAnimationService")
    ], Beans2.prototype, "columnAnimationService", void 0);
    __decorate54([
      Optional2("rangeService")
    ], Beans2.prototype, "rangeService", void 0);
    __decorate54([
      Autowired("focusService")
    ], Beans2.prototype, "focusService", void 0);
    __decorate54([
      Optional2("contextMenuFactory")
    ], Beans2.prototype, "contextMenuFactory", void 0);
    __decorate54([
      Autowired("popupService")
    ], Beans2.prototype, "popupService", void 0);
    __decorate54([
      Autowired("valueFormatterService")
    ], Beans2.prototype, "valueFormatterService", void 0);
    __decorate54([
      Autowired("stylingService")
    ], Beans2.prototype, "stylingService", void 0);
    __decorate54([
      Autowired("columnHoverService")
    ], Beans2.prototype, "columnHoverService", void 0);
    __decorate54([
      Autowired("userComponentFactory")
    ], Beans2.prototype, "userComponentFactory", void 0);
    __decorate54([
      Autowired("userComponentRegistry")
    ], Beans2.prototype, "userComponentRegistry", void 0);
    __decorate54([
      Autowired("animationFrameService")
    ], Beans2.prototype, "animationFrameService", void 0);
    __decorate54([
      Autowired("dragAndDropService")
    ], Beans2.prototype, "dragAndDropService", void 0);
    __decorate54([
      Autowired("sortController")
    ], Beans2.prototype, "sortController", void 0);
    __decorate54([
      Autowired("filterManager")
    ], Beans2.prototype, "filterManager", void 0);
    __decorate54([
      Autowired("rowContainerHeightService")
    ], Beans2.prototype, "rowContainerHeightService", void 0);
    __decorate54([
      Autowired("frameworkOverrides")
    ], Beans2.prototype, "frameworkOverrides", void 0);
    __decorate54([
      Autowired("cellPositionUtils")
    ], Beans2.prototype, "cellPositionUtils", void 0);
    __decorate54([
      Autowired("rowPositionUtils")
    ], Beans2.prototype, "rowPositionUtils", void 0);
    __decorate54([
      Autowired("selectionService")
    ], Beans2.prototype, "selectionService", void 0);
    __decorate54([
      Optional2("selectionHandleFactory")
    ], Beans2.prototype, "selectionHandleFactory", void 0);
    __decorate54([
      Autowired("rowCssClassCalculator")
    ], Beans2.prototype, "rowCssClassCalculator", void 0);
    __decorate54([
      Autowired("rowModel")
    ], Beans2.prototype, "rowModel", void 0);
    __decorate54([
      Autowired("ctrlsService")
    ], Beans2.prototype, "ctrlsService", void 0);
    __decorate54([
      Autowired("ctrlsFactory")
    ], Beans2.prototype, "ctrlsFactory", void 0);
    __decorate54([
      Autowired("agStackComponentsRegistry")
    ], Beans2.prototype, "agStackComponentsRegistry", void 0);
    __decorate54([
      Autowired("valueCache")
    ], Beans2.prototype, "valueCache", void 0);
    __decorate54([
      Autowired("rowNodeEventThrottle")
    ], Beans2.prototype, "rowNodeEventThrottle", void 0);
    __decorate54([
      Autowired("localeService")
    ], Beans2.prototype, "localeService", void 0);
    __decorate54([
      PostConstruct
    ], Beans2.prototype, "postConstruct", null);
    Beans2 = __decorate54([
      Bean("beans")
    ], Beans2);
    return Beans2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellMouseListenerFeature.js
var __extends60 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var CellMouseListenerFeature = (
  /** @class */
  function(_super) {
    __extends60(CellMouseListenerFeature2, _super);
    function CellMouseListenerFeature2(ctrl, beans, column) {
      var _this = _super.call(this) || this;
      _this.cellCtrl = ctrl;
      _this.beans = beans;
      _this.column = column;
      return _this;
    }
    CellMouseListenerFeature2.prototype.onMouseEvent = function(eventName, mouseEvent) {
      if (isStopPropagationForAgGrid(mouseEvent)) {
        return;
      }
      switch (eventName) {
        case "click":
          this.onCellClicked(mouseEvent);
          break;
        case "mousedown":
        case "touchstart":
          this.onMouseDown(mouseEvent);
          break;
        case "dblclick":
          this.onCellDoubleClicked(mouseEvent);
          break;
        case "mouseout":
          this.onMouseOut(mouseEvent);
          break;
        case "mouseover":
          this.onMouseOver(mouseEvent);
          break;
      }
    };
    CellMouseListenerFeature2.prototype.onCellClicked = function(mouseEvent) {
      if (this.isDoubleClickOnIPad()) {
        this.onCellDoubleClicked(mouseEvent);
        mouseEvent.preventDefault();
        return;
      }
      var _a47 = this.beans, eventService = _a47.eventService, rangeService = _a47.rangeService, gridOptionsService = _a47.gridOptionsService;
      var multiKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;
      if (rangeService && multiKeyPressed) {
        if (rangeService.getCellRangeCount(this.cellCtrl.getCellPosition()) > 1) {
          rangeService.intersectLastRange(true);
        }
      }
      var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);
      eventService.dispatchEvent(cellClickedEvent);
      var colDef = this.column.getColDef();
      if (colDef.onCellClicked) {
        window.setTimeout(function() {
          return colDef.onCellClicked(cellClickedEvent);
        }, 0);
      }
      var editOnSingleClick = (gridOptionsService.is("singleClickEdit") || colDef.singleClickEdit) && !gridOptionsService.is("suppressClickEdit");
      if (editOnSingleClick) {
        this.cellCtrl.startRowOrCellEdit();
      }
    };
    CellMouseListenerFeature2.prototype.isDoubleClickOnIPad = function() {
      if (!isIOSUserAgent() || isEventSupported("dblclick")) {
        return false;
      }
      var nowMillis = (/* @__PURE__ */ new Date()).getTime();
      var res = nowMillis - this.lastIPadMouseClickEvent < 200;
      this.lastIPadMouseClickEvent = nowMillis;
      return res;
    };
    CellMouseListenerFeature2.prototype.onCellDoubleClicked = function(mouseEvent) {
      var colDef = this.column.getColDef();
      var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);
      this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);
      if (typeof colDef.onCellDoubleClicked === "function") {
        window.setTimeout(function() {
          return colDef.onCellDoubleClicked(cellDoubleClickedEvent);
        }, 0);
      }
      var editOnDoubleClick = !this.beans.gridOptionsService.is("singleClickEdit") && !this.beans.gridOptionsService.is("suppressClickEdit");
      if (editOnDoubleClick) {
        this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);
      }
    };
    CellMouseListenerFeature2.prototype.onMouseDown = function(mouseEvent) {
      var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;
      var target = mouseEvent.target;
      var _a47 = this.beans, eventService = _a47.eventService, rangeService = _a47.rangeService;
      if (this.isRightClickInExistingRange(mouseEvent)) {
        return;
      }
      var ranges = rangeService && rangeService.getCellRanges().length != 0;
      if (!shiftKey || !ranges) {
        var forceBrowserFocus = (isBrowserEdge() || isBrowserSafari()) && !this.cellCtrl.isEditing() && !isFocusableFormField(target);
        this.cellCtrl.focusCell(forceBrowserFocus);
      }
      if (shiftKey && ranges) {
        mouseEvent.preventDefault();
      }
      if (this.containsWidget(target)) {
        return;
      }
      if (rangeService) {
        var thisCell = this.cellCtrl.getCellPosition();
        if (shiftKey) {
          rangeService.extendLatestRangeToCell(thisCell);
        } else {
          var ctrlKeyPressed = ctrlKey || metaKey;
          rangeService.setRangeToCell(thisCell, ctrlKeyPressed);
        }
      }
      eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));
    };
    CellMouseListenerFeature2.prototype.isRightClickInExistingRange = function(mouseEvent) {
      var rangeService = this.beans.rangeService;
      if (rangeService) {
        var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());
        if (cellInRange && mouseEvent.button === 2) {
          return true;
        }
      }
      return false;
    };
    CellMouseListenerFeature2.prototype.containsWidget = function(target) {
      return isElementChildOfClass(target, "ag-selection-checkbox", 3);
    };
    CellMouseListenerFeature2.prototype.onMouseOut = function(mouseEvent) {
      if (this.mouseStayingInsideCell(mouseEvent)) {
        return;
      }
      var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);
      this.beans.eventService.dispatchEvent(cellMouseOutEvent);
      this.beans.columnHoverService.clearMouseOver();
    };
    CellMouseListenerFeature2.prototype.onMouseOver = function(mouseEvent) {
      if (this.mouseStayingInsideCell(mouseEvent)) {
        return;
      }
      var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);
      this.beans.eventService.dispatchEvent(cellMouseOverEvent);
      this.beans.columnHoverService.setMouseOver([this.column]);
    };
    CellMouseListenerFeature2.prototype.mouseStayingInsideCell = function(e2) {
      if (!e2.target || !e2.relatedTarget) {
        return false;
      }
      var eGui = this.cellCtrl.getGui();
      var cellContainsTarget = eGui.contains(e2.target);
      var cellContainsRelatedTarget = eGui.contains(e2.relatedTarget);
      return cellContainsTarget && cellContainsRelatedTarget;
    };
    CellMouseListenerFeature2.prototype.destroy = function() {
    };
    return CellMouseListenerFeature2;
  }(Beans)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellKeyboardListenerFeature.js
var __extends61 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var CellKeyboardListenerFeature = (
  /** @class */
  function(_super) {
    __extends61(CellKeyboardListenerFeature2, _super);
    function CellKeyboardListenerFeature2(ctrl, beans, column, rowNode, rowCtrl) {
      var _this = _super.call(this) || this;
      _this.cellCtrl = ctrl;
      _this.beans = beans;
      _this.rowNode = rowNode;
      _this.rowCtrl = rowCtrl;
      return _this;
    }
    CellKeyboardListenerFeature2.prototype.setComp = function(eGui) {
      this.eGui = eGui;
    };
    CellKeyboardListenerFeature2.prototype.onKeyDown = function(event) {
      var key = event.key;
      switch (key) {
        case KeyCode.ENTER:
          this.onEnterKeyDown(event);
          break;
        case KeyCode.F2:
          this.onF2KeyDown(event);
          break;
        case KeyCode.ESCAPE:
          this.onEscapeKeyDown(event);
          break;
        case KeyCode.TAB:
          this.onTabKeyDown(event);
          break;
        case KeyCode.BACKSPACE:
        case KeyCode.DELETE:
          this.onBackspaceOrDeleteKeyPressed(key, event);
          break;
        case KeyCode.DOWN:
        case KeyCode.UP:
        case KeyCode.RIGHT:
        case KeyCode.LEFT:
          this.onNavigationKeyPressed(event, key);
          break;
      }
    };
    CellKeyboardListenerFeature2.prototype.onNavigationKeyPressed = function(event, key) {
      if (this.cellCtrl.isEditing()) {
        return;
      }
      if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {
        this.onShiftRangeSelect(event);
      } else {
        this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);
      }
      event.preventDefault();
    };
    CellKeyboardListenerFeature2.prototype.onShiftRangeSelect = function(event) {
      if (!this.beans.rangeService) {
        return;
      }
      var endCell = this.beans.rangeService.extendLatestRangeInDirection(event);
      if (endCell) {
        this.beans.navigationService.ensureCellVisible(endCell);
      }
    };
    CellKeyboardListenerFeature2.prototype.onTabKeyDown = function(event) {
      this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);
    };
    CellKeyboardListenerFeature2.prototype.onBackspaceOrDeleteKeyPressed = function(key, event) {
      var _a47 = this, cellCtrl = _a47.cellCtrl, beans = _a47.beans, rowNode = _a47.rowNode;
      var gridOptionsService = beans.gridOptionsService, rangeService = beans.rangeService, eventService = beans.eventService;
      if (cellCtrl.isEditing()) {
        return;
      }
      eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });
      if (isDeleteKey(key, gridOptionsService.is("enableCellEditingOnBackspace"))) {
        if (rangeService && gridOptionsService.isEnableRangeSelection()) {
          rangeService.clearCellRangeCellValues();
        } else if (cellCtrl.isCellEditable()) {
          rowNode.setDataValue(cellCtrl.getColumn(), null, "cellKeyboardListenerFeature");
        }
      } else {
        cellCtrl.startRowOrCellEdit(key, void 0, event);
      }
      eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });
    };
    CellKeyboardListenerFeature2.prototype.onEnterKeyDown = function(e2) {
      if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {
        this.cellCtrl.stopEditingAndFocus();
      } else {
        if (this.beans.gridOptionsService.is("enterMovesDown")) {
          this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.cellCtrl.getCellPosition(), false);
        } else {
          this.cellCtrl.startRowOrCellEdit(KeyCode.ENTER, void 0, e2);
          if (this.cellCtrl.isEditing()) {
            e2.preventDefault();
          }
        }
      }
    };
    CellKeyboardListenerFeature2.prototype.onF2KeyDown = function(event) {
      if (!this.cellCtrl.isEditing()) {
        this.cellCtrl.startRowOrCellEdit(KeyCode.F2, void 0, event);
      }
    };
    CellKeyboardListenerFeature2.prototype.onEscapeKeyDown = function(event) {
      if (this.cellCtrl.isEditing()) {
        this.cellCtrl.stopRowOrCellEdit(true);
        this.cellCtrl.focusCell(true);
      }
    };
    CellKeyboardListenerFeature2.prototype.onKeyPress = function(event) {
      var eventTarget = event.target;
      var eventOnChildComponent = eventTarget !== this.eGui;
      if (eventOnChildComponent || this.cellCtrl.isEditing()) {
        return;
      }
      var pressedChar = String.fromCharCode(event.charCode);
      if (pressedChar === " ") {
        this.onSpaceKeyPressed(event);
      } else if (isEventFromPrintableCharacter(event)) {
        this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);
        event.preventDefault();
      }
    };
    CellKeyboardListenerFeature2.prototype.onSpaceKeyPressed = function(event) {
      var gridOptionsService = this.beans.gridOptionsService;
      if (!this.cellCtrl.isEditing() && gridOptionsService.isRowSelection()) {
        var currentSelection = this.rowNode.isSelected();
        var newSelection = !currentSelection;
        if (newSelection || !gridOptionsService.is("suppressRowDeselection")) {
          var groupSelectsFiltered = this.beans.gridOptionsService.is("groupSelectsFiltered");
          var updatedCount = this.rowNode.setSelectedParams({
            newValue: newSelection,
            rangeSelect: event.shiftKey,
            groupSelectsFiltered,
            event,
            source: "spacePressed"
          });
          if (currentSelection === void 0 && updatedCount === 0) {
            this.rowNode.setSelectedParams({
              newValue: false,
              rangeSelect: event.shiftKey,
              groupSelectsFiltered,
              event,
              source: "spacePressed"
            });
          }
        }
      }
      event.preventDefault();
    };
    CellKeyboardListenerFeature2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
    };
    return CellKeyboardListenerFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/dndSourceComp.js
var __extends62 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate55 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DndSourceComp = (
  /** @class */
  function(_super) {
    __extends62(DndSourceComp2, _super);
    function DndSourceComp2(rowNode, column, beans, eCell) {
      var _this = _super.call(this, '<div class="ag-drag-handle ag-row-drag" draggable="true"></div>') || this;
      _this.rowNode = rowNode;
      _this.column = column;
      _this.beans = beans;
      _this.eCell = eCell;
      return _this;
    }
    DndSourceComp2.prototype.postConstruct = function() {
      var eGui = this.getGui();
      eGui.appendChild(createIconNoSpan("rowDrag", this.beans.gridOptionsService, null));
      this.addGuiEventListener("mousedown", function(e2) {
        e2.stopPropagation();
      });
      this.addDragSource();
      this.checkVisibility();
    };
    DndSourceComp2.prototype.addDragSource = function() {
      this.addGuiEventListener("dragstart", this.onDragStart.bind(this));
    };
    DndSourceComp2.prototype.onDragStart = function(dragEvent) {
      var _this = this;
      var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;
      dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);
      var defaultOnRowDrag = function() {
        try {
          var jsonData = JSON.stringify(_this.rowNode.data);
          dragEvent.dataTransfer.setData("application/json", jsonData);
          dragEvent.dataTransfer.setData("text/plain", jsonData);
        } catch (e2) {
        }
      };
      if (providedOnRowDrag) {
        var params = {
          rowNode: this.rowNode,
          dragEvent,
          api: this.gridOptionsService.get("api"),
          columnApi: this.gridOptionsService.get("columnApi"),
          context: this.gridOptionsService.get("context")
        };
        providedOnRowDrag(params);
      } else {
        defaultOnRowDrag();
      }
    };
    DndSourceComp2.prototype.checkVisibility = function() {
      var visible = this.column.isDndSource(this.rowNode);
      this.setDisplayed(visible);
    };
    __decorate55([
      PostConstruct
    ], DndSourceComp2.prototype, "postConstruct", null);
    return DndSourceComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellCtrl.js
var __extends63 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign14 = function() {
  __assign14 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign14.apply(this, arguments);
};
var CSS_CELL = "ag-cell";
var CSS_AUTO_HEIGHT = "ag-cell-auto-height";
var CSS_NORMAL_HEIGHT = "ag-cell-normal-height";
var CSS_CELL_FOCUS = "ag-cell-focus";
var CSS_CELL_FIRST_RIGHT_PINNED = "ag-cell-first-right-pinned";
var CSS_CELL_LAST_LEFT_PINNED = "ag-cell-last-left-pinned";
var CSS_CELL_NOT_INLINE_EDITING = "ag-cell-not-inline-editing";
var CSS_COLUMN_HOVER = "ag-column-hover";
var CSS_CELL_WRAP_TEXT = "ag-cell-wrap-text";
var instanceIdSequence2 = 0;
var CellCtrl = (
  /** @class */
  function(_super) {
    __extends63(CellCtrl2, _super);
    function CellCtrl2(column, rowNode, beans, rowCtrl) {
      var _this = _super.call(this) || this;
      _this.cellRangeFeature = null;
      _this.cellPositionFeature = null;
      _this.cellCustomStyleFeature = null;
      _this.tooltipFeature = null;
      _this.cellMouseListenerFeature = null;
      _this.cellKeyboardListenerFeature = null;
      _this.suppressRefreshCell = false;
      _this.onCellCompAttachedFuncs = [];
      _this.column = column;
      _this.rowNode = rowNode;
      _this.beans = beans;
      _this.rowCtrl = rowCtrl;
      _this.instanceId = column.getId() + "-" + instanceIdSequence2++;
      _this.createCellPosition();
      _this.addFeatures();
      return _this;
    }
    CellCtrl2.prototype.addFeatures = function() {
      var _this = this;
      this.cellPositionFeature = new CellPositionFeature(this, this.beans);
      this.addDestroyFunc(function() {
        var _a47;
        (_a47 = _this.cellPositionFeature) === null || _a47 === void 0 ? void 0 : _a47.destroy();
        _this.cellPositionFeature = null;
      });
      this.cellCustomStyleFeature = new CellCustomStyleFeature(this, this.beans);
      this.addDestroyFunc(function() {
        var _a47;
        (_a47 = _this.cellCustomStyleFeature) === null || _a47 === void 0 ? void 0 : _a47.destroy();
        _this.cellCustomStyleFeature = null;
      });
      this.cellMouseListenerFeature = new CellMouseListenerFeature(this, this.beans, this.column);
      this.addDestroyFunc(function() {
        var _a47;
        (_a47 = _this.cellMouseListenerFeature) === null || _a47 === void 0 ? void 0 : _a47.destroy();
        _this.cellMouseListenerFeature = null;
      });
      this.cellKeyboardListenerFeature = new CellKeyboardListenerFeature(this, this.beans, this.column, this.rowNode, this.rowCtrl);
      this.addDestroyFunc(function() {
        var _a47;
        (_a47 = _this.cellKeyboardListenerFeature) === null || _a47 === void 0 ? void 0 : _a47.destroy();
        _this.cellKeyboardListenerFeature = null;
      });
      var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsService.isEnableRangeSelection();
      if (rangeSelectionEnabled) {
        this.cellRangeFeature = new CellRangeFeature(this.beans, this);
        this.addDestroyFunc(function() {
          var _a47;
          (_a47 = _this.cellRangeFeature) === null || _a47 === void 0 ? void 0 : _a47.destroy();
          _this.cellRangeFeature = null;
        });
      }
      this.addTooltipFeature();
    };
    CellCtrl2.prototype.addTooltipFeature = function() {
      var _this = this;
      var getTooltipValue = function() {
        var colDef = _this.column.getColDef();
        var data = _this.rowNode.data;
        if (colDef.tooltipField && exists(data)) {
          return getValueUsingField(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());
        }
        var valueGetter = colDef.tooltipValueGetter;
        if (valueGetter) {
          return valueGetter({
            location: "cell",
            api: _this.beans.gridOptionsService.get("api"),
            columnApi: _this.beans.gridOptionsService.get("columnApi"),
            context: _this.beans.gridOptionsService.get("context"),
            colDef: _this.column.getColDef(),
            column: _this.column,
            rowIndex: _this.cellPosition.rowIndex,
            node: _this.rowNode,
            data: _this.rowNode.data,
            value: _this.value,
            valueFormatted: _this.valueFormatted
          });
        }
        return null;
      };
      var tooltipCtrl = {
        getColumn: function() {
          return _this.column;
        },
        getColDef: function() {
          return _this.column.getColDef();
        },
        getRowIndex: function() {
          return _this.cellPosition.rowIndex;
        },
        getRowNode: function() {
          return _this.rowNode;
        },
        getGui: function() {
          return _this.getGui();
        },
        getLocation: function() {
          return "cell";
        },
        getTooltipValue,
        // this makes no sense, why is the cell formatted value passed to the tooltip???
        getValueFormatted: function() {
          return _this.valueFormatted;
        }
      };
      this.tooltipFeature = new TooltipFeature(tooltipCtrl, this.beans);
      this.addDestroyFunc(function() {
        var _a47;
        (_a47 = _this.tooltipFeature) === null || _a47 === void 0 ? void 0 : _a47.destroy();
        _this.tooltipFeature = null;
      });
    };
    CellCtrl2.prototype.setComp = function(comp, eGui, eCellWrapper, printLayout, startEditing) {
      var _a47, _b, _c, _d;
      this.cellComp = comp;
      this.eGui = eGui;
      this.printLayout = printLayout;
      this.updateAndFormatValue(true);
      this.addDomData();
      this.onCellFocused();
      this.applyStaticCssClasses();
      this.setWrapText();
      this.onFirstRightPinnedChanged();
      this.onLastLeftPinnedChanged();
      this.onColumnHover();
      this.setupControlComps();
      if (eCellWrapper) {
        this.setupAutoHeight(eCellWrapper);
      }
      this.setAriaColIndex();
      if (!this.beans.gridOptionsService.is("suppressCellFocus")) {
        this.cellComp.setTabIndex(-1);
      }
      var colIdSanitised = escapeString(this.column.getId());
      this.cellComp.setColId(colIdSanitised);
      this.cellComp.setRole("gridcell");
      (_a47 = this.cellPositionFeature) === null || _a47 === void 0 ? void 0 : _a47.setComp(eGui);
      (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.setComp(comp);
      (_c = this.tooltipFeature) === null || _c === void 0 ? void 0 : _c.setComp(comp);
      (_d = this.cellKeyboardListenerFeature) === null || _d === void 0 ? void 0 : _d.setComp(this.eGui);
      if (this.cellRangeFeature) {
        this.cellRangeFeature.setComp(comp, eGui);
      }
      if (startEditing && this.isCellEditable()) {
        this.startEditing();
      } else {
        this.showValue();
      }
      if (this.onCellCompAttachedFuncs.length) {
        this.onCellCompAttachedFuncs.forEach(function(func) {
          return func();
        });
        this.onCellCompAttachedFuncs = [];
      }
    };
    CellCtrl2.prototype.setupAutoHeight = function(eCellWrapper) {
      var _this = this;
      if (!this.column.isAutoHeight()) {
        return;
      }
      var eParentCell = eCellWrapper.parentElement;
      var minRowHeight = this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height;
      var measureHeight = function(timesCalled) {
        if (_this.editing) {
          return;
        }
        if (!_this.isAlive()) {
          return;
        }
        var _a47 = getElementSize(eParentCell), paddingTop = _a47.paddingTop, paddingBottom = _a47.paddingBottom;
        var wrapperHeight = eCellWrapper.offsetHeight;
        var autoHeight = wrapperHeight + paddingTop + paddingBottom;
        if (timesCalled < 5) {
          var doc = _this.beans.gridOptionsService.getDocument();
          var notYetInDom = !doc || !doc.contains(eCellWrapper);
          var possiblyNoContentYet = autoHeight == 0;
          if (notYetInDom || possiblyNoContentYet) {
            _this.beans.frameworkOverrides.setTimeout(function() {
              return measureHeight(timesCalled + 1);
            }, 0);
            return;
          }
        }
        var newHeight = Math.max(autoHeight, minRowHeight);
        _this.rowNode.setRowAutoHeight(newHeight, _this.column);
      };
      var listener = function() {
        return measureHeight(0);
      };
      listener();
      var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eCellWrapper, listener);
      this.addDestroyFunc(function() {
        destroyResizeObserver();
        _this.rowNode.setRowAutoHeight(void 0, _this.column);
      });
    };
    CellCtrl2.prototype.getInstanceId = function() {
      return this.instanceId;
    };
    CellCtrl2.prototype.showValue = function(forceNewCellRendererInstance) {
      if (forceNewCellRendererInstance === void 0) {
        forceNewCellRendererInstance = false;
      }
      var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;
      var params = this.createCellRendererParams();
      var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);
      this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);
      this.refreshHandle();
    };
    CellCtrl2.prototype.setupControlComps = function() {
      var colDef = this.column.getColDef();
      this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);
      this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);
      this.includeDndSource = this.isIncludeControl(colDef.dndSource);
      this.cellComp.setIncludeSelection(this.includeSelection);
      this.cellComp.setIncludeDndSource(this.includeDndSource);
      this.cellComp.setIncludeRowDrag(this.includeRowDrag);
    };
    CellCtrl2.prototype.isForceWrapper = function() {
      var forceWrapper = this.beans.gridOptionsService.is("enableCellTextSelection") || this.column.isAutoHeight();
      return forceWrapper;
    };
    CellCtrl2.prototype.isIncludeControl = function(value) {
      var rowNodePinned = this.rowNode.rowPinned != null;
      var isFunc = typeof value === "function";
      var res = rowNodePinned ? false : isFunc || value === true;
      return res;
    };
    CellCtrl2.prototype.refreshShouldDestroy = function() {
      var colDef = this.column.getColDef();
      var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);
      var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);
      var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);
      return selectionChanged || rowDragChanged || dndSourceChanged;
    };
    CellCtrl2.prototype.startEditing = function(key, charPress, cellStartedEdit, event) {
      var _this = this;
      if (key === void 0) {
        key = null;
      }
      if (charPress === void 0) {
        charPress = null;
      }
      if (cellStartedEdit === void 0) {
        cellStartedEdit = false;
      }
      if (event === void 0) {
        event = null;
      }
      if (!this.isCellEditable() || this.editing) {
        return;
      }
      if (!this.cellComp) {
        this.onCellCompAttachedFuncs.push(function() {
          _this.startEditing(key, charPress, cellStartedEdit, event);
        });
        return;
      }
      var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);
      var colDef = this.column.getColDef();
      var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);
      var popup = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;
      var position = (compDetails === null || compDetails === void 0 ? void 0 : compDetails.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;
      this.setEditing(true);
      this.cellComp.setEditDetails(compDetails, popup, position);
      var e2 = this.createEvent(event, Events.EVENT_CELL_EDITING_STARTED);
      this.beans.eventService.dispatchEvent(e2);
    };
    CellCtrl2.prototype.setEditing = function(editing) {
      if (this.editing === editing) {
        return;
      }
      this.editing = editing;
      this.refreshHandle();
    };
    CellCtrl2.prototype.stopRowOrCellEdit = function(cancel) {
      if (cancel === void 0) {
        cancel = false;
      }
      if (this.beans.gridOptionsService.get("editType") === "fullRow") {
        this.rowCtrl.stopRowEditing(cancel);
      } else {
        this.stopEditing(cancel);
      }
    };
    CellCtrl2.prototype.onPopupEditorClosed = function() {
      if (!this.isEditing()) {
        return;
      }
      this.stopEditingAndFocus();
    };
    CellCtrl2.prototype.takeValueFromCellEditor = function(cancel) {
      var noValueResult = { newValueExists: false };
      if (cancel) {
        return noValueResult;
      }
      var cellEditor = this.cellComp.getCellEditor();
      if (!cellEditor) {
        return noValueResult;
      }
      var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();
      if (userWantsToCancel) {
        return noValueResult;
      }
      var newValue = cellEditor.getValue();
      return {
        newValue,
        newValueExists: true
      };
    };
    CellCtrl2.prototype.saveNewValue = function(oldValue, newValue) {
      if (newValue === oldValue) {
        return false;
      }
      if (this.beans.gridOptionsService.is("readOnlyEdit")) {
        this.dispatchEventForSaveValueReadOnly(oldValue, newValue);
        return false;
      }
      this.suppressRefreshCell = true;
      var valueChanged = this.rowNode.setDataValue(this.column, newValue);
      this.suppressRefreshCell = false;
      return valueChanged;
    };
    CellCtrl2.prototype.dispatchEventForSaveValueReadOnly = function(oldValue, newValue) {
      var rowNode = this.rowNode;
      var event = {
        type: Events.EVENT_CELL_EDIT_REQUEST,
        event: null,
        rowIndex: rowNode.rowIndex,
        rowPinned: rowNode.rowPinned,
        column: this.column,
        api: this.beans.gridApi,
        columnApi: this.beans.columnApi,
        colDef: this.column.getColDef(),
        context: this.beans.gridOptionsService.get("context"),
        data: rowNode.data,
        node: rowNode,
        oldValue,
        newValue,
        value: newValue,
        source: void 0
      };
      this.beans.eventService.dispatchEvent(event);
    };
    CellCtrl2.prototype.stopEditing = function(cancel) {
      if (cancel === void 0) {
        cancel = false;
      }
      if (!this.editing) {
        return false;
      }
      var _a47 = this.takeValueFromCellEditor(cancel), newValue = _a47.newValue, newValueExists = _a47.newValueExists;
      var oldValue = this.getValueFromValueService();
      var valueChanged = false;
      if (newValueExists) {
        valueChanged = this.saveNewValue(oldValue, newValue);
      }
      this.setEditing(false);
      this.cellComp.setEditDetails();
      this.updateAndFormatValue();
      this.refreshCell({ forceRefresh: true, suppressFlash: true });
      this.dispatchEditingStoppedEvent(oldValue, newValue, !cancel && !!valueChanged);
      return valueChanged;
    };
    CellCtrl2.prototype.dispatchEditingStoppedEvent = function(oldValue, newValue, valueChanged) {
      var editingStoppedEvent = __assign14(__assign14({}, this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED)), {
        oldValue,
        newValue,
        valueChanged
      });
      this.beans.eventService.dispatchEvent(editingStoppedEvent);
    };
    CellCtrl2.prototype.createCellEditorParams = function(key, charPress, cellStartedEdit) {
      return {
        value: this.getValueFromValueService(),
        eventKey: key,
        charPress,
        column: this.column,
        colDef: this.column.getColDef(),
        rowIndex: this.getCellPosition().rowIndex,
        node: this.rowNode,
        data: this.rowNode.data,
        api: this.beans.gridOptionsService.get("api"),
        cellStartedEdit,
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        context: this.beans.gridOptionsService.get("context"),
        onKeyDown: this.onKeyDown.bind(this),
        stopEditing: this.stopEditingAndFocus.bind(this),
        eGridCell: this.getGui(),
        parseValue: this.parseValue.bind(this),
        formatValue: this.formatValue.bind(this)
      };
    };
    CellCtrl2.prototype.createCellRendererParams = function() {
      var _this = this;
      var res = {
        value: this.value,
        valueFormatted: this.valueFormatted,
        getValue: this.getValueFromValueService.bind(this),
        setValue: function(value) {
          return _this.beans.valueService.setValue(_this.rowNode, _this.column, value);
        },
        formatValue: this.formatValue.bind(this),
        data: this.rowNode.data,
        node: this.rowNode,
        pinned: this.column.getPinned(),
        colDef: this.column.getColDef(),
        column: this.column,
        rowIndex: this.getCellPosition().rowIndex,
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        context: this.beans.gridOptionsService.get("context"),
        refreshCell: this.refreshCell.bind(this),
        eGridCell: this.getGui(),
        eParentOfValue: this.cellComp.getParentOfValue(),
        registerRowDragger: function(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {
          return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange);
        }
      };
      return res;
    };
    CellCtrl2.prototype.parseValue = function(newValue) {
      var colDef = this.column.getColDef();
      var params = {
        node: this.rowNode,
        data: this.rowNode.data,
        oldValue: this.getValue(),
        newValue,
        colDef,
        column: this.column,
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        context: this.beans.gridOptionsService.get("context")
      };
      var valueParser = colDef.valueParser;
      return exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;
    };
    CellCtrl2.prototype.setFocusOutOnEditor = function() {
      if (!this.editing) {
        return;
      }
      var cellEditor = this.cellComp.getCellEditor();
      if (cellEditor && cellEditor.focusOut) {
        cellEditor.focusOut();
      }
    };
    CellCtrl2.prototype.setFocusInOnEditor = function() {
      if (!this.editing) {
        return;
      }
      var cellEditor = this.cellComp.getCellEditor();
      if (cellEditor && cellEditor.focusIn) {
        cellEditor.focusIn();
      } else {
        this.focusCell(true);
      }
    };
    CellCtrl2.prototype.onCellChanged = function(event) {
      if (!this.cellComp) {
        return;
      }
      var eventImpactsThisCell = event.column === this.column;
      if (eventImpactsThisCell) {
        this.refreshCell({});
      }
    };
    CellCtrl2.prototype.refreshCell = function(params) {
      var _a47, _b, _c;
      if (this.suppressRefreshCell || this.editing) {
        return;
      }
      if (!this.cellComp) {
        return;
      }
      var colDef = this.column.getColDef();
      var newData = params != null && !!params.newData;
      var suppressFlash = params != null && !!params.suppressFlash || !!colDef.suppressCellFlash;
      var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;
      var forceRefresh = params && params.forceRefresh || noValueProvided || newData;
      var valuesDifferent = this.updateAndFormatValue();
      var dataNeedsUpdating = forceRefresh || valuesDifferent;
      if (dataNeedsUpdating) {
        this.showValue(newData);
        var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();
        var flashCell = !suppressFlash && !processingFilterChange && (this.beans.gridOptionsService.is("enableCellChangeFlash") || colDef.enableCellChangeFlash);
        if (flashCell) {
          this.flashCell();
        }
        (_a47 = this.cellCustomStyleFeature) === null || _a47 === void 0 ? void 0 : _a47.applyUserStyles();
        (_b = this.cellCustomStyleFeature) === null || _b === void 0 ? void 0 : _b.applyClassesFromColDef();
      }
      this.refreshToolTip();
      (_c = this.cellCustomStyleFeature) === null || _c === void 0 ? void 0 : _c.applyCellClassRules();
    };
    CellCtrl2.prototype.stopEditingAndFocus = function(suppressNavigateAfterEdit) {
      if (suppressNavigateAfterEdit === void 0) {
        suppressNavigateAfterEdit = false;
      }
      this.stopRowOrCellEdit();
      this.focusCell(true);
      if (!suppressNavigateAfterEdit) {
        this.navigateAfterEdit();
      }
    };
    CellCtrl2.prototype.navigateAfterEdit = function() {
      var fullRowEdit = this.beans.gridOptionsService.get("editType") === "fullRow";
      if (fullRowEdit) {
        return;
      }
      var enterMovesDownAfterEdit = this.beans.gridOptionsService.is("enterMovesDownAfterEdit");
      if (enterMovesDownAfterEdit) {
        this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.getCellPosition(), false);
      }
    };
    CellCtrl2.prototype.flashCell = function(delays) {
      var flashDelay = delays && delays.flashDelay;
      var fadeDelay = delays && delays.fadeDelay;
      this.animateCell("data-changed", flashDelay, fadeDelay);
    };
    CellCtrl2.prototype.animateCell = function(cssName, flashDelay, fadeDelay) {
      var _this = this;
      var fullName = "ag-cell-" + cssName;
      var animationFullName = "ag-cell-" + cssName + "-animation";
      var gridOptionsService = this.beans.gridOptionsService;
      if (!flashDelay) {
        flashDelay = gridOptionsService.getNum("cellFlashDelay") || 500;
      }
      if (!exists(fadeDelay)) {
        fadeDelay = gridOptionsService.getNum("cellFadeDelay") || 1e3;
      }
      this.cellComp.addOrRemoveCssClass(fullName, true);
      this.cellComp.addOrRemoveCssClass(animationFullName, false);
      window.setTimeout(function() {
        if (!_this.isAlive()) {
          return;
        }
        _this.cellComp.addOrRemoveCssClass(fullName, false);
        _this.cellComp.addOrRemoveCssClass(animationFullName, true);
        _this.eGui.style.transition = "background-color " + fadeDelay + "ms";
        window.setTimeout(function() {
          if (!_this.isAlive()) {
            return;
          }
          _this.cellComp.addOrRemoveCssClass(animationFullName, false);
          _this.eGui.style.transition = "";
        }, fadeDelay);
      }, flashDelay);
    };
    CellCtrl2.prototype.onFlashCells = function(event) {
      if (!this.cellComp) {
        return;
      }
      var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());
      var shouldFlash = event.cells[cellId];
      if (shouldFlash) {
        this.animateCell("highlight");
      }
    };
    CellCtrl2.prototype.isCellEditable = function() {
      return this.column.isCellEditable(this.rowNode);
    };
    CellCtrl2.prototype.isSuppressFillHandle = function() {
      return this.column.isSuppressFillHandle();
    };
    CellCtrl2.prototype.formatValue = function(value) {
      var res = this.callValueFormatter(value);
      return res != null ? res : value;
    };
    CellCtrl2.prototype.callValueFormatter = function(value) {
      return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);
    };
    CellCtrl2.prototype.updateAndFormatValue = function(force) {
      if (force === void 0) {
        force = false;
      }
      var oldValue = this.value;
      var oldValueFormatted = this.valueFormatted;
      this.value = this.getValueFromValueService();
      this.valueFormatted = this.callValueFormatter(this.value);
      var valuesDifferent = force ? true : !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;
      return valuesDifferent;
    };
    CellCtrl2.prototype.valuesAreEqual = function(val1, val2) {
      var colDef = this.column.getColDef();
      return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;
    };
    CellCtrl2.prototype.getComp = function() {
      return this.cellComp;
    };
    CellCtrl2.prototype.getValueFromValueService = function() {
      var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnModel.isPivotMode();
      var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;
      var groupFootersEnabled = this.beans.gridOptionsService.is("groupIncludeFooter");
      var groupAlwaysShowAggData = this.beans.gridOptionsService.is("groupSuppressBlankHeader");
      var ignoreAggData = isOpenGroup && groupFootersEnabled && !groupAlwaysShowAggData;
      var value = this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);
      return value;
    };
    CellCtrl2.prototype.getValue = function() {
      return this.value;
    };
    CellCtrl2.prototype.getValueFormatted = function() {
      return this.valueFormatted;
    };
    CellCtrl2.prototype.addDomData = function() {
      var _this = this;
      var element = this.getGui();
      this.beans.gridOptionsService.setDomData(element, CellCtrl2.DOM_DATA_KEY_CELL_CTRL, this);
      this.addDestroyFunc(function() {
        return _this.beans.gridOptionsService.setDomData(element, CellCtrl2.DOM_DATA_KEY_CELL_CTRL, null);
      });
    };
    CellCtrl2.prototype.createEvent = function(domEvent, eventType) {
      var event = {
        type: eventType,
        node: this.rowNode,
        data: this.rowNode.data,
        value: this.value,
        column: this.column,
        colDef: this.column.getColDef(),
        context: this.beans.gridOptionsService.get("context"),
        api: this.beans.gridApi,
        columnApi: this.beans.columnApi,
        rowPinned: this.rowNode.rowPinned,
        event: domEvent,
        rowIndex: this.rowNode.rowIndex
      };
      return event;
    };
    CellCtrl2.prototype.onKeyPress = function(event) {
      var _a47;
      (_a47 = this.cellKeyboardListenerFeature) === null || _a47 === void 0 ? void 0 : _a47.onKeyPress(event);
    };
    CellCtrl2.prototype.onKeyDown = function(event) {
      var _a47;
      (_a47 = this.cellKeyboardListenerFeature) === null || _a47 === void 0 ? void 0 : _a47.onKeyDown(event);
    };
    CellCtrl2.prototype.onMouseEvent = function(eventName, mouseEvent) {
      var _a47;
      (_a47 = this.cellMouseListenerFeature) === null || _a47 === void 0 ? void 0 : _a47.onMouseEvent(eventName, mouseEvent);
    };
    CellCtrl2.prototype.getGui = function() {
      return this.eGui;
    };
    CellCtrl2.prototype.refreshToolTip = function() {
      var _a47;
      (_a47 = this.tooltipFeature) === null || _a47 === void 0 ? void 0 : _a47.refreshToolTip();
    };
    CellCtrl2.prototype.getColSpanningList = function() {
      return this.cellPositionFeature.getColSpanningList();
    };
    CellCtrl2.prototype.onLeftChanged = function() {
      var _a47;
      if (!this.cellComp) {
        return;
      }
      (_a47 = this.cellPositionFeature) === null || _a47 === void 0 ? void 0 : _a47.onLeftChanged();
    };
    CellCtrl2.prototype.onDisplayedColumnsChanged = function() {
      if (!this.eGui) {
        return;
      }
      this.setAriaColIndex();
    };
    CellCtrl2.prototype.setAriaColIndex = function() {
      var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);
      setAriaColIndex(this.getGui(), colIdx);
    };
    CellCtrl2.prototype.isSuppressNavigable = function() {
      return this.column.isSuppressNavigable(this.rowNode);
    };
    CellCtrl2.prototype.onWidthChanged = function() {
      var _a47;
      return (_a47 = this.cellPositionFeature) === null || _a47 === void 0 ? void 0 : _a47.onWidthChanged();
    };
    CellCtrl2.prototype.getColumn = function() {
      return this.column;
    };
    CellCtrl2.prototype.getRowNode = function() {
      return this.rowNode;
    };
    CellCtrl2.prototype.getBeans = function() {
      return this.beans;
    };
    CellCtrl2.prototype.isPrintLayout = function() {
      return this.printLayout;
    };
    CellCtrl2.prototype.appendChild = function(htmlElement) {
      this.eGui.appendChild(htmlElement);
    };
    CellCtrl2.prototype.refreshHandle = function() {
      if (this.cellRangeFeature) {
        this.cellRangeFeature.refreshHandle();
      }
    };
    CellCtrl2.prototype.getCellPosition = function() {
      return this.cellPosition;
    };
    CellCtrl2.prototype.isEditing = function() {
      return this.editing;
    };
    CellCtrl2.prototype.startRowOrCellEdit = function(key, charPress, event) {
      if (event === void 0) {
        event = null;
      }
      if (!this.cellComp) {
        return;
      }
      if (this.beans.gridOptionsService.get("editType") === "fullRow") {
        this.rowCtrl.startRowEditing(key, charPress, this);
      } else {
        this.startEditing(key, charPress, true, event);
      }
    };
    CellCtrl2.prototype.getRowCtrl = function() {
      return this.rowCtrl;
    };
    CellCtrl2.prototype.getRowPosition = function() {
      return {
        rowIndex: this.cellPosition.rowIndex,
        rowPinned: this.cellPosition.rowPinned
      };
    };
    CellCtrl2.prototype.updateRangeBordersIfRangeCount = function() {
      if (!this.cellComp) {
        return;
      }
      if (this.cellRangeFeature) {
        this.cellRangeFeature.updateRangeBordersIfRangeCount();
      }
    };
    CellCtrl2.prototype.onRangeSelectionChanged = function() {
      if (!this.cellComp) {
        return;
      }
      if (this.cellRangeFeature) {
        this.cellRangeFeature.onRangeSelectionChanged();
      }
    };
    CellCtrl2.prototype.isRangeSelectionEnabled = function() {
      return this.cellRangeFeature != null;
    };
    CellCtrl2.prototype.focusCell = function(forceBrowserFocus) {
      if (forceBrowserFocus === void 0) {
        forceBrowserFocus = false;
      }
      this.beans.focusService.setFocusedCell({
        rowIndex: this.getCellPosition().rowIndex,
        column: this.column,
        rowPinned: this.rowNode.rowPinned,
        forceBrowserFocus
      });
    };
    CellCtrl2.prototype.onRowIndexChanged = function() {
      this.createCellPosition();
      this.onCellFocused();
      if (this.cellRangeFeature) {
        this.cellRangeFeature.onRangeSelectionChanged();
      }
    };
    CellCtrl2.prototype.onFirstRightPinnedChanged = function() {
      if (!this.cellComp) {
        return;
      }
      var firstRightPinned = this.column.isFirstRightPinned();
      this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);
    };
    CellCtrl2.prototype.onLastLeftPinnedChanged = function() {
      if (!this.cellComp) {
        return;
      }
      var lastLeftPinned = this.column.isLastLeftPinned();
      this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);
    };
    CellCtrl2.prototype.onCellFocused = function(event) {
      if (!this.cellComp || this.beans.gridOptionsService.is("suppressCellFocus")) {
        return;
      }
      var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);
      if (cellFocused && event && event.forceBrowserFocus) {
        var focusEl = this.cellComp.getFocusableElement();
        focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });
      }
      var fullRowEdit = this.beans.gridOptionsService.get("editType") === "fullRow";
      if (!cellFocused && !fullRowEdit && this.editing) {
        this.stopRowOrCellEdit();
      }
    };
    CellCtrl2.prototype.createCellPosition = function() {
      this.cellPosition = {
        rowIndex: this.rowNode.rowIndex,
        rowPinned: makeNull(this.rowNode.rowPinned),
        column: this.column
      };
    };
    CellCtrl2.prototype.applyStaticCssClasses = function() {
      this.cellComp.addOrRemoveCssClass(CSS_CELL, true);
      this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);
      var autoHeight = this.column.isAutoHeight() == true;
      this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);
      this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);
    };
    CellCtrl2.prototype.onColumnHover = function() {
      if (!this.cellComp) {
        return;
      }
      if (!this.beans.gridOptionsService.is("columnHoverHighlight")) {
        return;
      }
      var isHovered = this.beans.columnHoverService.isHovered(this.column);
      this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);
    };
    CellCtrl2.prototype.onColDefChanged = function() {
      if (!this.cellComp) {
        return;
      }
      this.setWrapText();
      if (!this.editing) {
        this.refreshCell({ forceRefresh: true, suppressFlash: true });
      }
    };
    CellCtrl2.prototype.setWrapText = function() {
      var value = this.column.getColDef().wrapText == true;
      this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);
    };
    CellCtrl2.prototype.dispatchCellContextMenuEvent = function(event) {
      var colDef = this.column.getColDef();
      var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);
      this.beans.eventService.dispatchEvent(cellContextMenuEvent);
      if (colDef.onCellContextMenu) {
        window.setTimeout(function() {
          return colDef.onCellContextMenu(cellContextMenuEvent);
        }, 0);
      }
    };
    CellCtrl2.prototype.getCellRenderer = function() {
      return this.cellComp ? this.cellComp.getCellRenderer() : null;
    };
    CellCtrl2.prototype.getCellEditor = function() {
      return this.cellComp ? this.cellComp.getCellEditor() : null;
    };
    CellCtrl2.prototype.destroy = function() {
      this.onCellCompAttachedFuncs = [];
      _super.prototype.destroy.call(this);
    };
    CellCtrl2.prototype.createSelectionCheckbox = function() {
      var cbSelectionComponent = new CheckboxSelectionComponent();
      this.beans.context.createBean(cbSelectionComponent);
      cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });
      return cbSelectionComponent;
    };
    CellCtrl2.prototype.createDndSource = function() {
      var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.beans, this.eGui);
      this.beans.context.createBean(dndSourceComp);
      return dndSourceComp;
    };
    CellCtrl2.prototype.registerRowDragger = function(customElement, dragStartPixels, suppressVisibilityChange) {
      var _this = this;
      if (this.customRowDragComp) {
        this.customRowDragComp.setDragElement(customElement, dragStartPixels);
        return;
      }
      var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);
      if (newComp) {
        this.customRowDragComp = newComp;
        this.addDestroyFunc(function() {
          _this.beans.context.destroyBean(newComp);
          _this.customRowDragComp = null;
        });
      }
    };
    CellCtrl2.prototype.createRowDragComp = function(customElement, dragStartPixels, suppressVisibilityChange) {
      var _this = this;
      var pagination = this.beans.gridOptionsService.is("pagination");
      var rowDragManaged = this.beans.gridOptionsService.is("rowDragManaged");
      var clientSideRowModelActive = this.beans.gridOptionsService.isRowModelType("clientSide");
      if (rowDragManaged) {
        if (!clientSideRowModelActive) {
          doOnce(function() {
            return console.warn("AG Grid: managed row dragging is only allowed in the Client Side Row Model");
          }, "CellComp.addRowDragging");
          return;
        }
        if (pagination) {
          doOnce(function() {
            return console.warn("AG Grid: managed row dragging is not possible when doing pagination");
          }, "CellComp.addRowDragging");
          return;
        }
      }
      var rowDragComp = new RowDragComp(function() {
        return _this.value;
      }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);
      this.beans.context.createBean(rowDragComp);
      return rowDragComp;
    };
    CellCtrl2.DOM_DATA_KEY_CELL_CTRL = "cellCtrl";
    return CellCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowCtrl.js
var __extends64 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __values4 = function(o2) {
  var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0;
  if (m2)
    return m2.call(o2);
  if (o2 && typeof o2.length === "number")
    return {
      next: function() {
        if (o2 && i2 >= o2.length)
          o2 = void 0;
        return { value: o2 && o2[i2++], done: !o2 };
      }
    };
  throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read9 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread7 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read9(arguments[i2]));
  return ar;
};
var RowType;
(function(RowType2) {
  RowType2["Normal"] = "Normal";
  RowType2["FullWidth"] = "FullWidth";
  RowType2["FullWidthLoading"] = "FullWidthLoading";
  RowType2["FullWidthGroup"] = "FullWidthGroup";
  RowType2["FullWidthDetail"] = "FullWidthDetail";
})(RowType || (RowType = {}));
var instanceIdSequence3 = 0;
var RowCtrl = (
  /** @class */
  function(_super) {
    __extends64(RowCtrl2, _super);
    function RowCtrl2(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {
      var _this = _super.call(this) || this;
      _this.allRowGuis = [];
      _this.active = true;
      _this.centerCellCtrls = { list: [], map: {} };
      _this.leftCellCtrls = { list: [], map: {} };
      _this.rightCellCtrls = { list: [], map: {} };
      _this.slideInAnimation = {
        left: false,
        center: false,
        right: false,
        fullWidth: false
      };
      _this.fadeInAnimation = {
        left: false,
        center: false,
        right: false,
        fullWidth: false
      };
      _this.lastMouseDownOnDragger = false;
      _this.updateColumnListsPending = false;
      _this.businessKeySanitised = null;
      _this.beans = beans;
      _this.rowNode = rowNode;
      _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();
      _this.useAnimationFrameForCreate = useAnimationFrameForCreate;
      _this.printLayout = printLayout;
      _this.instanceId = rowNode.id + "-" + instanceIdSequence3++;
      _this.setAnimateFlags(animateIn);
      _this.initRowBusinessKey();
      _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);
      _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);
      _this.setRowType();
      _this.addListeners();
      return _this;
    }
    RowCtrl2.prototype.initRowBusinessKey = function() {
      var businessKeyForNodeFunc = this.beans.gridOptionsService.get("getBusinessKeyForNode");
      if (typeof businessKeyForNodeFunc !== "function") {
        return;
      }
      var businessKey = businessKeyForNodeFunc(this.rowNode);
      this.businessKeySanitised = escapeString(businessKey);
    };
    RowCtrl2.prototype.isSticky = function() {
      return this.rowNode.sticky;
    };
    RowCtrl2.prototype.getBeans = function() {
      return this.beans;
    };
    RowCtrl2.prototype.getInstanceId = function() {
      return this.instanceId;
    };
    RowCtrl2.prototype.setComp = function(rowComp, element, containerType) {
      var gui = { rowComp, element, containerType };
      this.allRowGuis.push(gui);
      if (containerType === RowContainerType.LEFT) {
        this.leftGui = gui;
      } else if (containerType === RowContainerType.RIGHT) {
        this.rightGui = gui;
      } else if (containerType === RowContainerType.FULL_WIDTH) {
        this.fullWidthGui = gui;
      } else {
        this.centerGui = gui;
      }
      this.initialiseRowComp(gui);
      if (this.rowType !== "FullWidthLoading") {
        this.beans.rowRenderer.dispatchFirstDataRenderedEvent();
      }
    };
    RowCtrl2.prototype.unsetComp = function(containerType) {
      this.allRowGuis = this.allRowGuis.filter(function(rowGui) {
        return rowGui.containerType !== containerType;
      });
      if (containerType === RowContainerType.LEFT) {
        this.leftGui = void 0;
      } else if (containerType === RowContainerType.RIGHT) {
        this.rightGui = void 0;
      } else if (containerType === RowContainerType.FULL_WIDTH) {
        this.fullWidthGui = void 0;
      }
    };
    RowCtrl2.prototype.isCacheable = function() {
      return this.rowType === RowType.FullWidthDetail && this.beans.gridOptionsService.is("keepDetailRows");
    };
    RowCtrl2.prototype.setCached = function(cached) {
      var displayValue = cached ? "none" : "";
      this.allRowGuis.forEach(function(rg) {
        return rg.element.style.display = displayValue;
      });
    };
    RowCtrl2.prototype.initialiseRowComp = function(gui) {
      var _this = this;
      var gos = this.beans.gridOptionsService;
      this.onRowHeightChanged(gui);
      this.updateRowIndexes(gui);
      this.setFocusedClasses(gui);
      this.setStylesFromGridOptions(gui);
      if (gos.isRowSelection() && this.rowNode.selectable) {
        this.onRowSelected(gui);
      }
      this.updateColumnLists(!this.useAnimationFrameForCreate);
      var comp = gui.rowComp;
      comp.setRole("row");
      var initialRowClasses = this.getInitialRowClasses(gui.containerType);
      initialRowClasses.forEach(function(name) {
        return comp.addOrRemoveCssClass(name, true);
      });
      this.executeSlideAndFadeAnimations(gui);
      if (this.rowNode.group) {
        setAriaExpanded(gui.element, this.rowNode.expanded == true);
      }
      var rowIdSanitised = escapeString(this.rowNode.id);
      if (rowIdSanitised != null) {
        comp.setRowId(rowIdSanitised);
      }
      if (this.businessKeySanitised != null) {
        comp.setRowBusinessKey(this.businessKeySanitised);
      }
      if (this.isFullWidth() && !this.beans.gridOptionsService.is("suppressCellFocus")) {
        comp.setTabIndex(-1);
      }
      gos.setDomData(gui.element, RowCtrl2.DOM_DATA_KEY_ROW_CTRL, this);
      this.addDestroyFunc(function() {
        return gos.setDomData(gui.element, RowCtrl2.DOM_DATA_KEY_ROW_CTRL, null);
      });
      if (this.useAnimationFrameForCreate) {
        this.beans.animationFrameService.createTask(this.addHoverFunctionality.bind(this, gui.element), this.rowNode.rowIndex, "createTasksP2");
      } else {
        this.addHoverFunctionality(gui.element);
      }
      if (this.isFullWidth()) {
        this.setupFullWidth(gui);
      }
      if (gos.is("rowDragEntireRow")) {
        this.addRowDraggerToRow(gui);
      }
      if (this.useAnimationFrameForCreate) {
        this.beans.animationFrameService.addDestroyTask(function() {
          if (!_this.isAlive()) {
            return;
          }
          gui.rowComp.addOrRemoveCssClass("ag-after-created", true);
        });
      }
      this.executeProcessRowPostCreateFunc();
    };
    RowCtrl2.prototype.executeSlideAndFadeAnimations = function(gui) {
      var _this = this;
      var containerType = gui.containerType;
      var shouldSlide = this.slideInAnimation[containerType];
      if (shouldSlide) {
        executeNextVMTurn(function() {
          _this.onTopChanged();
        });
        this.slideInAnimation[containerType] = false;
      }
      var shouldFade = this.fadeInAnimation[containerType];
      if (shouldFade) {
        executeNextVMTurn(function() {
          gui.rowComp.addOrRemoveCssClass("ag-opacity-zero", false);
        });
        this.fadeInAnimation[containerType] = false;
      }
    };
    RowCtrl2.prototype.addRowDraggerToRow = function(gui) {
      if (this.beans.gridOptionsService.isEnableRangeSelection()) {
        doOnce(function() {
          console.warn("AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn't work with `enableRangeSelection: true`");
        }, "rowDragAndRangeSelectionEnabled");
        return;
      }
      var translate = this.beans.localeService.getLocaleTextFunc();
      var rowDragComp = new RowDragComp(function() {
        return "1 " + translate("rowDragRow", "row");
      }, this.rowNode, void 0, gui.element, void 0, true);
      this.createManagedBean(rowDragComp, this.beans.context);
    };
    RowCtrl2.prototype.setupFullWidth = function(gui) {
      var pinned = this.getPinnedForContainer(gui.containerType);
      var params = this.createFullWidthParams(gui.element, pinned);
      if (this.rowType == RowType.FullWidthDetail) {
        if (!ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, "cell renderer 'agDetailCellRenderer' (for master detail)")) {
          return;
        }
      }
      var compDetails;
      switch (this.rowType) {
        case RowType.FullWidthDetail:
          compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);
          break;
        case RowType.FullWidthGroup:
          compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);
          break;
        case RowType.FullWidthLoading:
          compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);
          break;
        default:
          compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);
          break;
      }
      gui.rowComp.showFullWidth(compDetails);
    };
    RowCtrl2.prototype.isPrintLayout = function() {
      return this.printLayout;
    };
    RowCtrl2.prototype.getCellElement = function(column) {
      var cellCtrl = this.getCellCtrl(column);
      return cellCtrl ? cellCtrl.getGui() : null;
    };
    RowCtrl2.prototype.executeProcessRowPostCreateFunc = function() {
      var _a47;
      var func = this.beans.gridOptionsService.getCallback("processRowPostCreate");
      if (!func || !this.areAllContainersReady()) {
        return;
      }
      var params = {
        eRow: (_a47 = this.centerGui) === null || _a47 === void 0 ? void 0 : _a47.element,
        ePinnedLeftRow: this.leftGui ? this.leftGui.element : void 0,
        ePinnedRightRow: this.rightGui ? this.rightGui.element : void 0,
        node: this.rowNode,
        rowIndex: this.rowNode.rowIndex,
        addRenderedRowListener: this.addEventListener.bind(this)
      };
      func(params);
    };
    RowCtrl2.prototype.areAllContainersReady = function() {
      var isLeftReady = !!this.leftGui || !this.beans.columnModel.isPinningLeft();
      var isCenterReady = !!this.centerGui;
      var isRightReady = !!this.rightGui || !this.beans.columnModel.isPinningRight();
      return isLeftReady && isCenterReady && isRightReady;
    };
    RowCtrl2.prototype.setRowType = function() {
      var isStub = this.rowNode.stub;
      var isFullWidthCell = this.rowNode.isFullWidthCell();
      var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;
      var pivotMode = this.beans.columnModel.isPivotMode();
      var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;
      var isFullWidthGroup = isGroupRow && this.beans.gridOptionsService.isGroupUseEntireRow(pivotMode);
      if (isStub) {
        this.rowType = RowType.FullWidthLoading;
      } else if (isDetailCell) {
        this.rowType = RowType.FullWidthDetail;
      } else if (isFullWidthCell) {
        this.rowType = RowType.FullWidth;
      } else if (isFullWidthGroup) {
        this.rowType = RowType.FullWidthGroup;
      } else {
        this.rowType = RowType.Normal;
      }
    };
    RowCtrl2.prototype.updateColumnLists = function(suppressAnimationFrame) {
      var _this = this;
      if (suppressAnimationFrame === void 0) {
        suppressAnimationFrame = false;
      }
      if (this.isFullWidth()) {
        return;
      }
      var noAnimation = suppressAnimationFrame || this.beans.gridOptionsService.is("suppressAnimationFrame") || this.printLayout;
      if (noAnimation) {
        this.updateColumnListsImpl();
        return;
      }
      if (this.updateColumnListsPending) {
        return;
      }
      this.beans.animationFrameService.createTask(function() {
        if (!_this.active) {
          return;
        }
        _this.updateColumnListsImpl();
      }, this.rowNode.rowIndex, "createTasksP1");
      this.updateColumnListsPending = true;
    };
    RowCtrl2.prototype.createCellCtrls = function(prev, cols, pinned) {
      var _this = this;
      if (pinned === void 0) {
        pinned = null;
      }
      var res = {
        list: [],
        map: {}
      };
      var addCell = function(colInstanceId, cellCtrl) {
        res.list.push(cellCtrl);
        res.map[colInstanceId] = cellCtrl;
      };
      cols.forEach(function(col) {
        var colInstanceId = col.getInstanceId();
        var cellCtrl = prev.map[colInstanceId];
        if (!cellCtrl) {
          cellCtrl = new CellCtrl(col, _this.rowNode, _this.beans, _this);
        }
        addCell(colInstanceId, cellCtrl);
      });
      prev.list.forEach(function(prevCellCtrl) {
        var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;
        if (cellInResult) {
          return;
        }
        var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);
        if (keepCell) {
          addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);
          return;
        }
        prevCellCtrl.destroy();
      });
      return res;
    };
    RowCtrl2.prototype.updateColumnListsImpl = function() {
      var _this = this;
      this.updateColumnListsPending = false;
      var columnModel = this.beans.columnModel;
      if (this.printLayout) {
        this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());
        this.leftCellCtrls = { list: [], map: {} };
        this.rightCellCtrls = { list: [], map: {} };
      } else {
        var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);
        this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);
        var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);
        this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, "left");
        var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);
        this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, "right");
      }
      this.allRowGuis.forEach(function(item) {
        var cellControls = item.containerType === RowContainerType.LEFT ? _this.leftCellCtrls : item.containerType === RowContainerType.RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;
        item.rowComp.setCellCtrls(cellControls.list);
      });
    };
    RowCtrl2.prototype.isCellEligibleToBeRemoved = function(cellCtrl, nextContainerPinned) {
      var REMOVE_CELL = true;
      var KEEP_CELL = false;
      var column = cellCtrl.getColumn();
      if (column.getPinned() != nextContainerPinned) {
        return REMOVE_CELL;
      }
      var editing = cellCtrl.isEditing();
      var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());
      var mightWantToKeepCell = editing || focused;
      if (mightWantToKeepCell) {
        var column_1 = cellCtrl.getColumn();
        var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();
        var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;
        return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;
      }
      return REMOVE_CELL;
    };
    RowCtrl2.prototype.setAnimateFlags = function(animateIn) {
      if (this.isSticky() || !animateIn) {
        return;
      }
      var oldRowTopExists = exists(this.rowNode.oldRowTop);
      var pinningLeft = this.beans.columnModel.isPinningLeft();
      var pinningRight = this.beans.columnModel.isPinningRight();
      if (oldRowTopExists) {
        this.slideInAnimation.center = true;
        this.slideInAnimation.left = pinningLeft;
        this.slideInAnimation.right = pinningRight;
      } else {
        this.fadeInAnimation.center = true;
        this.fadeInAnimation.left = pinningLeft;
        this.fadeInAnimation.right = pinningRight;
      }
    };
    RowCtrl2.prototype.isEditing = function() {
      return this.editingRow;
    };
    RowCtrl2.prototype.stopRowEditing = function(cancel) {
      this.stopEditing(cancel);
    };
    RowCtrl2.prototype.isFullWidth = function() {
      return this.rowType !== RowType.Normal;
    };
    RowCtrl2.prototype.getRowType = function() {
      return this.rowType;
    };
    RowCtrl2.prototype.refreshFullWidth = function() {
      var _this = this;
      var tryRefresh = function(gui, pinned) {
        if (!gui) {
          return true;
        }
        var cellRenderer = gui.rowComp.getFullWidthCellRenderer();
        if (!cellRenderer) {
          return false;
        }
        if (!cellRenderer.refresh) {
          return false;
        }
        var params = _this.createFullWidthParams(gui.element, pinned);
        var refreshSucceeded = cellRenderer.refresh(params);
        return refreshSucceeded;
      };
      var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);
      var centerSuccess = tryRefresh(this.centerGui, null);
      var leftSuccess = tryRefresh(this.leftGui, "left");
      var rightSuccess = tryRefresh(this.rightGui, "right");
      var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;
      return allFullWidthRowsRefreshed;
    };
    RowCtrl2.prototype.addListeners = function() {
      var _this = this;
      this.addManagedListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, function() {
        return _this.onRowHeightChanged();
      });
      this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, function() {
        return _this.onRowSelected();
      });
      this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));
      this.addManagedListener(this.rowNode, RowNode.EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));
      var eventService = this.beans.eventService;
      this.addManagedListener(eventService, Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));
      this.addManagedListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));
      this.addManagedListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
      this.addManagedListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));
      this.addManagedListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));
      this.addManagedListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));
      this.addManagedListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));
      this.addManagedListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));
      this.addListenersForCellComps();
    };
    RowCtrl2.prototype.onColumnMoved = function() {
      this.updateColumnLists();
    };
    RowCtrl2.prototype.addListenersForCellComps = function() {
      var _this = this;
      this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function() {
        _this.getAllCellCtrls().forEach(function(cellCtrl) {
          return cellCtrl.onRowIndexChanged();
        });
      });
      this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function(event) {
        _this.getAllCellCtrls().forEach(function(cellCtrl) {
          return cellCtrl.onCellChanged(event);
        });
      });
    };
    RowCtrl2.prototype.onRowNodeDataChanged = function(event) {
      this.getAllCellCtrls().forEach(function(cellCtrl) {
        return cellCtrl.refreshCell({
          suppressFlash: !event.update,
          newData: !event.update
        });
      });
      this.onRowSelected();
      this.postProcessCss();
    };
    RowCtrl2.prototype.onRowNodeCellChanged = function() {
      this.postProcessCss();
    };
    RowCtrl2.prototype.postProcessCss = function() {
      this.setStylesFromGridOptions();
      this.postProcessClassesFromGridOptions();
      this.postProcessRowClassRules();
      this.postProcessRowDragging();
    };
    RowCtrl2.prototype.onRowNodeHighlightChanged = function() {
      var highlighted = this.rowNode.highlighted;
      this.allRowGuis.forEach(function(gui) {
        var aboveOn = highlighted === RowHighlightPosition.Above;
        var belowOn = highlighted === RowHighlightPosition.Below;
        gui.rowComp.addOrRemoveCssClass("ag-row-highlight-above", aboveOn);
        gui.rowComp.addOrRemoveCssClass("ag-row-highlight-below", belowOn);
      });
    };
    RowCtrl2.prototype.onRowNodeDraggingChanged = function() {
      this.postProcessRowDragging();
    };
    RowCtrl2.prototype.postProcessRowDragging = function() {
      var dragging = this.rowNode.dragging;
      this.allRowGuis.forEach(function(gui) {
        return gui.rowComp.addOrRemoveCssClass("ag-row-dragging", dragging);
      });
    };
    RowCtrl2.prototype.updateExpandedCss = function() {
      var expandable = this.rowNode.isExpandable();
      var expanded = this.rowNode.expanded == true;
      this.allRowGuis.forEach(function(gui) {
        gui.rowComp.addOrRemoveCssClass("ag-row-group", expandable);
        gui.rowComp.addOrRemoveCssClass("ag-row-group-expanded", expandable && expanded);
        gui.rowComp.addOrRemoveCssClass("ag-row-group-contracted", expandable && !expanded);
        setAriaExpanded(gui.element, expandable && expanded);
      });
    };
    RowCtrl2.prototype.onDisplayedColumnsChanged = function() {
      this.updateColumnLists(true);
      if (this.beans.columnModel.wasAutoRowHeightEverActive()) {
        this.rowNode.checkAutoHeights();
      }
    };
    RowCtrl2.prototype.onVirtualColumnsChanged = function() {
      this.updateColumnLists();
    };
    RowCtrl2.prototype.getRowPosition = function() {
      return {
        rowPinned: makeNull(this.rowNode.rowPinned),
        rowIndex: this.rowNode.rowIndex
      };
    };
    RowCtrl2.prototype.onKeyboardNavigate = function(keyboardEvent) {
      var currentFullWidthComp = this.allRowGuis.find(function(c2) {
        return c2.element.contains(keyboardEvent.target);
      });
      var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;
      var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;
      if (!isFullWidthContainerFocused) {
        return;
      }
      var node = this.rowNode;
      var lastFocusedCell = this.beans.focusService.getFocusedCell();
      var cellPosition = {
        rowIndex: node.rowIndex,
        rowPinned: node.rowPinned,
        column: lastFocusedCell && lastFocusedCell.column
      };
      this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);
      keyboardEvent.preventDefault();
    };
    RowCtrl2.prototype.onTabKeyDown = function(keyboardEvent) {
      if (keyboardEvent.defaultPrevented || isStopPropagationForAgGrid(keyboardEvent)) {
        return;
      }
      var currentFullWidthComp = this.allRowGuis.find(function(c2) {
        return c2.element.contains(keyboardEvent.target);
      });
      var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;
      var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;
      var nextEl = null;
      if (!isFullWidthContainerFocused) {
        nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);
      }
      if (this.isFullWidth() && isFullWidthContainerFocused || !nextEl) {
        this.beans.navigationService.onTabKeyDown(this, keyboardEvent);
      }
    };
    RowCtrl2.prototype.onFullWidthRowFocused = function(event) {
      var _a47;
      var node = this.rowNode;
      var isFocused = this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;
      var element = this.fullWidthGui ? this.fullWidthGui.element : (_a47 = this.centerGui) === null || _a47 === void 0 ? void 0 : _a47.element;
      if (!element) {
        return;
      }
      element.classList.toggle("ag-full-width-focus", isFocused);
      if (isFocused) {
        element.focus({ preventScroll: true });
      }
    };
    RowCtrl2.prototype.refreshCell = function(cellCtrl) {
      this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);
      this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);
      this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);
      this.updateColumnLists();
    };
    RowCtrl2.prototype.removeCellCtrl = function(prev, cellCtrlToRemove) {
      var res = {
        list: [],
        map: {}
      };
      prev.list.forEach(function(cellCtrl) {
        if (cellCtrl === cellCtrlToRemove) {
          return;
        }
        res.list.push(cellCtrl);
        res.map[cellCtrl.getInstanceId()] = cellCtrl;
      });
      return res;
    };
    RowCtrl2.prototype.onMouseEvent = function(eventName, mouseEvent) {
      switch (eventName) {
        case "dblclick":
          this.onRowDblClick(mouseEvent);
          break;
        case "click":
          this.onRowClick(mouseEvent);
          break;
        case "touchstart":
        case "mousedown":
          this.onRowMouseDown(mouseEvent);
          break;
      }
    };
    RowCtrl2.prototype.createRowEvent = function(type2, domEvent) {
      return {
        type: type2,
        node: this.rowNode,
        data: this.rowNode.data,
        rowIndex: this.rowNode.rowIndex,
        rowPinned: this.rowNode.rowPinned,
        context: this.beans.gridOptionsService.get("context"),
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        event: domEvent
      };
    };
    RowCtrl2.prototype.createRowEventWithSource = function(type2, domEvent) {
      var event = this.createRowEvent(type2, domEvent);
      event.source = this;
      return event;
    };
    RowCtrl2.prototype.onRowDblClick = function(mouseEvent) {
      if (isStopPropagationForAgGrid(mouseEvent)) {
        return;
      }
      var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);
      this.beans.eventService.dispatchEvent(agEvent);
    };
    RowCtrl2.prototype.onRowMouseDown = function(mouseEvent) {
      this.lastMouseDownOnDragger = isElementChildOfClass(mouseEvent.target, "ag-row-drag", 3);
      if (!this.isFullWidth()) {
        return;
      }
      var node = this.rowNode;
      var columnModel = this.beans.columnModel;
      if (this.beans.rangeService) {
        this.beans.rangeService.removeAllCellRanges();
      }
      this.beans.focusService.setFocusedCell({
        rowIndex: node.rowIndex,
        column: columnModel.getAllDisplayedColumns()[0],
        rowPinned: node.rowPinned,
        forceBrowserFocus: true
      });
    };
    RowCtrl2.prototype.onRowClick = function(mouseEvent) {
      var stop = isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;
      if (stop) {
        return;
      }
      var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);
      this.beans.eventService.dispatchEvent(agEvent);
      var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;
      var shiftKeyPressed = mouseEvent.shiftKey;
      var groupSelectsChildren = this.beans.gridOptionsService.is("groupSelectsChildren");
      if (
        // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,
        // so return if it's a group row
        groupSelectsChildren && this.rowNode.group || // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,
        // and we click it, the selection should not change (ie any currently selected row should stay selected)
        !this.rowNode.selectable || // we also don't allow selection of pinned rows
        this.rowNode.rowPinned || // if no selection method enabled, do nothing
        !this.beans.gridOptionsService.isRowSelection() || // if click selection suppressed, do nothing
        this.beans.gridOptionsService.is("suppressRowClickSelection")
      ) {
        return;
      }
      var multiSelectOnClick = this.beans.gridOptionsService.is("rowMultiSelectWithClick");
      var rowDeselectionWithCtrl = !this.beans.gridOptionsService.is("suppressRowDeselection");
      var source = "rowClicked";
      if (this.rowNode.isSelected()) {
        if (multiSelectOnClick) {
          this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source });
        } else if (multiSelectKeyPressed) {
          if (rowDeselectionWithCtrl) {
            this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent, source });
          }
        } else {
          this.rowNode.setSelectedParams({ newValue: true, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed, event: mouseEvent, source });
        }
      } else {
        var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;
        this.rowNode.setSelectedParams({ newValue: true, clearSelection, rangeSelect: shiftKeyPressed, event: mouseEvent, source });
      }
    };
    RowCtrl2.prototype.setupDetailRowAutoHeight = function(eDetailGui) {
      var _this = this;
      if (this.rowType !== RowType.FullWidthDetail) {
        return;
      }
      if (!this.beans.gridOptionsService.is("detailRowAutoHeight")) {
        return;
      }
      var checkRowSizeFunc = function() {
        var clientHeight = eDetailGui.clientHeight;
        if (clientHeight != null && clientHeight > 0) {
          var updateRowHeightFunc = function() {
            _this.rowNode.setRowHeight(clientHeight);
            if (_this.beans.clientSideRowModel) {
              _this.beans.clientSideRowModel.onRowHeightChanged();
            } else if (_this.beans.serverSideRowModel) {
              _this.beans.serverSideRowModel.onRowHeightChanged();
            }
          };
          _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);
        }
      };
      var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);
      this.addDestroyFunc(resizeObserverDestroyFunc);
      checkRowSizeFunc();
    };
    RowCtrl2.prototype.createFullWidthParams = function(eRow, pinned) {
      var _this = this;
      var params = {
        fullWidth: true,
        data: this.rowNode.data,
        node: this.rowNode,
        value: this.rowNode.key,
        valueFormatted: this.rowNode.key,
        rowIndex: this.rowNode.rowIndex,
        api: this.beans.gridOptionsService.get("api"),
        columnApi: this.beans.gridOptionsService.get("columnApi"),
        context: this.beans.gridOptionsService.get("context"),
        // these need to be taken out, as part of 'afterAttached' now
        eGridCell: eRow,
        eParentOfValue: eRow,
        pinned,
        addRenderedRowListener: this.addEventListener.bind(this),
        registerRowDragger: function(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {
          return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange);
        }
      };
      return params;
    };
    RowCtrl2.prototype.addFullWidthRowDragging = function(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {
      if (value === void 0) {
        value = "";
      }
      if (!this.isFullWidth()) {
        return;
      }
      var rowDragComp = new RowDragComp(function() {
        return value;
      }, this.rowNode, void 0, rowDraggerElement, dragStartPixels, suppressVisibilityChange);
      this.createManagedBean(rowDragComp, this.beans.context);
    };
    RowCtrl2.prototype.onUiLevelChanged = function() {
      var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);
      if (this.rowLevel != newLevel) {
        var classToAdd_1 = "ag-row-level-" + newLevel;
        var classToRemove_1 = "ag-row-level-" + this.rowLevel;
        this.allRowGuis.forEach(function(gui) {
          gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);
          gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);
        });
      }
      this.rowLevel = newLevel;
    };
    RowCtrl2.prototype.isFirstRowOnPage = function() {
      return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();
    };
    RowCtrl2.prototype.isLastRowOnPage = function() {
      return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();
    };
    RowCtrl2.prototype.onModelUpdated = function() {
      this.refreshFirstAndLastRowStyles();
    };
    RowCtrl2.prototype.refreshFirstAndLastRowStyles = function() {
      var newFirst = this.isFirstRowOnPage();
      var newLast = this.isLastRowOnPage();
      if (this.firstRowOnPage !== newFirst) {
        this.firstRowOnPage = newFirst;
        this.allRowGuis.forEach(function(gui) {
          return gui.rowComp.addOrRemoveCssClass("ag-row-first", newFirst);
        });
      }
      if (this.lastRowOnPage !== newLast) {
        this.lastRowOnPage = newLast;
        this.allRowGuis.forEach(function(gui) {
          return gui.rowComp.addOrRemoveCssClass("ag-row-last", newLast);
        });
      }
    };
    RowCtrl2.prototype.stopEditing = function(cancel) {
      var e_1, _a47;
      if (cancel === void 0) {
        cancel = false;
      }
      if (this.stoppingRowEdit) {
        return;
      }
      var cellControls = this.getAllCellCtrls();
      var isRowEdit = this.editingRow;
      this.stoppingRowEdit = true;
      var fireRowEditEvent = false;
      try {
        for (var cellControls_1 = __values4(cellControls), cellControls_1_1 = cellControls_1.next(); !cellControls_1_1.done; cellControls_1_1 = cellControls_1.next()) {
          var ctrl = cellControls_1_1.value;
          var valueChanged = ctrl.stopEditing(cancel);
          if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {
            fireRowEditEvent = true;
          }
        }
      } catch (e_1_1) {
        e_1 = { error: e_1_1 };
      } finally {
        try {
          if (cellControls_1_1 && !cellControls_1_1.done && (_a47 = cellControls_1.return))
            _a47.call(cellControls_1);
        } finally {
          if (e_1)
            throw e_1.error;
        }
      }
      if (fireRowEditEvent) {
        var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);
        this.beans.eventService.dispatchEvent(event_1);
      }
      if (isRowEdit) {
        this.setEditingRow(false);
      }
      this.stoppingRowEdit = false;
    };
    RowCtrl2.prototype.setInlineEditingCss = function(editing) {
      this.allRowGuis.forEach(function(gui) {
        gui.rowComp.addOrRemoveCssClass("ag-row-inline-editing", editing);
        gui.rowComp.addOrRemoveCssClass("ag-row-not-inline-editing", !editing);
      });
    };
    RowCtrl2.prototype.setEditingRow = function(value) {
      this.editingRow = value;
      this.allRowGuis.forEach(function(gui) {
        return gui.rowComp.addOrRemoveCssClass("ag-row-editing", value);
      });
      var event = value ? this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED) : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);
      this.beans.eventService.dispatchEvent(event);
    };
    RowCtrl2.prototype.startRowEditing = function(key, charPress, sourceRenderedCell, event) {
      if (key === void 0) {
        key = null;
      }
      if (charPress === void 0) {
        charPress = null;
      }
      if (sourceRenderedCell === void 0) {
        sourceRenderedCell = null;
      }
      if (event === void 0) {
        event = null;
      }
      if (this.editingRow) {
        return;
      }
      var atLeastOneEditing = this.getAllCellCtrls().reduce(function(prev, cellCtrl) {
        var cellStartedEdit = cellCtrl === sourceRenderedCell;
        if (cellStartedEdit) {
          cellCtrl.startEditing(key, charPress, cellStartedEdit, event);
        } else {
          cellCtrl.startEditing(null, null, cellStartedEdit, event);
        }
        if (prev) {
          return true;
        }
        return cellCtrl.isEditing();
      }, false);
      if (atLeastOneEditing) {
        this.setEditingRow(true);
      }
    };
    RowCtrl2.prototype.getAllCellCtrls = function() {
      var res = __spread7(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);
      return res;
    };
    RowCtrl2.prototype.postProcessClassesFromGridOptions = function() {
      var _this = this;
      var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);
      if (!cssClasses || !cssClasses.length) {
        return;
      }
      cssClasses.forEach(function(classStr) {
        _this.allRowGuis.forEach(function(c2) {
          return c2.rowComp.addOrRemoveCssClass(classStr, true);
        });
      });
    };
    RowCtrl2.prototype.postProcessRowClassRules = function() {
      var _this = this;
      this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, function(className) {
        _this.allRowGuis.forEach(function(gui) {
          return gui.rowComp.addOrRemoveCssClass(className, true);
        });
      }, function(className) {
        _this.allRowGuis.forEach(function(gui) {
          return gui.rowComp.addOrRemoveCssClass(className, false);
        });
      });
    };
    RowCtrl2.prototype.setStylesFromGridOptions = function(gui) {
      var rowStyles = this.processStylesFromGridOptions();
      this.forEachGui(gui, function(gui2) {
        return gui2.rowComp.setUserStyles(rowStyles);
      });
    };
    RowCtrl2.prototype.getPinnedForContainer = function(rowContainerType) {
      var pinned = rowContainerType === RowContainerType.LEFT ? "left" : rowContainerType === RowContainerType.RIGHT ? "right" : null;
      return pinned;
    };
    RowCtrl2.prototype.getInitialRowClasses = function(rowContainerType) {
      var pinned = this.getPinnedForContainer(rowContainerType);
      var params = {
        rowNode: this.rowNode,
        rowFocused: this.rowFocused,
        fadeRowIn: this.fadeInAnimation[rowContainerType],
        rowIsEven: this.rowNode.rowIndex % 2 === 0,
        rowLevel: this.rowLevel,
        fullWidthRow: this.isFullWidth(),
        firstRowOnPage: this.isFirstRowOnPage(),
        lastRowOnPage: this.isLastRowOnPage(),
        printLayout: this.printLayout,
        expandable: this.rowNode.isExpandable(),
        pinned
      };
      return this.beans.rowCssClassCalculator.getInitialRowClasses(params);
    };
    RowCtrl2.prototype.processStylesFromGridOptions = function() {
      var rowStyle = this.beans.gridOptionsService.get("rowStyle");
      if (rowStyle && typeof rowStyle === "function") {
        console.warn("AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead");
        return;
      }
      var rowStyleFunc = this.beans.gridOptionsService.getCallback("getRowStyle");
      var rowStyleFuncResult;
      if (rowStyleFunc) {
        var params = {
          data: this.rowNode.data,
          node: this.rowNode,
          rowIndex: this.rowNode.rowIndex
        };
        rowStyleFuncResult = rowStyleFunc(params);
      }
      return Object.assign({}, rowStyle, rowStyleFuncResult);
    };
    RowCtrl2.prototype.onRowSelected = function(gui) {
      var _this = this;
      var selected = !!this.rowNode.isSelected();
      this.forEachGui(gui, function(gui2) {
        gui2.rowComp.addOrRemoveCssClass("ag-row-selected", selected);
        setAriaSelected(gui2.element, selected ? true : void 0);
        var ariaLabel = _this.createAriaLabel();
        setAriaLabel(gui2.element, ariaLabel == null ? "" : ariaLabel);
      });
    };
    RowCtrl2.prototype.createAriaLabel = function() {
      var selected = this.rowNode.isSelected();
      if (selected && this.beans.gridOptionsService.is("suppressRowDeselection")) {
        return void 0;
      }
      var translate = this.beans.localeService.getLocaleTextFunc();
      var label = translate(selected ? "ariaRowDeselect" : "ariaRowSelect", "Press SPACE to " + (selected ? "deselect" : "select") + " this row.");
      return label;
    };
    RowCtrl2.prototype.isUseAnimationFrameForCreate = function() {
      return this.useAnimationFrameForCreate;
    };
    RowCtrl2.prototype.addHoverFunctionality = function(eRow) {
      var _this = this;
      if (!this.active) {
        return;
      }
      this.addManagedListener(eRow, "mouseenter", function() {
        return _this.rowNode.onMouseEnter();
      });
      this.addManagedListener(eRow, "mouseleave", function() {
        return _this.rowNode.onMouseLeave();
      });
      this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function() {
        if (!_this.beans.gridOptionsService.is("suppressRowHoverHighlight")) {
          eRow.classList.add("ag-row-hover");
        }
      });
      this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function() {
        eRow.classList.remove("ag-row-hover");
      });
    };
    RowCtrl2.prototype.roundRowTopToBounds = function(rowTop) {
      var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();
      var range = gridBodyCon.getScrollFeature().getVScrollPosition();
      var minPixel = this.applyPaginationOffset(range.top, true) - 100;
      var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;
      return Math.min(Math.max(minPixel, rowTop), maxPixel);
    };
    RowCtrl2.prototype.getFrameworkOverrides = function() {
      return this.beans.frameworkOverrides;
    };
    RowCtrl2.prototype.forEachGui = function(gui, callback) {
      var list = gui ? [gui] : this.allRowGuis;
      list.forEach(callback);
    };
    RowCtrl2.prototype.onRowHeightChanged = function(gui) {
      if (this.rowNode.rowHeight == null) {
        return;
      }
      var rowHeight = this.rowNode.rowHeight;
      var defaultRowHeight = this.beans.environment.getDefaultRowHeight();
      var isHeightFromFunc = this.beans.gridOptionsService.isGetRowHeightFunction();
      var heightFromFunc = isHeightFromFunc ? this.beans.gridOptionsService.getRowHeightForNode(this.rowNode).height : void 0;
      var lineHeight = heightFromFunc ? Math.min(defaultRowHeight, heightFromFunc) - 2 + "px" : void 0;
      this.forEachGui(gui, function(gui2) {
        gui2.element.style.height = rowHeight + "px";
        if (lineHeight) {
          gui2.element.style.setProperty("--ag-line-height", lineHeight);
        }
      });
    };
    RowCtrl2.prototype.addEventListener = function(eventType, listener) {
      _super.prototype.addEventListener.call(this, eventType, listener);
    };
    RowCtrl2.prototype.removeEventListener = function(eventType, listener) {
      _super.prototype.removeEventListener.call(this, eventType, listener);
    };
    RowCtrl2.prototype.destroyFirstPass = function() {
      this.active = false;
      this.setupRemoveAnimation();
      var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);
      this.dispatchEvent(event);
      this.beans.eventService.dispatchEvent(event);
      _super.prototype.destroy.call(this);
    };
    RowCtrl2.prototype.setupRemoveAnimation = function() {
      if (this.isSticky()) {
        return;
      }
      var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;
      if (rowStillVisibleJustNotInViewport) {
        var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);
        this.setRowTop(rowTop);
      } else {
        this.allRowGuis.forEach(function(gui) {
          return gui.rowComp.addOrRemoveCssClass("ag-opacity-zero", true);
        });
      }
    };
    RowCtrl2.prototype.destroySecondPass = function() {
      this.allRowGuis.length = 0;
      var destroyCellCtrls = function(ctrls) {
        ctrls.list.forEach(function(c2) {
          return c2.destroy();
        });
        return { list: [], map: {} };
      };
      this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);
      this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);
      this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);
    };
    RowCtrl2.prototype.setFocusedClasses = function(gui) {
      var _this = this;
      this.forEachGui(gui, function(gui2) {
        gui2.rowComp.addOrRemoveCssClass("ag-row-focus", _this.rowFocused);
        gui2.rowComp.addOrRemoveCssClass("ag-row-no-focus", !_this.rowFocused);
      });
    };
    RowCtrl2.prototype.onCellFocusChanged = function() {
      var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);
      if (rowFocused !== this.rowFocused) {
        this.rowFocused = rowFocused;
        this.setFocusedClasses();
      }
      if (!rowFocused && this.editingRow) {
        this.stopEditing(false);
      }
    };
    RowCtrl2.prototype.onPaginationChanged = function() {
      var currentPage = this.beans.paginationProxy.getCurrentPage();
      if (this.paginationPage !== currentPage) {
        this.paginationPage = currentPage;
        this.onTopChanged();
      }
      this.refreshFirstAndLastRowStyles();
    };
    RowCtrl2.prototype.onTopChanged = function() {
      this.setRowTop(this.rowNode.rowTop);
    };
    RowCtrl2.prototype.onPaginationPixelOffsetChanged = function() {
      this.onTopChanged();
    };
    RowCtrl2.prototype.applyPaginationOffset = function(topPx, reverse) {
      if (reverse === void 0) {
        reverse = false;
      }
      if (this.rowNode.isRowPinned()) {
        return topPx;
      }
      var pixelOffset = this.beans.paginationProxy.getPixelOffset();
      var multiplier = reverse ? 1 : -1;
      return topPx + pixelOffset * multiplier;
    };
    RowCtrl2.prototype.setRowTop = function(pixels) {
      if (this.printLayout) {
        return;
      }
      if (exists(pixels)) {
        var afterPaginationPixels = this.applyPaginationOffset(pixels);
        var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);
        var topPx = afterScalingPixels + "px";
        this.setRowTopStyle(topPx);
      }
    };
    RowCtrl2.prototype.getInitialRowTop = function(rowContainerType) {
      var suppressRowTransform = this.beans.gridOptionsService.is("suppressRowTransform");
      return suppressRowTransform ? this.getInitialRowTopShared(rowContainerType) : void 0;
    };
    RowCtrl2.prototype.getInitialTransform = function(rowContainerType) {
      var suppressRowTransform = this.beans.gridOptionsService.is("suppressRowTransform");
      return suppressRowTransform ? void 0 : "translateY(" + this.getInitialRowTopShared(rowContainerType) + ")";
    };
    RowCtrl2.prototype.getInitialRowTopShared = function(rowContainerType) {
      if (this.printLayout) {
        return "";
      }
      var rowTop;
      if (this.isSticky()) {
        rowTop = this.rowNode.stickyRowTop;
      } else {
        var pixels = this.slideInAnimation[rowContainerType] ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;
        var afterPaginationPixels = this.applyPaginationOffset(pixels);
        rowTop = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);
      }
      return rowTop + "px";
    };
    RowCtrl2.prototype.setRowTopStyle = function(topPx) {
      var suppressRowTransform = this.beans.gridOptionsService.is("suppressRowTransform");
      this.allRowGuis.forEach(function(gui) {
        return suppressRowTransform ? gui.rowComp.setTop(topPx) : gui.rowComp.setTransform("translateY(" + topPx + ")");
      });
    };
    RowCtrl2.prototype.getRowNode = function() {
      return this.rowNode;
    };
    RowCtrl2.prototype.getCellCtrl = function(column) {
      var res = null;
      this.getAllCellCtrls().forEach(function(cellCtrl) {
        if (cellCtrl.getColumn() == column) {
          res = cellCtrl;
        }
      });
      if (res != null) {
        return res;
      }
      this.getAllCellCtrls().forEach(function(cellCtrl) {
        if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {
          res = cellCtrl;
        }
      });
      return res;
    };
    RowCtrl2.prototype.onRowIndexChanged = function() {
      if (this.rowNode.rowIndex != null) {
        this.onCellFocusChanged();
        this.updateRowIndexes();
        this.postProcessCss();
      }
    };
    RowCtrl2.prototype.updateRowIndexes = function(gui) {
      var rowIndexStr = this.rowNode.getRowIndexString();
      var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();
      var rowIsEven = this.rowNode.rowIndex % 2 === 0;
      var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;
      this.forEachGui(gui, function(c2) {
        c2.rowComp.setRowIndex(rowIndexStr);
        c2.rowComp.addOrRemoveCssClass("ag-row-even", rowIsEven);
        c2.rowComp.addOrRemoveCssClass("ag-row-odd", !rowIsEven);
        setAriaRowIndex(c2.element, ariaRowIndex);
      });
    };
    RowCtrl2.prototype.getPinnedLeftRowElement = function() {
      return this.leftGui ? this.leftGui.element : void 0;
    };
    RowCtrl2.prototype.getPinnedRightRowElement = function() {
      return this.rightGui ? this.rightGui.element : void 0;
    };
    RowCtrl2.prototype.getBodyRowElement = function() {
      return this.centerGui ? this.centerGui.element : void 0;
    };
    RowCtrl2.prototype.getFullWidthRowElement = function() {
      return this.fullWidthGui ? this.fullWidthGui.element : void 0;
    };
    RowCtrl2.DOM_DATA_KEY_ROW_CTRL = "renderedRow";
    return RowCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerEventsFeature.js
var __extends65 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate56 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read10 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var RowContainerEventsFeature = (
  /** @class */
  function(_super) {
    __extends65(RowContainerEventsFeature2, _super);
    function RowContainerEventsFeature2(element) {
      var _this = _super.call(this) || this;
      _this.element = element;
      return _this;
    }
    RowContainerEventsFeature2.prototype.postConstruct = function() {
      this.addMouseListeners();
      this.mockContextMenuForIPad();
      this.addKeyboardEvents();
    };
    RowContainerEventsFeature2.prototype.addKeyboardEvents = function() {
      var _this = this;
      var eventNames = ["keydown", "keypress"];
      eventNames.forEach(function(eventName) {
        var listener = _this.processKeyboardEvent.bind(_this, eventName);
        _this.addManagedListener(_this.element, eventName, listener);
      });
    };
    RowContainerEventsFeature2.prototype.addMouseListeners = function() {
      var _this = this;
      var mouseDownEvent = isEventSupported("touchstart") ? "touchstart" : "mousedown";
      var eventNames = ["dblclick", "contextmenu", "mouseover", "mouseout", "click", mouseDownEvent];
      eventNames.forEach(function(eventName) {
        var listener = _this.processMouseEvent.bind(_this, eventName);
        _this.addManagedListener(_this.element, eventName, listener);
      });
    };
    RowContainerEventsFeature2.prototype.processMouseEvent = function(eventName, mouseEvent) {
      if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) || isStopPropagationForAgGrid(mouseEvent)) {
        return;
      }
      var rowComp = this.getRowForEvent(mouseEvent);
      var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);
      if (eventName === "contextmenu") {
        this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);
      } else {
        if (cellCtrl) {
          cellCtrl.onMouseEvent(eventName, mouseEvent);
        }
        if (rowComp) {
          rowComp.onMouseEvent(eventName, mouseEvent);
        }
      }
    };
    RowContainerEventsFeature2.prototype.mockContextMenuForIPad = function() {
      var _this = this;
      if (!isIOSUserAgent()) {
        return;
      }
      var touchListener = new TouchListener(this.element);
      var longTapListener = function(event) {
        var rowComp = _this.getRowForEvent(event.touchEvent);
        var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);
        _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);
      };
      this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);
      this.addDestroyFunc(function() {
        return touchListener.destroy();
      });
    };
    RowContainerEventsFeature2.prototype.getRowForEvent = function(event) {
      var sourceElement = event.target;
      while (sourceElement) {
        var rowCon = this.gridOptionsService.getDomData(sourceElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);
        if (rowCon) {
          return rowCon;
        }
        sourceElement = sourceElement.parentElement;
      }
      return null;
    };
    RowContainerEventsFeature2.prototype.handleContextMenuMouseEvent = function(mouseEvent, touchEvent, rowComp, cellCtrl) {
      var rowNode = rowComp ? rowComp.getRowNode() : null;
      var column = cellCtrl ? cellCtrl.getColumn() : null;
      var value = null;
      if (column) {
        var event_1 = mouseEvent ? mouseEvent : touchEvent;
        cellCtrl.dispatchCellContextMenuEvent(event_1);
        value = this.valueService.getValue(column, rowNode);
      }
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();
      if (this.contextMenuFactory) {
        this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);
      }
    };
    RowContainerEventsFeature2.prototype.processKeyboardEvent = function(eventName, keyboardEvent) {
      var cellComp = getCtrlForEvent(this.gridOptionsService, keyboardEvent, CellCtrl.DOM_DATA_KEY_CELL_CTRL);
      var rowComp = getCtrlForEvent(this.gridOptionsService, keyboardEvent, RowCtrl.DOM_DATA_KEY_ROW_CTRL);
      if (keyboardEvent.defaultPrevented) {
        return;
      }
      if (cellComp) {
        this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);
      } else if (rowComp && rowComp.isFullWidth()) {
        this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);
      }
    };
    RowContainerEventsFeature2.prototype.processCellKeyboardEvent = function(cellCtrl, eventName, keyboardEvent) {
      var rowNode = cellCtrl.getRowNode();
      var column = cellCtrl.getColumn();
      var editing = cellCtrl.isEditing();
      var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, editing);
      if (gridProcessingAllowed) {
        switch (eventName) {
          case "keydown":
            var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);
            if (!wasScrollKey) {
              cellCtrl.onKeyDown(keyboardEvent);
            }
            this.doGridOperations(keyboardEvent, cellCtrl.isEditing());
            break;
          case "keypress":
            cellCtrl.onKeyPress(keyboardEvent);
            break;
        }
      }
      if (eventName === "keydown") {
        var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);
        this.eventService.dispatchEvent(cellKeyDownEvent);
      }
      if (eventName === "keypress") {
        var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);
        this.eventService.dispatchEvent(cellKeyPressEvent);
      }
    };
    RowContainerEventsFeature2.prototype.processFullWidthRowKeyboardEvent = function(rowComp, eventName, keyboardEvent) {
      var rowNode = rowComp.getRowNode();
      var focusedCell = this.focusService.getFocusedCell();
      var column = focusedCell && focusedCell.column;
      var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsService, keyboardEvent, rowNode, column, false);
      if (gridProcessingAllowed) {
        var key = keyboardEvent.key;
        if (eventName === "keydown") {
          switch (key) {
            case KeyCode.UP:
            case KeyCode.DOWN:
              rowComp.onKeyboardNavigate(keyboardEvent);
              break;
            case KeyCode.TAB:
              rowComp.onTabKeyDown(keyboardEvent);
            default:
          }
        }
      }
      if (eventName === "keydown") {
        var cellKeyDownEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_DOWN, keyboardEvent);
        this.eventService.dispatchEvent(cellKeyDownEvent);
      }
      if (eventName === "keypress") {
        var cellKeyPressEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_PRESS, keyboardEvent);
        this.eventService.dispatchEvent(cellKeyPressEvent);
      }
    };
    RowContainerEventsFeature2.prototype.doGridOperations = function(keyboardEvent, editing) {
      if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {
        return;
      }
      if (editing) {
        return;
      }
      if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {
        return;
      }
      var keyCode = normaliseQwertyAzerty(keyboardEvent);
      if (keyCode === KeyCode.A) {
        return this.onCtrlAndA(keyboardEvent);
      }
      if (keyCode === KeyCode.C) {
        return this.onCtrlAndC(keyboardEvent);
      }
      if (keyCode === KeyCode.V) {
        return this.onCtrlAndV();
      }
      if (keyCode === KeyCode.D) {
        return this.onCtrlAndD(keyboardEvent);
      }
      if (keyCode === KeyCode.Z) {
        return this.onCtrlAndZ(keyboardEvent);
      }
      if (keyCode === KeyCode.Y) {
        return this.onCtrlAndY();
      }
    };
    RowContainerEventsFeature2.prototype.onCtrlAndA = function(event) {
      var _a47 = this, pinnedRowModel = _a47.pinnedRowModel, paginationProxy = _a47.paginationProxy, rangeService = _a47.rangeService;
      if (rangeService && paginationProxy.isRowsToRender()) {
        var _b = __read10([
          pinnedRowModel.isEmpty("top"),
          pinnedRowModel.isEmpty("bottom")
        ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];
        var floatingStart = isEmptyPinnedTop ? null : "top";
        var floatingEnd = void 0;
        var rowEnd = void 0;
        if (isEmptyPinnedBottom) {
          floatingEnd = null;
          rowEnd = this.paginationProxy.getRowCount() - 1;
        } else {
          floatingEnd = "bottom";
          rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;
        }
        var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();
        if (missingOrEmpty(allDisplayedColumns)) {
          return;
        }
        rangeService.setCellRange({
          rowStartIndex: 0,
          rowStartPinned: floatingStart,
          rowEndIndex: rowEnd,
          rowEndPinned: floatingEnd,
          columnStart: allDisplayedColumns[0],
          columnEnd: last(allDisplayedColumns)
        });
      }
      event.preventDefault();
    };
    RowContainerEventsFeature2.prototype.onCtrlAndC = function(event) {
      if (!this.clipboardService || this.gridOptionsService.is("enableCellTextSelection")) {
        return;
      }
      this.clipboardService.copyToClipboard();
      event.preventDefault();
    };
    RowContainerEventsFeature2.prototype.onCtrlAndV = function() {
      if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsService.is("suppressClipboardPaste")) {
        this.clipboardService.pasteFromClipboard();
      }
    };
    RowContainerEventsFeature2.prototype.onCtrlAndD = function(event) {
      if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsService.is("suppressClipboardPaste")) {
        this.clipboardService.copyRangeDown();
      }
      event.preventDefault();
    };
    RowContainerEventsFeature2.prototype.onCtrlAndZ = function(event) {
      if (!this.gridOptionsService.is("undoRedoCellEditing")) {
        return;
      }
      event.preventDefault();
      if (event.shiftKey) {
        this.undoRedoService.redo();
      } else {
        this.undoRedoService.undo();
      }
    };
    RowContainerEventsFeature2.prototype.onCtrlAndY = function() {
      this.undoRedoService.redo();
    };
    __decorate56([
      Autowired("mouseEventService")
    ], RowContainerEventsFeature2.prototype, "mouseEventService", void 0);
    __decorate56([
      Autowired("valueService")
    ], RowContainerEventsFeature2.prototype, "valueService", void 0);
    __decorate56([
      Optional2("contextMenuFactory")
    ], RowContainerEventsFeature2.prototype, "contextMenuFactory", void 0);
    __decorate56([
      Autowired("ctrlsService")
    ], RowContainerEventsFeature2.prototype, "ctrlsService", void 0);
    __decorate56([
      Autowired("navigationService")
    ], RowContainerEventsFeature2.prototype, "navigationService", void 0);
    __decorate56([
      Autowired("focusService")
    ], RowContainerEventsFeature2.prototype, "focusService", void 0);
    __decorate56([
      Autowired("undoRedoService")
    ], RowContainerEventsFeature2.prototype, "undoRedoService", void 0);
    __decorate56([
      Autowired("columnModel")
    ], RowContainerEventsFeature2.prototype, "columnModel", void 0);
    __decorate56([
      Autowired("paginationProxy")
    ], RowContainerEventsFeature2.prototype, "paginationProxy", void 0);
    __decorate56([
      Autowired("pinnedRowModel")
    ], RowContainerEventsFeature2.prototype, "pinnedRowModel", void 0);
    __decorate56([
      Optional2("rangeService")
    ], RowContainerEventsFeature2.prototype, "rangeService", void 0);
    __decorate56([
      Optional2("clipboardService")
    ], RowContainerEventsFeature2.prototype, "clipboardService", void 0);
    __decorate56([
      PostConstruct
    ], RowContainerEventsFeature2.prototype, "postConstruct", null);
    return RowContainerEventsFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/viewportSizeFeature.js
var __extends66 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate57 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ViewportSizeFeature = (
  /** @class */
  function(_super) {
    __extends66(ViewportSizeFeature2, _super);
    function ViewportSizeFeature2(centerContainerCtrl) {
      var _this = _super.call(this) || this;
      _this.centerContainerCtrl = centerContainerCtrl;
      return _this;
    }
    ViewportSizeFeature2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function() {
        _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
        _this.listenForResize();
      });
      this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));
    };
    ViewportSizeFeature2.prototype.listenForResize = function() {
      var _this = this;
      var listener = function() {
        return _this.onCenterViewportResized();
      };
      this.centerContainerCtrl.registerViewportResizeListener(listener);
      this.gridBodyCtrl.registerBodyViewportResizeListener(listener);
    };
    ViewportSizeFeature2.prototype.onScrollbarWidthChanged = function() {
      this.checkViewportAndScrolls();
    };
    ViewportSizeFeature2.prototype.onCenterViewportResized = function() {
      if (this.centerContainerCtrl.isViewportVisible()) {
        this.checkViewportAndScrolls();
        var newWidth = this.centerContainerCtrl.getCenterWidth();
        if (newWidth !== this.centerWidth) {
          this.centerWidth = newWidth;
          this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });
        }
      } else {
        this.bodyHeight = 0;
      }
    };
    ViewportSizeFeature2.prototype.checkViewportAndScrolls = function() {
      this.updateScrollVisibleService();
      this.checkBodyHeight();
      this.onHorizontalViewportChanged();
      this.gridBodyCtrl.getScrollFeature().checkScrollLeft();
    };
    ViewportSizeFeature2.prototype.getBodyHeight = function() {
      return this.bodyHeight;
    };
    ViewportSizeFeature2.prototype.checkBodyHeight = function() {
      var eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();
      var bodyHeight = getInnerHeight(eBodyViewport);
      if (this.bodyHeight !== bodyHeight) {
        this.bodyHeight = bodyHeight;
        var event_1 = {
          type: Events.EVENT_BODY_HEIGHT_CHANGED
        };
        this.eventService.dispatchEvent(event_1);
      }
    };
    ViewportSizeFeature2.prototype.updateScrollVisibleService = function() {
      this.updateScrollVisibleServiceImpl();
      setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);
    };
    ViewportSizeFeature2.prototype.updateScrollVisibleServiceImpl = function() {
      var params = {
        horizontalScrollShowing: this.isHorizontalScrollShowing(),
        verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()
      };
      this.scrollVisibleService.setScrollsVisible(params);
      this.gridBodyCtrl.setVerticalScrollPaddingVisible(params.verticalScrollShowing);
    };
    ViewportSizeFeature2.prototype.isHorizontalScrollShowing = function() {
      var isAlwaysShowHorizontalScroll = this.gridOptionsService.is("alwaysShowHorizontalScroll");
      return isAlwaysShowHorizontalScroll || this.centerContainerCtrl.isViewportHScrollShowing();
    };
    ViewportSizeFeature2.prototype.onHorizontalViewportChanged = function() {
      var scrollWidth = this.centerContainerCtrl.getCenterWidth();
      var scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();
      this.columnModel.setViewportPosition(scrollWidth, scrollPosition);
    };
    __decorate57([
      Autowired("ctrlsService")
    ], ViewportSizeFeature2.prototype, "ctrlsService", void 0);
    __decorate57([
      Autowired("columnModel")
    ], ViewportSizeFeature2.prototype, "columnModel", void 0);
    __decorate57([
      Autowired("scrollVisibleService")
    ], ViewportSizeFeature2.prototype, "scrollVisibleService", void 0);
    __decorate57([
      PostConstruct
    ], ViewportSizeFeature2.prototype, "postConstruct", null);
    return ViewportSizeFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setPinnedLeftWidthFeature.js
var __extends67 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate58 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SetPinnedLeftWidthFeature = (
  /** @class */
  function(_super) {
    __extends67(SetPinnedLeftWidthFeature2, _super);
    function SetPinnedLeftWidthFeature2(element) {
      var _this = _super.call(this) || this;
      _this.element = element;
      return _this;
    }
    SetPinnedLeftWidthFeature2.prototype.postConstruct = function() {
      this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));
    };
    SetPinnedLeftWidthFeature2.prototype.onPinnedLeftWidthChanged = function() {
      var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();
      var displayed = leftWidth > 0;
      setDisplayed(this.element, displayed);
      setFixedWidth(this.element, leftWidth);
    };
    SetPinnedLeftWidthFeature2.prototype.getWidth = function() {
      return this.pinnedWidthService.getPinnedLeftWidth();
    };
    __decorate58([
      Autowired("pinnedWidthService")
    ], SetPinnedLeftWidthFeature2.prototype, "pinnedWidthService", void 0);
    __decorate58([
      PostConstruct
    ], SetPinnedLeftWidthFeature2.prototype, "postConstruct", null);
    return SetPinnedLeftWidthFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setPinnedRightWidthFeature.js
var __extends68 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate59 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SetPinnedRightWidthFeature = (
  /** @class */
  function(_super) {
    __extends68(SetPinnedRightWidthFeature2, _super);
    function SetPinnedRightWidthFeature2(element) {
      var _this = _super.call(this) || this;
      _this.element = element;
      return _this;
    }
    SetPinnedRightWidthFeature2.prototype.postConstruct = function() {
      this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));
    };
    SetPinnedRightWidthFeature2.prototype.onPinnedRightWidthChanged = function() {
      var rightWidth = this.pinnedWidthService.getPinnedRightWidth();
      var displayed = rightWidth > 0;
      setDisplayed(this.element, displayed);
      setFixedWidth(this.element, rightWidth);
    };
    SetPinnedRightWidthFeature2.prototype.getWidth = function() {
      return this.pinnedWidthService.getPinnedRightWidth();
    };
    __decorate59([
      Autowired("pinnedWidthService")
    ], SetPinnedRightWidthFeature2.prototype, "pinnedWidthService", void 0);
    __decorate59([
      PostConstruct
    ], SetPinnedRightWidthFeature2.prototype, "postConstruct", null);
    return SetPinnedRightWidthFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setHeightFeature.js
var __extends69 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate60 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SetHeightFeature = (
  /** @class */
  function(_super) {
    __extends69(SetHeightFeature2, _super);
    function SetHeightFeature2(eContainer, eWrapper) {
      var _this = _super.call(this) || this;
      _this.eContainer = eContainer;
      _this.eWrapper = eWrapper;
      return _this;
    }
    SetHeightFeature2.prototype.postConstruct = function() {
      this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));
    };
    SetHeightFeature2.prototype.onHeightChanged = function() {
      var height = this.maxDivHeightScaler.getUiContainerHeight();
      var heightString = height != null ? height + "px" : "";
      this.eContainer.style.height = heightString;
      if (this.eWrapper) {
        this.eWrapper.style.height = heightString;
      }
    };
    __decorate60([
      Autowired("rowContainerHeightService")
    ], SetHeightFeature2.prototype, "maxDivHeightScaler", void 0);
    __decorate60([
      PostConstruct
    ], SetHeightFeature2.prototype, "postConstruct", null);
    return SetHeightFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/dragListenerFeature.js
var __extends70 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate61 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DragListenerFeature = (
  /** @class */
  function(_super) {
    __extends70(DragListenerFeature2, _super);
    function DragListenerFeature2(eContainer) {
      var _this = _super.call(this) || this;
      _this.eContainer = eContainer;
      return _this;
    }
    DragListenerFeature2.prototype.postConstruct = function() {
      var _this = this;
      if (!this.gridOptionsService.isEnableRangeSelection() || // no range selection if no property
      missing(this.rangeService)) {
        return;
      }
      var params = {
        eElement: this.eContainer,
        onDragStart: this.rangeService.onDragStart.bind(this.rangeService),
        onDragStop: this.rangeService.onDragStop.bind(this.rangeService),
        onDragging: this.rangeService.onDragging.bind(this.rangeService)
      };
      this.dragService.addDragSource(params);
      this.addDestroyFunc(function() {
        return _this.dragService.removeDragSource(params);
      });
    };
    __decorate61([
      Optional2("rangeService")
    ], DragListenerFeature2.prototype, "rangeService", void 0);
    __decorate61([
      Autowired("dragService")
    ], DragListenerFeature2.prototype, "dragService", void 0);
    __decorate61([
      PostConstruct
    ], DragListenerFeature2.prototype, "postConstruct", null);
    return DragListenerFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/centerWidthFeature.js
var __extends71 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate62 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var CenterWidthFeature = (
  /** @class */
  function(_super) {
    __extends71(CenterWidthFeature2, _super);
    function CenterWidthFeature2(callback) {
      var _this = _super.call(this) || this;
      _this.callback = callback;
      return _this;
    }
    CenterWidthFeature2.prototype.postConstruct = function() {
      var listener = this.setWidth.bind(this);
      this.addManagedPropertyListener("domLayout", listener);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);
      this.setWidth();
    };
    CenterWidthFeature2.prototype.setWidth = function() {
      var columnModel = this.columnModel;
      var printLayout = this.gridOptionsService.isDomLayout("print");
      var centerWidth = columnModel.getBodyContainerWidth();
      var leftWidth = columnModel.getDisplayedColumnsLeftWidth();
      var rightWidth = columnModel.getDisplayedColumnsRightWidth();
      var totalWidth = printLayout ? centerWidth + leftWidth + rightWidth : centerWidth;
      this.callback(totalWidth);
    };
    __decorate62([
      Autowired("columnModel")
    ], CenterWidthFeature2.prototype, "columnModel", void 0);
    __decorate62([
      PostConstruct
    ], CenterWidthFeature2.prototype, "postConstruct", null);
    return CenterWidthFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerCtrl.js
var __extends72 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate63 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read11 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread8 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read11(arguments[i2]));
  return ar;
};
var RowContainerName;
(function(RowContainerName2) {
  RowContainerName2["LEFT"] = "left";
  RowContainerName2["RIGHT"] = "right";
  RowContainerName2["CENTER"] = "center";
  RowContainerName2["FULL_WIDTH"] = "fullWidth";
  RowContainerName2["TOP_LEFT"] = "topLeft";
  RowContainerName2["TOP_RIGHT"] = "topRight";
  RowContainerName2["TOP_CENTER"] = "topCenter";
  RowContainerName2["TOP_FULL_WIDTH"] = "topFullWidth";
  RowContainerName2["STICKY_TOP_LEFT"] = "stickyTopLeft";
  RowContainerName2["STICKY_TOP_RIGHT"] = "stickyTopRight";
  RowContainerName2["STICKY_TOP_CENTER"] = "stickyTopCenter";
  RowContainerName2["STICKY_TOP_FULL_WIDTH"] = "stickyTopFullWidth";
  RowContainerName2["BOTTOM_LEFT"] = "bottomLeft";
  RowContainerName2["BOTTOM_RIGHT"] = "bottomRight";
  RowContainerName2["BOTTOM_CENTER"] = "bottomCenter";
  RowContainerName2["BOTTOM_FULL_WIDTH"] = "bottomFullWidth";
})(RowContainerName || (RowContainerName = {}));
var RowContainerType;
(function(RowContainerType2) {
  RowContainerType2["LEFT"] = "left";
  RowContainerType2["RIGHT"] = "right";
  RowContainerType2["CENTER"] = "center";
  RowContainerType2["FULL_WIDTH"] = "fullWidth";
})(RowContainerType || (RowContainerType = {}));
function getRowContainerTypeForName(name) {
  switch (name) {
    case RowContainerName.CENTER:
    case RowContainerName.TOP_CENTER:
    case RowContainerName.STICKY_TOP_CENTER:
    case RowContainerName.BOTTOM_CENTER:
      return RowContainerType.CENTER;
    case RowContainerName.LEFT:
    case RowContainerName.TOP_LEFT:
    case RowContainerName.STICKY_TOP_LEFT:
    case RowContainerName.BOTTOM_LEFT:
      return RowContainerType.LEFT;
    case RowContainerName.RIGHT:
    case RowContainerName.TOP_RIGHT:
    case RowContainerName.STICKY_TOP_RIGHT:
    case RowContainerName.BOTTOM_RIGHT:
      return RowContainerType.RIGHT;
    case RowContainerName.FULL_WIDTH:
    case RowContainerName.TOP_FULL_WIDTH:
    case RowContainerName.STICKY_TOP_FULL_WIDTH:
    case RowContainerName.BOTTOM_FULL_WIDTH:
      return RowContainerType.FULL_WIDTH;
    default:
      throw Error("Invalid Row Container Type");
  }
}
var ContainerCssClasses = convertToMap([
  [RowContainerName.CENTER, "ag-center-cols-container"],
  [RowContainerName.LEFT, "ag-pinned-left-cols-container"],
  [RowContainerName.RIGHT, "ag-pinned-right-cols-container"],
  [RowContainerName.FULL_WIDTH, "ag-full-width-container"],
  [RowContainerName.TOP_CENTER, "ag-floating-top-container"],
  [RowContainerName.TOP_LEFT, "ag-pinned-left-floating-top"],
  [RowContainerName.TOP_RIGHT, "ag-pinned-right-floating-top"],
  [RowContainerName.TOP_FULL_WIDTH, "ag-floating-top-full-width-container"],
  [RowContainerName.STICKY_TOP_CENTER, "ag-sticky-top-container"],
  [RowContainerName.STICKY_TOP_LEFT, "ag-pinned-left-sticky-top"],
  [RowContainerName.STICKY_TOP_RIGHT, "ag-pinned-right-sticky-top"],
  [RowContainerName.STICKY_TOP_FULL_WIDTH, "ag-sticky-top-full-width-container"],
  [RowContainerName.BOTTOM_CENTER, "ag-floating-bottom-container"],
  [RowContainerName.BOTTOM_LEFT, "ag-pinned-left-floating-bottom"],
  [RowContainerName.BOTTOM_RIGHT, "ag-pinned-right-floating-bottom"],
  [RowContainerName.BOTTOM_FULL_WIDTH, "ag-floating-bottom-full-width-container"]
]);
var ViewportCssClasses = convertToMap([
  [RowContainerName.CENTER, "ag-center-cols-viewport"],
  [RowContainerName.TOP_CENTER, "ag-floating-top-viewport"],
  [RowContainerName.STICKY_TOP_CENTER, "ag-sticky-top-viewport"],
  [RowContainerName.BOTTOM_CENTER, "ag-floating-bottom-viewport"]
]);
var WrapperCssClasses = convertToMap([
  [RowContainerName.CENTER, "ag-center-cols-clipper"]
]);
var RowContainerCtrl = (
  /** @class */
  function(_super) {
    __extends72(RowContainerCtrl2, _super);
    function RowContainerCtrl2(name) {
      var _this = _super.call(this) || this;
      _this.visible = true;
      _this.name = name;
      return _this;
    }
    RowContainerCtrl2.getRowContainerCssClasses = function(name) {
      var containerClass = ContainerCssClasses.get(name);
      var viewportClass = ViewportCssClasses.get(name);
      var wrapperClass = WrapperCssClasses.get(name);
      return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };
    };
    RowContainerCtrl2.getPinned = function(name) {
      switch (name) {
        case RowContainerName.BOTTOM_LEFT:
        case RowContainerName.TOP_LEFT:
        case RowContainerName.STICKY_TOP_LEFT:
        case RowContainerName.LEFT:
          return "left";
        case RowContainerName.BOTTOM_RIGHT:
        case RowContainerName.TOP_RIGHT:
        case RowContainerName.STICKY_TOP_RIGHT:
        case RowContainerName.RIGHT:
          return "right";
        default:
          return null;
      }
    };
    RowContainerCtrl2.prototype.postConstruct = function() {
      var _this = this;
      this.enableRtl = this.gridOptionsService.is("enableRtl");
      this.embedFullWidthRows = this.gridOptionsService.is("embedFullWidthRows");
      this.forContainers([RowContainerName.CENTER], function() {
        return _this.viewportSizeFeature = _this.createManagedBean(new ViewportSizeFeature(_this));
      });
    };
    RowContainerCtrl2.prototype.registerWithCtrlsService = function() {
      switch (this.name) {
        case RowContainerName.CENTER:
          this.ctrlsService.registerCenterRowContainerCtrl(this);
          break;
        case RowContainerName.LEFT:
          this.ctrlsService.registerLeftRowContainerCtrl(this);
          break;
        case RowContainerName.RIGHT:
          this.ctrlsService.registerRightRowContainerCtrl(this);
          break;
        case RowContainerName.TOP_CENTER:
          this.ctrlsService.registerTopCenterRowContainerCtrl(this);
          break;
        case RowContainerName.TOP_LEFT:
          this.ctrlsService.registerTopLeftRowContainerCon(this);
          break;
        case RowContainerName.TOP_RIGHT:
          this.ctrlsService.registerTopRightRowContainerCtrl(this);
          break;
        case RowContainerName.STICKY_TOP_CENTER:
          this.ctrlsService.registerStickyTopCenterRowContainerCtrl(this);
          break;
        case RowContainerName.STICKY_TOP_LEFT:
          this.ctrlsService.registerStickyTopLeftRowContainerCon(this);
          break;
        case RowContainerName.STICKY_TOP_RIGHT:
          this.ctrlsService.registerStickyTopRightRowContainerCtrl(this);
          break;
        case RowContainerName.BOTTOM_CENTER:
          this.ctrlsService.registerBottomCenterRowContainerCtrl(this);
          break;
        case RowContainerName.BOTTOM_LEFT:
          this.ctrlsService.registerBottomLeftRowContainerCtrl(this);
          break;
        case RowContainerName.BOTTOM_RIGHT:
          this.ctrlsService.registerBottomRightRowContainerCtrl(this);
          break;
      }
    };
    RowContainerCtrl2.prototype.forContainers = function(names, callback) {
      if (names.indexOf(this.name) >= 0) {
        callback();
      }
    };
    RowContainerCtrl2.prototype.getContainerElement = function() {
      return this.eContainer;
    };
    RowContainerCtrl2.prototype.getViewportSizeFeature = function() {
      return this.viewportSizeFeature;
    };
    RowContainerCtrl2.prototype.setComp = function(view, eContainer, eViewport, eWrapper) {
      var _this = this;
      this.comp = view;
      this.eContainer = eContainer;
      this.eViewport = eViewport;
      this.eWrapper = eWrapper;
      this.createManagedBean(new RowContainerEventsFeature(this.eContainer));
      this.addPreventScrollWhileDragging();
      this.listenOnDomOrder();
      this.stopHScrollOnPinnedRows();
      var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];
      var allStickyTopNoFW = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT];
      var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];
      var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];
      var allNoFW = __spread8(allTopNoFW, allBottomNoFW, allMiddleNoFW, allStickyTopNoFW);
      var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];
      var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER];
      var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT, RowContainerName.STICKY_TOP_LEFT];
      var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT, RowContainerName.STICKY_TOP_RIGHT];
      this.forContainers(allLeft, function() {
        _this.pinnedWidthFeature = _this.createManagedBean(new SetPinnedLeftWidthFeature(_this.eContainer));
        _this.addManagedListener(_this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, function() {
          return _this.onPinnedWidthChanged();
        });
      });
      this.forContainers(allRight, function() {
        _this.pinnedWidthFeature = _this.createManagedBean(new SetPinnedRightWidthFeature(_this.eContainer));
        _this.addManagedListener(_this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, function() {
          return _this.onPinnedWidthChanged();
        });
      });
      this.forContainers(allMiddle, function() {
        return _this.createManagedBean(new SetHeightFeature(_this.eContainer, _this.eWrapper));
      });
      this.forContainers(allNoFW, function() {
        return _this.createManagedBean(new DragListenerFeature(_this.eContainer));
      });
      this.forContainers(allCenter, function() {
        return _this.createManagedBean(new CenterWidthFeature(function(width) {
          return _this.comp.setContainerWidth(width + "px");
        }));
      });
      if (isInvisibleScrollbar()) {
        this.forContainers([RowContainerName.CENTER], function() {
          var pinnedWidthChangedEvent = _this.enableRtl ? Events.EVENT_LEFT_PINNED_WIDTH_CHANGED : Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED;
          _this.addManagedListener(_this.eventService, pinnedWidthChangedEvent, function() {
            return _this.refreshPaddingForFakeScrollbar();
          });
        });
        this.refreshPaddingForFakeScrollbar();
      }
      this.addListeners();
      this.registerWithCtrlsService();
    };
    RowContainerCtrl2.prototype.refreshPaddingForFakeScrollbar = function() {
      var _a47 = this, enableRtl = _a47.enableRtl, columnModel = _a47.columnModel, name = _a47.name, eWrapper = _a47.eWrapper, eContainer = _a47.eContainer;
      var sideToCheck = enableRtl ? RowContainerName.LEFT : RowContainerName.RIGHT;
      this.forContainers([RowContainerName.CENTER, sideToCheck], function() {
        var pinnedWidth = columnModel.getContainerWidth(sideToCheck);
        var marginSide = enableRtl ? "marginLeft" : "marginRight";
        if (name === RowContainerName.CENTER) {
          eWrapper.style[marginSide] = pinnedWidth ? "0px" : "16px";
        } else {
          eContainer.style[marginSide] = pinnedWidth ? "16px" : "0px";
        }
      });
    };
    RowContainerCtrl2.prototype.addListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, function() {
        return _this.onScrollVisibilityChanged();
      });
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function() {
        return _this.onDisplayedColumnsChanged();
      });
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function() {
        return _this.onDisplayedColumnsWidthChanged();
      });
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_ROWS_CHANGED, function() {
        return _this.onDisplayedRowsChanged();
      });
      this.onScrollVisibilityChanged();
      this.onDisplayedColumnsChanged();
      this.onDisplayedColumnsWidthChanged();
      this.onDisplayedRowsChanged();
    };
    RowContainerCtrl2.prototype.listenOnDomOrder = function() {
      var _this = this;
      var allStickyContainers = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT, RowContainerName.STICKY_TOP_FULL_WIDTH];
      var isStickContainer = allStickyContainers.indexOf(this.name) >= 0;
      if (isStickContainer) {
        this.comp.setDomOrder(true);
        return;
      }
      var listener = function() {
        var isEnsureDomOrder = _this.gridOptionsService.is("ensureDomOrder");
        var isPrintLayout = _this.gridOptionsService.isDomLayout("print");
        _this.comp.setDomOrder(isEnsureDomOrder || isPrintLayout);
      };
      this.addManagedPropertyListener("domLayout", listener);
      listener();
    };
    RowContainerCtrl2.prototype.stopHScrollOnPinnedRows = function() {
      var _this = this;
      this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER], function() {
        var resetScrollLeft = function() {
          return _this.eViewport.scrollLeft = 0;
        };
        _this.addManagedListener(_this.eViewport, "scroll", resetScrollLeft);
      });
    };
    RowContainerCtrl2.prototype.onDisplayedColumnsChanged = function() {
      var _this = this;
      this.forContainers([RowContainerName.CENTER], function() {
        return _this.onHorizontalViewportChanged();
      });
    };
    RowContainerCtrl2.prototype.onDisplayedColumnsWidthChanged = function() {
      var _this = this;
      this.forContainers([RowContainerName.CENTER], function() {
        return _this.onHorizontalViewportChanged();
      });
    };
    RowContainerCtrl2.prototype.onScrollVisibilityChanged = function() {
      if (this.name !== RowContainerName.CENTER) {
        return;
      }
      var visible = this.scrollVisibleService.isHorizontalScrollShowing();
      var scrollbarWidth = visible ? this.gridOptionsService.getScrollbarWidth() || 0 : 0;
      var height = scrollbarWidth == 0 ? "100%" : "calc(100% + " + scrollbarWidth + "px)";
      this.comp.setViewportHeight(height);
    };
    RowContainerCtrl2.prototype.addPreventScrollWhileDragging = function() {
      var _this = this;
      var preventScroll = function(e2) {
        if (_this.dragService.isDragging()) {
          if (e2.cancelable) {
            e2.preventDefault();
          }
        }
      };
      this.eContainer.addEventListener("touchmove", preventScroll, { passive: false });
      this.addDestroyFunc(function() {
        return _this.eContainer.removeEventListener("touchmove", preventScroll);
      });
    };
    RowContainerCtrl2.prototype.onHorizontalViewportChanged = function() {
      var scrollWidth = this.getCenterWidth();
      var scrollPosition = this.getCenterViewportScrollLeft();
      this.columnModel.setViewportPosition(scrollWidth, scrollPosition);
    };
    RowContainerCtrl2.prototype.getCenterWidth = function() {
      return getInnerWidth(this.eViewport);
    };
    RowContainerCtrl2.prototype.getCenterViewportScrollLeft = function() {
      return getScrollLeft(this.eViewport, this.enableRtl);
    };
    RowContainerCtrl2.prototype.registerViewportResizeListener = function(listener) {
      var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);
      this.addDestroyFunc(function() {
        return unsubscribeFromResize();
      });
    };
    RowContainerCtrl2.prototype.isViewportVisible = function() {
      return isVisible(this.eViewport);
    };
    RowContainerCtrl2.prototype.isViewportHScrollShowing = function() {
      return isHorizontalScrollShowing(this.eViewport);
    };
    RowContainerCtrl2.prototype.getViewportScrollLeft = function() {
      return getScrollLeft(this.eViewport, this.enableRtl);
    };
    RowContainerCtrl2.prototype.isHorizontalScrollShowing = function() {
      var isAlwaysShowHorizontalScroll = this.gridOptionsService.is("alwaysShowHorizontalScroll");
      return isAlwaysShowHorizontalScroll || isHorizontalScrollShowing(this.eViewport);
    };
    RowContainerCtrl2.prototype.getViewportElement = function() {
      return this.eViewport;
    };
    RowContainerCtrl2.prototype.setContainerTranslateX = function(amount) {
      this.eContainer.style.transform = "translateX(" + amount + "px)";
    };
    RowContainerCtrl2.prototype.getHScrollPosition = function() {
      var res = {
        left: this.eViewport.scrollLeft,
        right: this.eViewport.scrollLeft + this.eViewport.offsetWidth
      };
      return res;
    };
    RowContainerCtrl2.prototype.setCenterViewportScrollLeft = function(value) {
      setScrollLeft(this.eViewport, value, this.enableRtl);
    };
    RowContainerCtrl2.prototype.isContainerVisible = function() {
      var pinned = RowContainerCtrl2.getPinned(this.name);
      return !pinned || !!this.pinnedWidthFeature && this.pinnedWidthFeature.getWidth() > 0;
    };
    RowContainerCtrl2.prototype.onPinnedWidthChanged = function() {
      var visible = this.isContainerVisible();
      if (this.visible != visible) {
        this.visible = visible;
        this.onDisplayedRowsChanged();
      }
      if (isInvisibleScrollbar()) {
        this.refreshPaddingForFakeScrollbar();
      }
    };
    RowContainerCtrl2.prototype.onDisplayedRowsChanged = function() {
      var _this = this;
      var fullWithContainer = this.name === RowContainerName.TOP_FULL_WIDTH || this.name === RowContainerName.STICKY_TOP_FULL_WIDTH || this.name === RowContainerName.BOTTOM_FULL_WIDTH || this.name === RowContainerName.FULL_WIDTH;
      var doesRowMatch = function(rowCtrl) {
        var fullWidthRow = rowCtrl.isFullWidth();
        var printLayout = _this.gridOptionsService.isDomLayout("print");
        var embedFW = _this.embedFullWidthRows || printLayout;
        var match = fullWithContainer ? !embedFW && fullWidthRow : embedFW || !fullWidthRow;
        return match;
      };
      var allRowsRegardlessOfFullWidth = this.visible ? this.getRowCtrls() : [];
      var rowsThisContainer = allRowsRegardlessOfFullWidth.filter(doesRowMatch);
      this.comp.setRowCtrls(rowsThisContainer);
    };
    RowContainerCtrl2.prototype.getRowCtrls = function() {
      switch (this.name) {
        case RowContainerName.TOP_CENTER:
        case RowContainerName.TOP_LEFT:
        case RowContainerName.TOP_RIGHT:
        case RowContainerName.TOP_FULL_WIDTH:
          return this.rowRenderer.getTopRowCtrls();
        case RowContainerName.STICKY_TOP_CENTER:
        case RowContainerName.STICKY_TOP_LEFT:
        case RowContainerName.STICKY_TOP_RIGHT:
        case RowContainerName.STICKY_TOP_FULL_WIDTH:
          return this.rowRenderer.getStickyTopRowCtrls();
        case RowContainerName.BOTTOM_CENTER:
        case RowContainerName.BOTTOM_LEFT:
        case RowContainerName.BOTTOM_RIGHT:
        case RowContainerName.BOTTOM_FULL_WIDTH:
          return this.rowRenderer.getBottomRowCtrls();
        default:
          return this.rowRenderer.getRowCtrls();
      }
    };
    __decorate63([
      Autowired("scrollVisibleService")
    ], RowContainerCtrl2.prototype, "scrollVisibleService", void 0);
    __decorate63([
      Autowired("dragService")
    ], RowContainerCtrl2.prototype, "dragService", void 0);
    __decorate63([
      Autowired("ctrlsService")
    ], RowContainerCtrl2.prototype, "ctrlsService", void 0);
    __decorate63([
      Autowired("columnModel")
    ], RowContainerCtrl2.prototype, "columnModel", void 0);
    __decorate63([
      Autowired("resizeObserverService")
    ], RowContainerCtrl2.prototype, "resizeObserverService", void 0);
    __decorate63([
      Autowired("rowRenderer")
    ], RowContainerCtrl2.prototype, "rowRenderer", void 0);
    __decorate63([
      PostConstruct
    ], RowContainerCtrl2.prototype, "postConstruct", null);
    return RowContainerCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyComp.js
var __extends73 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate64 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GRID_BODY_TEMPLATE = (
  /* html */
  '<div class="ag-root ag-unselectable" role="treegrid">\n        <ag-header-root ref="gridHeader"></ag-header-root>\n        <div class="ag-floating-top" ref="eTop" role="presentation">\n            <ag-row-container ref="topLeftContainer" name="' + RowContainerName.TOP_LEFT + '"></ag-row-container>\n            <ag-row-container ref="topCenterContainer" name="' + RowContainerName.TOP_CENTER + '"></ag-row-container>\n            <ag-row-container ref="topRightContainer" name="' + RowContainerName.TOP_RIGHT + '"></ag-row-container>\n            <ag-row-container ref="topFullWidthContainer" name="' + RowContainerName.TOP_FULL_WIDTH + '"></ag-row-container>\n        </div>\n        <div class="ag-body" ref="eBody" role="presentation">\n            <div class="ag-body-clipper" ref="eBodyClipper" role="presentation">\n                <div class="ag-body-viewport" ref="eBodyViewport" role="presentation">\n                    <ag-row-container ref="leftContainer" name="' + RowContainerName.LEFT + '"></ag-row-container>\n                    <ag-row-container ref="centerContainer" name="' + RowContainerName.CENTER + '"></ag-row-container>\n                    <ag-row-container ref="rightContainer" name="' + RowContainerName.RIGHT + '"></ag-row-container>\n                    <ag-row-container ref="fullWidthContainer" name="' + RowContainerName.FULL_WIDTH + '"></ag-row-container>\n                </div>\n            </div>\n            <ag-fake-vertical-scroll></ag-fake-vertical-scroll>\n        </div>\n        <div class="ag-sticky-top" ref="eStickyTop" role="presentation">\n            <ag-row-container ref="stickyTopLeftContainer" name="' + RowContainerName.STICKY_TOP_LEFT + '"></ag-row-container>\n            <ag-row-container ref="stickyTopCenterContainer" name="' + RowContainerName.STICKY_TOP_CENTER + '"></ag-row-container>\n            <ag-row-container ref="stickyTopRightContainer" name="' + RowContainerName.STICKY_TOP_RIGHT + '"></ag-row-container>\n            <ag-row-container ref="stickyTopFullWidthContainer" name="' + RowContainerName.STICKY_TOP_FULL_WIDTH + '"></ag-row-container>\n        </div>\n        <div class="ag-floating-bottom" ref="eBottom" role="presentation">\n            <ag-row-container ref="bottomLeftContainer" name="' + RowContainerName.BOTTOM_LEFT + '"></ag-row-container>\n            <ag-row-container ref="bottomCenterContainer" name="' + RowContainerName.BOTTOM_CENTER + '"></ag-row-container>\n            <ag-row-container ref="bottomRightContainer" name="' + RowContainerName.BOTTOM_RIGHT + '"></ag-row-container>\n            <ag-row-container ref="bottomFullWidthContainer" name="' + RowContainerName.BOTTOM_FULL_WIDTH + '"></ag-row-container>\n        </div>\n        <ag-fake-horizontal-scroll></ag-fake-horizontal-scroll>\n        <ag-overlay-wrapper></ag-overlay-wrapper>\n    </div>'
);
var GridBodyComp = (
  /** @class */
  function(_super) {
    __extends73(GridBodyComp2, _super);
    function GridBodyComp2() {
      return _super.call(this, GRID_BODY_TEMPLATE) || this;
    }
    GridBodyComp2.prototype.init = function() {
      var _this = this;
      var setHeight = function(height, element) {
        var heightString = height + "px";
        element.style.minHeight = heightString;
        element.style.height = heightString;
      };
      var compProxy = {
        setRowAnimationCssOnBodyViewport: function(cssClass, animate2) {
          return _this.setRowAnimationCssOnBodyViewport(cssClass, animate2);
        },
        setColumnCount: function(count) {
          return setAriaColCount(_this.getGui(), count);
        },
        setRowCount: function(count) {
          return setAriaRowCount(_this.getGui(), count);
        },
        setTopHeight: function(height) {
          return setHeight(height, _this.eTop);
        },
        setBottomHeight: function(height) {
          return setHeight(height, _this.eBottom);
        },
        setTopDisplay: function(display) {
          return _this.eTop.style.display = display;
        },
        setBottomDisplay: function(display) {
          return _this.eBottom.style.display = display;
        },
        setStickyTopHeight: function(height) {
          return _this.eStickyTop.style.height = height;
        },
        setStickyTopTop: function(top) {
          return _this.eStickyTop.style.top = top;
        },
        setStickyTopWidth: function(width) {
          return _this.eStickyTop.style.width = width;
        },
        setColumnMovingCss: function(cssClass, flag) {
          return _this.addOrRemoveCssClass(CSS_CLASS_COLUMN_MOVING, flag);
        },
        updateLayoutClasses: function(cssClass, params) {
          var classLists = [
            _this.eBodyViewport.classList,
            _this.eBodyClipper.classList,
            _this.eBody.classList
          ];
          classLists.forEach(function(classList) {
            classList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);
            classList.toggle(LayoutCssClasses.NORMAL, params.normal);
            classList.toggle(LayoutCssClasses.PRINT, params.print);
          });
          _this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);
          _this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);
          _this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);
        },
        setAlwaysVerticalScrollClass: function(cssClass, on2) {
          return _this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on2);
        },
        registerBodyViewportResizeListener: function(listener) {
          var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);
          _this.addDestroyFunc(function() {
            return unsubscribeFromResize();
          });
        },
        setPinnedTopBottomOverflowY: function(overflow) {
          return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow;
        },
        setCellSelectableCss: function(cssClass, selectable) {
          [_this.eTop, _this.eBodyViewport, _this.eBottom].forEach(function(ct2) {
            return ct2.classList.toggle(CSS_CLASS_CELL_SELECTABLE, selectable);
          });
        },
        setBodyViewportWidth: function(width) {
          return _this.eBodyViewport.style.width = width;
        }
      };
      this.ctrl = this.createManagedBean(new GridBodyCtrl());
      this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom, this.eStickyTop);
      if (this.rangeService || this.gridOptionsService.get("rowSelection") === "multiple") {
        setAriaMultiSelectable(this.getGui(), true);
      }
    };
    GridBodyComp2.prototype.setRowAnimationCssOnBodyViewport = function(cssClass, animateRows) {
      var bodyViewportClassList = this.eBodyViewport.classList;
      bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_ON, animateRows);
      bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_OFF, !animateRows);
    };
    GridBodyComp2.prototype.getFloatingTopBottom = function() {
      return [this.eTop, this.eBottom];
    };
    __decorate64([
      Autowired("resizeObserverService")
    ], GridBodyComp2.prototype, "resizeObserverService", void 0);
    __decorate64([
      Optional2("rangeService")
    ], GridBodyComp2.prototype, "rangeService", void 0);
    __decorate64([
      RefSelector("eBodyViewport")
    ], GridBodyComp2.prototype, "eBodyViewport", void 0);
    __decorate64([
      RefSelector("eStickyTop")
    ], GridBodyComp2.prototype, "eStickyTop", void 0);
    __decorate64([
      RefSelector("eTop")
    ], GridBodyComp2.prototype, "eTop", void 0);
    __decorate64([
      RefSelector("eBottom")
    ], GridBodyComp2.prototype, "eBottom", void 0);
    __decorate64([
      RefSelector("gridHeader")
    ], GridBodyComp2.prototype, "headerRootComp", void 0);
    __decorate64([
      RefSelector("eBodyClipper")
    ], GridBodyComp2.prototype, "eBodyClipper", void 0);
    __decorate64([
      RefSelector("eBody")
    ], GridBodyComp2.prototype, "eBody", void 0);
    __decorate64([
      PostConstruct
    ], GridBodyComp2.prototype, "init", null);
    return GridBodyComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/scrollVisibleService.js
var __extends74 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate65 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ScrollVisibleService = (
  /** @class */
  function(_super) {
    __extends74(ScrollVisibleService2, _super);
    function ScrollVisibleService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ScrollVisibleService2.prototype.postConstruct = function() {
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));
    };
    ScrollVisibleService2.prototype.onDisplayedColumnsChanged = function() {
      this.update();
    };
    ScrollVisibleService2.prototype.onDisplayedColumnsWidthChanged = function() {
      this.update();
    };
    ScrollVisibleService2.prototype.update = function() {
      this.updateImpl();
      setTimeout(this.updateImpl.bind(this), 500);
    };
    ScrollVisibleService2.prototype.updateImpl = function() {
      var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();
      if (!centerRowCtrl) {
        return;
      }
      var params = {
        horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),
        verticalScrollShowing: this.isVerticalScrollShowing()
      };
      this.setScrollsVisible(params);
    };
    ScrollVisibleService2.prototype.setScrollsVisible = function(params) {
      var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing || this.verticalScrollShowing !== params.verticalScrollShowing;
      if (atLeastOneDifferent) {
        this.horizontalScrollShowing = params.horizontalScrollShowing;
        this.verticalScrollShowing = params.verticalScrollShowing;
        var event_1 = {
          type: Events.EVENT_SCROLL_VISIBILITY_CHANGED
        };
        this.eventService.dispatchEvent(event_1);
      }
    };
    ScrollVisibleService2.prototype.isHorizontalScrollShowing = function() {
      return this.horizontalScrollShowing;
    };
    ScrollVisibleService2.prototype.isVerticalScrollShowing = function() {
      return this.verticalScrollShowing;
    };
    __decorate65([
      Autowired("ctrlsService")
    ], ScrollVisibleService2.prototype, "ctrlsService", void 0);
    __decorate65([
      PostConstruct
    ], ScrollVisibleService2.prototype, "postConstruct", null);
    ScrollVisibleService2 = __decorate65([
      Bean("scrollVisibleService")
    ], ScrollVisibleService2);
    return ScrollVisibleService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/mouseEventService.js
var __extends75 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate66 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var MouseEventService = (
  /** @class */
  function(_super) {
    __extends75(MouseEventService2, _super);
    function MouseEventService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();
      return _this;
    }
    MouseEventService_1 = MouseEventService2;
    MouseEventService2.prototype.stampTopLevelGridCompWithGridInstance = function(eGridDiv) {
      eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;
    };
    MouseEventService2.prototype.getRenderedCellForEvent = function(event) {
      return getCtrlForEvent(this.gridOptionsService, event, CellCtrl.DOM_DATA_KEY_CELL_CTRL);
    };
    MouseEventService2.prototype.isEventFromThisGrid = function(event) {
      var res = this.isElementInThisGrid(event.target);
      return res;
    };
    MouseEventService2.prototype.isElementInThisGrid = function(element) {
      var pointer = element;
      while (pointer) {
        var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];
        if (exists(instanceId)) {
          var eventFromThisGrid = instanceId === this.gridInstanceId;
          return eventFromThisGrid;
        }
        pointer = pointer.parentElement;
      }
      return false;
    };
    MouseEventService2.prototype.getCellPositionForEvent = function(event) {
      var cellComp = this.getRenderedCellForEvent(event);
      return cellComp ? cellComp.getCellPosition() : null;
    };
    MouseEventService2.prototype.getNormalisedPosition = function(event) {
      var gridPanelHasScrolls = this.gridOptionsService.isDomLayout("normal");
      var e2 = event;
      var x2;
      var y2;
      if (e2.clientX != null || e2.clientY != null) {
        x2 = e2.clientX;
        y2 = e2.clientY;
      } else {
        x2 = e2.x;
        y2 = e2.y;
      }
      if (gridPanelHasScrolls) {
        var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
        var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();
        var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();
        x2 += hRange.left;
        y2 += vRange.top;
      }
      return { x: x2, y: y2 };
    };
    var MouseEventService_1;
    MouseEventService2.gridInstanceSequence = new NumberSequence();
    MouseEventService2.GRID_DOM_KEY = "__ag_grid_instance";
    __decorate66([
      Autowired("ctrlsService")
    ], MouseEventService2.prototype, "ctrlsService", void 0);
    MouseEventService2 = MouseEventService_1 = __decorate66([
      Bean("mouseEventService")
    ], MouseEventService2);
    return MouseEventService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/navigationService.js
var __extends76 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign15 = function() {
  __assign15 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign15.apply(this, arguments);
};
var __decorate67 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var NavigationService = (
  /** @class */
  function(_super) {
    __extends76(NavigationService2, _super);
    function NavigationService2() {
      var _this = _super.call(this) || this;
      _this.onPageDown = throttle(_this.onPageDown, 100);
      _this.onPageUp = throttle(_this.onPageUp, 100);
      return _this;
    }
    NavigationService2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        _this.gridBodyCon = p2.gridBodyCtrl;
      });
    };
    NavigationService2.prototype.handlePageScrollingKey = function(event) {
      var key = event.key;
      var alt = event.altKey;
      var ctrl = event.ctrlKey || event.metaKey;
      var rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;
      var currentCell = this.mouseEventService.getCellPositionForEvent(event);
      if (!currentCell) {
        return false;
      }
      var processed = false;
      switch (key) {
        case KeyCode.PAGE_HOME:
        case KeyCode.PAGE_END:
          if (!ctrl && !alt) {
            this.onHomeOrEndKey(key);
            processed = true;
          }
          break;
        case KeyCode.LEFT:
        case KeyCode.RIGHT:
        case KeyCode.UP:
        case KeyCode.DOWN:
          if (ctrl && !alt && !rangeServiceShouldHandleShift) {
            this.onCtrlUpDownLeftRight(key, currentCell);
            processed = true;
          }
          break;
        case KeyCode.PAGE_DOWN:
          if (!ctrl && !alt) {
            this.onPageDown(currentCell);
            processed = true;
          }
          break;
        case KeyCode.PAGE_UP:
          if (!ctrl && !alt) {
            this.onPageUp(currentCell);
            processed = true;
          }
          break;
      }
      if (processed) {
        event.preventDefault();
      }
      return processed;
    };
    NavigationService2.prototype.navigateTo = function(navigateParams) {
      var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;
      if (exists(scrollColumn) && !scrollColumn.isPinned()) {
        this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);
      }
      if (exists(scrollIndex)) {
        this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);
      }
      if (!navigateParams.isAsync) {
        this.gridBodyCon.getScrollFeature().ensureIndexVisible(focusIndex);
      }
      this.focusService.setFocusedCell({ rowIndex: focusIndex, column: focusColumn, rowPinned: null, forceBrowserFocus: true });
      if (this.rangeService) {
        var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };
        this.rangeService.setRangeToCell(cellPosition);
      }
    };
    NavigationService2.prototype.onPageDown = function(gridCell) {
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
      var pixelsInOnePage = this.getViewportHeight();
      var pagingPixelOffset = this.paginationProxy.getPixelOffset();
      var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;
      var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);
      if (this.columnModel.isAutoRowHeightActive()) {
        this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);
      } else {
        this.navigateToNextPage(gridCell, currentPageBottomRow);
      }
    };
    NavigationService2.prototype.onPageUp = function(gridCell) {
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
      var pagingPixelOffset = this.paginationProxy.getPixelOffset();
      var currentPageTopPixel = scrollPosition.top;
      var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);
      if (this.columnModel.isAutoRowHeightActive()) {
        this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);
      } else {
        this.navigateToNextPage(gridCell, currentPageTopRow, true);
      }
    };
    NavigationService2.prototype.navigateToNextPage = function(gridCell, scrollIndex, up) {
      if (up === void 0) {
        up = false;
      }
      var pixelsInOnePage = this.getViewportHeight();
      var firstRow = this.paginationProxy.getPageFirstRow();
      var lastRow = this.paginationProxy.getPageLastRow();
      var pagingPixelOffset = this.paginationProxy.getPixelOffset();
      var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);
      var rowPixelDiff = up ? (currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowHeight) - pixelsInOnePage - pagingPixelOffset : pixelsInOnePage - pagingPixelOffset;
      var nextCellPixel = (currentRowNode === null || currentRowNode === void 0 ? void 0 : currentRowNode.rowTop) + rowPixelDiff;
      var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);
      if (focusIndex === gridCell.rowIndex) {
        var diff = up ? -1 : 1;
        scrollIndex = focusIndex = gridCell.rowIndex + diff;
      }
      var scrollType;
      if (up) {
        scrollType = "bottom";
        if (focusIndex < firstRow) {
          focusIndex = firstRow;
        }
        if (scrollIndex < firstRow) {
          scrollIndex = firstRow;
        }
      } else {
        scrollType = "top";
        if (focusIndex > lastRow) {
          focusIndex = lastRow;
        }
        if (scrollIndex > lastRow) {
          scrollIndex = lastRow;
        }
      }
      if (this.isRowTallerThanView(focusIndex)) {
        scrollIndex = focusIndex;
        scrollType = "top";
      }
      this.navigateTo({
        scrollIndex,
        scrollType,
        scrollColumn: null,
        focusIndex,
        focusColumn: gridCell.column
      });
    };
    NavigationService2.prototype.navigateToNextPageWithAutoHeight = function(gridCell, scrollIndex, up) {
      var _this = this;
      if (up === void 0) {
        up = false;
      }
      this.navigateTo({
        scrollIndex,
        scrollType: up ? "bottom" : "top",
        scrollColumn: null,
        focusIndex: scrollIndex,
        focusColumn: gridCell.column
      });
      setTimeout(function() {
        var focusIndex = _this.getNextFocusIndexForAutoHeight(gridCell, up);
        _this.navigateTo({
          scrollIndex,
          scrollType: up ? "bottom" : "top",
          scrollColumn: null,
          focusIndex,
          focusColumn: gridCell.column,
          isAsync: true
        });
      }, 50);
    };
    NavigationService2.prototype.getNextFocusIndexForAutoHeight = function(gridCell, up) {
      var _a47;
      if (up === void 0) {
        up = false;
      }
      var step = up ? -1 : 1;
      var pixelsInOnePage = this.getViewportHeight();
      var lastRowIndex = this.paginationProxy.getPageLastRow();
      var pixelSum = 0;
      var currentIndex = gridCell.rowIndex;
      while (currentIndex >= 0 && currentIndex <= lastRowIndex) {
        var currentCell = this.paginationProxy.getRow(currentIndex);
        if (currentCell) {
          var currentCellHeight = (_a47 = currentCell.rowHeight) !== null && _a47 !== void 0 ? _a47 : 0;
          if (pixelSum + currentCellHeight > pixelsInOnePage) {
            break;
          }
          pixelSum += currentCellHeight;
        }
        currentIndex += step;
      }
      return Math.max(0, Math.min(currentIndex, lastRowIndex));
    };
    NavigationService2.prototype.getViewportHeight = function() {
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
      var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();
      var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;
      if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {
        pixelsInOnePage -= scrollbarWidth;
      }
      return pixelsInOnePage;
    };
    NavigationService2.prototype.isRowTallerThanView = function(rowIndex) {
      var rowNode = this.paginationProxy.getRow(rowIndex);
      if (!rowNode) {
        return false;
      }
      var rowHeight = rowNode.rowHeight;
      if (typeof rowHeight !== "number") {
        return false;
      }
      return rowHeight > this.getViewportHeight();
    };
    NavigationService2.prototype.onCtrlUpDownLeftRight = function(key, gridCell) {
      var cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);
      var rowIndex = cellToFocus.rowIndex, column = cellToFocus.column;
      this.navigateTo({
        scrollIndex: rowIndex,
        scrollType: null,
        scrollColumn: column,
        focusIndex: rowIndex,
        focusColumn: column
      });
    };
    NavigationService2.prototype.onHomeOrEndKey = function(key) {
      var homeKey = key === KeyCode.PAGE_HOME;
      var allColumns = this.columnModel.getAllDisplayedColumns();
      var columnToSelect = homeKey ? allColumns[0] : last(allColumns);
      var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();
      this.navigateTo({
        scrollIndex,
        scrollType: null,
        scrollColumn: columnToSelect,
        focusIndex: scrollIndex,
        focusColumn: columnToSelect
      });
    };
    NavigationService2.prototype.onTabKeyDown = function(previous, keyboardEvent) {
      var backwards = keyboardEvent.shiftKey;
      var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);
      if (movedToNextCell) {
        keyboardEvent.preventDefault();
        return;
      }
      if (backwards) {
        var _a47 = previous.getRowPosition(), rowIndex = _a47.rowIndex, rowPinned = _a47.rowPinned;
        var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();
        if (firstRow) {
          keyboardEvent.preventDefault();
          this.focusService.focusLastHeader(keyboardEvent);
        }
      } else {
        if (previous instanceof CellCtrl) {
          previous.focusCell(true);
        }
        if (this.focusService.focusNextGridCoreContainer(backwards)) {
          keyboardEvent.preventDefault();
        }
      }
    };
    NavigationService2.prototype.tabToNextCell = function(backwards, event) {
      var focusedCell = this.focusService.getFocusedCell();
      if (!focusedCell) {
        return false;
      }
      var cellOrRow = this.getCellByPosition(focusedCell);
      if (!cellOrRow) {
        cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);
        if (!cellOrRow || !cellOrRow.isFullWidth()) {
          return false;
        }
      }
      return this.tabToNextCellCommon(cellOrRow, backwards, event);
    };
    NavigationService2.prototype.tabToNextCellCommon = function(previous, backwards, event) {
      var editing = previous.isEditing();
      if (!editing && previous instanceof CellCtrl) {
        var cell = previous;
        var row = cell.getRowCtrl();
        if (row) {
          editing = row.isEditing();
        }
      }
      var res;
      if (editing) {
        if (this.gridOptionsService.get("editType") === "fullRow") {
          res = this.moveToNextEditingRow(previous, backwards, event);
        } else {
          res = this.moveToNextEditingCell(previous, backwards, event);
        }
      } else {
        res = this.moveToNextCellNotEditing(previous, backwards);
      }
      return res || !!this.focusService.getFocusedHeader();
    };
    NavigationService2.prototype.moveToNextEditingCell = function(previousCell, backwards, event) {
      if (event === void 0) {
        event = null;
      }
      var previousPos = previousCell.getCellPosition();
      previousCell.getGui().focus();
      previousCell.stopEditing();
      var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);
      if (nextCell == null) {
        return false;
      }
      nextCell.startEditing(null, null, true, event);
      nextCell.focusCell(false);
      return true;
    };
    NavigationService2.prototype.moveToNextEditingRow = function(previousCell, backwards, event) {
      if (event === void 0) {
        event = null;
      }
      var previousPos = previousCell.getCellPosition();
      var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);
      if (nextCell == null) {
        return false;
      }
      var nextPos = nextCell.getCellPosition();
      var previousEditable = this.isCellEditable(previousPos);
      var nextEditable = this.isCellEditable(nextPos);
      var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;
      if (previousEditable) {
        previousCell.setFocusOutOnEditor();
      }
      if (!rowsMatch) {
        var pRow = previousCell.getRowCtrl();
        pRow.stopEditing();
        var nRow = nextCell.getRowCtrl();
        nRow.startRowEditing(void 0, void 0, void 0, event);
      }
      if (nextEditable) {
        nextCell.setFocusInOnEditor();
        nextCell.focusCell();
      } else {
        nextCell.focusCell(true);
      }
      return true;
    };
    NavigationService2.prototype.moveToNextCellNotEditing = function(previousCell, backwards) {
      var displayedColumns = this.columnModel.getAllDisplayedColumns();
      var cellPos;
      if (previousCell instanceof RowCtrl) {
        cellPos = __assign15(__assign15({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : last(displayedColumns) });
      } else {
        cellPos = previousCell.getCellPosition();
      }
      var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);
      if (nextCell instanceof CellCtrl) {
        nextCell.focusCell(true);
      } else if (nextCell) {
        return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);
      }
      return exists(nextCell);
    };
    NavigationService2.prototype.findNextCellToFocusOn = function(previousPosition, backwards, startEditing) {
      var nextPosition = previousPosition;
      while (true) {
        if (previousPosition !== nextPosition) {
          previousPosition = nextPosition;
        }
        if (!backwards) {
          nextPosition = this.getLastCellOfColSpan(nextPosition);
        }
        nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);
        var userFunc = this.gridOptionsService.getCallback("tabToNextCell");
        if (exists(userFunc)) {
          var params = {
            backwards,
            editing: startEditing,
            previousCellPosition: previousPosition,
            nextCellPosition: nextPosition ? nextPosition : null
          };
          var userCell = userFunc(params);
          if (exists(userCell)) {
            if (userCell.floating) {
              doOnce(function() {
                console.warn("AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?");
              }, "no floating in userCell");
              userCell.rowPinned = userCell.floating;
            }
            nextPosition = {
              rowIndex: userCell.rowIndex,
              column: userCell.column,
              rowPinned: userCell.rowPinned
            };
          } else {
            nextPosition = null;
          }
        }
        if (!nextPosition) {
          return null;
        }
        if (nextPosition.rowIndex < 0) {
          var headerLen = this.headerNavigationService.getHeaderRowCount();
          this.focusService.focusHeaderPosition({
            headerPosition: {
              headerRowIndex: headerLen + nextPosition.rowIndex,
              column: nextPosition.column
            }
          });
          return null;
        }
        var fullRowEdit = this.gridOptionsService.get("editType") === "fullRow";
        if (startEditing && !fullRowEdit) {
          var cellIsEditable = this.isCellEditable(nextPosition);
          if (!cellIsEditable) {
            continue;
          }
        }
        this.ensureCellVisible(nextPosition);
        var nextCell = this.getCellByPosition(nextPosition);
        if (!nextCell) {
          var row = this.rowRenderer.getRowByPosition(nextPosition);
          if (!row || !row.isFullWidth()) {
            continue;
          } else {
            return row;
          }
        }
        if (nextCell.isSuppressNavigable()) {
          continue;
        }
        if (this.rangeService) {
          this.rangeService.setRangeToCell(nextPosition);
        }
        return nextCell;
      }
    };
    NavigationService2.prototype.isCellEditable = function(cell) {
      var rowNode = this.lookupRowNodeForCell(cell);
      if (rowNode) {
        return cell.column.isCellEditable(rowNode);
      }
      return false;
    };
    NavigationService2.prototype.getCellByPosition = function(cellPosition) {
      var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);
      if (!rowCtrl) {
        return null;
      }
      return rowCtrl.getCellCtrl(cellPosition.column);
    };
    NavigationService2.prototype.lookupRowNodeForCell = function(cell) {
      if (cell.rowPinned === "top") {
        return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);
      }
      if (cell.rowPinned === "bottom") {
        return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);
      }
      return this.paginationProxy.getRow(cell.rowIndex);
    };
    NavigationService2.prototype.navigateToNextCell = function(event, key, currentCell, allowUserOverride) {
      var nextCell = currentCell;
      var hitEdgeOfGrid = false;
      while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {
        if (this.gridOptionsService.is("enableRtl")) {
          if (key === KeyCode.LEFT) {
            nextCell = this.getLastCellOfColSpan(nextCell);
          }
        } else if (key === KeyCode.RIGHT) {
          nextCell = this.getLastCellOfColSpan(nextCell);
        }
        nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);
        hitEdgeOfGrid = missing(nextCell);
      }
      if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {
        nextCell = {
          rowIndex: -1,
          rowPinned: null,
          column: currentCell.column
        };
      }
      if (allowUserOverride) {
        var userFunc = this.gridOptionsService.getCallback("navigateToNextCell");
        if (exists(userFunc)) {
          var params = {
            key,
            previousCellPosition: currentCell,
            nextCellPosition: nextCell ? nextCell : null,
            event
          };
          var userCell = userFunc(params);
          if (exists(userCell)) {
            if (userCell.floating) {
              doOnce(function() {
                console.warn("AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?");
              }, "no floating in userCell");
              userCell.rowPinned = userCell.floating;
            }
            nextCell = {
              rowPinned: userCell.rowPinned,
              rowIndex: userCell.rowIndex,
              column: userCell.column
            };
          } else {
            nextCell = null;
          }
        }
      }
      if (!nextCell) {
        return;
      }
      if (nextCell.rowIndex < 0) {
        var headerLen = this.headerNavigationService.getHeaderRowCount();
        this.focusService.focusHeaderPosition({
          headerPosition: { headerRowIndex: headerLen + nextCell.rowIndex, column: currentCell.column },
          event: event || void 0
        });
        return;
      }
      var normalisedPosition = this.getNormalisedPosition(nextCell);
      if (normalisedPosition) {
        this.focusPosition(normalisedPosition);
      } else {
        this.tryToFocusFullWidthRow(nextCell);
      }
    };
    NavigationService2.prototype.getNormalisedPosition = function(cellPosition) {
      this.ensureCellVisible(cellPosition);
      var cellCtrl = this.getCellByPosition(cellPosition);
      if (!cellCtrl) {
        return null;
      }
      cellPosition = cellCtrl.getCellPosition();
      this.ensureCellVisible(cellPosition);
      return cellPosition;
    };
    NavigationService2.prototype.tryToFocusFullWidthRow = function(position, backwards) {
      if (backwards === void 0) {
        backwards = false;
      }
      var displayedColumns = this.columnModel.getAllDisplayedColumns();
      var rowComp = this.rowRenderer.getRowByPosition(position);
      if (!rowComp || !rowComp.isFullWidth()) {
        return false;
      }
      var currentCellFocused = this.focusService.getFocusedCell();
      var cellPosition = {
        rowIndex: position.rowIndex,
        rowPinned: position.rowPinned,
        column: position.column || (backwards ? last(displayedColumns) : displayedColumns[0])
      };
      this.focusPosition(cellPosition);
      var fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;
      var focusEvent = {
        type: Events.EVENT_FULL_WIDTH_ROW_FOCUSED,
        rowIndex: cellPosition.rowIndex,
        rowPinned: cellPosition.rowPinned,
        column: cellPosition.column,
        isFullWidthCell: true,
        floating: cellPosition.rowPinned,
        fromBelow
      };
      this.eventService.dispatchEvent(focusEvent);
      return true;
    };
    NavigationService2.prototype.focusPosition = function(cellPosition) {
      this.focusService.setFocusedCell({
        rowIndex: cellPosition.rowIndex,
        column: cellPosition.column,
        rowPinned: cellPosition.rowPinned,
        forceBrowserFocus: true
      });
      if (this.rangeService) {
        this.rangeService.setRangeToCell(cellPosition);
      }
    };
    NavigationService2.prototype.isValidNavigateCell = function(cell) {
      var rowNode = this.rowPositionUtils.getRowNode(cell);
      return !!rowNode;
    };
    NavigationService2.prototype.getLastCellOfColSpan = function(cell) {
      var cellCtrl = this.getCellByPosition(cell);
      if (!cellCtrl) {
        return cell;
      }
      var colSpanningList = cellCtrl.getColSpanningList();
      if (colSpanningList.length === 1) {
        return cell;
      }
      return {
        rowIndex: cell.rowIndex,
        column: last(colSpanningList),
        rowPinned: cell.rowPinned
      };
    };
    NavigationService2.prototype.ensureCellVisible = function(gridCell) {
      var isGroupStickyEnabled = this.gridOptionsService.is("groupRowsSticky");
      var rowNode = this.rowModel.getRow(gridCell.rowIndex);
      var skipScrollToRow = isGroupStickyEnabled && (rowNode === null || rowNode === void 0 ? void 0 : rowNode.sticky);
      if (!skipScrollToRow && missing(gridCell.rowPinned)) {
        this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);
      }
      if (!gridCell.column.isPinned()) {
        this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);
      }
    };
    __decorate67([
      Autowired("mouseEventService")
    ], NavigationService2.prototype, "mouseEventService", void 0);
    __decorate67([
      Autowired("paginationProxy")
    ], NavigationService2.prototype, "paginationProxy", void 0);
    __decorate67([
      Autowired("focusService")
    ], NavigationService2.prototype, "focusService", void 0);
    __decorate67([
      Optional2("rangeService")
    ], NavigationService2.prototype, "rangeService", void 0);
    __decorate67([
      Autowired("columnModel")
    ], NavigationService2.prototype, "columnModel", void 0);
    __decorate67([
      Autowired("rowModel")
    ], NavigationService2.prototype, "rowModel", void 0);
    __decorate67([
      Autowired("ctrlsService")
    ], NavigationService2.prototype, "ctrlsService", void 0);
    __decorate67([
      Autowired("rowRenderer")
    ], NavigationService2.prototype, "rowRenderer", void 0);
    __decorate67([
      Autowired("headerNavigationService")
    ], NavigationService2.prototype, "headerNavigationService", void 0);
    __decorate67([
      Autowired("rowPositionUtils")
    ], NavigationService2.prototype, "rowPositionUtils", void 0);
    __decorate67([
      Autowired("cellNavigationService")
    ], NavigationService2.prototype, "cellNavigationService", void 0);
    __decorate67([
      Autowired("pinnedRowModel")
    ], NavigationService2.prototype, "pinnedRowModel", void 0);
    __decorate67([
      PostConstruct
    ], NavigationService2.prototype, "postConstruct", null);
    NavigationService2 = __decorate67([
      Bean("navigationService")
    ], NavigationService2);
    return NavigationService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/popupEditorWrapper.js
var __extends77 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate68 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var PopupEditorWrapper = (
  /** @class */
  function(_super) {
    __extends77(PopupEditorWrapper2, _super);
    function PopupEditorWrapper2(params) {
      var _this = _super.call(
        this,
        /* html */
        '<div class="ag-popup-editor" tabindex="-1"/>'
      ) || this;
      _this.params = params;
      return _this;
    }
    PopupEditorWrapper2.prototype.postConstruct = function() {
      this.gridOptionsService.setDomData(this.getGui(), PopupEditorWrapper2.DOM_KEY_POPUP_EDITOR_WRAPPER, true);
      this.addKeyDownListener();
    };
    PopupEditorWrapper2.prototype.addKeyDownListener = function() {
      var _this = this;
      var eGui = this.getGui();
      var params = this.params;
      var listener = function(event) {
        if (!isUserSuppressingKeyboardEvent(_this.gridOptionsService, event, params.node, params.column, true)) {
          params.onKeyDown(event);
        }
      };
      this.addManagedListener(eGui, "keydown", listener);
    };
    PopupEditorWrapper2.DOM_KEY_POPUP_EDITOR_WRAPPER = "popupEditorWrapper";
    __decorate68([
      PostConstruct
    ], PopupEditorWrapper2.prototype, "postConstruct", null);
    return PopupEditorWrapper2;
  }(PopupComponent)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellComp.js
var __extends78 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var CellComp = (
  /** @class */
  function(_super) {
    __extends78(CellComp2, _super);
    function CellComp2(beans, cellCtrl, printLayout, eRow, editingRow) {
      var _this = _super.call(this) || this;
      _this.rendererVersion = 0;
      _this.editorVersion = 0;
      _this.beans = beans;
      _this.column = cellCtrl.getColumn();
      _this.rowNode = cellCtrl.getRowNode();
      _this.rowCtrl = cellCtrl.getRowCtrl();
      _this.eRow = eRow;
      _this.setTemplate(
        /* html */
        '<div comp-id="' + _this.getCompId() + '"/>'
      );
      var eGui = _this.getGui();
      _this.forceWrapper = cellCtrl.isForceWrapper();
      _this.refreshWrapper(false);
      var setAttribute = function(name, value, element) {
        var actualElement = element ? element : eGui;
        if (value != null && value != "") {
          actualElement.setAttribute(name, value);
        } else {
          actualElement.removeAttribute(name);
        }
      };
      var compProxy = {
        addOrRemoveCssClass: function(cssClassName, on2) {
          return _this.addOrRemoveCssClass(cssClassName, on2);
        },
        setUserStyles: function(styles) {
          return addStylesToElement(eGui, styles);
        },
        getFocusableElement: function() {
          return _this.getFocusableElement();
        },
        setTabIndex: function(tabIndex) {
          return setAttribute("tabindex", tabIndex.toString());
        },
        setRole: function(role) {
          return setAriaRole(eGui, role);
        },
        setColId: function(colId) {
          return setAttribute("col-id", colId);
        },
        setTitle: function(title) {
          return setAttribute("title", title);
        },
        setIncludeSelection: function(include) {
          return _this.includeSelection = include;
        },
        setIncludeRowDrag: function(include) {
          return _this.includeRowDrag = include;
        },
        setIncludeDndSource: function(include) {
          return _this.includeDndSource = include;
        },
        setRenderDetails: function(compDetails, valueToDisplay, force) {
          return _this.setRenderDetails(compDetails, valueToDisplay, force);
        },
        setEditDetails: function(compDetails, popup, position) {
          return _this.setEditDetails(compDetails, popup, position);
        },
        getCellEditor: function() {
          return _this.cellEditor || null;
        },
        getCellRenderer: function() {
          return _this.cellRenderer || null;
        },
        getParentOfValue: function() {
          return _this.getParentOfValue();
        }
      };
      _this.cellCtrl = cellCtrl;
      cellCtrl.setComp(compProxy, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);
      return _this;
    }
    CellComp2.prototype.getParentOfValue = function() {
      if (this.eCellValue) {
        return this.eCellValue;
      }
      if (this.eCellWrapper) {
        return this.eCellWrapper;
      }
      return this.getGui();
    };
    CellComp2.prototype.setRenderDetails = function(compDetails, valueToDisplay, forceNewCellRendererInstance) {
      var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;
      if (isInlineEditing) {
        return;
      }
      this.firstRender = this.firstRender == null;
      var controlWrapperChanged = this.refreshWrapper(false);
      this.refreshEditStyles(false);
      if (compDetails) {
        var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;
        var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);
        if (!cellRendererRefreshSuccessful) {
          this.destroyRenderer();
          this.createCellRendererInstance(compDetails);
        }
      } else {
        this.destroyRenderer();
        this.insertValueWithoutCellRenderer(valueToDisplay);
      }
    };
    CellComp2.prototype.setEditDetails = function(compDetails, popup, position) {
      if (compDetails) {
        this.createCellEditorInstance(compDetails, popup, position);
      } else {
        this.destroyEditor();
      }
    };
    CellComp2.prototype.removeControls = function() {
      this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);
      this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);
      this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);
    };
    CellComp2.prototype.refreshWrapper = function(editing) {
      var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;
      var usingWrapper = providingControls || this.forceWrapper;
      var putWrapperIn = usingWrapper && this.eCellWrapper == null;
      if (putWrapperIn) {
        this.eCellWrapper = loadTemplate(
          /* html */
          '<div class="ag-cell-wrapper" role="presentation" aria-hidden="true"></div>'
        );
        this.getGui().appendChild(this.eCellWrapper);
      }
      var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;
      if (takeWrapperOut) {
        removeFromParent(this.eCellWrapper);
        this.eCellWrapper = void 0;
      }
      this.addOrRemoveCssClass("ag-cell-value", !usingWrapper);
      var usingCellValue = !editing && usingWrapper;
      var putCellValueIn = usingCellValue && this.eCellValue == null;
      if (putCellValueIn) {
        this.eCellValue = loadTemplate(
          /* html */
          '<span class="ag-cell-value" role="presentation"></span>'
        );
        this.eCellWrapper.appendChild(this.eCellValue);
      }
      var takeCellValueOut = !usingCellValue && this.eCellValue != null;
      if (takeCellValueOut) {
        removeFromParent(this.eCellValue);
        this.eCellValue = void 0;
      }
      var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;
      if (templateChanged) {
        this.removeControls();
      }
      if (!editing) {
        if (providingControls) {
          this.addControls();
        }
        if (usingWrapper) {
          this.refreshAriaProperties();
        }
      }
      return templateChanged;
    };
    CellComp2.prototype.addControls = function() {
      if (this.includeRowDrag) {
        if (this.rowDraggingComp == null) {
          this.rowDraggingComp = this.cellCtrl.createRowDragComp();
          if (this.rowDraggingComp) {
            this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);
          }
        }
      }
      if (this.includeDndSource) {
        if (this.dndSourceComp == null) {
          this.dndSourceComp = this.cellCtrl.createDndSource();
          this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);
        }
      }
      if (this.includeSelection) {
        if (this.checkboxSelectionComp == null) {
          this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();
          this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);
        }
      }
    };
    CellComp2.prototype.refreshAriaProperties = function() {
      var id = this.eCellValue.id = "cell-" + this.getCompId();
      var describedByIds = [];
      if (this.includeSelection && this.checkboxSelectionComp) {
        describedByIds.push(this.checkboxSelectionComp.getCheckboxId());
      }
      describedByIds.push(id);
      setAriaDescribedBy(this.getGui(), describedByIds.join(" "));
    };
    CellComp2.prototype.createCellEditorInstance = function(compDetails, popup, position) {
      var _this = this;
      var versionCopy = this.editorVersion;
      var cellEditorPromise = compDetails.newAgStackInstance();
      if (!cellEditorPromise) {
        return;
      }
      var params = compDetails.params;
      cellEditorPromise.then(function(c2) {
        return _this.afterCellEditorCreated(versionCopy, c2, params, popup, position);
      });
      var cellEditorAsync = missing(this.cellEditor);
      if (cellEditorAsync && params.cellStartedEdit) {
        this.cellCtrl.focusCell(true);
      }
    };
    CellComp2.prototype.insertValueWithoutCellRenderer = function(valueToDisplay) {
      var eParent = this.getParentOfValue();
      clearElement(eParent);
      var escapedValue = valueToDisplay != null ? escapeString(valueToDisplay) : null;
      if (escapedValue != null) {
        eParent.innerHTML = escapedValue;
      }
    };
    CellComp2.prototype.destroyEditorAndRenderer = function() {
      this.destroyRenderer();
      this.destroyEditor();
    };
    CellComp2.prototype.destroyRenderer = function() {
      var context = this.beans.context;
      this.cellRenderer = context.destroyBean(this.cellRenderer);
      removeFromParent(this.cellRendererGui);
      this.cellRendererGui = null;
      this.rendererVersion++;
    };
    CellComp2.prototype.destroyEditor = function() {
      var context = this.beans.context;
      if (this.hideEditorPopup) {
        this.hideEditorPopup();
      }
      this.hideEditorPopup = void 0;
      this.cellEditor = context.destroyBean(this.cellEditor);
      this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);
      removeFromParent(this.cellEditorGui);
      this.cellEditorGui = null;
      this.editorVersion++;
    };
    CellComp2.prototype.refreshCellRenderer = function(compClassAndParams) {
      if (this.cellRenderer == null || this.cellRenderer.refresh == null) {
        return false;
      }
      if (this.cellRendererClass !== compClassAndParams.componentClass) {
        return false;
      }
      var result = this.cellRenderer.refresh(compClassAndParams.params);
      return result === true || result === void 0;
    };
    CellComp2.prototype.createCellRendererInstance = function(compDetails) {
      var _this = this;
      var suppressAnimationFrame = this.beans.gridOptionsService.is("suppressAnimationFrame");
      var useTaskService = !suppressAnimationFrame;
      var displayComponentVersionCopy = this.rendererVersion;
      var componentClass = compDetails.componentClass;
      var createCellRendererFunc = function() {
        var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();
        if (staleTask) {
          return;
        }
        var componentPromise = compDetails.newAgStackInstance();
        var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);
        if (componentPromise) {
          componentPromise.then(callback);
        }
      };
      if (useTaskService && this.firstRender) {
        this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, "createTasksP2");
      } else {
        createCellRendererFunc();
      }
    };
    CellComp2.prototype.getCtrl = function() {
      return this.cellCtrl;
    };
    CellComp2.prototype.getRowCtrl = function() {
      return this.rowCtrl;
    };
    CellComp2.prototype.getCellRenderer = function() {
      return this.cellRenderer;
    };
    CellComp2.prototype.getCellEditor = function() {
      return this.cellEditor;
    };
    CellComp2.prototype.afterCellRendererCreated = function(cellRendererVersion, cellRendererClass, cellRenderer) {
      var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;
      if (staleTask) {
        this.beans.context.destroyBean(cellRenderer);
        return;
      }
      this.cellRenderer = cellRenderer;
      this.cellRendererClass = cellRendererClass;
      this.cellRendererGui = this.cellRenderer.getGui();
      if (this.cellRendererGui != null) {
        var eParent = this.getParentOfValue();
        clearElement(eParent);
        eParent.appendChild(this.cellRendererGui);
      }
    };
    CellComp2.prototype.afterCellEditorCreated = function(requestVersion, cellEditor, params, popup, position) {
      var staleComp = requestVersion !== this.editorVersion;
      if (staleComp) {
        this.beans.context.destroyBean(cellEditor);
        return;
      }
      var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();
      if (editingCancelledByUserComp) {
        this.beans.context.destroyBean(cellEditor);
        this.cellCtrl.stopEditing(true);
        return;
      }
      if (!cellEditor.getGui) {
        console.warn("AG Grid: cellEditor for column " + this.column.getId() + " is missing getGui() method");
        this.beans.context.destroyBean(cellEditor);
        return;
      }
      this.cellEditor = cellEditor;
      this.cellEditorGui = cellEditor.getGui();
      var cellEditorInPopup = popup || cellEditor.isPopup !== void 0 && cellEditor.isPopup();
      if (cellEditorInPopup) {
        this.addPopupCellEditor(params, position);
      } else {
        this.addInCellEditor();
      }
      this.refreshEditStyles(true, cellEditorInPopup);
      if (cellEditor.afterGuiAttached) {
        cellEditor.afterGuiAttached();
      }
    };
    CellComp2.prototype.refreshEditStyles = function(editing, isPopup) {
      var _a47;
      this.addOrRemoveCssClass("ag-cell-inline-editing", editing && !isPopup);
      this.addOrRemoveCssClass("ag-cell-popup-editing", editing && !!isPopup);
      this.addOrRemoveCssClass("ag-cell-not-inline-editing", !editing || !!isPopup);
      (_a47 = this.rowCtrl) === null || _a47 === void 0 ? void 0 : _a47.setInlineEditingCss(editing);
    };
    CellComp2.prototype.addInCellEditor = function() {
      var eGui = this.getGui();
      var eDocument = this.beans.gridOptionsService.getDocument();
      if (eGui.contains(eDocument.activeElement)) {
        eGui.focus();
      }
      this.destroyRenderer();
      this.refreshWrapper(true);
      this.clearParentOfValue();
      if (this.cellEditorGui) {
        var eParent = this.getParentOfValue();
        eParent.appendChild(this.cellEditorGui);
      }
    };
    CellComp2.prototype.addPopupCellEditor = function(params, position) {
      var _this = this;
      if (this.beans.gridOptionsService.get("editType") === "fullRow") {
        console.warn("AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both - either turn off fullRowEdit, or stop using popup editors.");
      }
      var cellEditor = this.cellEditor;
      this.cellEditorPopupWrapper = this.beans.context.createBean(new PopupEditorWrapper(params));
      var ePopupGui = this.cellEditorPopupWrapper.getGui();
      if (this.cellEditorGui) {
        ePopupGui.appendChild(this.cellEditorGui);
      }
      var popupService = this.beans.popupService;
      var useModelPopup = this.beans.gridOptionsService.is("stopEditingWhenCellsLoseFocus");
      var positionToUse = position != null ? position : cellEditor.getPopupPosition ? cellEditor.getPopupPosition() : "over";
      var isRtl = this.beans.gridOptionsService.is("enableRtl");
      var positionParams = {
        ePopup: ePopupGui,
        column: this.column,
        rowNode: this.rowNode,
        type: "popupCellEditor",
        eventSource: this.getGui(),
        position: positionToUse,
        alignSide: isRtl ? "right" : "left",
        keepWithinBounds: true
      };
      var positionCallback = popupService.positionPopupByComponent.bind(popupService, positionParams);
      var translate = this.beans.localeService.getLocaleTextFunc();
      var addPopupRes = popupService.addPopup({
        modal: useModelPopup,
        eChild: ePopupGui,
        closeOnEsc: true,
        closedCallback: function() {
          _this.cellCtrl.onPopupEditorClosed();
        },
        anchorToElement: this.getGui(),
        positionCallback,
        ariaLabel: translate("ariaLabelCellEditor", "Cell Editor")
      });
      if (addPopupRes) {
        this.hideEditorPopup = addPopupRes.hideFunc;
      }
    };
    CellComp2.prototype.detach = function() {
      this.eRow.removeChild(this.getGui());
    };
    CellComp2.prototype.destroy = function() {
      this.cellCtrl.stopEditing();
      this.destroyEditorAndRenderer();
      this.removeControls();
      _super.prototype.destroy.call(this);
    };
    CellComp2.prototype.clearParentOfValue = function() {
      var eGui = this.getGui();
      var eDocument = this.beans.gridOptionsService.getDocument();
      if (eGui.contains(eDocument.activeElement) && browserSupportsPreventScroll()) {
        eGui.focus({ preventScroll: true });
      }
      clearElement(this.getParentOfValue());
    };
    return CellComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowComp.js
var __extends79 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var RowComp = (
  /** @class */
  function(_super) {
    __extends79(RowComp2, _super);
    function RowComp2(ctrl, beans, containerType) {
      var _this = _super.call(this) || this;
      _this.cellComps = {};
      _this.beans = beans;
      _this.rowCtrl = ctrl;
      _this.setTemplate(
        /* html */
        '<div comp-id="' + _this.getCompId() + '" style="' + _this.getInitialStyle(containerType) + '"/>'
      );
      var eGui = _this.getGui();
      var style3 = eGui.style;
      var compProxy = {
        setDomOrder: function(domOrder) {
          return _this.domOrder = domOrder;
        },
        setCellCtrls: function(cellCtrls) {
          return _this.setCellCtrls(cellCtrls);
        },
        showFullWidth: function(compDetails) {
          return _this.showFullWidth(compDetails);
        },
        getFullWidthCellRenderer: function() {
          return _this.getFullWidthCellRenderer();
        },
        addOrRemoveCssClass: function(name, on2) {
          return _this.addOrRemoveCssClass(name, on2);
        },
        setUserStyles: function(styles) {
          return addStylesToElement(eGui, styles);
        },
        setTop: function(top) {
          return style3.top = top;
        },
        setTransform: function(transform) {
          return style3.transform = transform;
        },
        setRowIndex: function(rowIndex) {
          return eGui.setAttribute("row-index", rowIndex);
        },
        setRole: function(role) {
          return setAriaRole(eGui, role);
        },
        setRowId: function(rowId) {
          return eGui.setAttribute("row-id", rowId);
        },
        setRowBusinessKey: function(businessKey) {
          return eGui.setAttribute("row-business-key", businessKey);
        },
        setTabIndex: function(tabIndex) {
          return eGui.setAttribute("tabindex", tabIndex.toString());
        }
      };
      ctrl.setComp(compProxy, _this.getGui(), containerType);
      _this.addDestroyFunc(function() {
        ctrl.unsetComp(containerType);
      });
      return _this;
    }
    RowComp2.prototype.getInitialStyle = function(containerType) {
      var transform = this.rowCtrl.getInitialTransform(containerType);
      var top = this.rowCtrl.getInitialRowTop(containerType);
      return transform ? "transform: " + transform : "top: " + top;
    };
    RowComp2.prototype.showFullWidth = function(compDetails) {
      var _this = this;
      var callback = function(cellRenderer) {
        if (_this.isAlive()) {
          var eGui = cellRenderer.getGui();
          _this.getGui().appendChild(eGui);
          _this.rowCtrl.setupDetailRowAutoHeight(eGui);
          _this.setFullWidthRowComp(cellRenderer);
        } else {
          _this.beans.context.destroyBean(cellRenderer);
        }
      };
      var res = compDetails.newAgStackInstance();
      if (!res) {
        return;
      }
      res.then(callback);
    };
    RowComp2.prototype.setCellCtrls = function(cellCtrls) {
      var _this = this;
      var cellsToRemove = Object.assign({}, this.cellComps);
      cellCtrls.forEach(function(cellCtrl) {
        var key = cellCtrl.getInstanceId();
        var existingCellComp = _this.cellComps[key];
        if (existingCellComp == null) {
          _this.newCellComp(cellCtrl);
        } else {
          cellsToRemove[key] = null;
        }
      });
      var cellCompsToRemove = getAllValuesInObject(cellsToRemove).filter(function(cellComp) {
        return cellComp != null;
      });
      this.destroyCells(cellCompsToRemove);
      this.ensureDomOrder(cellCtrls);
    };
    RowComp2.prototype.ensureDomOrder = function(cellCtrls) {
      var _this = this;
      if (!this.domOrder) {
        return;
      }
      var elementsInOrder = [];
      cellCtrls.forEach(function(cellCtrl) {
        var cellComp = _this.cellComps[cellCtrl.getInstanceId()];
        if (cellComp) {
          elementsInOrder.push(cellComp.getGui());
        }
      });
      setDomChildOrder(this.getGui(), elementsInOrder);
    };
    RowComp2.prototype.newCellComp = function(cellCtrl) {
      var cellComp = new CellComp(this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());
      this.cellComps[cellCtrl.getInstanceId()] = cellComp;
      this.getGui().appendChild(cellComp.getGui());
    };
    RowComp2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
      this.destroyAllCells();
    };
    RowComp2.prototype.destroyAllCells = function() {
      var cellsToDestroy = getAllValuesInObject(this.cellComps).filter(function(cp) {
        return cp != null;
      });
      this.destroyCells(cellsToDestroy);
    };
    RowComp2.prototype.setFullWidthRowComp = function(fullWidthRowComponent) {
      var _this = this;
      if (this.fullWidthCellRenderer) {
        console.error("AG Grid - should not be setting fullWidthRowComponent twice");
      }
      this.fullWidthCellRenderer = fullWidthRowComponent;
      this.addDestroyFunc(function() {
        _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);
      });
    };
    RowComp2.prototype.getFullWidthCellRenderer = function() {
      return this.fullWidthCellRenderer;
    };
    RowComp2.prototype.destroyCells = function(cellComps) {
      var _this = this;
      cellComps.forEach(function(cellComp) {
        if (!cellComp) {
          return;
        }
        var instanceId = cellComp.getCtrl().getInstanceId();
        if (_this.cellComps[instanceId] !== cellComp) {
          return;
        }
        cellComp.detach();
        cellComp.destroy();
        _this.cellComps[instanceId] = null;
      });
    };
    return RowComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerComp.js
var __extends80 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign16 = function() {
  __assign16 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign16.apply(this, arguments);
};
var __decorate69 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
function templateFactory() {
  var name = Component2.elementGettingCreated.getAttribute("name");
  var cssClasses = RowContainerCtrl.getRowContainerCssClasses(name);
  var res;
  var template1 = name === RowContainerName.CENTER;
  var template2 = name === RowContainerName.TOP_CENTER || name === RowContainerName.STICKY_TOP_CENTER || name === RowContainerName.BOTTOM_CENTER;
  if (template1) {
    res = /* html */
    '<div class="' + cssClasses.wrapper + '" ref="eWrapper" role="presentation">\n                <div class="' + cssClasses.viewport + '" ref="eViewport" role="presentation">\n                    <div class="' + cssClasses.container + '" ref="eContainer"></div>\n                </div>\n            </div>';
  } else if (template2) {
    res = /* html */
    '<div class="' + cssClasses.viewport + '" ref="eViewport" role="presentation">\n                <div class="' + cssClasses.container + '" ref="eContainer"></div>\n            </div>';
  } else {
    res = /* html */
    '<div class="' + cssClasses.container + '" ref="eContainer"></div>';
  }
  return res;
}
var RowContainerComp = (
  /** @class */
  function(_super) {
    __extends80(RowContainerComp2, _super);
    function RowContainerComp2() {
      var _this = _super.call(this, templateFactory()) || this;
      _this.rowComps = {};
      _this.name = Component2.elementGettingCreated.getAttribute("name");
      _this.type = getRowContainerTypeForName(_this.name);
      return _this;
    }
    RowContainerComp2.prototype.postConstruct = function() {
      var _this = this;
      var compProxy = {
        setViewportHeight: function(height) {
          return _this.eViewport.style.height = height;
        },
        setRowCtrls: function(rowCtrls) {
          return _this.setRowCtrls(rowCtrls);
        },
        setDomOrder: function(domOrder) {
          _this.domOrder = domOrder;
        },
        setContainerWidth: function(width) {
          return _this.eContainer.style.width = width;
        }
      };
      var ctrl = this.createManagedBean(new RowContainerCtrl(this.name));
      ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);
    };
    RowContainerComp2.prototype.preDestroy = function() {
      this.setRowCtrls([]);
    };
    RowContainerComp2.prototype.setRowCtrls = function(rowCtrls) {
      var _this = this;
      var oldRows = __assign16({}, this.rowComps);
      this.rowComps = {};
      this.lastPlacedElement = null;
      var processRow = function(rowCon) {
        var instanceId = rowCon.getInstanceId();
        var existingRowComp = oldRows[instanceId];
        if (existingRowComp) {
          _this.rowComps[instanceId] = existingRowComp;
          delete oldRows[instanceId];
          _this.ensureDomOrder(existingRowComp.getGui());
        } else {
          var rowComp = new RowComp(rowCon, _this.beans, _this.type);
          _this.rowComps[instanceId] = rowComp;
          _this.appendRow(rowComp.getGui());
        }
      };
      rowCtrls.forEach(processRow);
      getAllValuesInObject(oldRows).forEach(function(oldRowComp) {
        _this.eContainer.removeChild(oldRowComp.getGui());
        oldRowComp.destroy();
      });
      setAriaRole(this.eContainer, rowCtrls.length ? "rowgroup" : "presentation");
    };
    RowContainerComp2.prototype.appendRow = function(element) {
      if (this.domOrder) {
        insertWithDomOrder(this.eContainer, element, this.lastPlacedElement);
      } else {
        this.eContainer.appendChild(element);
      }
      this.lastPlacedElement = element;
    };
    RowContainerComp2.prototype.ensureDomOrder = function(eRow) {
      if (this.domOrder) {
        ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);
        this.lastPlacedElement = eRow;
      }
    };
    __decorate69([
      Autowired("beans")
    ], RowContainerComp2.prototype, "beans", void 0);
    __decorate69([
      RefSelector("eViewport")
    ], RowContainerComp2.prototype, "eViewport", void 0);
    __decorate69([
      RefSelector("eContainer")
    ], RowContainerComp2.prototype, "eContainer", void 0);
    __decorate69([
      RefSelector("eWrapper")
    ], RowContainerComp2.prototype, "eWrapper", void 0);
    __decorate69([
      PostConstruct
    ], RowContainerComp2.prototype, "postConstruct", null);
    __decorate69([
      PreDestroy
    ], RowContainerComp2.prototype, "preDestroy", null);
    return RowContainerComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/bodyDropPivotTarget.js
var __decorate70 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var BodyDropPivotTarget = (
  /** @class */
  function() {
    function BodyDropPivotTarget2(pinned) {
      this.columnsToAggregate = [];
      this.columnsToGroup = [];
      this.columnsToPivot = [];
      this.pinned = pinned;
    }
    BodyDropPivotTarget2.prototype.onDragEnter = function(draggingEvent) {
      var _this = this;
      this.clearColumnsList();
      if (this.gridOptionsService.is("functionsReadOnly")) {
        return;
      }
      var dragColumns = draggingEvent.dragItem.columns;
      if (!dragColumns) {
        return;
      }
      dragColumns.forEach(function(column) {
        if (!column.isPrimary()) {
          return;
        }
        if (column.isAnyFunctionActive()) {
          return;
        }
        if (column.isAllowValue()) {
          _this.columnsToAggregate.push(column);
        } else if (column.isAllowRowGroup()) {
          _this.columnsToGroup.push(column);
        } else if (column.isAllowPivot()) {
          _this.columnsToPivot.push(column);
        }
      });
    };
    BodyDropPivotTarget2.prototype.getIconName = function() {
      var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;
      if (totalColumns > 0) {
        return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;
      }
      return null;
    };
    BodyDropPivotTarget2.prototype.onDragLeave = function(draggingEvent) {
      this.clearColumnsList();
    };
    BodyDropPivotTarget2.prototype.clearColumnsList = function() {
      this.columnsToAggregate.length = 0;
      this.columnsToGroup.length = 0;
      this.columnsToPivot.length = 0;
    };
    BodyDropPivotTarget2.prototype.onDragging = function(draggingEvent) {
    };
    BodyDropPivotTarget2.prototype.onDragStop = function(draggingEvent) {
      if (this.columnsToAggregate.length > 0) {
        this.columnModel.addValueColumns(this.columnsToAggregate, "toolPanelDragAndDrop");
      }
      if (this.columnsToGroup.length > 0) {
        this.columnModel.addRowGroupColumns(this.columnsToGroup, "toolPanelDragAndDrop");
      }
      if (this.columnsToPivot.length > 0) {
        this.columnModel.addPivotColumns(this.columnsToPivot, "toolPanelDragAndDrop");
      }
    };
    __decorate70([
      Autowired("columnModel")
    ], BodyDropPivotTarget2.prototype, "columnModel", void 0);
    __decorate70([
      Autowired("gridOptionsService")
    ], BodyDropPivotTarget2.prototype, "gridOptionsService", void 0);
    return BodyDropPivotTarget2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/moveColumnFeature.js
var __decorate71 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read12 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var MoveColumnFeature = (
  /** @class */
  function() {
    function MoveColumnFeature2(pinned, eContainer) {
      this.needToMoveLeft = false;
      this.needToMoveRight = false;
      this.lastMovedInfo = null;
      this.pinned = pinned;
      this.eContainer = eContainer;
      this.centerContainer = !exists(pinned);
    }
    MoveColumnFeature2.prototype.init = function() {
      var _this = this;
      this.ctrlsService.whenReady(function() {
        _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
      });
    };
    MoveColumnFeature2.prototype.getIconName = function() {
      return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;
    };
    MoveColumnFeature2.prototype.onDragEnter = function(draggingEvent) {
      var columns = draggingEvent.dragItem.columns;
      var dragCameFromToolPanel = draggingEvent.dragSource.type === DragSourceType.ToolPanel;
      if (dragCameFromToolPanel) {
        this.setColumnsVisible(columns, true, "uiColumnDragged");
      } else {
        var visibleState_1 = draggingEvent.dragItem.visibleState;
        var visibleColumns = (columns || []).filter(function(column) {
          return visibleState_1[column.getId()];
        });
        this.setColumnsVisible(visibleColumns, true, "uiColumnDragged");
      }
      this.setColumnsPinned(columns, this.pinned, "uiColumnDragged");
      this.onDragging(draggingEvent, true, true);
    };
    MoveColumnFeature2.prototype.onDragLeave = function() {
      this.ensureIntervalCleared();
      this.lastMovedInfo = null;
    };
    MoveColumnFeature2.prototype.setColumnsVisible = function(columns, visible, source) {
      if (source === void 0) {
        source = "api";
      }
      if (columns) {
        var allowedCols = columns.filter(function(c2) {
          return !c2.getColDef().lockVisible;
        });
        this.columnModel.setColumnsVisible(allowedCols, visible, source);
      }
    };
    MoveColumnFeature2.prototype.setColumnsPinned = function(columns, pinned, source) {
      if (source === void 0) {
        source = "api";
      }
      if (columns) {
        var allowedCols = columns.filter(function(c2) {
          return !c2.getColDef().lockPinned;
        });
        this.columnModel.setColumnsPinned(allowedCols, pinned, source);
      }
    };
    MoveColumnFeature2.prototype.onDragStop = function() {
      this.onDragging(this.lastDraggingEvent, false, true, true);
      this.ensureIntervalCleared();
      this.lastMovedInfo = null;
    };
    MoveColumnFeature2.prototype.normaliseX = function(x2) {
      if (this.gridOptionsService.is("enableRtl")) {
        var clientWidth = this.eContainer.clientWidth;
        x2 = clientWidth - x2;
      }
      if (this.centerContainer) {
        x2 += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();
      }
      return x2;
    };
    MoveColumnFeature2.prototype.checkCenterForScrolling = function(xAdjustedForScroll) {
      if (this.centerContainer) {
        var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();
        var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();
        if (this.gridOptionsService.is("enableRtl")) {
          this.needToMoveRight = xAdjustedForScroll < firstVisiblePixel + 50;
          this.needToMoveLeft = xAdjustedForScroll > lastVisiblePixel - 50;
        } else {
          this.needToMoveLeft = xAdjustedForScroll < firstVisiblePixel + 50;
          this.needToMoveRight = xAdjustedForScroll > lastVisiblePixel - 50;
        }
        if (this.needToMoveLeft || this.needToMoveRight) {
          this.ensureIntervalStarted();
        } else {
          this.ensureIntervalCleared();
        }
      }
    };
    MoveColumnFeature2.prototype.onDragging = function(draggingEvent, fromEnter, fakeEvent, finished) {
      var _this = this;
      var _a47;
      if (draggingEvent === void 0) {
        draggingEvent = this.lastDraggingEvent;
      }
      if (fromEnter === void 0) {
        fromEnter = false;
      }
      if (fakeEvent === void 0) {
        fakeEvent = false;
      }
      if (finished === void 0) {
        finished = false;
      }
      if (finished) {
        if (this.lastMovedInfo) {
          var _b = this.lastMovedInfo, columns = _b.columns, toIndex = _b.toIndex;
          this.moveColumns(columns, toIndex, "uiColumnMoved", true);
        }
        return;
      }
      this.lastDraggingEvent = draggingEvent;
      if (missing(draggingEvent.hDirection)) {
        return;
      }
      var mouseX = this.normaliseX(draggingEvent.x);
      if (!fromEnter) {
        this.checkCenterForScrolling(mouseX);
      }
      var hDirection = this.normaliseDirection(draggingEvent.hDirection);
      var dragSourceType = draggingEvent.dragSource.type;
      var allMovingColumns = ((_a47 = draggingEvent.dragSource.getDragItem().columns) === null || _a47 === void 0 ? void 0 : _a47.filter(function(col) {
        if (col.getColDef().lockPinned) {
          return col.getPinned() == _this.pinned;
        }
        return true;
      })) || [];
      this.attemptMoveColumns({ dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter, fakeEvent });
    };
    MoveColumnFeature2.prototype.normaliseDirection = function(hDirection) {
      if (this.gridOptionsService.is("enableRtl")) {
        switch (hDirection) {
          case HorizontalDirection.Left:
            return HorizontalDirection.Right;
          case HorizontalDirection.Right:
            return HorizontalDirection.Left;
          default:
            console.error("AG Grid: Unknown direction " + hDirection);
        }
      } else {
        return hDirection;
      }
    };
    MoveColumnFeature2.prototype.attemptMoveColumns = function(params) {
      var dragSourceType = params.dragSourceType, hDirection = params.hDirection, mouseX = params.mouseX, fromEnter = params.fromEnter, fakeEvent = params.fakeEvent;
      var draggingLeft = hDirection === HorizontalDirection.Left;
      var draggingRight = hDirection === HorizontalDirection.Right;
      var allMovingColumns = params.allMovingColumns;
      if (dragSourceType === DragSourceType.HeaderCell) {
        var newCols_1 = [];
        allMovingColumns.forEach(function(col) {
          var movingGroup = null;
          var parent2 = col.getParent();
          while (parent2 != null && parent2.getDisplayedLeafColumns().length === 1) {
            movingGroup = parent2;
            parent2 = parent2.getParent();
          }
          if (movingGroup != null) {
            movingGroup.getLeafColumns().forEach(function(newCol) {
              if (!newCols_1.includes(newCol)) {
                newCols_1.push(newCol);
              }
            });
          } else if (!newCols_1.includes(col)) {
            newCols_1.push(col);
          }
        });
        allMovingColumns = newCols_1;
      }
      var allMovingColumnsOrdered = allMovingColumns.slice();
      this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);
      var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);
      var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);
      if (validMoves.length === 0) {
        return;
      }
      var firstValidMove = validMoves[0];
      var constrainDirection = oldIndex !== null && !fromEnter;
      if (dragSourceType == DragSourceType.HeaderCell) {
        constrainDirection = oldIndex !== null;
      }
      if (constrainDirection && !fakeEvent) {
        if (draggingLeft && firstValidMove >= oldIndex) {
          return;
        }
        if (draggingRight && firstValidMove <= oldIndex) {
          return;
        }
      }
      var displayedCols = this.columnModel.getAllDisplayedColumns();
      var potentialMoves = [];
      var targetOrder = null;
      for (var i2 = 0; i2 < validMoves.length; i2++) {
        var move = validMoves[i2];
        var order = this.columnModel.getProposedColumnOrder(allMovingColumnsOrdered, move);
        if (!this.columnModel.doesOrderPassRules(order)) {
          continue;
        }
        var displayedOrder = order.filter(function(col) {
          return displayedCols.includes(col);
        });
        if (targetOrder === null) {
          targetOrder = displayedOrder;
        } else if (!_2.areEqual(displayedOrder, targetOrder)) {
          break;
        }
        var fragCount = this.groupFragCount(order);
        potentialMoves.push({ move, fragCount });
      }
      if (potentialMoves.length === 0) {
        return;
      }
      potentialMoves.sort(function(a2, b2) {
        return a2.fragCount - b2.fragCount;
      });
      this.moveColumns(allMovingColumns, potentialMoves[0].move, "uiColumnMoved", false);
    };
    MoveColumnFeature2.prototype.calculateOldIndex = function(movingCols) {
      var gridCols = this.columnModel.getAllGridColumns();
      var indexes = sortNumerically(movingCols.map(function(col) {
        return gridCols.indexOf(col);
      }));
      var firstIndex = indexes[0];
      var lastIndex = last(indexes);
      var spread = lastIndex - firstIndex;
      var gapsExist = spread !== indexes.length - 1;
      return gapsExist ? null : firstIndex;
    };
    MoveColumnFeature2.prototype.moveColumns = function(columns, toIndex, source, finished) {
      this.columnModel.moveColumns(columns, toIndex, source, finished);
      this.lastMovedInfo = finished ? null : { columns, toIndex };
    };
    MoveColumnFeature2.prototype.groupFragCount = function(columns) {
      function parents(col) {
        var result = [];
        var parent2 = col.getOriginalParent();
        while (parent2 != null) {
          result.push(parent2);
          parent2 = parent2.getOriginalParent();
        }
        return result;
      }
      var count = 0;
      var _loop_1 = function(i3) {
        var _a47;
        var a2 = parents(columns[i3]);
        var b2 = parents(columns[i3 + 1]);
        _a47 = __read12(a2.length > b2.length ? [a2, b2] : [b2, a2], 2), a2 = _a47[0], b2 = _a47[1];
        a2.forEach(function(parent2) {
          if (b2.indexOf(parent2) === -1) {
            count++;
          }
        });
      };
      for (var i2 = 0; i2 < columns.length - 1; i2++) {
        _loop_1(i2);
      }
      return count;
    };
    MoveColumnFeature2.prototype.calculateValidMoves = function(movingCols, draggingRight, mouseX) {
      var isMoveBlocked = this.gridOptionsService.is("suppressMovableColumns") || movingCols.some(function(col2) {
        return col2.getColDef().suppressMovable;
      });
      if (isMoveBlocked) {
        return [];
      }
      var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);
      var allGridCols = this.columnModel.getAllGridColumns();
      var movingDisplayedCols = allDisplayedCols.filter(function(col2) {
        return includes(movingCols, col2);
      });
      var otherDisplayedCols = allDisplayedCols.filter(function(col2) {
        return !includes(movingCols, col2);
      });
      var otherGridCols = allGridCols.filter(function(col2) {
        return !includes(movingCols, col2);
      });
      var displayIndex = 0;
      var availableWidth = mouseX;
      if (draggingRight) {
        var widthOfMovingDisplayedCols_1 = 0;
        movingDisplayedCols.forEach(function(col2) {
          return widthOfMovingDisplayedCols_1 += col2.getActualWidth();
        });
        availableWidth -= widthOfMovingDisplayedCols_1;
      }
      if (availableWidth > 0) {
        for (var i2 = 0; i2 < otherDisplayedCols.length; i2++) {
          var col = otherDisplayedCols[i2];
          availableWidth -= col.getActualWidth();
          if (availableWidth < 0) {
            break;
          }
          displayIndex++;
        }
        if (draggingRight) {
          displayIndex++;
        }
      }
      var firstValidMove;
      if (displayIndex > 0) {
        var leftColumn = otherDisplayedCols[displayIndex - 1];
        firstValidMove = otherGridCols.indexOf(leftColumn) + 1;
      } else {
        firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);
        if (firstValidMove === -1) {
          firstValidMove = 0;
        }
      }
      var validMoves = [firstValidMove];
      var numberComparator = function(a2, b2) {
        return a2 - b2;
      };
      if (draggingRight) {
        var pointer = firstValidMove + 1;
        var lastIndex = allGridCols.length - 1;
        while (pointer <= lastIndex) {
          validMoves.push(pointer);
          pointer++;
        }
        validMoves.sort(numberComparator);
      } else {
        var pointer = firstValidMove;
        var lastIndex = allGridCols.length - 1;
        var displacedCol = allGridCols[pointer];
        while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {
          pointer++;
          validMoves.push(pointer);
          displacedCol = allGridCols[pointer];
        }
        pointer = firstValidMove - 1;
        var firstDisplayIndex = 0;
        while (pointer >= firstDisplayIndex) {
          validMoves.push(pointer);
          pointer--;
        }
        validMoves.sort(numberComparator).reverse();
      }
      return validMoves;
    };
    MoveColumnFeature2.prototype.isColumnHidden = function(displayedColumns, col) {
      return displayedColumns.indexOf(col) < 0;
    };
    MoveColumnFeature2.prototype.ensureIntervalStarted = function() {
      if (!this.movingIntervalId) {
        this.intervalCount = 0;
        this.failedMoveAttempts = 0;
        this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);
        if (this.needToMoveLeft) {
          this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);
        } else {
          this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);
        }
      }
    };
    MoveColumnFeature2.prototype.ensureIntervalCleared = function() {
      if (this.movingIntervalId) {
        window.clearInterval(this.movingIntervalId);
        this.movingIntervalId = null;
        this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);
      }
    };
    MoveColumnFeature2.prototype.moveInterval = function() {
      var pixelsToMove;
      this.intervalCount++;
      pixelsToMove = 10 + this.intervalCount * 5;
      if (pixelsToMove > 100) {
        pixelsToMove = 100;
      }
      var pixelsMoved = null;
      var scrollFeature = this.gridBodyCon.getScrollFeature();
      if (this.needToMoveLeft) {
        pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);
      } else if (this.needToMoveRight) {
        pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);
      }
      if (pixelsMoved !== 0) {
        this.onDragging(this.lastDraggingEvent);
        this.failedMoveAttempts = 0;
      } else {
        this.failedMoveAttempts++;
        var columns = this.lastDraggingEvent.dragItem.columns;
        var columnsThatCanPin = columns.filter(function(c2) {
          return !c2.getColDef().lockPinned;
        });
        if (columnsThatCanPin.length > 0) {
          this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);
          if (this.failedMoveAttempts > 7) {
            var pinType = this.needToMoveLeft ? "left" : "right";
            this.setColumnsPinned(columnsThatCanPin, pinType, "uiColumnDragged");
            this.dragAndDropService.nudge();
          }
        }
      }
    };
    __decorate71([
      Autowired("columnModel")
    ], MoveColumnFeature2.prototype, "columnModel", void 0);
    __decorate71([
      Autowired("dragAndDropService")
    ], MoveColumnFeature2.prototype, "dragAndDropService", void 0);
    __decorate71([
      Autowired("gridOptionsService")
    ], MoveColumnFeature2.prototype, "gridOptionsService", void 0);
    __decorate71([
      Autowired("ctrlsService")
    ], MoveColumnFeature2.prototype, "ctrlsService", void 0);
    __decorate71([
      PostConstruct
    ], MoveColumnFeature2.prototype, "init", null);
    return MoveColumnFeature2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/bodyDropTarget.js
var __extends81 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate72 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var BodyDropTarget = (
  /** @class */
  function(_super) {
    __extends81(BodyDropTarget2, _super);
    function BodyDropTarget2(pinned, eContainer) {
      var _this = _super.call(this) || this;
      _this.pinned = pinned;
      _this.eContainer = eContainer;
      return _this;
    }
    BodyDropTarget2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        switch (_this.pinned) {
          case "left":
            _this.eSecondaryContainers = [
              [p2.gridBodyCtrl.getBodyViewportElement(), p2.leftRowContainerCtrl.getContainerElement()],
              [p2.bottomLeftRowContainerCtrl.getContainerElement()],
              [p2.topLeftRowContainerCtrl.getContainerElement()]
            ];
            break;
          case "right":
            _this.eSecondaryContainers = [
              [p2.gridBodyCtrl.getBodyViewportElement(), p2.rightRowContainerCtrl.getContainerElement()],
              [p2.bottomRightRowContainerCtrl.getContainerElement()],
              [p2.topRightRowContainerCtrl.getContainerElement()]
            ];
            break;
          default:
            _this.eSecondaryContainers = [
              [p2.gridBodyCtrl.getBodyViewportElement(), p2.centerRowContainerCtrl.getViewportElement()],
              [p2.bottomCenterRowContainerCtrl.getViewportElement()],
              [p2.topCenterRowContainerCtrl.getViewportElement()]
            ];
            break;
        }
      });
    };
    BodyDropTarget2.prototype.isInterestedIn = function(type2) {
      return type2 === DragSourceType.HeaderCell || type2 === DragSourceType.ToolPanel && this.gridOptionsService.is("allowDragFromColumnsToolPanel");
    };
    BodyDropTarget2.prototype.getSecondaryContainers = function() {
      return this.eSecondaryContainers;
    };
    BodyDropTarget2.prototype.getContainer = function() {
      return this.eContainer;
    };
    BodyDropTarget2.prototype.init = function() {
      this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(this.pinned, this.eContainer));
      this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(this.pinned));
      this.dragAndDropService.addDropTarget(this);
    };
    BodyDropTarget2.prototype.getIconName = function() {
      return this.currentDropListener.getIconName();
    };
    BodyDropTarget2.prototype.isDropColumnInPivotMode = function(draggingEvent) {
      return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === DragSourceType.ToolPanel;
    };
    BodyDropTarget2.prototype.onDragEnter = function(draggingEvent) {
      this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;
      this.currentDropListener.onDragEnter(draggingEvent);
    };
    BodyDropTarget2.prototype.onDragLeave = function(params) {
      this.currentDropListener.onDragLeave(params);
    };
    BodyDropTarget2.prototype.onDragging = function(params) {
      this.currentDropListener.onDragging(params);
    };
    BodyDropTarget2.prototype.onDragStop = function(params) {
      this.currentDropListener.onDragStop(params);
    };
    __decorate72([
      Autowired("dragAndDropService")
    ], BodyDropTarget2.prototype, "dragAndDropService", void 0);
    __decorate72([
      Autowired("columnModel")
    ], BodyDropTarget2.prototype, "columnModel", void 0);
    __decorate72([
      Autowired("ctrlsService")
    ], BodyDropTarget2.prototype, "ctrlsService", void 0);
    __decorate72([
      PostConstruct
    ], BodyDropTarget2.prototype, "postConstruct", null);
    __decorate72([
      PostConstruct
    ], BodyDropTarget2.prototype, "init", null);
    return BodyDropTarget2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/cssClassApplier.js
var __read13 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread9 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read13(arguments[i2]));
  return ar;
};
var CssClassApplier = (
  /** @class */
  function() {
    function CssClassApplier2() {
    }
    CssClassApplier2.getHeaderClassesFromColDef = function(abstractColDef, gridOptionsService, column, columnGroup) {
      if (missing(abstractColDef)) {
        return [];
      }
      return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsService, column, columnGroup);
    };
    CssClassApplier2.getToolPanelClassesFromColDef = function(abstractColDef, gridOptionsService, column, columnGroup) {
      if (missing(abstractColDef)) {
        return [];
      }
      return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsService, column, columnGroup);
    };
    CssClassApplier2.getClassParams = function(abstractColDef, gridOptionsService, column, columnGroup) {
      return {
        // bad naming, as colDef here can be a group or a column,
        // however most people won't appreciate the difference,
        // so keeping it as colDef to avoid confusion.
        colDef: abstractColDef,
        column,
        columnGroup,
        api: gridOptionsService.get("api"),
        columnApi: gridOptionsService.get("columnApi"),
        context: gridOptionsService.get("context")
      };
    };
    CssClassApplier2.getColumnClassesFromCollDef = function(classesOrFunc, abstractColDef, gridOptionsService, column, columnGroup) {
      if (missing(classesOrFunc)) {
        return [];
      }
      var classToUse;
      if (typeof classesOrFunc === "function") {
        var params = this.getClassParams(abstractColDef, gridOptionsService, column, columnGroup);
        classToUse = classesOrFunc(params);
      } else {
        classToUse = classesOrFunc;
      }
      if (typeof classToUse === "string") {
        return [classToUse];
      }
      if (Array.isArray(classToUse)) {
        return __spread9(classToUse);
      }
      return [];
    };
    return CssClassApplier2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerCellComp.js
var __extends82 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate73 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderCellComp = (
  /** @class */
  function(_super) {
    __extends82(HeaderCellComp2, _super);
    function HeaderCellComp2(ctrl) {
      var _this = _super.call(this, HeaderCellComp2.TEMPLATE, ctrl) || this;
      _this.headerCompVersion = 0;
      _this.column = ctrl.getColumnGroupChild();
      _this.pinned = ctrl.getPinned();
      return _this;
    }
    HeaderCellComp2.prototype.postConstruct = function() {
      var _this = this;
      var eGui = this.getGui();
      var setAttribute = function(name, value, element) {
        var actualElement = element ? element : eGui;
        if (value != null && value != "") {
          actualElement.setAttribute(name, value);
        } else {
          actualElement.removeAttribute(name);
        }
      };
      var compProxy = {
        setWidth: function(width) {
          return eGui.style.width = width;
        },
        addOrRemoveCssClass: function(cssClassName, on2) {
          return _this.addOrRemoveCssClass(cssClassName, on2);
        },
        setColId: function(id) {
          return setAttribute("col-id", id);
        },
        setTitle: function(title) {
          return setAttribute("title", title);
        },
        setAriaDescription: function(label) {
          return setAriaDescription(eGui, label);
        },
        setAriaSort: function(sort) {
          return sort ? setAriaSort(eGui, sort) : removeAriaSort(eGui);
        },
        setUserCompDetails: function(compDetails) {
          return _this.setUserCompDetails(compDetails);
        },
        getUserCompInstance: function() {
          return _this.headerComp;
        }
      };
      this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper);
      var selectAllGui = this.ctrl.getSelectAllGui();
      this.eResize.insertAdjacentElement("afterend", selectAllGui);
    };
    HeaderCellComp2.prototype.destroyHeaderComp = function() {
      if (this.headerComp) {
        this.eHeaderCompWrapper.removeChild(this.headerCompGui);
        this.headerComp = this.destroyBean(this.headerComp);
        this.headerCompGui = void 0;
      }
    };
    HeaderCellComp2.prototype.setUserCompDetails = function(compDetails) {
      var _this = this;
      this.headerCompVersion++;
      var versionCopy = this.headerCompVersion;
      compDetails.newAgStackInstance().then(function(comp) {
        return _this.afterCompCreated(versionCopy, comp);
      });
    };
    HeaderCellComp2.prototype.afterCompCreated = function(version, headerComp) {
      if (version != this.headerCompVersion || !this.isAlive()) {
        this.destroyBean(headerComp);
        return;
      }
      this.destroyHeaderComp();
      this.headerComp = headerComp;
      this.headerCompGui = headerComp.getGui();
      this.eHeaderCompWrapper.appendChild(this.headerCompGui);
      this.ctrl.setDragSource(this.getGui());
    };
    HeaderCellComp2.TEMPLATE = '<div class="ag-header-cell" role="columnheader" tabindex="-1">\n            <div ref="eResize" class="ag-header-cell-resize" role="presentation"></div>\n            <div ref="eHeaderCompWrapper" class="ag-header-cell-comp-wrapper" role="presentation"></div>\n        </div>';
    __decorate73([
      RefSelector("eResize")
    ], HeaderCellComp2.prototype, "eResize", void 0);
    __decorate73([
      RefSelector("eHeaderCompWrapper")
    ], HeaderCellComp2.prototype, "eHeaderCompWrapper", void 0);
    __decorate73([
      PostConstruct
    ], HeaderCellComp2.prototype, "postConstruct", null);
    __decorate73([
      PreDestroy
    ], HeaderCellComp2.prototype, "destroyHeaderComp", null);
    return HeaderCellComp2;
  }(AbstractHeaderCellComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupCellComp.js
var __extends83 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate74 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderGroupCellComp = (
  /** @class */
  function(_super) {
    __extends83(HeaderGroupCellComp2, _super);
    function HeaderGroupCellComp2(ctrl) {
      return _super.call(this, HeaderGroupCellComp2.TEMPLATE, ctrl) || this;
    }
    HeaderGroupCellComp2.prototype.postConstruct = function() {
      var _this = this;
      var eGui = this.getGui();
      var setAttribute = function(key, value) {
        return value != void 0 ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);
      };
      var compProxy = {
        addOrRemoveCssClass: function(cssClassName, on2) {
          return _this.addOrRemoveCssClass(cssClassName, on2);
        },
        setResizableDisplayed: function(displayed) {
          return setDisplayed(_this.eResize, displayed);
        },
        setWidth: function(width) {
          return eGui.style.width = width;
        },
        setColId: function(id) {
          return eGui.setAttribute("col-id", id);
        },
        setAriaExpanded: function(expanded) {
          return setAttribute("aria-expanded", expanded);
        },
        setTitle: function(title) {
          return setAttribute("title", title);
        },
        setUserCompDetails: function(details) {
          return _this.setUserCompDetails(details);
        }
      };
      this.ctrl.setComp(compProxy, eGui, this.eResize);
    };
    HeaderGroupCellComp2.prototype.setUserCompDetails = function(details) {
      var _this = this;
      details.newAgStackInstance().then(function(comp) {
        return _this.afterHeaderCompCreated(comp);
      });
    };
    HeaderGroupCellComp2.prototype.afterHeaderCompCreated = function(headerGroupComp) {
      var _this = this;
      var destroyFunc = function() {
        return _this.destroyBean(headerGroupComp);
      };
      if (!this.isAlive()) {
        destroyFunc();
        return;
      }
      this.getGui().appendChild(headerGroupComp.getGui());
      this.addDestroyFunc(destroyFunc);
      this.ctrl.setDragSource(headerGroupComp.getGui());
    };
    HeaderGroupCellComp2.TEMPLATE = '<div class="ag-header-group-cell" role="columnheader" tabindex="-1">\n            <div ref="eResize" class="ag-header-cell-resize" role="presentation"></div>\n        </div>';
    __decorate74([
      Autowired("userComponentFactory")
    ], HeaderGroupCellComp2.prototype, "userComponentFactory", void 0);
    __decorate74([
      RefSelector("eResize")
    ], HeaderGroupCellComp2.prototype, "eResize", void 0);
    __decorate74([
      PostConstruct
    ], HeaderGroupCellComp2.prototype, "postConstruct", null);
    return HeaderGroupCellComp2;
  }(AbstractHeaderCellComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/row/headerRowComp.js
var __extends84 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate75 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderRowType;
(function(HeaderRowType2) {
  HeaderRowType2["COLUMN_GROUP"] = "group";
  HeaderRowType2["COLUMN"] = "column";
  HeaderRowType2["FLOATING_FILTER"] = "filter";
})(HeaderRowType || (HeaderRowType = {}));
var HeaderRowComp = (
  /** @class */
  function(_super) {
    __extends84(HeaderRowComp2, _super);
    function HeaderRowComp2(ctrl) {
      var _this = _super.call(this) || this;
      _this.headerComps = {};
      var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? "ag-header-row-column-group" : ctrl.getType() == HeaderRowType.FLOATING_FILTER ? "ag-header-row-column-filter" : "ag-header-row-column";
      _this.setTemplate(
        /* html */
        '<div class="ag-header-row ' + extraClass + '" role="row"></div>'
      );
      _this.ctrl = ctrl;
      return _this;
    }
    HeaderRowComp2.prototype.init = function() {
      var _this = this;
      var compProxy = {
        setTransform: function(transform) {
          return _this.getGui().style.transform = transform;
        },
        setHeight: function(height) {
          return _this.getGui().style.height = height;
        },
        setTop: function(top) {
          return _this.getGui().style.top = top;
        },
        setHeaderCtrls: function(ctrls) {
          return _this.setHeaderCtrls(ctrls);
        },
        setWidth: function(width) {
          return _this.getGui().style.width = width;
        },
        setAriaRowIndex: function(rowIndex) {
          return setAriaRowIndex(_this.getGui(), rowIndex);
        }
      };
      this.ctrl.setComp(compProxy);
    };
    HeaderRowComp2.prototype.destroyHeaderCtrls = function() {
      this.setHeaderCtrls([]);
    };
    HeaderRowComp2.prototype.setHeaderCtrls = function(ctrls) {
      var _this = this;
      if (!this.isAlive()) {
        return;
      }
      var oldComps = this.headerComps;
      this.headerComps = {};
      ctrls.forEach(function(ctrl) {
        var id = ctrl.getInstanceId();
        var comp = oldComps[id];
        delete oldComps[id];
        if (comp == null) {
          comp = _this.createHeaderComp(ctrl);
          _this.getGui().appendChild(comp.getGui());
        }
        _this.headerComps[id] = comp;
      });
      iterateObject(oldComps, function(id, comp) {
        _this.getGui().removeChild(comp.getGui());
        _this.destroyBean(comp);
      });
      var isEnsureDomOrder = this.gridOptionsService.is("ensureDomOrder");
      var isPrintLayout = this.gridOptionsService.isDomLayout("print");
      if (isEnsureDomOrder || isPrintLayout) {
        var comps = getAllValuesInObject(this.headerComps);
        comps.sort(function(a2, b2) {
          var leftA = a2.getCtrl().getColumnGroupChild().getLeft();
          var leftB = b2.getCtrl().getColumnGroupChild().getLeft();
          return leftA - leftB;
        });
        var elementsInOrder = comps.map(function(c2) {
          return c2.getGui();
        });
        setDomChildOrder(this.getGui(), elementsInOrder);
      }
    };
    HeaderRowComp2.prototype.createHeaderComp = function(headerCtrl) {
      var result;
      switch (this.ctrl.getType()) {
        case HeaderRowType.COLUMN_GROUP:
          result = new HeaderGroupCellComp(headerCtrl);
          break;
        case HeaderRowType.FLOATING_FILTER:
          result = new HeaderFilterCellComp(headerCtrl);
          break;
        default:
          result = new HeaderCellComp(headerCtrl);
          break;
      }
      this.createBean(result);
      result.setParentComponent(this);
      return result;
    };
    __decorate75([
      PostConstruct
    ], HeaderRowComp2.prototype, "init", null);
    __decorate75([
      PreDestroy
    ], HeaderRowComp2.prototype, "destroyHeaderCtrls", null);
    return HeaderRowComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/abstractCell/abstractHeaderCellCtrl.js
var __extends85 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate76 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var instanceIdSequence4 = 0;
var AbstractHeaderCellCtrl = (
  /** @class */
  function(_super) {
    __extends85(AbstractHeaderCellCtrl2, _super);
    function AbstractHeaderCellCtrl2(columnGroupChild, parentRowCtrl) {
      var _this = _super.call(this) || this;
      _this.lastFocusEvent = null;
      _this.columnGroupChild = columnGroupChild;
      _this.parentRowCtrl = parentRowCtrl;
      _this.instanceId = columnGroupChild.getUniqueId() + "-" + instanceIdSequence4++;
      return _this;
    }
    AbstractHeaderCellCtrl2.prototype.shouldStopEventPropagation = function(e2) {
      var _a47 = this.focusService.getFocusedHeader(), headerRowIndex = _a47.headerRowIndex, column = _a47.column;
      return isUserSuppressingHeaderKeyboardEvent(this.gridOptionsService, e2, headerRowIndex, column);
    };
    AbstractHeaderCellCtrl2.prototype.getWrapperHasFocus = function() {
      var eDocument = this.gridOptionsService.getDocument();
      var activeEl = eDocument.activeElement;
      return activeEl === this.eGui;
    };
    AbstractHeaderCellCtrl2.prototype.setGui = function(eGui) {
      this.eGui = eGui;
      this.addDomData();
    };
    AbstractHeaderCellCtrl2.prototype.handleKeyDown = function(e2) {
      var wrapperHasFocus = this.getWrapperHasFocus();
      switch (e2.key) {
        case KeyCode.PAGE_DOWN:
        case KeyCode.PAGE_UP:
        case KeyCode.PAGE_HOME:
        case KeyCode.PAGE_END:
          if (wrapperHasFocus) {
            e2.preventDefault();
          }
      }
    };
    AbstractHeaderCellCtrl2.prototype.addDomData = function() {
      var _this = this;
      var key = AbstractHeaderCellCtrl2.DOM_DATA_KEY_HEADER_CTRL;
      this.gridOptionsService.setDomData(this.eGui, key, this);
      this.addDestroyFunc(function() {
        return _this.gridOptionsService.setDomData(_this.eGui, key, null);
      });
    };
    AbstractHeaderCellCtrl2.prototype.getGui = function() {
      return this.eGui;
    };
    AbstractHeaderCellCtrl2.prototype.focus = function(event) {
      if (!this.eGui) {
        return false;
      }
      this.lastFocusEvent = event || null;
      this.eGui.focus();
      return true;
    };
    AbstractHeaderCellCtrl2.prototype.getRowIndex = function() {
      return this.parentRowCtrl.getRowIndex();
    };
    AbstractHeaderCellCtrl2.prototype.getParentRowCtrl = function() {
      return this.parentRowCtrl;
    };
    AbstractHeaderCellCtrl2.prototype.getPinned = function() {
      return this.parentRowCtrl.getPinned();
    };
    AbstractHeaderCellCtrl2.prototype.getInstanceId = function() {
      return this.instanceId;
    };
    AbstractHeaderCellCtrl2.prototype.getColumnGroupChild = function() {
      return this.columnGroupChild;
    };
    AbstractHeaderCellCtrl2.DOM_DATA_KEY_HEADER_CTRL = "headerCtrl";
    __decorate76([
      Autowired("focusService")
    ], AbstractHeaderCellCtrl2.prototype, "focusService", void 0);
    __decorate76([
      Autowired("beans")
    ], AbstractHeaderCellCtrl2.prototype, "beans", void 0);
    __decorate76([
      Autowired("userComponentFactory")
    ], AbstractHeaderCellCtrl2.prototype, "userComponentFactory", void 0);
    return AbstractHeaderCellCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/iClientSideRowModel.js
var ClientSideRowModelSteps;
(function(ClientSideRowModelSteps2) {
  ClientSideRowModelSteps2["EVERYTHING"] = "group";
  ClientSideRowModelSteps2["FILTER"] = "filter";
  ClientSideRowModelSteps2["SORT"] = "sort";
  ClientSideRowModelSteps2["MAP"] = "map";
  ClientSideRowModelSteps2["AGGREGATE"] = "aggregate";
  ClientSideRowModelSteps2["FILTER_AGGREGATES"] = "filter_aggregates";
  ClientSideRowModelSteps2["PIVOT"] = "pivot";
  ClientSideRowModelSteps2["NOTHING"] = "nothing";
})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/gridApi.js
var __decorate77 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
function unwrapUserComp(comp) {
  var compAsAny = comp;
  var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;
  return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;
}
var GridApi = (
  /** @class */
  function() {
    function GridApi2() {
      this.detailGridInfoMap = {};
      this.destroyCalled = false;
    }
    GridApi2.prototype.registerOverlayWrapperComp = function(overlayWrapperComp) {
      this.overlayWrapperComp = overlayWrapperComp;
    };
    GridApi2.prototype.registerSideBarComp = function(sideBarComp) {
      this.sideBarComp = sideBarComp;
    };
    GridApi2.prototype.init = function() {
      var _this = this;
      switch (this.rowModel.getType()) {
        case "clientSide":
          this.clientSideRowModel = this.rowModel;
          break;
        case "infinite":
          this.infiniteRowModel = this.rowModel;
          break;
        case "serverSide":
          this.serverSideRowModel = this.rowModel;
          break;
      }
      this.ctrlsService.whenReady(function() {
        _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
      });
    };
    GridApi2.prototype.__getAlignedGridService = function() {
      return this.alignedGridsService;
    };
    GridApi2.prototype.__getContext = function() {
      return this.context;
    };
    GridApi2.prototype.getSetterMethod = function(key) {
      return "set" + key.charAt(0).toUpperCase() + key.substring(1);
    };
    GridApi2.prototype.__setProperty = function(propertyName, value) {
      this.gridOptionsService.set(propertyName, value);
      var setterName = this.getSetterMethod(propertyName);
      var dynamicApi = this;
      if (dynamicApi[setterName]) {
        dynamicApi[setterName](value);
      }
    };
    GridApi2.prototype.addDetailGridInfo = function(id, gridInfo) {
      this.detailGridInfoMap[id] = gridInfo;
    };
    GridApi2.prototype.removeDetailGridInfo = function(id) {
      this.detailGridInfoMap[id] = void 0;
    };
    GridApi2.prototype.getDetailGridInfo = function(id) {
      return this.detailGridInfoMap[id];
    };
    GridApi2.prototype.forEachDetailGridInfo = function(callback) {
      var index = 0;
      iterateObject(this.detailGridInfoMap, function(id, gridInfo) {
        if (exists(gridInfo)) {
          callback(gridInfo, index);
          index++;
        }
      });
    };
    GridApi2.prototype.getDataAsCsv = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, "api.getDataAsCsv")) {
        return this.csvCreator.getDataAsCsv(params);
      }
    };
    GridApi2.prototype.exportDataAsCsv = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, "api.exportDataAsCSv")) {
        this.csvCreator.exportDataAsCsv(params);
      }
    };
    GridApi2.prototype.getExcelExportMode = function(params) {
      var baseParams = this.gridOptionsService.get("defaultExcelExportParams");
      var mergedParams = Object.assign({ exportMode: "xlsx" }, baseParams, params);
      return mergedParams.exportMode;
    };
    GridApi2.prototype.assertNotExcelMultiSheet = function(method, params) {
      if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, "api." + method)) {
        return false;
      }
      var exportMode = this.getExcelExportMode(params);
      if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {
        console.warn("AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling 'api.getMultipleSheetAsExcel()' or 'api.exportMultipleSheetsAsExcel()'");
        return false;
      }
      return true;
    };
    GridApi2.prototype.getDataAsExcel = function(params) {
      if (this.assertNotExcelMultiSheet("getDataAsExcel", params)) {
        return this.excelCreator.getDataAsExcel(params);
      }
    };
    GridApi2.prototype.exportDataAsExcel = function(params) {
      if (this.assertNotExcelMultiSheet("exportDataAsExcel", params)) {
        this.excelCreator.exportDataAsExcel(params);
      }
    };
    GridApi2.prototype.getSheetDataForExcel = function(params) {
      if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, "api.getSheetDataForExcel")) {
        return;
      }
      var exportMode = this.getExcelExportMode(params);
      this.excelCreator.setFactoryMode(ExcelFactoryMode.MULTI_SHEET, exportMode);
      return this.excelCreator.getSheetDataForExcel(params);
    };
    GridApi2.prototype.getMultipleSheetsAsExcel = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, "api.getMultipleSheetsAsExcel")) {
        return this.excelCreator.getMultipleSheetsAsExcel(params);
      }
    };
    GridApi2.prototype.exportMultipleSheetsAsExcel = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, "api.exportMultipleSheetsAsExcel")) {
        return this.excelCreator.exportMultipleSheetsAsExcel(params);
      }
    };
    GridApi2.prototype.setGridAriaProperty = function(property, value) {
      if (!property) {
        return;
      }
      var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();
      var ariaProperty = "aria-" + property;
      if (value === null) {
        eGrid.removeAttribute(ariaProperty);
      } else {
        eGrid.setAttribute(ariaProperty, value);
      }
    };
    GridApi2.prototype.logMissingRowModel = function(apiMethod) {
      var requiredRowModels = [];
      for (var _i = 1; _i < arguments.length; _i++) {
        requiredRowModels[_i - 1] = arguments[_i];
      }
      console.error("AG Grid: api." + apiMethod + " can only be called when gridOptions.rowModelType is " + requiredRowModels.join(" or "));
    };
    GridApi2.prototype.setServerSideDatasource = function(datasource) {
      if (this.serverSideRowModel) {
        this.serverSideRowModel.setDatasource(datasource);
      } else {
        this.logMissingRowModel("setServerSideDatasource", "serverSide");
      }
    };
    GridApi2.prototype.setCacheBlockSize = function(blockSize) {
      if (this.serverSideRowModel) {
        this.gridOptionsService.set("cacheBlockSize", blockSize);
        this.serverSideRowModel.resetRootStore();
      } else {
        this.logMissingRowModel("setCacheBlockSize", "serverSide");
      }
    };
    GridApi2.prototype.setDatasource = function(datasource) {
      if (this.gridOptionsService.isRowModelType("infinite")) {
        this.rowModel.setDatasource(datasource);
      } else {
        this.logMissingRowModel("setDatasource", "infinite");
      }
    };
    GridApi2.prototype.setViewportDatasource = function(viewportDatasource) {
      if (this.gridOptionsService.isRowModelType("viewport")) {
        this.rowModel.setViewportDatasource(viewportDatasource);
      } else {
        this.logMissingRowModel("setViewportDatasource", "viewport");
      }
    };
    GridApi2.prototype.setRowData = function(rowData) {
      var missingImmutableService = this.immutableService == null;
      if (missingImmutableService) {
        this.logMissingRowModel("setRowData", "clientSide");
        return;
      }
      if (this.immutableService.isActive()) {
        this.immutableService.setRowData(rowData);
      } else {
        this.selectionService.reset();
        this.clientSideRowModel.setRowData(rowData);
      }
    };
    GridApi2.prototype.setPinnedTopRowData = function(rows) {
      this.pinnedRowModel.setPinnedTopRowData(rows);
    };
    GridApi2.prototype.setPinnedBottomRowData = function(rows) {
      this.pinnedRowModel.setPinnedBottomRowData(rows);
    };
    GridApi2.prototype.getPinnedTopRowCount = function() {
      return this.pinnedRowModel.getPinnedTopRowCount();
    };
    GridApi2.prototype.getPinnedBottomRowCount = function() {
      return this.pinnedRowModel.getPinnedBottomRowCount();
    };
    GridApi2.prototype.getPinnedTopRow = function(index) {
      return this.pinnedRowModel.getPinnedTopRow(index);
    };
    GridApi2.prototype.getPinnedBottomRow = function(index) {
      return this.pinnedRowModel.getPinnedBottomRow(index);
    };
    GridApi2.prototype.setColumnDefs = function(colDefs, source) {
      if (source === void 0) {
        source = "api";
      }
      this.columnModel.setColumnDefs(colDefs, source);
      this.gridOptionsService.set("columnDefs", colDefs, true, { source });
    };
    GridApi2.prototype.setAutoGroupColumnDef = function(colDef, source) {
      if (source === void 0) {
        source = "api";
      }
      this.gridOptionsService.set("autoGroupColumnDef", colDef, true, { source });
    };
    GridApi2.prototype.setDefaultColDef = function(colDef, source) {
      if (source === void 0) {
        source = "api";
      }
      this.gridOptionsService.set("defaultColDef", colDef, true, { source });
    };
    GridApi2.prototype.expireValueCache = function() {
      this.valueCache.expire();
    };
    GridApi2.prototype.getVerticalPixelRange = function() {
      return this.gridBodyCtrl.getScrollFeature().getVScrollPosition();
    };
    GridApi2.prototype.getHorizontalPixelRange = function() {
      return this.gridBodyCtrl.getScrollFeature().getHScrollPosition();
    };
    GridApi2.prototype.setAlwaysShowHorizontalScroll = function(show) {
      this.gridOptionsService.set("alwaysShowHorizontalScroll", show);
    };
    GridApi2.prototype.setAlwaysShowVerticalScroll = function(show) {
      this.gridOptionsService.set("alwaysShowVerticalScroll", show);
    };
    GridApi2.prototype.refreshCells = function(params) {
      if (params === void 0) {
        params = {};
      }
      this.rowRenderer.refreshCells(params);
    };
    GridApi2.prototype.flashCells = function(params) {
      if (params === void 0) {
        params = {};
      }
      this.rowRenderer.flashCells(params);
    };
    GridApi2.prototype.redrawRows = function(params) {
      if (params === void 0) {
        params = {};
      }
      var rowNodes = params ? params.rowNodes : void 0;
      this.rowRenderer.redrawRows(rowNodes);
    };
    GridApi2.prototype.setFunctionsReadOnly = function(readOnly) {
      this.gridOptionsService.set("functionsReadOnly", readOnly);
    };
    GridApi2.prototype.refreshHeader = function() {
      this.ctrlsService.getHeaderRowContainerCtrls().forEach(function(c2) {
        return c2.refresh();
      });
    };
    GridApi2.prototype.isAnyFilterPresent = function() {
      return this.filterManager.isAnyFilterPresent();
    };
    GridApi2.prototype.isColumnFilterPresent = function() {
      return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();
    };
    GridApi2.prototype.isQuickFilterPresent = function() {
      return this.filterManager.isQuickFilterPresent();
    };
    GridApi2.prototype.getModel = function() {
      return this.rowModel;
    };
    GridApi2.prototype.setRowNodeExpanded = function(rowNode, expanded) {
      if (rowNode) {
        rowNode.setExpanded(expanded);
      }
    };
    GridApi2.prototype.onGroupExpandedOrCollapsed = function() {
      if (missing(this.clientSideRowModel)) {
        this.logMissingRowModel("onGroupExpandedOrCollapsed", "clientSide");
        return;
      }
      this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.MAP });
    };
    GridApi2.prototype.refreshClientSideRowModel = function(step) {
      if (missing(this.clientSideRowModel)) {
        this.logMissingRowModel("refreshClientSideRowModel", "clientSide");
        return;
      }
      this.clientSideRowModel.refreshModel(step);
    };
    GridApi2.prototype.isAnimationFrameQueueEmpty = function() {
      return this.animationFrameService.isQueueEmpty();
    };
    GridApi2.prototype.flushAllAnimationFrames = function() {
      this.animationFrameService.flushAllFrames();
    };
    GridApi2.prototype.getRowNode = function(id) {
      return this.rowModel.getRowNode(id);
    };
    GridApi2.prototype.getSizesForCurrentTheme = function() {
      return {
        rowHeight: this.gridOptionsService.getRowHeightAsNumber(),
        headerHeight: this.columnModel.getHeaderHeight()
      };
    };
    GridApi2.prototype.expandAll = function() {
      if (this.clientSideRowModel) {
        this.clientSideRowModel.expandOrCollapseAll(true);
      } else if (this.serverSideRowModel) {
        this.serverSideRowModel.expandAll(true);
      } else {
        this.logMissingRowModel("expandAll", "clientSide", "serverSide");
      }
    };
    GridApi2.prototype.collapseAll = function() {
      if (this.clientSideRowModel) {
        this.clientSideRowModel.expandOrCollapseAll(false);
      } else if (this.serverSideRowModel) {
        this.serverSideRowModel.expandAll(false);
      } else {
        this.logMissingRowModel("expandAll", "clientSide", "serverSide");
      }
    };
    GridApi2.prototype.addRenderedRowListener = function(eventName, rowIndex, callback) {
      this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);
    };
    GridApi2.prototype.setQuickFilter = function(newFilter) {
      this.gridOptionsService.set("quickFilterText", newFilter);
    };
    GridApi2.prototype.selectAll = function(source) {
      if (source === void 0) {
        source = "apiSelectAll";
      }
      this.selectionService.selectAllRowNodes(source);
    };
    GridApi2.prototype.deselectAll = function(source) {
      if (source === void 0) {
        source = "apiSelectAll";
      }
      this.selectionService.deselectAllRowNodes(source);
    };
    GridApi2.prototype.selectAllFiltered = function(source) {
      if (source === void 0) {
        source = "apiSelectAllFiltered";
      }
      this.selectionService.selectAllRowNodes(source, true);
    };
    GridApi2.prototype.deselectAllFiltered = function(source) {
      if (source === void 0) {
        source = "apiSelectAllFiltered";
      }
      this.selectionService.deselectAllRowNodes(source, true);
    };
    GridApi2.prototype.sizeColumnsToFit = function(params) {
      this.gridBodyCtrl.sizeColumnsToFit(params);
    };
    GridApi2.prototype.showLoadingOverlay = function() {
      this.overlayWrapperComp.showLoadingOverlay();
    };
    GridApi2.prototype.showNoRowsOverlay = function() {
      this.overlayWrapperComp.showNoRowsOverlay();
    };
    GridApi2.prototype.hideOverlay = function() {
      this.overlayWrapperComp.hideOverlay();
    };
    GridApi2.prototype.getSelectedNodes = function() {
      return this.selectionService.getSelectedNodes();
    };
    GridApi2.prototype.getSelectedRows = function() {
      return this.selectionService.getSelectedRows();
    };
    GridApi2.prototype.getBestCostNodeSelection = function() {
      if (missing(this.clientSideRowModel)) {
        this.logMissingRowModel("getBestCostNodeSelection", "clientSide");
        return;
      }
      return this.selectionService.getBestCostNodeSelection();
    };
    GridApi2.prototype.getRenderedNodes = function() {
      return this.rowRenderer.getRenderedNodes();
    };
    GridApi2.prototype.ensureColumnVisible = function(key, position) {
      if (position === void 0) {
        position = "auto";
      }
      this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);
    };
    GridApi2.prototype.ensureIndexVisible = function(index, position) {
      this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);
    };
    GridApi2.prototype.ensureNodeVisible = function(nodeSelector, position) {
      if (position === void 0) {
        position = null;
      }
      this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(nodeSelector, position);
    };
    GridApi2.prototype.forEachLeafNode = function(callback) {
      if (missing(this.clientSideRowModel)) {
        this.logMissingRowModel("forEachLeafNode", "clientSide");
        return;
      }
      this.clientSideRowModel.forEachLeafNode(callback);
    };
    GridApi2.prototype.forEachNode = function(callback, includeFooterNodes) {
      this.rowModel.forEachNode(callback, includeFooterNodes);
    };
    GridApi2.prototype.forEachNodeAfterFilter = function(callback) {
      if (missing(this.clientSideRowModel)) {
        this.logMissingRowModel("forEachNodeAfterFilter", "clientSide");
        return;
      }
      this.clientSideRowModel.forEachNodeAfterFilter(callback);
    };
    GridApi2.prototype.forEachNodeAfterFilterAndSort = function(callback) {
      if (missing(this.clientSideRowModel)) {
        this.logMissingRowModel("forEachNodeAfterFilterAndSort", "clientSide");
        return;
      }
      this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);
    };
    GridApi2.prototype.getFilterInstance = function(key, callback) {
      var res = this.getFilterInstanceImpl(key, function(instance) {
        if (!callback) {
          return;
        }
        var unwrapped2 = unwrapUserComp(instance);
        callback(unwrapped2);
      });
      var unwrapped = unwrapUserComp(res);
      return unwrapped;
    };
    GridApi2.prototype.getFilterInstanceImpl = function(key, callback) {
      var column = this.columnModel.getPrimaryColumn(key);
      if (!column) {
        return void 0;
      }
      var filterPromise = this.filterManager.getFilterComponent(column, "NO_UI");
      var currentValue = filterPromise && filterPromise.resolveNow(null, function(filterComp) {
        return filterComp;
      });
      if (currentValue) {
        setTimeout(callback, 0, currentValue);
      } else if (filterPromise) {
        filterPromise.then(function(comp) {
          callback(comp);
        });
      }
      return currentValue;
    };
    GridApi2.prototype.destroyFilter = function(key) {
      var column = this.columnModel.getPrimaryColumn(key);
      if (column) {
        return this.filterManager.destroyFilter(column, "filterDestroyed");
      }
    };
    GridApi2.prototype.getStatusPanel = function(key) {
      if (!ModuleRegistry.assertRegistered(ModuleNames.StatusBarModule, "api.getStatusPanel")) {
        return;
      }
      var comp = this.statusBarService.getStatusPanel(key);
      return unwrapUserComp(comp);
    };
    GridApi2.prototype.getColumnDef = function(key) {
      var column = this.columnModel.getPrimaryColumn(key);
      if (column) {
        return column.getColDef();
      }
      return null;
    };
    GridApi2.prototype.getColumnDefs = function() {
      return this.columnModel.getColumnDefs();
    };
    GridApi2.prototype.onFilterChanged = function() {
      this.filterManager.onFilterChanged();
    };
    GridApi2.prototype.onSortChanged = function() {
      this.sortController.onSortChanged("api");
    };
    GridApi2.prototype.setFilterModel = function(model) {
      this.filterManager.setFilterModel(model);
    };
    GridApi2.prototype.getFilterModel = function() {
      return this.filterManager.getFilterModel();
    };
    GridApi2.prototype.getFocusedCell = function() {
      return this.focusService.getFocusedCell();
    };
    GridApi2.prototype.clearFocusedCell = function() {
      return this.focusService.clearFocusedCell();
    };
    GridApi2.prototype.setFocusedCell = function(rowIndex, colKey, rowPinned) {
      this.focusService.setFocusedCell({ rowIndex, column: colKey, rowPinned, forceBrowserFocus: true });
    };
    GridApi2.prototype.setSuppressRowDrag = function(value) {
      this.gridOptionsService.set("suppressRowDrag", value);
    };
    GridApi2.prototype.setSuppressMoveWhenRowDragging = function(value) {
      this.gridOptionsService.set("suppressMoveWhenRowDragging", value);
    };
    GridApi2.prototype.setSuppressRowClickSelection = function(value) {
      this.gridOptionsService.set("suppressRowClickSelection", value);
    };
    GridApi2.prototype.addRowDropZone = function(params) {
      this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);
    };
    GridApi2.prototype.removeRowDropZone = function(params) {
      var activeDropTarget = this.dragAndDropService.findExternalZone(params);
      if (activeDropTarget) {
        this.dragAndDropService.removeDropTarget(activeDropTarget);
      }
    };
    GridApi2.prototype.getRowDropZoneParams = function(events) {
      return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);
    };
    GridApi2.prototype.setHeaderHeight = function(headerHeight) {
      this.gridOptionsService.set("headerHeight", headerHeight);
    };
    GridApi2.prototype.setDomLayout = function(domLayout) {
      this.gridOptionsService.set("domLayout", domLayout);
    };
    GridApi2.prototype.setEnableCellTextSelection = function(selectable) {
      this.gridBodyCtrl.setCellTextSelection(selectable);
    };
    GridApi2.prototype.setFillHandleDirection = function(direction) {
      this.gridOptionsService.set("fillHandleDirection", direction);
    };
    GridApi2.prototype.setGroupHeaderHeight = function(headerHeight) {
      this.gridOptionsService.set("groupHeaderHeight", headerHeight);
    };
    GridApi2.prototype.setFloatingFiltersHeight = function(headerHeight) {
      this.gridOptionsService.set("floatingFiltersHeight", headerHeight);
    };
    GridApi2.prototype.setPivotHeaderHeight = function(headerHeight) {
      this.gridOptionsService.set("pivotHeaderHeight", headerHeight);
    };
    GridApi2.prototype.setPivotGroupHeaderHeight = function(headerHeight) {
      this.gridOptionsService.set("pivotGroupHeaderHeight", headerHeight);
    };
    GridApi2.prototype.setPivotMode = function(pivotMode) {
      this.columnModel.setPivotMode(pivotMode);
    };
    GridApi2.prototype.setAnimateRows = function(animateRows) {
      this.gridOptionsService.set("animateRows", animateRows);
    };
    GridApi2.prototype.setIsExternalFilterPresent = function(isExternalFilterPresentFunc) {
      this.gridOptionsService.set("isExternalFilterPresent", isExternalFilterPresentFunc);
    };
    GridApi2.prototype.setDoesExternalFilterPass = function(doesExternalFilterPassFunc) {
      this.gridOptionsService.set("doesExternalFilterPass", doesExternalFilterPassFunc);
    };
    GridApi2.prototype.setNavigateToNextCell = function(navigateToNextCellFunc) {
      this.gridOptionsService.set("navigateToNextCell", navigateToNextCellFunc);
    };
    GridApi2.prototype.setTabToNextCell = function(tabToNextCellFunc) {
      this.gridOptionsService.set("tabToNextCell", tabToNextCellFunc);
    };
    GridApi2.prototype.setTabToNextHeader = function(tabToNextHeaderFunc) {
      this.gridOptionsService.set("tabToNextHeader", tabToNextHeaderFunc);
    };
    GridApi2.prototype.setNavigateToNextHeader = function(navigateToNextHeaderFunc) {
      this.gridOptionsService.set("navigateToNextHeader", navigateToNextHeaderFunc);
    };
    GridApi2.prototype.setRowGroupPanelShow = function(rowGroupPanelShow) {
      this.gridOptionsService.set("rowGroupPanelShow", rowGroupPanelShow);
    };
    GridApi2.prototype.setGroupRowAggNodes = function(groupRowAggNodesFunc) {
      logDeprecation("27.2", "setGroupRowAggNodes", "setGetGroupRowAgg");
      this.gridOptionsService.set("groupRowAggNodes", groupRowAggNodesFunc);
    };
    GridApi2.prototype.setGetGroupRowAgg = function(getGroupRowAggFunc) {
      this.gridOptionsService.set("getGroupRowAgg", getGroupRowAggFunc);
    };
    GridApi2.prototype.setGetBusinessKeyForNode = function(getBusinessKeyForNodeFunc) {
      this.gridOptionsService.set("getBusinessKeyForNode", getBusinessKeyForNodeFunc);
    };
    GridApi2.prototype.setGetChildCount = function(getChildCountFunc) {
      this.gridOptionsService.set("getChildCount", getChildCountFunc);
    };
    GridApi2.prototype.setProcessRowPostCreate = function(processRowPostCreateFunc) {
      this.gridOptionsService.set("processRowPostCreate", processRowPostCreateFunc);
    };
    GridApi2.prototype.setGetRowNodeId = function(getRowNodeIdFunc) {
      logDeprecation("27.1", "setGetRowNodeId", "setGetRowId");
      this.gridOptionsService.set("getRowNodeId", getRowNodeIdFunc);
    };
    GridApi2.prototype.setGetRowId = function(getRowIdFunc) {
      this.gridOptionsService.set("getRowId", getRowIdFunc);
    };
    GridApi2.prototype.setGetRowClass = function(rowClassFunc) {
      this.gridOptionsService.set("getRowClass", rowClassFunc);
    };
    GridApi2.prototype.setIsFullWidthCell = function(isFullWidthCellFunc) {
      logDeprecation("27.2", "setIsFullWidthCell", "setIsFullWidthRow");
      this.gridOptionsService.set("isFullWidthCell", isFullWidthCellFunc);
    };
    GridApi2.prototype.setIsFullWidthRow = function(isFullWidthRowFunc) {
      this.gridOptionsService.set("isFullWidthRow", isFullWidthRowFunc);
    };
    GridApi2.prototype.setIsRowSelectable = function(isRowSelectableFunc) {
      this.gridOptionsService.set("isRowSelectable", isRowSelectableFunc);
    };
    GridApi2.prototype.setIsRowMaster = function(isRowMasterFunc) {
      this.gridOptionsService.set("isRowMaster", isRowMasterFunc);
    };
    GridApi2.prototype.setPostSort = function(postSortFunc) {
      logDeprecation("27.2", "setPostSort", "setPostSortRows");
      this.gridOptionsService.set("postSort", postSortFunc);
    };
    GridApi2.prototype.setPostSortRows = function(postSortRowsFunc) {
      this.gridOptionsService.set("postSortRows", postSortRowsFunc);
    };
    GridApi2.prototype.setGetDocument = function(getDocumentFunc) {
      this.gridOptionsService.set("getDocument", getDocumentFunc);
    };
    GridApi2.prototype.setGetContextMenuItems = function(getContextMenuItemsFunc) {
      this.gridOptionsService.set("getContextMenuItems", getContextMenuItemsFunc);
    };
    GridApi2.prototype.setGetMainMenuItems = function(getMainMenuItemsFunc) {
      this.gridOptionsService.set("getMainMenuItems", getMainMenuItemsFunc);
    };
    GridApi2.prototype.setProcessCellForClipboard = function(processCellForClipboardFunc) {
      this.gridOptionsService.set("processCellForClipboard", processCellForClipboardFunc);
    };
    GridApi2.prototype.setSendToClipboard = function(sendToClipboardFunc) {
      this.gridOptionsService.set("sendToClipboard", sendToClipboardFunc);
    };
    GridApi2.prototype.setProcessCellFromClipboard = function(processCellFromClipboardFunc) {
      this.gridOptionsService.set("processCellFromClipboard", processCellFromClipboardFunc);
    };
    GridApi2.prototype.setProcessSecondaryColDef = function(processSecondaryColDefFunc) {
      logDeprecation("28.0", "setProcessSecondaryColDef", "setProcessPivotResultColDef");
      this.setProcessPivotResultColDef(processSecondaryColDefFunc);
    };
    GridApi2.prototype.setProcessSecondaryColGroupDef = function(processSecondaryColGroupDefFunc) {
      logDeprecation("28.0", "setProcessSecondaryColGroupDef", "setProcessPivotResultColGroupDef");
      this.setProcessPivotResultColGroupDef(processSecondaryColGroupDefFunc);
    };
    GridApi2.prototype.setProcessPivotResultColDef = function(processPivotResultColDefFunc) {
      this.gridOptionsService.set("processPivotResultColDef", processPivotResultColDefFunc);
    };
    GridApi2.prototype.setProcessPivotResultColGroupDef = function(processPivotResultColGroupDefFunc) {
      this.gridOptionsService.set("processPivotResultColGroupDef", processPivotResultColGroupDefFunc);
    };
    GridApi2.prototype.setPostProcessPopup = function(postProcessPopupFunc) {
      this.gridOptionsService.set("postProcessPopup", postProcessPopupFunc);
    };
    GridApi2.prototype.setDefaultGroupOrderComparator = function(defaultGroupOrderComparatorFunc) {
      logDeprecation("27.2", "setDefaultGroupOrderComparator", "setInitialGroupOrderComparator");
      this.gridOptionsService.set("defaultGroupOrderComparator", defaultGroupOrderComparatorFunc);
    };
    GridApi2.prototype.setInitialGroupOrderComparator = function(initialGroupOrderComparatorFunc) {
      this.gridOptionsService.set("initialGroupOrderComparator", initialGroupOrderComparatorFunc);
    };
    GridApi2.prototype.setGetChartToolbarItems = function(getChartToolbarItemsFunc) {
      this.gridOptionsService.set("getChartToolbarItems", getChartToolbarItemsFunc);
    };
    GridApi2.prototype.setPaginationNumberFormatter = function(paginationNumberFormatterFunc) {
      this.gridOptionsService.set("paginationNumberFormatter", paginationNumberFormatterFunc);
    };
    GridApi2.prototype.setGetServerSideStoreParams = function(getServerSideStoreParamsFunc) {
      logDeprecation("28.0", "setGetServerSideStoreParams", "setGetServerSideGroupLevelParams");
      this.setGetServerSideGroupLevelParams(getServerSideStoreParamsFunc);
    };
    GridApi2.prototype.setGetServerSideGroupLevelParams = function(getServerSideGroupLevelParamsFunc) {
      this.gridOptionsService.set("getServerSideGroupLevelParams", getServerSideGroupLevelParamsFunc);
    };
    GridApi2.prototype.setIsServerSideGroupOpenByDefault = function(isServerSideGroupOpenByDefaultFunc) {
      this.gridOptionsService.set("isServerSideGroupOpenByDefault", isServerSideGroupOpenByDefaultFunc);
    };
    GridApi2.prototype.setIsApplyServerSideTransaction = function(isApplyServerSideTransactionFunc) {
      this.gridOptionsService.set("isApplyServerSideTransaction", isApplyServerSideTransactionFunc);
    };
    GridApi2.prototype.setIsServerSideGroup = function(isServerSideGroupFunc) {
      this.gridOptionsService.set("isServerSideGroup", isServerSideGroupFunc);
    };
    GridApi2.prototype.setGetServerSideGroupKey = function(getServerSideGroupKeyFunc) {
      this.gridOptionsService.set("getServerSideGroupKey", getServerSideGroupKeyFunc);
    };
    GridApi2.prototype.setGetRowStyle = function(rowStyleFunc) {
      this.gridOptionsService.set("getRowStyle", rowStyleFunc);
    };
    GridApi2.prototype.setGetRowHeight = function(rowHeightFunc) {
      this.gridOptionsService.set("getRowHeight", rowHeightFunc);
    };
    GridApi2.prototype.assertSideBarLoaded = function(apiMethod) {
      return ModuleRegistry.assertRegistered(ModuleNames.SideBarModule, "api." + apiMethod);
    };
    GridApi2.prototype.isSideBarVisible = function() {
      return this.assertSideBarLoaded("isSideBarVisible") && this.sideBarComp.isDisplayed();
    };
    GridApi2.prototype.setSideBarVisible = function(show) {
      if (this.assertSideBarLoaded("setSideBarVisible")) {
        this.sideBarComp.setDisplayed(show);
      }
    };
    GridApi2.prototype.setSideBarPosition = function(position) {
      if (this.assertSideBarLoaded("setSideBarPosition")) {
        this.sideBarComp.setSideBarPosition(position);
      }
    };
    GridApi2.prototype.openToolPanel = function(key) {
      if (this.assertSideBarLoaded("openToolPanel")) {
        this.sideBarComp.openToolPanel(key);
      }
    };
    GridApi2.prototype.closeToolPanel = function() {
      if (this.assertSideBarLoaded("closeToolPanel")) {
        this.sideBarComp.close();
      }
    };
    GridApi2.prototype.getOpenedToolPanel = function() {
      if (this.assertSideBarLoaded("getOpenedToolPanel")) {
        return this.sideBarComp.openedItem();
      }
      return null;
    };
    GridApi2.prototype.refreshToolPanel = function() {
      if (this.assertSideBarLoaded("refreshToolPanel")) {
        this.sideBarComp.refresh();
      }
    };
    GridApi2.prototype.isToolPanelShowing = function() {
      return this.assertSideBarLoaded("isToolPanelShowing") && this.sideBarComp.isToolPanelShowing();
    };
    GridApi2.prototype.getToolPanelInstance = function(id) {
      if (this.assertSideBarLoaded("getToolPanelInstance")) {
        var comp = this.sideBarComp.getToolPanelInstance(id);
        return unwrapUserComp(comp);
      }
    };
    GridApi2.prototype.getSideBar = function() {
      if (this.assertSideBarLoaded("getSideBar")) {
        return this.sideBarComp.getDef();
      }
      return void 0;
    };
    GridApi2.prototype.setSideBar = function(def) {
      this.gridOptionsService.set("sideBar", def);
    };
    GridApi2.prototype.setSuppressClipboardPaste = function(value) {
      this.gridOptionsService.set("suppressClipboardPaste", value);
    };
    GridApi2.prototype.resetRowHeights = function() {
      if (exists(this.clientSideRowModel)) {
        if (this.columnModel.isAutoRowHeightActive()) {
          console.warn("AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.");
          return;
        }
        this.clientSideRowModel.resetRowHeights();
      }
    };
    GridApi2.prototype.setGroupRemoveSingleChildren = function(value) {
      this.gridOptionsService.set("groupRemoveSingleChildren", value);
    };
    GridApi2.prototype.setGroupRemoveLowestSingleChildren = function(value) {
      this.gridOptionsService.set("groupRemoveLowestSingleChildren", value);
    };
    GridApi2.prototype.setGroupDisplayType = function(value) {
      this.gridOptionsService.set("groupDisplayType", value);
    };
    GridApi2.prototype.setRowClass = function(className) {
      this.gridOptionsService.set("rowClass", className);
    };
    GridApi2.prototype.setDeltaSort = function(enable) {
      this.gridOptionsService.set("deltaSort", enable);
    };
    GridApi2.prototype.setRowCount = function(rowCount, maxRowFound) {
      if (this.infiniteRowModel) {
        this.infiniteRowModel.setRowCount(rowCount, maxRowFound);
      } else {
        this.logMissingRowModel("setRowCount", "infinite");
      }
    };
    GridApi2.prototype.onRowHeightChanged = function() {
      if (this.clientSideRowModel) {
        this.clientSideRowModel.onRowHeightChanged();
      } else if (this.serverSideRowModel) {
        this.serverSideRowModel.onRowHeightChanged();
      }
    };
    GridApi2.prototype.getValue = function(colKey, rowNode) {
      var column = this.columnModel.getPrimaryColumn(colKey);
      if (missing(column)) {
        column = this.columnModel.getGridColumn(colKey);
      }
      if (missing(column)) {
        return null;
      }
      return this.valueService.getValue(column, rowNode);
    };
    GridApi2.prototype.addEventListener = function(eventType, listener) {
      var async = this.gridOptionsService.useAsyncEvents();
      this.eventService.addEventListener(eventType, listener, async);
    };
    GridApi2.prototype.addGlobalListener = function(listener) {
      var async = this.gridOptionsService.useAsyncEvents();
      this.eventService.addGlobalListener(listener, async);
    };
    GridApi2.prototype.removeEventListener = function(eventType, listener) {
      var async = this.gridOptionsService.useAsyncEvents();
      this.eventService.removeEventListener(eventType, listener, async);
    };
    GridApi2.prototype.removeGlobalListener = function(listener) {
      var async = this.gridOptionsService.useAsyncEvents();
      this.eventService.removeGlobalListener(listener, async);
    };
    GridApi2.prototype.dispatchEvent = function(event) {
      this.eventService.dispatchEvent(event);
    };
    GridApi2.prototype.destroy = function() {
      if (this.destroyCalled) {
        return;
      }
      this.destroyCalled = true;
      var gridCtrl = this.ctrlsService.getGridCtrl();
      if (gridCtrl) {
        gridCtrl.destroyGridUi();
      }
      this.context.destroy();
    };
    GridApi2.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function() {
      setTimeout(removeAllReferences.bind(window, this, "Grid API"), 100);
    };
    GridApi2.prototype.warnIfDestroyed = function(methodName) {
      if (this.destroyCalled) {
        console.warn("AG Grid: Grid API method " + methodName + " was called on a grid that was destroyed.");
      }
      return this.destroyCalled;
    };
    GridApi2.prototype.resetQuickFilter = function() {
      if (this.warnIfDestroyed("resetQuickFilter")) {
        return;
      }
      this.rowModel.forEachNode(function(node) {
        return node.quickFilterAggregateText = null;
      });
    };
    GridApi2.prototype.getCellRanges = function() {
      if (this.rangeService) {
        return this.rangeService.getCellRanges();
      }
      ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, "api.getCellRanges");
      return null;
    };
    GridApi2.prototype.addCellRange = function(params) {
      if (this.rangeService) {
        this.rangeService.addCellRange(params);
        return;
      }
      ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, "api.addCellRange");
    };
    GridApi2.prototype.clearRangeSelection = function() {
      if (this.rangeService) {
        this.rangeService.removeAllCellRanges();
      }
      ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, "gridApi.clearRangeSelection");
    };
    GridApi2.prototype.undoCellEditing = function() {
      this.undoRedoService.undo();
    };
    GridApi2.prototype.redoCellEditing = function() {
      this.undoRedoService.redo();
    };
    GridApi2.prototype.getCurrentUndoSize = function() {
      return this.undoRedoService.getCurrentUndoStackSize();
    };
    GridApi2.prototype.getCurrentRedoSize = function() {
      return this.undoRedoService.getCurrentRedoStackSize();
    };
    GridApi2.prototype.getChartModels = function() {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.getChartModels")) {
        return this.chartService.getChartModels();
      }
    };
    GridApi2.prototype.getChartRef = function(chartId) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.getChartRef")) {
        return this.chartService.getChartRef(chartId);
      }
    };
    GridApi2.prototype.getChartImageDataURL = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.getChartImageDataURL")) {
        return this.chartService.getChartImageDataURL(params);
      }
    };
    GridApi2.prototype.downloadChart = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.downloadChart")) {
        return this.chartService.downloadChart(params);
      }
    };
    GridApi2.prototype.openChartToolPanel = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.openChartToolPanel")) {
        return this.chartService.openChartToolPanel(params);
      }
    };
    GridApi2.prototype.closeChartToolPanel = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.closeChartToolPanel")) {
        return this.chartService.closeChartToolPanel(params.chartId);
      }
    };
    GridApi2.prototype.createRangeChart = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.createRangeChart")) {
        return this.chartService.createRangeChart(params);
      }
    };
    GridApi2.prototype.createCrossFilterChart = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.createCrossFilterChart")) {
        return this.chartService.createCrossFilterChart(params);
      }
    };
    GridApi2.prototype.restoreChart = function(chartModel, chartContainer) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.restoreChart")) {
        return this.chartService.restoreChart(chartModel, chartContainer);
      }
    };
    GridApi2.prototype.createPivotChart = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, "api.createPivotChart")) {
        return this.chartService.createPivotChart(params);
      }
    };
    GridApi2.prototype.copyToClipboard = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, "api.copyToClipboard")) {
        this.clipboardService.copyToClipboard(params);
      }
    };
    GridApi2.prototype.copySelectedRowsToClipboard = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, "api.copySelectedRowsToClipboard")) {
        this.clipboardService.copySelectedRowsToClipboard(params);
      }
    };
    GridApi2.prototype.copySelectedRangeToClipboard = function(params) {
      if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, "api.copySelectedRangeToClipboard")) {
        this.clipboardService.copySelectedRangeToClipboard(params);
      }
    };
    GridApi2.prototype.copySelectedRangeDown = function() {
      if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, "api.copySelectedRangeDown")) {
        this.clipboardService.copyRangeDown();
      }
    };
    GridApi2.prototype.showColumnMenuAfterButtonClick = function(colKey, buttonElement) {
      var column = this.columnModel.getGridColumn(colKey);
      this.menuFactory.showMenuAfterButtonClick(column, buttonElement, "columnMenu");
    };
    GridApi2.prototype.showColumnMenuAfterMouseClick = function(colKey, mouseEvent) {
      var column = this.columnModel.getGridColumn(colKey);
      if (!column) {
        column = this.columnModel.getPrimaryColumn(colKey);
      }
      if (!column) {
        console.error("AG Grid: column '" + colKey + "' not found");
        return;
      }
      this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);
    };
    GridApi2.prototype.hidePopupMenu = function() {
      if (this.contextMenuFactory) {
        this.contextMenuFactory.hideActiveMenu();
      }
      this.menuFactory.hideActiveMenu();
    };
    GridApi2.prototype.setPopupParent = function(ePopupParent) {
      this.gridOptionsService.set("popupParent", ePopupParent);
    };
    GridApi2.prototype.tabToNextCell = function(event) {
      return this.navigationService.tabToNextCell(false, event);
    };
    GridApi2.prototype.tabToPreviousCell = function(event) {
      return this.navigationService.tabToNextCell(true, event);
    };
    GridApi2.prototype.getCellRendererInstances = function(params) {
      if (params === void 0) {
        params = {};
      }
      var res = this.rowRenderer.getCellRendererInstances(params);
      var unwrapped = res.map(unwrapUserComp);
      return unwrapped;
    };
    GridApi2.prototype.getCellEditorInstances = function(params) {
      if (params === void 0) {
        params = {};
      }
      var res = this.rowRenderer.getCellEditorInstances(params);
      var unwrapped = res.map(unwrapUserComp);
      return unwrapped;
    };
    GridApi2.prototype.getEditingCells = function() {
      return this.rowRenderer.getEditingCells();
    };
    GridApi2.prototype.stopEditing = function(cancel) {
      if (cancel === void 0) {
        cancel = false;
      }
      this.rowRenderer.stopEditing(cancel);
    };
    GridApi2.prototype.startEditingCell = function(params) {
      var column = this.columnModel.getGridColumn(params.colKey);
      if (!column) {
        console.warn("AG Grid: no column found for " + params.colKey);
        return;
      }
      var cellPosition = {
        rowIndex: params.rowIndex,
        rowPinned: params.rowPinned || null,
        column
      };
      var notPinned = params.rowPinned == null;
      if (notPinned) {
        this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);
      }
      var cell = this.navigationService.getCellByPosition(cellPosition);
      if (!cell) {
        return;
      }
      cell.startRowOrCellEdit(params.key, params.charPress);
    };
    GridApi2.prototype.addAggFunc = function(key, aggFunc) {
      if (this.aggFuncService) {
        this.aggFuncService.addAggFunc(key, aggFunc);
      }
    };
    GridApi2.prototype.addAggFuncs = function(aggFuncs) {
      if (this.aggFuncService) {
        this.aggFuncService.addAggFuncs(aggFuncs);
      }
    };
    GridApi2.prototype.clearAggFuncs = function() {
      if (this.aggFuncService) {
        this.aggFuncService.clear();
      }
    };
    GridApi2.prototype.applyServerSideTransaction = function(transaction) {
      if (!this.serverSideTransactionManager) {
        this.logMissingRowModel("applyServerSideTransaction", "serverSide");
        return;
      }
      return this.serverSideTransactionManager.applyTransaction(transaction);
    };
    GridApi2.prototype.applyServerSideTransactionAsync = function(transaction, callback) {
      if (!this.serverSideTransactionManager) {
        this.logMissingRowModel("applyServerSideTransactionAsync", "serverSide");
        return;
      }
      return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);
    };
    GridApi2.prototype.retryServerSideLoads = function() {
      if (!this.serverSideRowModel) {
        this.logMissingRowModel("retryServerSideLoads", "serverSide");
        return;
      }
      this.serverSideRowModel.retryLoads();
    };
    GridApi2.prototype.flushServerSideAsyncTransactions = function() {
      if (!this.serverSideTransactionManager) {
        this.logMissingRowModel("flushServerSideAsyncTransactions", "serverSide");
        return;
      }
      return this.serverSideTransactionManager.flushAsyncTransactions();
    };
    GridApi2.prototype.applyTransaction = function(rowDataTransaction) {
      if (!this.clientSideRowModel) {
        this.logMissingRowModel("applyTransaction", "clientSide");
        return;
      }
      var res = this.clientSideRowModel.updateRowData(rowDataTransaction);
      this.rowRenderer.refreshFullWidthRows(res.update);
      if (!this.gridOptionsService.is("suppressChangeDetection")) {
        this.rowRenderer.refreshCells();
      }
      return res;
    };
    GridApi2.prototype.applyTransactionAsync = function(rowDataTransaction, callback) {
      if (!this.clientSideRowModel) {
        this.logMissingRowModel("applyTransactionAsync", "clientSide");
        return;
      }
      this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);
    };
    GridApi2.prototype.flushAsyncTransactions = function() {
      if (!this.clientSideRowModel) {
        this.logMissingRowModel("flushAsyncTransactions", "clientSide");
        return;
      }
      this.clientSideRowModel.flushAsyncTransactions();
    };
    GridApi2.prototype.setSuppressModelUpdateAfterUpdateTransaction = function(value) {
      this.gridOptionsService.set("suppressModelUpdateAfterUpdateTransaction", value);
    };
    GridApi2.prototype.refreshInfiniteCache = function() {
      if (this.infiniteRowModel) {
        this.infiniteRowModel.refreshCache();
      } else {
        this.logMissingRowModel("refreshInfiniteCache", "infinite");
      }
    };
    GridApi2.prototype.purgeInfiniteCache = function() {
      if (this.infiniteRowModel) {
        this.infiniteRowModel.purgeCache();
      } else {
        this.logMissingRowModel("purgeInfiniteCache", "infinite");
      }
    };
    GridApi2.prototype.refreshServerSide = function(params) {
      if (!this.serverSideRowModel) {
        this.logMissingRowModel("refreshServerSide", "serverSide");
        return;
      }
      this.serverSideRowModel.refreshStore(params);
    };
    GridApi2.prototype.refreshServerSideStore = function(params) {
      logDeprecation("28.0", "refreshServerSideStore", "refreshServerSide");
      return this.refreshServerSide(params);
    };
    GridApi2.prototype.getServerSideStoreState = function() {
      logDeprecation("28.0", "getServerSideStoreState", "getServerSideGroupLevelState");
      return this.getServerSideGroupLevelState();
    };
    GridApi2.prototype.getServerSideGroupLevelState = function() {
      if (!this.serverSideRowModel) {
        this.logMissingRowModel("getServerSideGroupLevelState", "serverSide");
        return [];
      }
      return this.serverSideRowModel.getStoreState();
    };
    GridApi2.prototype.getInfiniteRowCount = function() {
      if (this.infiniteRowModel) {
        return this.infiniteRowModel.getRowCount();
      } else {
        this.logMissingRowModel("getInfiniteRowCount", "infinite");
      }
    };
    GridApi2.prototype.isLastRowIndexKnown = function() {
      if (this.infiniteRowModel) {
        return this.infiniteRowModel.isLastRowIndexKnown();
      } else {
        this.logMissingRowModel("isLastRowIndexKnown", "infinite");
      }
    };
    GridApi2.prototype.getCacheBlockState = function() {
      logDeprecation("28.0", "getCacheBlockState");
      return this.rowNodeBlockLoader.getBlockState();
    };
    GridApi2.prototype.getFirstDisplayedRow = function() {
      return this.rowRenderer.getFirstVirtualRenderedRow();
    };
    GridApi2.prototype.getLastDisplayedRow = function() {
      return this.rowRenderer.getLastVirtualRenderedRow();
    };
    GridApi2.prototype.getDisplayedRowAtIndex = function(index) {
      return this.rowModel.getRow(index);
    };
    GridApi2.prototype.getDisplayedRowCount = function() {
      return this.rowModel.getRowCount();
    };
    GridApi2.prototype.setPagination = function(value) {
      this.gridOptionsService.set("pagination", value);
    };
    GridApi2.prototype.paginationIsLastPageFound = function() {
      return this.paginationProxy.isLastPageFound();
    };
    GridApi2.prototype.paginationGetPageSize = function() {
      return this.paginationProxy.getPageSize();
    };
    GridApi2.prototype.paginationSetPageSize = function(size) {
      this.gridOptionsService.set("paginationPageSize", size);
    };
    GridApi2.prototype.paginationGetCurrentPage = function() {
      return this.paginationProxy.getCurrentPage();
    };
    GridApi2.prototype.paginationGetTotalPages = function() {
      return this.paginationProxy.getTotalPages();
    };
    GridApi2.prototype.paginationGetRowCount = function() {
      return this.paginationProxy.getMasterRowCount();
    };
    GridApi2.prototype.paginationGoToNextPage = function() {
      this.paginationProxy.goToNextPage();
    };
    GridApi2.prototype.paginationGoToPreviousPage = function() {
      this.paginationProxy.goToPreviousPage();
    };
    GridApi2.prototype.paginationGoToFirstPage = function() {
      this.paginationProxy.goToFirstPage();
    };
    GridApi2.prototype.paginationGoToLastPage = function() {
      this.paginationProxy.goToLastPage();
    };
    GridApi2.prototype.paginationGoToPage = function(page) {
      this.paginationProxy.goToPage(page);
    };
    __decorate77([
      Optional2("immutableService")
    ], GridApi2.prototype, "immutableService", void 0);
    __decorate77([
      Optional2("csvCreator")
    ], GridApi2.prototype, "csvCreator", void 0);
    __decorate77([
      Optional2("excelCreator")
    ], GridApi2.prototype, "excelCreator", void 0);
    __decorate77([
      Autowired("rowRenderer")
    ], GridApi2.prototype, "rowRenderer", void 0);
    __decorate77([
      Autowired("navigationService")
    ], GridApi2.prototype, "navigationService", void 0);
    __decorate77([
      Autowired("filterManager")
    ], GridApi2.prototype, "filterManager", void 0);
    __decorate77([
      Autowired("columnModel")
    ], GridApi2.prototype, "columnModel", void 0);
    __decorate77([
      Autowired("selectionService")
    ], GridApi2.prototype, "selectionService", void 0);
    __decorate77([
      Autowired("gridOptionsService")
    ], GridApi2.prototype, "gridOptionsService", void 0);
    __decorate77([
      Autowired("valueService")
    ], GridApi2.prototype, "valueService", void 0);
    __decorate77([
      Autowired("alignedGridsService")
    ], GridApi2.prototype, "alignedGridsService", void 0);
    __decorate77([
      Autowired("eventService")
    ], GridApi2.prototype, "eventService", void 0);
    __decorate77([
      Autowired("pinnedRowModel")
    ], GridApi2.prototype, "pinnedRowModel", void 0);
    __decorate77([
      Autowired("context")
    ], GridApi2.prototype, "context", void 0);
    __decorate77([
      Autowired("rowModel")
    ], GridApi2.prototype, "rowModel", void 0);
    __decorate77([
      Autowired("sortController")
    ], GridApi2.prototype, "sortController", void 0);
    __decorate77([
      Autowired("paginationProxy")
    ], GridApi2.prototype, "paginationProxy", void 0);
    __decorate77([
      Autowired("focusService")
    ], GridApi2.prototype, "focusService", void 0);
    __decorate77([
      Autowired("dragAndDropService")
    ], GridApi2.prototype, "dragAndDropService", void 0);
    __decorate77([
      Optional2("rangeService")
    ], GridApi2.prototype, "rangeService", void 0);
    __decorate77([
      Optional2("clipboardService")
    ], GridApi2.prototype, "clipboardService", void 0);
    __decorate77([
      Optional2("aggFuncService")
    ], GridApi2.prototype, "aggFuncService", void 0);
    __decorate77([
      Autowired("menuFactory")
    ], GridApi2.prototype, "menuFactory", void 0);
    __decorate77([
      Optional2("contextMenuFactory")
    ], GridApi2.prototype, "contextMenuFactory", void 0);
    __decorate77([
      Autowired("valueCache")
    ], GridApi2.prototype, "valueCache", void 0);
    __decorate77([
      Autowired("animationFrameService")
    ], GridApi2.prototype, "animationFrameService", void 0);
    __decorate77([
      Optional2("statusBarService")
    ], GridApi2.prototype, "statusBarService", void 0);
    __decorate77([
      Optional2("chartService")
    ], GridApi2.prototype, "chartService", void 0);
    __decorate77([
      Optional2("undoRedoService")
    ], GridApi2.prototype, "undoRedoService", void 0);
    __decorate77([
      Optional2("rowNodeBlockLoader")
    ], GridApi2.prototype, "rowNodeBlockLoader", void 0);
    __decorate77([
      Optional2("ssrmTransactionManager")
    ], GridApi2.prototype, "serverSideTransactionManager", void 0);
    __decorate77([
      Autowired("ctrlsService")
    ], GridApi2.prototype, "ctrlsService", void 0);
    __decorate77([
      PostConstruct
    ], GridApi2.prototype, "init", null);
    __decorate77([
      PreDestroy
    ], GridApi2.prototype, "cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid", null);
    GridApi2 = __decorate77([
      Bean("gridApi")
    ], GridApi2);
    return GridApi2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/features/setLeftFeature.js
var __extends86 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate78 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SetLeftFeature = (
  /** @class */
  function(_super) {
    __extends86(SetLeftFeature2, _super);
    function SetLeftFeature2(columnOrGroup, eCell, beans, colsSpanning) {
      var _this = _super.call(this) || this;
      _this.columnOrGroup = columnOrGroup;
      _this.eCell = eCell;
      _this.ariaEl = _this.eCell.querySelector("[role=columnheader]") || _this.eCell;
      _this.colsSpanning = colsSpanning;
      _this.beans = beans;
      return _this;
    }
    SetLeftFeature2.prototype.setColsSpanning = function(colsSpanning) {
      this.colsSpanning = colsSpanning;
      this.onLeftChanged();
    };
    SetLeftFeature2.prototype.getColumnOrGroup = function() {
      if (this.beans.gridOptionsService.is("enableRtl") && this.colsSpanning) {
        return last(this.colsSpanning);
      }
      return this.columnOrGroup;
    };
    SetLeftFeature2.prototype.postConstruct = function() {
      this.addManagedListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));
      this.setLeftFirstTime();
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));
      this.addManagedPropertyListener("domLayout", this.onLeftChanged.bind(this));
    };
    SetLeftFeature2.prototype.setLeftFirstTime = function() {
      var suppressMoveAnimation = this.beans.gridOptionsService.is("suppressColumnMoveAnimation");
      var oldLeftExists = exists(this.columnOrGroup.getOldLeft());
      var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;
      if (animateColumnMove) {
        this.animateInLeft();
      } else {
        this.onLeftChanged();
      }
    };
    SetLeftFeature2.prototype.animateInLeft = function() {
      var _this = this;
      var colOrGroup = this.getColumnOrGroup();
      var left = colOrGroup.getLeft();
      var oldLeft = colOrGroup.getOldLeft();
      var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);
      var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);
      this.setLeft(oldActualLeft);
      this.actualLeft = actualLeft;
      this.beans.columnAnimationService.executeNextVMTurn(function() {
        if (_this.actualLeft === actualLeft) {
          _this.setLeft(actualLeft);
        }
      });
    };
    SetLeftFeature2.prototype.onLeftChanged = function() {
      var colOrGroup = this.getColumnOrGroup();
      var left = colOrGroup.getLeft();
      this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);
      this.setLeft(this.actualLeft);
    };
    SetLeftFeature2.prototype.modifyLeftForPrintLayout = function(colOrGroup, leftPosition) {
      var printLayout = this.beans.gridOptionsService.isDomLayout("print");
      if (!printLayout) {
        return leftPosition;
      }
      if (colOrGroup.getPinned() === "left") {
        return leftPosition;
      }
      var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();
      if (colOrGroup.getPinned() === "right") {
        var bodyWidth = this.beans.columnModel.getBodyContainerWidth();
        return leftWidth + bodyWidth + leftPosition;
      }
      return leftWidth + leftPosition;
    };
    SetLeftFeature2.prototype.setLeft = function(value) {
      if (exists(value)) {
        this.eCell.style.left = value + "px";
      }
      var indexColumn;
      if (this.columnOrGroup instanceof Column) {
        indexColumn = this.columnOrGroup;
      } else {
        var columnGroup = this.columnOrGroup;
        var children = columnGroup.getLeafColumns();
        if (!children.length) {
          return;
        }
        if (children.length > 1) {
          setAriaColSpan(this.ariaEl, children.length);
        }
        indexColumn = children[0];
      }
      var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);
      setAriaColIndex(this.ariaEl, index);
    };
    __decorate78([
      PostConstruct
    ], SetLeftFeature2.prototype, "postConstruct", null);
    return SetLeftFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/hoverFeature.js
var __extends87 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate79 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HoverFeature = (
  /** @class */
  function(_super) {
    __extends87(HoverFeature2, _super);
    function HoverFeature2(columns, element) {
      var _this = _super.call(this) || this;
      _this.columns = columns;
      _this.element = element;
      return _this;
    }
    HoverFeature2.prototype.postConstruct = function() {
      if (this.gridOptionsService.is("columnHoverHighlight")) {
        this.addMouseHoverListeners();
      }
    };
    HoverFeature2.prototype.addMouseHoverListeners = function() {
      this.addManagedListener(this.element, "mouseout", this.onMouseOut.bind(this));
      this.addManagedListener(this.element, "mouseover", this.onMouseOver.bind(this));
    };
    HoverFeature2.prototype.onMouseOut = function() {
      this.columnHoverService.clearMouseOver();
    };
    HoverFeature2.prototype.onMouseOver = function() {
      this.columnHoverService.setMouseOver(this.columns);
    };
    __decorate79([
      Autowired("columnHoverService")
    ], HoverFeature2.prototype, "columnHoverService", void 0);
    __decorate79([
      PostConstruct
    ], HoverFeature2.prototype, "postConstruct", null);
    return HoverFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/floatingFilter/headerFilterCellCtrl.js
var __extends88 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate80 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderFilterCellCtrl = (
  /** @class */
  function(_super) {
    __extends88(HeaderFilterCellCtrl2, _super);
    function HeaderFilterCellCtrl2(column, parentRowCtrl) {
      var _this = _super.call(this, column, parentRowCtrl) || this;
      _this.column = column;
      return _this;
    }
    HeaderFilterCellCtrl2.prototype.setComp = function(comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {
      _super.prototype.setGui.call(this, eGui);
      this.comp = comp;
      this.eButtonShowMainFilter = eButtonShowMainFilter;
      this.eFloatingFilterBody = eFloatingFilterBody;
      var colDef = this.column.getColDef();
      var filterExists = !!colDef.filter || !!colDef.filterFramework;
      var floatingFilterExists = !!colDef.floatingFilter;
      this.active = filterExists && floatingFilterExists;
      this.setupWidth();
      this.setupLeft();
      this.setupHover();
      this.setupFocus();
      this.setupUserComp();
      this.setupSyncWithFilter();
      this.setupUi();
      this.addManagedListener(this.eButtonShowMainFilter, "click", this.showParentFilter.bind(this));
    };
    HeaderFilterCellCtrl2.prototype.setupUi = function() {
      this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton && this.active);
      if (!this.active) {
        return;
      }
      this.comp.addOrRemoveBodyCssClass("ag-floating-filter-full-body", this.suppressFilterButton);
      this.comp.addOrRemoveBodyCssClass("ag-floating-filter-body", !this.suppressFilterButton);
      var eMenuIcon = createIconNoSpan("filter", this.gridOptionsService, this.column);
      if (eMenuIcon) {
        this.eButtonShowMainFilter.appendChild(eMenuIcon);
      }
    };
    HeaderFilterCellCtrl2.prototype.setupFocus = function() {
      this.createManagedBean(new ManagedFocusFeature(this.eGui, {
        shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),
        onTabKeyDown: this.onTabKeyDown.bind(this),
        handleKeyDown: this.handleKeyDown.bind(this),
        onFocusIn: this.onFocusIn.bind(this)
      }));
    };
    HeaderFilterCellCtrl2.prototype.onTabKeyDown = function(e2) {
      var eDocument = this.gridOptionsService.getDocument();
      var activeEl = eDocument.activeElement;
      var wrapperHasFocus = activeEl === this.eGui;
      if (wrapperHasFocus) {
        return;
      }
      var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e2.shiftKey);
      if (nextFocusableEl) {
        this.beans.headerNavigationService.scrollToColumn(this.column);
        e2.preventDefault();
        nextFocusableEl.focus();
        return;
      }
      var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e2.shiftKey);
      if (!nextFocusableColumn) {
        return;
      }
      if (this.focusService.focusHeaderPosition({
        headerPosition: {
          headerRowIndex: this.getParentRowCtrl().getRowIndex(),
          column: nextFocusableColumn
        },
        event: e2
      })) {
        e2.preventDefault();
      }
    };
    HeaderFilterCellCtrl2.prototype.findNextColumnWithFloatingFilter = function(backwards) {
      var columModel = this.beans.columnModel;
      var nextCol = this.column;
      do {
        nextCol = backwards ? columModel.getDisplayedColBefore(nextCol) : columModel.getDisplayedColAfter(nextCol);
        if (!nextCol) {
          break;
        }
      } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);
      return nextCol;
    };
    HeaderFilterCellCtrl2.prototype.handleKeyDown = function(e2) {
      _super.prototype.handleKeyDown.call(this, e2);
      var wrapperHasFocus = this.getWrapperHasFocus();
      switch (e2.key) {
        case KeyCode.UP:
        case KeyCode.DOWN:
          if (!wrapperHasFocus) {
            e2.preventDefault();
          }
        case KeyCode.LEFT:
        case KeyCode.RIGHT:
          if (wrapperHasFocus) {
            return;
          }
          e2.stopPropagation();
        case KeyCode.ENTER:
          if (wrapperHasFocus) {
            if (this.focusService.focusInto(this.eGui)) {
              e2.preventDefault();
            }
          }
          break;
        case KeyCode.ESCAPE:
          if (!wrapperHasFocus) {
            this.eGui.focus();
          }
      }
    };
    HeaderFilterCellCtrl2.prototype.onFocusIn = function(e2) {
      var isRelatedWithin = this.eGui.contains(e2.relatedTarget);
      if (isRelatedWithin) {
        return;
      }
      var notFromHeaderWrapper = !!e2.relatedTarget && !e2.relatedTarget.classList.contains("ag-floating-filter");
      var fromWithinHeader = !!e2.relatedTarget && isElementChildOfClass(e2.relatedTarget, "ag-floating-filter");
      if (notFromHeaderWrapper && fromWithinHeader && e2.target === this.eGui) {
        var lastFocusEvent = this.lastFocusEvent;
        var fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);
        if (lastFocusEvent && fromTab) {
          var shouldFocusLast = lastFocusEvent.shiftKey;
          this.focusService.focusInto(this.eGui, shouldFocusLast);
        }
      }
      var rowIndex = this.getRowIndex();
      this.beans.focusService.setFocusedHeader(rowIndex, this.column);
    };
    HeaderFilterCellCtrl2.prototype.setupHover = function() {
      var _this = this;
      this.createManagedBean(new HoverFeature([this.column], this.eGui));
      var listener = function() {
        if (!_this.gridOptionsService.is("columnHoverHighlight")) {
          return;
        }
        var hovered = _this.columnHoverService.isHovered(_this.column);
        _this.comp.addOrRemoveCssClass("ag-column-hover", hovered);
      };
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);
      listener();
    };
    HeaderFilterCellCtrl2.prototype.setupLeft = function() {
      var setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);
      this.createManagedBean(setLeftFeature);
    };
    HeaderFilterCellCtrl2.prototype.setupUserComp = function() {
      var _this = this;
      if (!this.active) {
        return;
      }
      var colDef = this.column.getColDef();
      var filterParams = this.filterManager.createFilterParams(this.column, colDef);
      var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, FilterComponent, filterParams);
      var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);
      if (defaultFloatingFilterType == null) {
        defaultFloatingFilterType = "agReadOnlyFloatingFilter";
      }
      var params = {
        column: this.column,
        filterParams: finalFilterParams,
        currentParentModel: function() {
          return _this.currentParentModel();
        },
        parentFilterInstance: function(cb) {
          return _this.parentFilterInstance(cb);
        },
        showParentFilter: function() {
          return _this.showParentFilter();
        },
        suppressFilterButton: false
        // This one might be overridden from the colDef
      };
      this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;
      var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);
      if (compDetails) {
        this.comp.setCompDetails(compDetails);
      }
    };
    HeaderFilterCellCtrl2.prototype.currentParentModel = function() {
      var filterComponent = this.getFilterComponent(false);
      return filterComponent ? filterComponent.resolveNow(null, function(filter2) {
        return filter2 && filter2.getModel();
      }) : null;
    };
    HeaderFilterCellCtrl2.prototype.getFilterComponent = function(createIfDoesNotExist) {
      if (createIfDoesNotExist === void 0) {
        createIfDoesNotExist = true;
      }
      return this.filterManager.getFilterComponent(this.column, "NO_UI", createIfDoesNotExist);
    };
    HeaderFilterCellCtrl2.prototype.parentFilterInstance = function(callback) {
      var filterComponent = this.getFilterComponent();
      if (filterComponent == null) {
        return;
      }
      filterComponent.then(function(instance) {
        callback(unwrapUserComp(instance));
      });
    };
    HeaderFilterCellCtrl2.prototype.showParentFilter = function() {
      var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;
      this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, "floatingFilter", "filterMenuTab", ["filterMenuTab"]);
    };
    HeaderFilterCellCtrl2.prototype.setupSyncWithFilter = function() {
      var _this = this;
      if (!this.active) {
        return;
      }
      var syncWithFilter = function(filterChangedEvent) {
        var compPromise = _this.comp.getFloatingFilterComp();
        if (!compPromise) {
          return;
        }
        var parentModel = _this.currentParentModel();
        compPromise.then(function(comp) {
          if (comp) {
            comp.onParentModelChanged(parentModel, filterChangedEvent);
          }
        });
      };
      this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);
      if (this.filterManager.isFilterActive(this.column)) {
        syncWithFilter(null);
      }
    };
    HeaderFilterCellCtrl2.prototype.setupWidth = function() {
      var _this = this;
      var listener = function() {
        var width = _this.column.getActualWidth() + "px";
        _this.comp.setWidth(width);
      };
      this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);
      listener();
    };
    __decorate80([
      Autowired("filterManager")
    ], HeaderFilterCellCtrl2.prototype, "filterManager", void 0);
    __decorate80([
      Autowired("columnHoverService")
    ], HeaderFilterCellCtrl2.prototype, "columnHoverService", void 0);
    __decorate80([
      Autowired("menuFactory")
    ], HeaderFilterCellCtrl2.prototype, "menuFactory", void 0);
    return HeaderFilterCellCtrl2;
  }(AbstractHeaderCellCtrl)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/resizeFeature.js
var __extends89 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate81 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ResizeFeature = (
  /** @class */
  function(_super) {
    __extends89(ResizeFeature2, _super);
    function ResizeFeature2(pinned, column, eResize, comp, ctrl) {
      var _this = _super.call(this) || this;
      _this.pinned = pinned;
      _this.column = column;
      _this.eResize = eResize;
      _this.comp = comp;
      _this.ctrl = ctrl;
      return _this;
    }
    ResizeFeature2.prototype.postConstruct = function() {
      var _this = this;
      var colDef = this.column.getColDef();
      var destroyResizeFuncs = [];
      var canResize;
      var canAutosize;
      var addResize = function() {
        setDisplayed(_this.eResize, canResize);
        if (!canResize) {
          return;
        }
        var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({
          eResizeBar: _this.eResize,
          onResizeStart: _this.onResizeStart.bind(_this),
          onResizing: _this.onResizing.bind(_this, false),
          onResizeEnd: _this.onResizing.bind(_this, true)
        });
        destroyResizeFuncs.push(finishedWithResizeFunc);
        if (canAutosize) {
          var skipHeaderOnAutoSize_1 = _this.gridOptionsService.is("skipHeaderOnAutoSize");
          var autoSizeColListener_1 = function() {
            _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, "uiColumnResized");
          };
          _this.eResize.addEventListener("dblclick", autoSizeColListener_1);
          var touchListener_1 = new TouchListener(_this.eResize);
          touchListener_1.addEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);
          _this.addDestroyFunc(function() {
            _this.eResize.removeEventListener("dblclick", autoSizeColListener_1);
            touchListener_1.removeEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);
            touchListener_1.destroy();
          });
        }
      };
      var removeResize = function() {
        destroyResizeFuncs.forEach(function(f2) {
          return f2();
        });
        destroyResizeFuncs.length = 0;
      };
      var refresh = function() {
        var resize = _this.column.isResizable();
        var autoSize = !_this.gridOptionsService.is("suppressAutoSize") && !colDef.suppressAutoSize;
        var propertyChange = resize !== canResize || autoSize !== canAutosize;
        if (propertyChange) {
          canResize = resize;
          canAutosize = autoSize;
          removeResize();
          addResize();
        }
      };
      refresh();
      this.addDestroyFunc(removeResize);
      this.ctrl.addRefreshFunction(refresh);
    };
    ResizeFeature2.prototype.onResizing = function(finished, resizeAmount) {
      var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);
      var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];
      this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, "uiColumnDragged");
      if (finished) {
        this.comp.addOrRemoveCssClass("ag-column-resizing", false);
      }
    };
    ResizeFeature2.prototype.onResizeStart = function(shiftKey) {
      this.resizeStartWidth = this.column.getActualWidth();
      this.resizeWithShiftKey = shiftKey;
      this.comp.addOrRemoveCssClass("ag-column-resizing", true);
    };
    ResizeFeature2.prototype.normaliseResizeAmount = function(dragChange) {
      var result = dragChange;
      var notPinningLeft = this.pinned !== "left";
      var pinningRight = this.pinned === "right";
      if (this.gridOptionsService.is("enableRtl")) {
        if (notPinningLeft) {
          result *= -1;
        }
      } else {
        if (pinningRight) {
          result *= -1;
        }
      }
      return result;
    };
    __decorate81([
      Autowired("horizontalResizeService")
    ], ResizeFeature2.prototype, "horizontalResizeService", void 0);
    __decorate81([
      Autowired("columnModel")
    ], ResizeFeature2.prototype, "columnModel", void 0);
    __decorate81([
      PostConstruct
    ], ResizeFeature2.prototype, "postConstruct", null);
    return ResizeFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agCheckbox.js
var __extends90 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgCheckbox = (
  /** @class */
  function(_super) {
    __extends90(AgCheckbox2, _super);
    function AgCheckbox2(config, className, inputType) {
      if (className === void 0) {
        className = "ag-checkbox";
      }
      if (inputType === void 0) {
        inputType = "checkbox";
      }
      var _this = _super.call(this, config, className, inputType) || this;
      _this.labelAlignment = "right";
      _this.selected = false;
      _this.readOnly = false;
      _this.passive = false;
      return _this;
    }
    AgCheckbox2.prototype.addInputListeners = function() {
      this.addManagedListener(this.eInput, "click", this.onCheckboxClick.bind(this));
      this.addManagedListener(this.eLabel, "click", this.toggle.bind(this));
    };
    AgCheckbox2.prototype.getNextValue = function() {
      return this.selected === void 0 ? true : !this.selected;
    };
    AgCheckbox2.prototype.setPassive = function(passive) {
      this.passive = passive;
    };
    AgCheckbox2.prototype.isReadOnly = function() {
      return this.readOnly;
    };
    AgCheckbox2.prototype.setReadOnly = function(readOnly) {
      this.eWrapper.classList.toggle("ag-disabled", readOnly);
      this.eInput.disabled = readOnly;
      this.readOnly = readOnly;
    };
    AgCheckbox2.prototype.setDisabled = function(disabled) {
      this.eWrapper.classList.toggle("ag-disabled", disabled);
      return _super.prototype.setDisabled.call(this, disabled);
    };
    AgCheckbox2.prototype.toggle = function() {
      if (this.eInput.disabled) {
        return;
      }
      var previousValue = this.isSelected();
      var nextValue = this.getNextValue();
      if (this.passive) {
        this.dispatchChange(nextValue, previousValue);
      } else {
        this.setValue(nextValue);
      }
    };
    AgCheckbox2.prototype.getValue = function() {
      return this.isSelected();
    };
    AgCheckbox2.prototype.setValue = function(value, silent) {
      this.refreshSelectedClass(value);
      this.setSelected(value, silent);
      return this;
    };
    AgCheckbox2.prototype.setName = function(name) {
      var input = this.getInputElement();
      input.name = name;
      return this;
    };
    AgCheckbox2.prototype.isSelected = function() {
      return this.selected;
    };
    AgCheckbox2.prototype.setSelected = function(selected, silent) {
      if (this.isSelected() === selected) {
        return;
      }
      this.previousValue = this.isSelected();
      selected = this.selected = typeof selected === "boolean" ? selected : void 0;
      this.eInput.checked = selected;
      this.eInput.indeterminate = selected === void 0;
      if (!silent) {
        this.dispatchChange(this.selected, this.previousValue);
      }
    };
    AgCheckbox2.prototype.dispatchChange = function(selected, previousValue, event) {
      this.dispatchEvent({ type: AgCheckbox2.EVENT_CHANGED, selected, previousValue, event });
      var input = this.getInputElement();
      var checkboxChangedEvent = {
        type: Events.EVENT_CHECKBOX_CHANGED,
        id: input.id,
        name: input.name,
        selected,
        previousValue
      };
      this.eventService.dispatchEvent(checkboxChangedEvent);
    };
    AgCheckbox2.prototype.onCheckboxClick = function(e2) {
      if (this.passive || this.eInput.disabled) {
        return;
      }
      var previousValue = this.isSelected();
      var selected = this.selected = e2.target.checked;
      this.refreshSelectedClass(selected);
      this.dispatchChange(selected, previousValue, e2);
    };
    AgCheckbox2.prototype.refreshSelectedClass = function(value) {
      this.eWrapper.classList.toggle("ag-checked", value === true);
      this.eWrapper.classList.toggle("ag-indeterminate", value == null);
    };
    return AgCheckbox2;
  }(AgAbstractInputField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/selectAllFeature.js
var __extends91 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate82 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SelectAllFeature = (
  /** @class */
  function(_super) {
    __extends91(SelectAllFeature2, _super);
    function SelectAllFeature2(column) {
      var _this = _super.call(this) || this;
      _this.cbSelectAllVisible = false;
      _this.processingEventFromCheckbox = false;
      _this.column = column;
      var colDef = column.getColDef();
      _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;
      return _this;
    }
    SelectAllFeature2.prototype.onSpaceKeyPressed = function(e2) {
      var checkbox = this.cbSelectAll;
      var eDocument = this.gridOptionsService.getDocument();
      if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {
        e2.preventDefault();
        checkbox.setValue(!checkbox.getValue());
      }
    };
    SelectAllFeature2.prototype.getCheckboxGui = function() {
      return this.cbSelectAll.getGui();
    };
    SelectAllFeature2.prototype.setComp = function(ctrl) {
      this.headerCellCtrl = ctrl;
      this.cbSelectAll = this.createManagedBean(new AgCheckbox());
      this.cbSelectAll.addCssClass("ag-header-select-all");
      setAriaRole(this.cbSelectAll.getGui(), "presentation");
      this.showOrHideSelectAll();
      this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));
      this.addManagedListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));
      setAriaHidden(this.cbSelectAll.getGui(), true);
      this.cbSelectAll.getInputElement().setAttribute("tabindex", "-1");
      this.refreshSelectAllLabel();
    };
    SelectAllFeature2.prototype.showOrHideSelectAll = function() {
      this.cbSelectAllVisible = this.isCheckboxSelection();
      this.cbSelectAll.setDisplayed(this.cbSelectAllVisible, { skipAriaHidden: true });
      if (this.cbSelectAllVisible) {
        this.checkRightRowModelType("selectAllCheckbox");
        this.updateStateOfCheckbox();
      }
      this.refreshSelectAllLabel();
    };
    SelectAllFeature2.prototype.onModelChanged = function() {
      if (!this.cbSelectAllVisible) {
        return;
      }
      this.updateStateOfCheckbox();
    };
    SelectAllFeature2.prototype.onSelectionChanged = function() {
      if (!this.cbSelectAllVisible) {
        return;
      }
      this.updateStateOfCheckbox();
    };
    SelectAllFeature2.prototype.getNextCheckboxState = function(selectionCount) {
      if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {
        return false;
      }
      if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {
        return null;
      }
      if (selectionCount.selected > 0) {
        return true;
      }
      return false;
    };
    SelectAllFeature2.prototype.updateStateOfCheckbox = function() {
      if (this.processingEventFromCheckbox) {
        return;
      }
      this.processingEventFromCheckbox = true;
      var selectionCount = this.getSelectionCount();
      var allSelected = this.getNextCheckboxState(selectionCount);
      this.cbSelectAll.setValue(allSelected);
      this.refreshSelectAllLabel();
      this.processingEventFromCheckbox = false;
    };
    SelectAllFeature2.prototype.refreshSelectAllLabel = function() {
      if (!this.cbSelectAllVisible) {
        this.headerCellCtrl.setAriaDescriptionProperty("selectAll", null);
        this.cbSelectAll.setInputAriaLabel(null);
      } else {
        var translate = this.localeService.getLocaleTextFunc();
        var checked = this.cbSelectAll.getValue();
        var ariaStatus = checked ? translate("ariaChecked", "checked") : translate("ariaUnchecked", "unchecked");
        var ariaLabel = translate("ariaRowSelectAll", "Press Space to toggle all rows selection");
        this.headerCellCtrl.setAriaDescriptionProperty("selectAll", ariaLabel + " (" + ariaStatus + ")");
        this.cbSelectAll.setInputAriaLabel(ariaLabel + " (" + ariaStatus + ")");
      }
      this.headerCellCtrl.refreshAriaDescription();
    };
    SelectAllFeature2.prototype.getSelectionCount = function() {
      var _this = this;
      var selectedCount = 0;
      var notSelectedCount = 0;
      var callback = function(node) {
        if (_this.gridOptionsService.is("groupSelectsChildren") && node.group) {
          return;
        }
        if (node.isSelected()) {
          selectedCount++;
        } else if (!node.selectable) {
        } else {
          notSelectedCount++;
        }
      };
      if (this.filteredOnly) {
        this.gridApi.forEachNodeAfterFilter(callback);
      } else {
        this.gridApi.forEachNode(callback);
      }
      return {
        notSelected: notSelectedCount,
        selected: selectedCount
      };
    };
    SelectAllFeature2.prototype.checkRightRowModelType = function(feature) {
      var rowModelType = this.rowModel.getType();
      var rowModelMatches = rowModelType === "clientSide";
      if (!rowModelMatches) {
        console.warn("AG Grid: " + feature + " is only available if using 'clientSide' rowModelType, you are using " + rowModelType + ".");
        return false;
      }
      return true;
    };
    SelectAllFeature2.prototype.onCbSelectAll = function() {
      if (this.processingEventFromCheckbox) {
        return;
      }
      if (!this.cbSelectAllVisible) {
        return;
      }
      var value = this.cbSelectAll.getValue();
      var source = this.filteredOnly ? "uiSelectAllFiltered" : "uiSelectAll";
      if (value) {
        this.selectionService.selectAllRowNodes(source, this.filteredOnly);
      } else {
        this.selectionService.deselectAllRowNodes(source, this.filteredOnly);
      }
    };
    SelectAllFeature2.prototype.isCheckboxSelection = function() {
      var result = this.column.getColDef().headerCheckboxSelection;
      if (typeof result === "function") {
        var func = result;
        var params = {
          column: this.column,
          colDef: this.column.getColDef(),
          columnApi: this.columnApi,
          api: this.gridApi,
          context: this.gridOptionsService.get("context")
        };
        result = func(params);
      }
      if (result) {
        return this.checkRightRowModelType("headerCheckboxSelection");
      }
      return false;
    };
    __decorate82([
      Autowired("gridApi")
    ], SelectAllFeature2.prototype, "gridApi", void 0);
    __decorate82([
      Autowired("columnApi")
    ], SelectAllFeature2.prototype, "columnApi", void 0);
    __decorate82([
      Autowired("rowModel")
    ], SelectAllFeature2.prototype, "rowModel", void 0);
    __decorate82([
      Autowired("selectionService")
    ], SelectAllFeature2.prototype, "selectionService", void 0);
    return SelectAllFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerCellCtrl.js
var __extends92 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate83 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderCellCtrl = (
  /** @class */
  function(_super) {
    __extends92(HeaderCellCtrl2, _super);
    function HeaderCellCtrl2(column, parentRowCtrl) {
      var _this = _super.call(this, column, parentRowCtrl) || this;
      _this.refreshFunctions = [];
      _this.userHeaderClasses = /* @__PURE__ */ new Set();
      _this.ariaDescriptionProperties = /* @__PURE__ */ new Map();
      _this.column = column;
      return _this;
    }
    HeaderCellCtrl2.prototype.setComp = function(comp, eGui, eResize, eHeaderCompWrapper) {
      var _this = this;
      _super.prototype.setGui.call(this, eGui);
      this.comp = comp;
      this.updateState();
      this.setupWidth();
      this.setupMovingCss();
      this.setupMenuClass();
      this.setupSortableClass();
      this.setupWrapTextClass();
      this.setupAutoHeight(eHeaderCompWrapper);
      this.addColumnHoverListener();
      this.setupFilterCss();
      this.setupColId();
      this.setupClassesFromColDef();
      this.setupTooltip();
      this.addActiveHeaderMouseListeners();
      this.setupSelectAll();
      this.setupUserComp();
      this.refreshAria();
      this.createManagedBean(new ResizeFeature(this.getPinned(), this.column, eResize, comp, this));
      this.createManagedBean(new HoverFeature([this.column], eGui));
      this.createManagedBean(new SetLeftFeature(this.column, eGui, this.beans));
      this.createManagedBean(new ManagedFocusFeature(eGui, {
        shouldStopEventPropagation: function(e2) {
          return _this.shouldStopEventPropagation(e2);
        },
        onTabKeyDown: function() {
          return null;
        },
        handleKeyDown: this.handleKeyDown.bind(this),
        onFocusIn: this.onFocusIn.bind(this),
        onFocusOut: this.onFocusOut.bind(this)
      }));
      this.addManagedListener(this.column, Column.EVENT_COL_DEF_CHANGED, this.onColDefChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));
    };
    HeaderCellCtrl2.prototype.setupUserComp = function() {
      var compDetails = this.lookupUserCompDetails();
      this.setCompDetails(compDetails);
    };
    HeaderCellCtrl2.prototype.setCompDetails = function(compDetails) {
      this.userCompDetails = compDetails;
      this.comp.setUserCompDetails(compDetails);
    };
    HeaderCellCtrl2.prototype.lookupUserCompDetails = function() {
      var params = this.createParams();
      var colDef = this.column.getColDef();
      return this.userComponentFactory.getHeaderCompDetails(colDef, params);
    };
    HeaderCellCtrl2.prototype.createParams = function() {
      var _this = this;
      var colDef = this.column.getColDef();
      var params = {
        column: this.column,
        displayName: this.displayName,
        enableSorting: colDef.sortable,
        enableMenu: this.menuEnabled,
        showColumnMenu: function(source) {
          _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);
        },
        progressSort: function(multiSort) {
          _this.sortController.progressSort(_this.column, !!multiSort, "uiColumnSorted");
        },
        setSort: function(sort, multiSort) {
          _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, "uiColumnSorted");
        },
        api: this.gridApi,
        columnApi: this.columnApi,
        context: this.gridOptionsService.get("context"),
        eGridHeader: this.getGui()
      };
      return params;
    };
    HeaderCellCtrl2.prototype.setupSelectAll = function() {
      this.selectAllFeature = this.createManagedBean(new SelectAllFeature(this.column));
      this.selectAllFeature.setComp(this);
    };
    HeaderCellCtrl2.prototype.getSelectAllGui = function() {
      return this.selectAllFeature.getCheckboxGui();
    };
    HeaderCellCtrl2.prototype.handleKeyDown = function(e2) {
      _super.prototype.handleKeyDown.call(this, e2);
      if (e2.key === KeyCode.SPACE) {
        this.selectAllFeature.onSpaceKeyPressed(e2);
      }
      if (e2.key === KeyCode.ENTER) {
        this.onEnterKeyPressed(e2);
      }
    };
    HeaderCellCtrl2.prototype.onEnterKeyPressed = function(e2) {
      var headerComp = this.comp.getUserCompInstance();
      if (!headerComp) {
        return;
      }
      if (e2.ctrlKey || e2.metaKey) {
        if (this.menuEnabled && headerComp.showMenu) {
          e2.preventDefault();
          headerComp.showMenu();
        }
      } else if (this.sortable) {
        var multiSort = e2.shiftKey;
        this.sortController.progressSort(this.column, multiSort, "uiColumnSorted");
      }
    };
    HeaderCellCtrl2.prototype.isMenuEnabled = function() {
      return this.menuEnabled;
    };
    HeaderCellCtrl2.prototype.onFocusIn = function(e2) {
      if (!this.getGui().contains(e2.relatedTarget)) {
        var rowIndex = this.getRowIndex();
        this.focusService.setFocusedHeader(rowIndex, this.column);
      }
      this.setActiveHeader(true);
    };
    HeaderCellCtrl2.prototype.onFocusOut = function(e2) {
      if (this.getGui().contains(e2.relatedTarget)) {
        return;
      }
      this.setActiveHeader(false);
    };
    HeaderCellCtrl2.prototype.setupTooltip = function() {
      var _this = this;
      var tooltipCtrl = {
        getColumn: function() {
          return _this.column;
        },
        getColDef: function() {
          return _this.column.getColDef();
        },
        getGui: function() {
          return _this.eGui;
        },
        getLocation: function() {
          return "header";
        },
        getTooltipValue: function() {
          var res = _this.column.getColDef().headerTooltip;
          return res;
        }
      };
      var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));
      tooltipFeature.setComp(this.comp);
      this.refreshFunctions.push(function() {
        return tooltipFeature.refreshToolTip();
      });
    };
    HeaderCellCtrl2.prototype.setupClassesFromColDef = function() {
      var _this = this;
      var refreshHeaderClasses = function() {
        var colDef = _this.column.getColDef();
        var classes = CssClassApplier.getHeaderClassesFromColDef(colDef, _this.gridOptionsService, _this.column, null);
        var oldClasses = _this.userHeaderClasses;
        _this.userHeaderClasses = new Set(classes);
        classes.forEach(function(c2) {
          if (oldClasses.has(c2)) {
            oldClasses.delete(c2);
          } else {
            _this.comp.addOrRemoveCssClass(c2, true);
          }
        });
        oldClasses.forEach(function(c2) {
          return _this.comp.addOrRemoveCssClass(c2, false);
        });
      };
      this.refreshFunctions.push(refreshHeaderClasses);
      refreshHeaderClasses();
    };
    HeaderCellCtrl2.prototype.setDragSource = function(eSource) {
      var _this = this;
      this.dragSourceElement = eSource;
      this.removeDragSource();
      if (!eSource) {
        return;
      }
      if (!this.draggable) {
        return;
      }
      var hideColumnOnExit = !this.gridOptionsService.is("suppressDragLeaveHidesColumns");
      this.moveDragSource = {
        type: DragSourceType.HeaderCell,
        eElement: eSource,
        defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,
        getDragItem: function() {
          return _this.createDragItem();
        },
        dragItemName: this.displayName,
        onDragStarted: function() {
          return _this.column.setMoving(true, "uiColumnMoved");
        },
        onDragStopped: function() {
          return _this.column.setMoving(false, "uiColumnMoved");
        },
        onGridEnter: function(dragItem) {
          var _a47;
          if (hideColumnOnExit) {
            var unlockedColumns = ((_a47 = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a47 === void 0 ? void 0 : _a47.filter(function(col) {
              return !col.getColDef().lockVisible;
            })) || [];
            _this.columnModel.setColumnsVisible(unlockedColumns, true, "uiColumnMoved");
          }
        },
        onGridExit: function(dragItem) {
          var _a47;
          if (hideColumnOnExit) {
            var unlockedColumns = ((_a47 = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a47 === void 0 ? void 0 : _a47.filter(function(col) {
              return !col.getColDef().lockVisible;
            })) || [];
            _this.columnModel.setColumnsVisible(unlockedColumns, false, "uiColumnMoved");
          }
        }
      };
      this.dragAndDropService.addDragSource(this.moveDragSource, true);
    };
    HeaderCellCtrl2.prototype.createDragItem = function() {
      var visibleState = {};
      visibleState[this.column.getId()] = this.column.isVisible();
      return {
        columns: [this.column],
        visibleState
      };
    };
    HeaderCellCtrl2.prototype.removeDragSource = function() {
      if (this.moveDragSource) {
        this.dragAndDropService.removeDragSource(this.moveDragSource);
        this.moveDragSource = void 0;
      }
    };
    HeaderCellCtrl2.prototype.onColDefChanged = function() {
      this.refresh();
    };
    HeaderCellCtrl2.prototype.updateState = function() {
      var colDef = this.column.getColDef();
      this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;
      this.sortable = colDef.sortable;
      this.displayName = this.calculateDisplayName();
      this.draggable = this.workOutDraggable();
    };
    HeaderCellCtrl2.prototype.addRefreshFunction = function(func) {
      this.refreshFunctions.push(func);
    };
    HeaderCellCtrl2.prototype.refresh = function() {
      this.updateState();
      this.refreshHeaderComp();
      this.refreshAria();
      this.refreshFunctions.forEach(function(f2) {
        return f2();
      });
    };
    HeaderCellCtrl2.prototype.refreshHeaderComp = function() {
      var newCompDetails = this.lookupUserCompDetails();
      var compInstance = this.comp.getUserCompInstance();
      var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;
      var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;
      if (headerCompRefreshed) {
        this.setDragSource(this.dragSourceElement);
      } else {
        this.setCompDetails(newCompDetails);
      }
    };
    HeaderCellCtrl2.prototype.attemptHeaderCompRefresh = function(params) {
      var headerComp = this.comp.getUserCompInstance();
      if (!headerComp) {
        return false;
      }
      if (!headerComp.refresh) {
        return false;
      }
      var res = headerComp.refresh(params);
      return res;
    };
    HeaderCellCtrl2.prototype.calculateDisplayName = function() {
      return this.columnModel.getDisplayNameForColumn(this.column, "header", true);
    };
    HeaderCellCtrl2.prototype.checkDisplayName = function() {
      if (this.displayName !== this.calculateDisplayName()) {
        this.refresh();
      }
    };
    HeaderCellCtrl2.prototype.workOutDraggable = function() {
      var colDef = this.column.getColDef();
      var isSuppressMovableColumns = this.gridOptionsService.is("suppressMovableColumns");
      var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;
      return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;
    };
    HeaderCellCtrl2.prototype.onColumnRowGroupChanged = function() {
      this.checkDisplayName();
    };
    HeaderCellCtrl2.prototype.onColumnPivotChanged = function() {
      this.checkDisplayName();
    };
    HeaderCellCtrl2.prototype.onColumnValueChanged = function() {
      this.checkDisplayName();
    };
    HeaderCellCtrl2.prototype.setupWidth = function() {
      var _this = this;
      var listener = function() {
        var columnWidth = _this.column.getActualWidth();
        _this.comp.setWidth(columnWidth + "px");
      };
      this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);
      listener();
    };
    HeaderCellCtrl2.prototype.setupMovingCss = function() {
      var _this = this;
      var listener = function() {
        _this.comp.addOrRemoveCssClass("ag-header-cell-moving", _this.column.isMoving());
      };
      this.addManagedListener(this.column, Column.EVENT_MOVING_CHANGED, listener);
      listener();
    };
    HeaderCellCtrl2.prototype.setupMenuClass = function() {
      var _this = this;
      var listener = function() {
        _this.comp.addOrRemoveCssClass("ag-column-menu-visible", _this.column.isMenuVisible());
      };
      this.addManagedListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, listener);
      listener();
    };
    HeaderCellCtrl2.prototype.setupSortableClass = function() {
      var _this = this;
      var updateSortableCssClass = function() {
        _this.comp.addOrRemoveCssClass("ag-header-cell-sortable", !!_this.sortable);
      };
      updateSortableCssClass();
      this.addRefreshFunction(updateSortableCssClass);
      this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));
    };
    HeaderCellCtrl2.prototype.setupWrapTextClass = function() {
      var _this = this;
      var listener = function() {
        var wrapText = !!_this.column.getColDef().wrapHeaderText;
        _this.comp.addOrRemoveCssClass("ag-header-cell-wrap-text", wrapText);
      };
      listener();
      this.addRefreshFunction(listener);
    };
    HeaderCellCtrl2.prototype.setupAutoHeight = function(wrapperElement) {
      var _this = this;
      var measureHeight = function(timesCalled) {
        if (!_this.isAlive()) {
          return;
        }
        var _a47 = getElementSize(_this.getGui()), paddingTop = _a47.paddingTop, paddingBottom = _a47.paddingBottom;
        var wrapperHeight = wrapperElement.offsetHeight;
        var autoHeight = wrapperHeight + paddingTop + paddingBottom;
        if (timesCalled < 5) {
          var doc = _this.beans.gridOptionsService.getDocument();
          var notYetInDom = !doc || !doc.contains(wrapperElement);
          var possiblyNoContentYet = autoHeight == 0;
          if (notYetInDom || possiblyNoContentYet) {
            _this.beans.frameworkOverrides.setTimeout(function() {
              return measureHeight(timesCalled + 1);
            }, 0);
            return;
          }
        }
        _this.columnModel.setColumnHeaderHeight(_this.column, autoHeight);
      };
      var isMeasuring = false;
      var stopResizeObserver;
      var checkMeasuring = function() {
        var newValue = _this.column.isAutoHeaderHeight();
        if (newValue && !isMeasuring) {
          startMeasuring();
        }
        if (!newValue && isMeasuring) {
          stopMeasuring();
        }
      };
      var startMeasuring = function() {
        isMeasuring = true;
        measureHeight(0);
        _this.comp.addOrRemoveCssClass("ag-header-cell-auto-height", true);
        stopResizeObserver = _this.resizeObserverService.observeResize(wrapperElement, function() {
          return measureHeight(0);
        });
      };
      var stopMeasuring = function() {
        isMeasuring = false;
        if (stopResizeObserver) {
          stopResizeObserver();
        }
        _this.comp.addOrRemoveCssClass("ag-header-cell-auto-height", false);
        stopResizeObserver = void 0;
      };
      checkMeasuring();
      this.addDestroyFunc(function() {
        return stopMeasuring();
      });
      this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, function() {
        return isMeasuring && measureHeight(0);
      });
      this.addManagedListener(this.eventService, Column.EVENT_SORT_CHANGED, function() {
        if (isMeasuring) {
          _this.beans.frameworkOverrides.setTimeout(function() {
            return measureHeight(0);
          });
        }
      });
      this.addRefreshFunction(checkMeasuring);
    };
    HeaderCellCtrl2.prototype.refreshAriaSort = function() {
      if (this.sortable) {
        var translate = this.localeService.getLocaleTextFunc();
        var sort = this.sortController.getDisplaySortForColumn(this.column) || null;
        this.comp.setAriaSort(getAriaSortState(sort));
        this.setAriaDescriptionProperty("sort", translate("ariaSortableColumn", "Press ENTER to sort."));
      } else {
        this.comp.setAriaSort();
        this.setAriaDescriptionProperty("sort", null);
      }
    };
    HeaderCellCtrl2.prototype.refreshAriaMenu = function() {
      if (this.menuEnabled) {
        var translate = this.localeService.getLocaleTextFunc();
        this.setAriaDescriptionProperty("menu", translate("ariaMenuColumn", "Press CTRL ENTER to open column menu."));
      } else {
        this.setAriaDescriptionProperty("menu", null);
      }
    };
    HeaderCellCtrl2.prototype.setAriaDescriptionProperty = function(property, value) {
      if (value != null) {
        this.ariaDescriptionProperties.set(property, value);
      } else {
        this.ariaDescriptionProperties.delete(property);
      }
    };
    HeaderCellCtrl2.prototype.refreshAriaDescription = function() {
      var descriptionArray = Array.from(this.ariaDescriptionProperties.values());
      this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(" ") : void 0);
    };
    HeaderCellCtrl2.prototype.refreshAria = function() {
      this.refreshAriaSort();
      this.refreshAriaMenu();
      this.refreshAriaDescription();
    };
    HeaderCellCtrl2.prototype.addColumnHoverListener = function() {
      var _this = this;
      var listener = function() {
        if (!_this.gridOptionsService.is("columnHoverHighlight")) {
          return;
        }
        var isHovered = _this.columnHoverService.isHovered(_this.column);
        _this.comp.addOrRemoveCssClass("ag-column-hover", isHovered);
      };
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);
      listener();
    };
    HeaderCellCtrl2.prototype.setupFilterCss = function() {
      var _this = this;
      var listener = function() {
        _this.comp.addOrRemoveCssClass("ag-header-cell-filtered", _this.column.isFilterActive());
      };
      this.addManagedListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, listener);
      listener();
    };
    HeaderCellCtrl2.prototype.setupColId = function() {
      this.comp.setColId(this.column.getColId());
    };
    HeaderCellCtrl2.prototype.addActiveHeaderMouseListeners = function() {
      var _this = this;
      var listener = function(e2) {
        return _this.setActiveHeader(e2.type === "mouseenter");
      };
      this.addManagedListener(this.getGui(), "mouseenter", listener);
      this.addManagedListener(this.getGui(), "mouseleave", listener);
    };
    HeaderCellCtrl2.prototype.setActiveHeader = function(active) {
      this.comp.addOrRemoveCssClass("ag-header-active", active);
    };
    __decorate83([
      Autowired("columnModel")
    ], HeaderCellCtrl2.prototype, "columnModel", void 0);
    __decorate83([
      Autowired("columnHoverService")
    ], HeaderCellCtrl2.prototype, "columnHoverService", void 0);
    __decorate83([
      Autowired("sortController")
    ], HeaderCellCtrl2.prototype, "sortController", void 0);
    __decorate83([
      Autowired("menuFactory")
    ], HeaderCellCtrl2.prototype, "menuFactory", void 0);
    __decorate83([
      Autowired("dragAndDropService")
    ], HeaderCellCtrl2.prototype, "dragAndDropService", void 0);
    __decorate83([
      Autowired("resizeObserverService")
    ], HeaderCellCtrl2.prototype, "resizeObserverService", void 0);
    __decorate83([
      Autowired("gridApi")
    ], HeaderCellCtrl2.prototype, "gridApi", void 0);
    __decorate83([
      Autowired("columnApi")
    ], HeaderCellCtrl2.prototype, "columnApi", void 0);
    __decorate83([
      PreDestroy
    ], HeaderCellCtrl2.prototype, "removeDragSource", null);
    return HeaderCellCtrl2;
  }(AbstractHeaderCellCtrl)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/groupResizeFeature.js
var __extends93 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate84 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GroupResizeFeature = (
  /** @class */
  function(_super) {
    __extends93(GroupResizeFeature2, _super);
    function GroupResizeFeature2(comp, eResize, pinned, columnGroup) {
      var _this = _super.call(this) || this;
      _this.eResize = eResize;
      _this.comp = comp;
      _this.pinned = pinned;
      _this.columnGroup = columnGroup;
      return _this;
    }
    GroupResizeFeature2.prototype.postConstruct = function() {
      var _this = this;
      if (!this.columnGroup.isResizable()) {
        this.comp.setResizableDisplayed(false);
        return;
      }
      var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({
        eResizeBar: this.eResize,
        onResizeStart: this.onResizeStart.bind(this),
        onResizing: this.onResizing.bind(this, false),
        onResizeEnd: this.onResizing.bind(this, true)
      });
      this.addDestroyFunc(finishedWithResizeFunc);
      if (!this.gridOptionsService.is("suppressAutoSize")) {
        var skipHeaderOnAutoSize_1 = this.gridOptionsService.is("skipHeaderOnAutoSize");
        this.eResize.addEventListener("dblclick", function() {
          var keys3 = [];
          var leafCols = _this.columnGroup.getDisplayedLeafColumns();
          leafCols.forEach(function(column) {
            if (!column.getColDef().suppressAutoSize) {
              keys3.push(column.getColId());
            }
          });
          if (keys3.length > 0) {
            _this.columnModel.autoSizeColumns({
              columns: keys3,
              skipHeader: skipHeaderOnAutoSize_1,
              stopAtGroup: _this.columnGroup,
              source: "uiColumnResized"
            });
          }
          _this.resizeLeafColumnsToFit();
        });
      }
    };
    GroupResizeFeature2.prototype.onResizeStart = function(shiftKey) {
      var _this = this;
      this.calculateInitialValues();
      var takeFromGroup = null;
      if (shiftKey) {
        takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);
      }
      if (takeFromGroup) {
        var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();
        this.resizeTakeFromCols = takeFromLeafCols.filter(function(col) {
          return col.isResizable();
        });
        this.resizeTakeFromStartWidth = 0;
        this.resizeTakeFromCols.forEach(function(col) {
          return _this.resizeTakeFromStartWidth += col.getActualWidth();
        });
        this.resizeTakeFromRatios = [];
        this.resizeTakeFromCols.forEach(function(col) {
          return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth);
        });
      } else {
        this.resizeTakeFromCols = null;
        this.resizeTakeFromStartWidth = null;
        this.resizeTakeFromRatios = null;
      }
      this.comp.addOrRemoveCssClass("ag-column-resizing", true);
    };
    GroupResizeFeature2.prototype.onResizing = function(finished, resizeAmount) {
      var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);
      var width = this.resizeStartWidth + resizeAmountNormalised;
      this.resizeColumns(width, finished);
    };
    GroupResizeFeature2.prototype.resizeLeafColumnsToFit = function() {
      var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);
      this.calculateInitialValues();
      if (preferredSize > this.resizeStartWidth) {
        this.resizeColumns(preferredSize, true);
      }
    };
    GroupResizeFeature2.prototype.resizeColumns = function(totalWidth, finished) {
      if (finished === void 0) {
        finished = true;
      }
      var resizeSets = [];
      resizeSets.push({
        columns: this.resizeCols,
        ratios: this.resizeRatios,
        width: totalWidth
      });
      if (this.resizeTakeFromCols) {
        var diff = totalWidth - this.resizeStartWidth;
        resizeSets.push({
          columns: this.resizeTakeFromCols,
          ratios: this.resizeTakeFromRatios,
          width: this.resizeTakeFromStartWidth - diff
        });
      }
      this.columnModel.resizeColumnSets({
        resizeSets,
        finished,
        source: "uiColumnDragged"
      });
      if (finished) {
        this.comp.addOrRemoveCssClass("ag-column-resizing", false);
      }
    };
    GroupResizeFeature2.prototype.calculateInitialValues = function() {
      var _this = this;
      var leafCols = this.columnGroup.getDisplayedLeafColumns();
      this.resizeCols = leafCols.filter(function(col) {
        return col.isResizable();
      });
      this.resizeStartWidth = 0;
      this.resizeCols.forEach(function(col) {
        return _this.resizeStartWidth += col.getActualWidth();
      });
      this.resizeRatios = [];
      this.resizeCols.forEach(function(col) {
        return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth);
      });
    };
    GroupResizeFeature2.prototype.normaliseDragChange = function(dragChange) {
      var result = dragChange;
      if (this.gridOptionsService.is("enableRtl")) {
        if (this.pinned !== "left") {
          result *= -1;
        }
      } else if (this.pinned === "right") {
        result *= -1;
      }
      return result;
    };
    __decorate84([
      Autowired("horizontalResizeService")
    ], GroupResizeFeature2.prototype, "horizontalResizeService", void 0);
    __decorate84([
      Autowired("autoWidthCalculator")
    ], GroupResizeFeature2.prototype, "autoWidthCalculator", void 0);
    __decorate84([
      Autowired("columnModel")
    ], GroupResizeFeature2.prototype, "columnModel", void 0);
    __decorate84([
      PostConstruct
    ], GroupResizeFeature2.prototype, "postConstruct", null);
    return GroupResizeFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/groupWidthFeature.js
var __extends94 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate85 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GroupWidthFeature = (
  /** @class */
  function(_super) {
    __extends94(GroupWidthFeature2, _super);
    function GroupWidthFeature2(comp, columnGroup) {
      var _this = _super.call(this) || this;
      _this.removeChildListenersFuncs = [];
      _this.columnGroup = columnGroup;
      _this.comp = comp;
      return _this;
    }
    GroupWidthFeature2.prototype.postConstruct = function() {
      this.addListenersToChildrenColumns();
      this.addManagedListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));
      this.onWidthChanged();
      this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));
    };
    GroupWidthFeature2.prototype.addListenersToChildrenColumns = function() {
      var _this = this;
      this.removeListenersOnChildrenColumns();
      var widthChangedListener = this.onWidthChanged.bind(this);
      this.columnGroup.getLeafColumns().forEach(function(column) {
        column.addEventListener("widthChanged", widthChangedListener);
        column.addEventListener("visibleChanged", widthChangedListener);
        _this.removeChildListenersFuncs.push(function() {
          column.removeEventListener("widthChanged", widthChangedListener);
          column.removeEventListener("visibleChanged", widthChangedListener);
        });
      });
    };
    GroupWidthFeature2.prototype.removeListenersOnChildrenColumns = function() {
      this.removeChildListenersFuncs.forEach(function(func) {
        return func();
      });
      this.removeChildListenersFuncs = [];
    };
    GroupWidthFeature2.prototype.onDisplayedChildrenChanged = function() {
      this.addListenersToChildrenColumns();
      this.onWidthChanged();
    };
    GroupWidthFeature2.prototype.onWidthChanged = function() {
      var columnWidth = this.columnGroup.getActualWidth();
      this.comp.setWidth(columnWidth + "px");
      this.comp.addOrRemoveCssClass("ag-hidden", columnWidth === 0);
    };
    __decorate85([
      PostConstruct
    ], GroupWidthFeature2.prototype, "postConstruct", null);
    return GroupWidthFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupCellCtrl.js
var __extends95 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate86 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderGroupCellCtrl = (
  /** @class */
  function(_super) {
    __extends95(HeaderGroupCellCtrl2, _super);
    function HeaderGroupCellCtrl2(columnGroup, parentRowCtrl) {
      var _this = _super.call(this, columnGroup, parentRowCtrl) || this;
      _this.columnGroup = columnGroup;
      return _this;
    }
    HeaderGroupCellCtrl2.prototype.setComp = function(comp, eGui, eResize) {
      _super.prototype.setGui.call(this, eGui);
      this.comp = comp;
      this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, "header");
      this.addClasses();
      this.addAttributes();
      this.setupMovingCss();
      this.setupExpandable();
      this.setupTooltip();
      this.setupUserComp();
      var pinned = this.getParentRowCtrl().getPinned();
      var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
      this.createManagedBean(new HoverFeature(leafCols, eGui));
      this.createManagedBean(new SetLeftFeature(this.columnGroup, eGui, this.beans));
      this.createManagedBean(new GroupWidthFeature(comp, this.columnGroup));
      this.groupResizeFeature = this.createManagedBean(new GroupResizeFeature(comp, eResize, pinned, this.columnGroup));
      this.createManagedBean(new ManagedFocusFeature(eGui, {
        shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),
        onTabKeyDown: function() {
          return void 0;
        },
        handleKeyDown: this.handleKeyDown.bind(this),
        onFocusIn: this.onFocusIn.bind(this)
      }));
    };
    HeaderGroupCellCtrl2.prototype.resizeLeafColumnsToFit = function() {
      this.groupResizeFeature.onResizeStart(false);
      this.groupResizeFeature.resizeLeafColumnsToFit();
    };
    HeaderGroupCellCtrl2.prototype.setupUserComp = function() {
      var _this = this;
      var displayName = this.displayName;
      var params = {
        displayName: this.displayName,
        columnGroup: this.columnGroup,
        setExpanded: function(expanded) {
          _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, "gridInitializing");
        },
        api: this.gridApi,
        columnApi: this.columnApi,
        context: this.gridOptionsService.get("context")
      };
      if (!displayName) {
        var columnGroup = this.columnGroup;
        var leafCols = columnGroup.getLeafColumns();
        while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {
          columnGroup = columnGroup.getParent();
        }
        var colGroupDef = columnGroup.getColGroupDef();
        if (colGroupDef) {
          displayName = colGroupDef.headerName;
        }
        if (!displayName) {
          displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], "header", true) : "";
        }
      }
      var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);
      this.comp.setUserCompDetails(compDetails);
    };
    HeaderGroupCellCtrl2.prototype.setupTooltip = function() {
      var _this = this;
      var colGroupDef = this.columnGroup.getColGroupDef();
      var tooltipCtrl = {
        getColumn: function() {
          return _this.columnGroup;
        },
        getGui: function() {
          return _this.eGui;
        },
        getLocation: function() {
          return "headerGroup";
        },
        getTooltipValue: function() {
          return colGroupDef && colGroupDef.headerTooltip;
        }
      };
      if (colGroupDef) {
        tooltipCtrl.getColDef = function() {
          return colGroupDef;
        };
      }
      var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));
      tooltipFeature.setComp(this.comp);
    };
    HeaderGroupCellCtrl2.prototype.setupExpandable = function() {
      var providedColGroup = this.columnGroup.getProvidedColumnGroup();
      this.refreshExpanded();
      this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));
      this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));
    };
    HeaderGroupCellCtrl2.prototype.refreshExpanded = function() {
      var column = this.columnGroup;
      this.expandable = column.isExpandable();
      var expanded = column.isExpanded();
      if (this.expandable) {
        this.comp.setAriaExpanded(expanded ? "true" : "false");
      } else {
        this.comp.setAriaExpanded(void 0);
      }
    };
    HeaderGroupCellCtrl2.prototype.addAttributes = function() {
      this.comp.setColId(this.columnGroup.getUniqueId());
    };
    HeaderGroupCellCtrl2.prototype.addClasses = function() {
      var _this = this;
      var colGroupDef = this.columnGroup.getColGroupDef();
      var classes = CssClassApplier.getHeaderClassesFromColDef(colGroupDef, this.gridOptionsService, null, this.columnGroup);
      classes.push(this.columnGroup.isPadding() ? "ag-header-group-cell-no-group" : "ag-header-group-cell-with-group");
      classes.forEach(function(c2) {
        return _this.comp.addOrRemoveCssClass(c2, true);
      });
    };
    HeaderGroupCellCtrl2.prototype.setupMovingCss = function() {
      var _this = this;
      var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();
      var leafColumns = providedColumnGroup.getLeafColumns();
      var listener = function() {
        return _this.comp.addOrRemoveCssClass("ag-header-cell-moving", _this.columnGroup.isMoving());
      };
      leafColumns.forEach(function(col) {
        _this.addManagedListener(col, Column.EVENT_MOVING_CHANGED, listener);
      });
      listener();
    };
    HeaderGroupCellCtrl2.prototype.onFocusIn = function(e2) {
      if (!this.eGui.contains(e2.relatedTarget)) {
        var rowIndex = this.getRowIndex();
        this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);
      }
    };
    HeaderGroupCellCtrl2.prototype.handleKeyDown = function(e2) {
      _super.prototype.handleKeyDown.call(this, e2);
      var wrapperHasFocus = this.getWrapperHasFocus();
      if (!this.expandable || !wrapperHasFocus) {
        return;
      }
      if (e2.key === KeyCode.ENTER) {
        var column = this.columnGroup;
        var newExpandedValue = !column.isExpanded();
        this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, "uiColumnExpanded");
      }
    };
    HeaderGroupCellCtrl2.prototype.setDragSource = function(eHeaderGroup) {
      var _this = this;
      if (this.isSuppressMoving()) {
        return;
      }
      var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
      var hideColumnOnExit = !this.gridOptionsService.is("suppressDragLeaveHidesColumns");
      var dragSource = {
        type: DragSourceType.HeaderCell,
        eElement: eHeaderGroup,
        defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,
        dragItemName: this.displayName,
        // we add in the original group leaf columns, so we move both visible and non-visible items
        getDragItem: this.getDragItemForGroup.bind(this),
        onDragStarted: function() {
          return allLeafColumns.forEach(function(col) {
            return col.setMoving(true, "uiColumnDragged");
          });
        },
        onDragStopped: function() {
          return allLeafColumns.forEach(function(col) {
            return col.setMoving(false, "uiColumnDragged");
          });
        },
        onGridEnter: function(dragItem) {
          var _a47;
          if (hideColumnOnExit) {
            var unlockedColumns = ((_a47 = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a47 === void 0 ? void 0 : _a47.filter(function(col) {
              return !col.getColDef().lockVisible;
            })) || [];
            _this.columnModel.setColumnsVisible(unlockedColumns, true, "uiColumnMoved");
          }
        },
        onGridExit: function(dragItem) {
          var _a47;
          if (hideColumnOnExit) {
            var unlockedColumns = ((_a47 = dragItem === null || dragItem === void 0 ? void 0 : dragItem.columns) === null || _a47 === void 0 ? void 0 : _a47.filter(function(col) {
              return !col.getColDef().lockVisible;
            })) || [];
            _this.columnModel.setColumnsVisible(unlockedColumns, false, "uiColumnMoved");
          }
        }
      };
      this.dragAndDropService.addDragSource(dragSource, true);
      this.addDestroyFunc(function() {
        return _this.dragAndDropService.removeDragSource(dragSource);
      });
    };
    HeaderGroupCellCtrl2.prototype.getDragItemForGroup = function() {
      var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
      var visibleState = {};
      allColumnsOriginalOrder.forEach(function(column) {
        return visibleState[column.getId()] = column.isVisible();
      });
      var allColumnsCurrentOrder = [];
      this.columnModel.getAllDisplayedColumns().forEach(function(column) {
        if (allColumnsOriginalOrder.indexOf(column) >= 0) {
          allColumnsCurrentOrder.push(column);
          removeFromArray(allColumnsOriginalOrder, column);
        }
      });
      allColumnsOriginalOrder.forEach(function(column) {
        return allColumnsCurrentOrder.push(column);
      });
      return {
        columns: allColumnsCurrentOrder,
        visibleState
      };
    };
    HeaderGroupCellCtrl2.prototype.isSuppressMoving = function() {
      var childSuppressesMoving = false;
      this.columnGroup.getLeafColumns().forEach(function(column) {
        if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {
          childSuppressesMoving = true;
        }
      });
      var result = childSuppressesMoving || this.gridOptionsService.is("suppressMovableColumns");
      return result;
    };
    __decorate86([
      Autowired("columnModel")
    ], HeaderGroupCellCtrl2.prototype, "columnModel", void 0);
    __decorate86([
      Autowired("dragAndDropService")
    ], HeaderGroupCellCtrl2.prototype, "dragAndDropService", void 0);
    __decorate86([
      Autowired("gridApi")
    ], HeaderGroupCellCtrl2.prototype, "gridApi", void 0);
    __decorate86([
      Autowired("columnApi")
    ], HeaderGroupCellCtrl2.prototype, "columnApi", void 0);
    return HeaderGroupCellCtrl2;
  }(AbstractHeaderCellCtrl)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/row/headerRowCtrl.js
var __extends96 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate87 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var instanceIdSequence5 = 0;
var HeaderRowCtrl = (
  /** @class */
  function(_super) {
    __extends96(HeaderRowCtrl2, _super);
    function HeaderRowCtrl2(rowIndex, pinned, type2) {
      var _this = _super.call(this) || this;
      _this.instanceId = instanceIdSequence5++;
      _this.headerCellCtrls = {};
      _this.rowIndex = rowIndex;
      _this.pinned = pinned;
      _this.type = type2;
      return _this;
    }
    HeaderRowCtrl2.prototype.getInstanceId = function() {
      return this.instanceId;
    };
    HeaderRowCtrl2.prototype.setComp = function(comp) {
      this.comp = comp;
      this.onRowHeightChanged();
      this.onVirtualColumnsChanged();
      this.setWidth();
      this.addEventListeners();
      if (isBrowserSafari()) {
        this.comp.setTransform("translateZ(0)");
      }
      comp.setAriaRowIndex(this.rowIndex + 1);
    };
    HeaderRowCtrl2.prototype.addEventListeners = function() {
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));
      this.addManagedPropertyListener("domLayout", this.onDisplayedColumnsChanged.bind(this));
      this.addManagedPropertyListener("headerHeight", this.onRowHeightChanged.bind(this));
      this.addManagedPropertyListener("pivotHeaderHeight", this.onRowHeightChanged.bind(this));
      this.addManagedPropertyListener("groupHeaderHeight", this.onRowHeightChanged.bind(this));
      this.addManagedPropertyListener("pivotGroupHeaderHeight", this.onRowHeightChanged.bind(this));
      this.addManagedPropertyListener("floatingFiltersHeight", this.onRowHeightChanged.bind(this));
    };
    HeaderRowCtrl2.prototype.getHeaderCellCtrl = function(column) {
      return values(this.headerCellCtrls).find(function(cellCtrl) {
        return cellCtrl.getColumnGroupChild() === column;
      });
    };
    HeaderRowCtrl2.prototype.onDisplayedColumnsChanged = function() {
      this.onVirtualColumnsChanged();
      this.setWidth();
      this.onRowHeightChanged();
    };
    HeaderRowCtrl2.prototype.getType = function() {
      return this.type;
    };
    HeaderRowCtrl2.prototype.onColumnResized = function() {
      this.setWidth();
    };
    HeaderRowCtrl2.prototype.setWidth = function() {
      var width = this.getWidthForRow();
      this.comp.setWidth(width + "px");
    };
    HeaderRowCtrl2.prototype.getWidthForRow = function() {
      var printLayout = this.gridOptionsService.isDomLayout("print");
      if (printLayout) {
        var pinned = this.pinned != null;
        if (pinned) {
          return 0;
        }
        return this.columnModel.getContainerWidth("right") + this.columnModel.getContainerWidth("left") + this.columnModel.getContainerWidth(null);
      }
      return this.columnModel.getContainerWidth(this.pinned);
    };
    HeaderRowCtrl2.prototype.onRowHeightChanged = function() {
      var headerRowCount = this.columnModel.getHeaderRowCount();
      var sizes = [];
      var numberOfFloating = 0;
      if (this.columnModel.hasFloatingFilters()) {
        headerRowCount++;
        numberOfFloating = 1;
      }
      var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();
      var headerHeight = this.columnModel.getColumnHeaderRowHeight();
      var numberOfNonGroups = 1 + numberOfFloating;
      var numberOfGroups = headerRowCount - numberOfNonGroups;
      for (var i2 = 0; i2 < numberOfGroups; i2++) {
        sizes.push(groupHeight);
      }
      sizes.push(headerHeight);
      for (var i2 = 0; i2 < numberOfFloating; i2++) {
        sizes.push(this.columnModel.getFloatingFiltersHeight());
      }
      var topOffset = 0;
      for (var i2 = 0; i2 < this.rowIndex; i2++) {
        topOffset += sizes[i2];
      }
      var thisRowHeight = sizes[this.rowIndex] + "px";
      this.comp.setTop(topOffset + "px");
      this.comp.setHeight(thisRowHeight);
    };
    HeaderRowCtrl2.prototype.getPinned = function() {
      return this.pinned;
    };
    HeaderRowCtrl2.prototype.getRowIndex = function() {
      return this.rowIndex;
    };
    HeaderRowCtrl2.prototype.onVirtualColumnsChanged = function() {
      var _this = this;
      var oldCtrls = this.headerCellCtrls;
      this.headerCellCtrls = {};
      var columns = this.getColumnsInViewport();
      columns.forEach(function(child) {
        if (child.isEmptyGroup()) {
          return;
        }
        var idOfChild = child.getUniqueId();
        var headerCtrl = oldCtrls[idOfChild];
        delete oldCtrls[idOfChild];
        var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;
        if (forOldColumn) {
          _this.destroyBean(headerCtrl);
          headerCtrl = void 0;
        }
        if (headerCtrl == null) {
          switch (_this.type) {
            case HeaderRowType.FLOATING_FILTER:
              headerCtrl = _this.createBean(new HeaderFilterCellCtrl(child, _this));
              break;
            case HeaderRowType.COLUMN_GROUP:
              headerCtrl = _this.createBean(new HeaderGroupCellCtrl(child, _this));
              break;
            default:
              headerCtrl = _this.createBean(new HeaderCellCtrl(child, _this));
              break;
          }
        }
        _this.headerCellCtrls[idOfChild] = headerCtrl;
      });
      var isFocusedAndDisplayed = function(ctrl) {
        var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);
        if (!isFocused) {
          return false;
        }
        var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());
        return isDisplayed;
      };
      iterateObject(oldCtrls, function(id, oldCtrl) {
        var keepCtrl = isFocusedAndDisplayed(oldCtrl);
        if (keepCtrl) {
          _this.headerCellCtrls[id] = oldCtrl;
        } else {
          _this.destroyBean(oldCtrl);
        }
      });
      var ctrlsToDisplay = getAllValuesInObject(this.headerCellCtrls);
      this.comp.setHeaderCtrls(ctrlsToDisplay);
    };
    HeaderRowCtrl2.prototype.destroyCtrls = function() {
      var _this = this;
      iterateObject(this.headerCellCtrls, function(key, ctrl) {
        _this.destroyBean(ctrl);
      });
      this.headerCellCtrls = {};
    };
    HeaderRowCtrl2.prototype.getColumnsInViewport = function() {
      var printLayout = this.gridOptionsService.isDomLayout("print");
      return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();
    };
    HeaderRowCtrl2.prototype.getColumnsInViewportPrintLayout = function() {
      var _this = this;
      if (this.pinned != null) {
        return [];
      }
      var viewportColumns = [];
      var actualDepth = this.getActualDepth();
      ["left", null, "right"].forEach(function(pinned) {
        var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);
        viewportColumns = viewportColumns.concat(items);
      });
      return viewportColumns;
    };
    HeaderRowCtrl2.prototype.getActualDepth = function() {
      return this.type == HeaderRowType.FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;
    };
    HeaderRowCtrl2.prototype.getColumnsInViewportNormalLayout = function() {
      return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());
    };
    HeaderRowCtrl2.prototype.focusHeader = function(column, event) {
      var allCtrls = getAllValuesInObject(this.headerCellCtrls);
      var ctrl = allCtrls.find(function(ctrl2) {
        return ctrl2.getColumnGroupChild() == column;
      });
      if (!ctrl) {
        return false;
      }
      ctrl.focus(event);
      return true;
    };
    __decorate87([
      Autowired("columnModel")
    ], HeaderRowCtrl2.prototype, "columnModel", void 0);
    __decorate87([
      Autowired("focusService")
    ], HeaderRowCtrl2.prototype, "focusService", void 0);
    __decorate87([
      PreDestroy
    ], HeaderRowCtrl2.prototype, "destroyCtrls", null);
    return HeaderRowCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/rowContainer/headerRowContainerCtrl.js
var __extends97 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate88 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read14 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread10 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read14(arguments[i2]));
  return ar;
};
var HeaderRowContainerCtrl = (
  /** @class */
  function(_super) {
    __extends97(HeaderRowContainerCtrl2, _super);
    function HeaderRowContainerCtrl2(pinned) {
      var _this = _super.call(this) || this;
      _this.hidden = false;
      _this.groupsRowCtrls = [];
      _this.pinned = pinned;
      return _this;
    }
    HeaderRowContainerCtrl2.prototype.setComp = function(comp, eGui) {
      this.comp = comp;
      this.eViewport = eGui;
      this.setupCenterWidth();
      this.setupPinnedWidth();
      this.setupDragAndDrop(this.eViewport);
      this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));
      this.addManagedListener(this.eViewport, "scroll", this.resetScrollLeft.bind(this));
      this.ctrlsService.registerHeaderContainer(this, this.pinned);
      if (this.columnModel.isReady()) {
        this.refresh();
      }
    };
    HeaderRowContainerCtrl2.prototype.setupDragAndDrop = function(dropContainer) {
      var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);
      this.createManagedBean(bodyDropTarget);
    };
    HeaderRowContainerCtrl2.prototype.refresh = function(keepColumns) {
      var _this = this;
      if (keepColumns === void 0) {
        keepColumns = false;
      }
      var sequence = new NumberSequence();
      var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();
      var refreshColumnGroups = function() {
        var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;
        _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);
        for (var i2 = 0; i2 < groupRowCount; i2++) {
          var ctrl = _this.createBean(new HeaderRowCtrl(sequence.next(), _this.pinned, HeaderRowType.COLUMN_GROUP));
          _this.groupsRowCtrls.push(ctrl);
        }
      };
      var refreshColumns = function() {
        var rowIndex = sequence.next();
        var needNewInstance = !_this.hidden && (_this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex);
        var shouldDestroyInstance = needNewInstance || _this.hidden;
        if (shouldDestroyInstance) {
          _this.columnsRowCtrl = _this.destroyBean(_this.columnsRowCtrl);
        }
        if (needNewInstance) {
          _this.columnsRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.COLUMN));
        }
      };
      var refreshFilters = function() {
        var includeFloatingFilter = _this.columnModel.hasFloatingFilters() && !_this.hidden;
        var destroyPreviousComp = function() {
          _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);
        };
        if (!includeFloatingFilter) {
          destroyPreviousComp();
          return;
        }
        var rowIndex = sequence.next();
        if (_this.filtersRowCtrl) {
          var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;
          if (!keepColumns || rowIndexMismatch) {
            destroyPreviousComp();
          }
        }
        if (!_this.filtersRowCtrl) {
          _this.filtersRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.FLOATING_FILTER));
        }
      };
      refreshColumnGroups();
      refreshColumns();
      refreshFilters();
      var allCtrls = this.getAllCtrls();
      this.comp.setCtrls(allCtrls);
      this.restoreFocusOnHeader(focusedHeaderPosition);
    };
    HeaderRowContainerCtrl2.prototype.restoreFocusOnHeader = function(position) {
      if (position == null || position.column.getPinned() != this.pinned) {
        return;
      }
      this.focusService.focusHeaderPosition({ headerPosition: position });
    };
    HeaderRowContainerCtrl2.prototype.getAllCtrls = function() {
      var res = __spread10(this.groupsRowCtrls);
      if (this.columnsRowCtrl) {
        res.push(this.columnsRowCtrl);
      }
      if (this.filtersRowCtrl) {
        res.push(this.filtersRowCtrl);
      }
      return res;
    };
    HeaderRowContainerCtrl2.prototype.onGridColumnsChanged = function() {
      this.refresh(true);
    };
    HeaderRowContainerCtrl2.prototype.setupCenterWidth = function() {
      var _this = this;
      if (this.pinned != null) {
        return;
      }
      this.createManagedBean(new CenterWidthFeature(function(width) {
        return _this.comp.setCenterWidth(width + "px");
      }));
    };
    HeaderRowContainerCtrl2.prototype.setHorizontalScroll = function(offset) {
      this.comp.setContainerTransform("translateX(" + offset + "px)");
    };
    HeaderRowContainerCtrl2.prototype.resetScrollLeft = function() {
      this.eViewport.scrollLeft = 0;
    };
    HeaderRowContainerCtrl2.prototype.setupPinnedWidth = function() {
      var _this = this;
      if (this.pinned == null) {
        return;
      }
      var pinningLeft = this.pinned === "left";
      var pinningRight = this.pinned === "right";
      this.hidden = true;
      var listener = function() {
        var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();
        if (width == null) {
          return;
        }
        var hidden = width == 0;
        var hiddenChanged = _this.hidden !== hidden;
        var isRtl = _this.gridOptionsService.is("enableRtl");
        var scrollbarWidth = _this.gridOptionsService.getScrollbarWidth();
        var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && (isRtl && pinningLeft || !isRtl && pinningRight);
        var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;
        _this.comp.setPinnedContainerWidth(widthWithPadding + "px");
        _this.comp.setDisplayed(!hidden);
        if (hiddenChanged) {
          _this.hidden = hidden;
          _this.refresh();
        }
      };
      this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);
      this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);
      this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);
      this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);
    };
    HeaderRowContainerCtrl2.prototype.getHeaderCtrlForColumn = function(column) {
      if (column instanceof Column) {
        if (!this.columnsRowCtrl) {
          return;
        }
        return this.columnsRowCtrl.getHeaderCellCtrl(column);
      }
      if (this.groupsRowCtrls.length === 0) {
        return;
      }
      for (var i2 = 0; i2 < this.groupsRowCtrls.length; i2++) {
        var ctrl = this.groupsRowCtrls[i2].getHeaderCellCtrl(column);
        if (ctrl) {
          return ctrl;
        }
      }
    };
    HeaderRowContainerCtrl2.prototype.getHtmlElementForColumnHeader = function(column) {
      var cellCtrl = this.getHeaderCtrlForColumn(column);
      if (!cellCtrl) {
        return null;
      }
      return cellCtrl.getGui();
    };
    HeaderRowContainerCtrl2.prototype.getRowType = function(rowIndex) {
      var allCtrls = this.getAllCtrls();
      var ctrl = allCtrls[rowIndex];
      return ctrl ? ctrl.getType() : void 0;
    };
    HeaderRowContainerCtrl2.prototype.focusHeader = function(rowIndex, column, event) {
      var allCtrls = this.getAllCtrls();
      var ctrl = allCtrls[rowIndex];
      if (!ctrl) {
        return false;
      }
      return ctrl.focusHeader(column, event);
    };
    HeaderRowContainerCtrl2.prototype.getRowCount = function() {
      return this.getAllCtrls().length;
    };
    __decorate88([
      Autowired("ctrlsService")
    ], HeaderRowContainerCtrl2.prototype, "ctrlsService", void 0);
    __decorate88([
      Autowired("scrollVisibleService")
    ], HeaderRowContainerCtrl2.prototype, "scrollVisibleService", void 0);
    __decorate88([
      Autowired("pinnedWidthService")
    ], HeaderRowContainerCtrl2.prototype, "pinnedWidthService", void 0);
    __decorate88([
      Autowired("columnModel")
    ], HeaderRowContainerCtrl2.prototype, "columnModel", void 0);
    __decorate88([
      Autowired("focusService")
    ], HeaderRowContainerCtrl2.prototype, "focusService", void 0);
    return HeaderRowContainerCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/rowContainer/headerRowContainerComp.js
var __extends98 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate89 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderRowContainerComp = (
  /** @class */
  function(_super) {
    __extends98(HeaderRowContainerComp2, _super);
    function HeaderRowContainerComp2(pinned) {
      var _this = _super.call(this) || this;
      _this.headerRowComps = {};
      _this.rowCompsList = [];
      _this.pinned = pinned;
      return _this;
    }
    HeaderRowContainerComp2.prototype.init = function() {
      var _this = this;
      this.selectAndSetTemplate();
      var compProxy = {
        setDisplayed: function(displayed) {
          return _this.setDisplayed(displayed);
        },
        setCtrls: function(ctrls) {
          return _this.setCtrls(ctrls);
        },
        // only gets called for center section
        setCenterWidth: function(width) {
          return _this.eCenterContainer.style.width = width;
        },
        setContainerTransform: function(transform) {
          return _this.eCenterContainer.style.transform = transform;
        },
        // only gets called for pinned sections
        setPinnedContainerWidth: function(width) {
          var eGui = _this.getGui();
          eGui.style.width = width;
          eGui.style.maxWidth = width;
          eGui.style.minWidth = width;
        }
      };
      var ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));
      ctrl.setComp(compProxy, this.getGui());
    };
    HeaderRowContainerComp2.prototype.selectAndSetTemplate = function() {
      var pinnedLeft = this.pinned == "left";
      var pinnedRight = this.pinned == "right";
      var template = pinnedLeft ? HeaderRowContainerComp2.PINNED_LEFT_TEMPLATE : pinnedRight ? HeaderRowContainerComp2.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp2.CENTER_TEMPLATE;
      this.setTemplate(template);
      this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();
    };
    HeaderRowContainerComp2.prototype.destroyRowComps = function() {
      this.setCtrls([]);
    };
    HeaderRowContainerComp2.prototype.destroyRowComp = function(rowComp) {
      this.destroyBean(rowComp);
      this.eRowContainer.removeChild(rowComp.getGui());
    };
    HeaderRowContainerComp2.prototype.setCtrls = function(ctrls) {
      var _this = this;
      var oldRowComps = this.headerRowComps;
      this.headerRowComps = {};
      this.rowCompsList = [];
      var prevGui;
      var appendEnsuringDomOrder = function(rowComp) {
        var eGui = rowComp.getGui();
        var notAlreadyIn = eGui.parentElement != _this.eRowContainer;
        if (notAlreadyIn) {
          _this.eRowContainer.appendChild(eGui);
        }
        if (prevGui) {
          ensureDomOrder(_this.eRowContainer, eGui, prevGui);
        }
        prevGui = eGui;
      };
      ctrls.forEach(function(ctrl) {
        var ctrlId = ctrl.getInstanceId();
        var existingComp = oldRowComps[ctrlId];
        delete oldRowComps[ctrlId];
        var rowComp = existingComp ? existingComp : _this.createBean(new HeaderRowComp(ctrl));
        _this.headerRowComps[ctrlId] = rowComp;
        _this.rowCompsList.push(rowComp);
        appendEnsuringDomOrder(rowComp);
      });
      getAllValuesInObject(oldRowComps).forEach(function(c2) {
        return _this.destroyRowComp(c2);
      });
    };
    HeaderRowContainerComp2.PINNED_LEFT_TEMPLATE = '<div class="ag-pinned-left-header" role="presentation"></div>';
    HeaderRowContainerComp2.PINNED_RIGHT_TEMPLATE = '<div class="ag-pinned-right-header" role="presentation"></div>';
    HeaderRowContainerComp2.CENTER_TEMPLATE = '<div class="ag-header-viewport" role="presentation">\n            <div class="ag-header-container" ref="eCenterContainer" role="rowgroup"></div>\n        </div>';
    __decorate89([
      RefSelector("eCenterContainer")
    ], HeaderRowContainerComp2.prototype, "eCenterContainer", void 0);
    __decorate89([
      PostConstruct
    ], HeaderRowContainerComp2.prototype, "init", null);
    __decorate89([
      PreDestroy
    ], HeaderRowContainerComp2.prototype, "destroyRowComps", null);
    return HeaderRowContainerComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/common/headerNavigationService.js
var __extends99 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate90 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderNavigationDirection;
(function(HeaderNavigationDirection2) {
  HeaderNavigationDirection2[HeaderNavigationDirection2["UP"] = 0] = "UP";
  HeaderNavigationDirection2[HeaderNavigationDirection2["DOWN"] = 1] = "DOWN";
  HeaderNavigationDirection2[HeaderNavigationDirection2["LEFT"] = 2] = "LEFT";
  HeaderNavigationDirection2[HeaderNavigationDirection2["RIGHT"] = 3] = "RIGHT";
})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));
var HeaderNavigationService = (
  /** @class */
  function(_super) {
    __extends99(HeaderNavigationService2, _super);
    function HeaderNavigationService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    HeaderNavigationService2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        _this.gridBodyCon = p2.gridBodyCtrl;
      });
    };
    HeaderNavigationService2.prototype.getHeaderRowCount = function() {
      var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
      return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;
    };
    HeaderNavigationService2.prototype.getHeaderRowType = function(rowIndex) {
      var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
      if (centerHeaderContainer) {
        return centerHeaderContainer.getRowType(rowIndex);
      }
    };
    HeaderNavigationService2.prototype.navigateVertically = function(direction, fromHeader, event) {
      if (!fromHeader) {
        fromHeader = this.focusService.getFocusedHeader();
      }
      if (!fromHeader) {
        return false;
      }
      var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;
      var rowLen = this.getHeaderRowCount();
      var isUp = direction === HeaderNavigationDirection.UP;
      var nextRow = isUp ? headerRowIndex - 1 : headerRowIndex + 1;
      var nextFocusColumn = null;
      var skipColumn = false;
      if (nextRow < 0) {
        nextRow = 0;
        nextFocusColumn = column;
        skipColumn = true;
      }
      if (nextRow >= rowLen) {
        nextRow = -1;
      }
      var currentRowType = this.getHeaderRowType(headerRowIndex);
      if (!skipColumn) {
        if (currentRowType === HeaderRowType.COLUMN_GROUP) {
          var currentColumn = column;
          nextFocusColumn = isUp ? column.getParent() : currentColumn.getDisplayedChildren()[0];
        } else if (currentRowType === HeaderRowType.FLOATING_FILTER) {
          nextFocusColumn = column;
        } else {
          var currentColumn = column;
          nextFocusColumn = isUp ? currentColumn.getParent() : currentColumn;
        }
        if (!nextFocusColumn) {
          return false;
        }
      }
      return this.focusService.focusHeaderPosition({
        headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },
        allowUserOverride: true,
        event
      });
    };
    HeaderNavigationService2.prototype.navigateHorizontally = function(direction, fromTab, event) {
      if (fromTab === void 0) {
        fromTab = false;
      }
      var focusedHeader = this.focusService.getFocusedHeader();
      var isLeft = direction === HeaderNavigationDirection.LEFT;
      var isRtl = this.gridOptionsService.is("enableRtl");
      var nextHeader;
      var normalisedDirection;
      if (isLeft !== isRtl) {
        normalisedDirection = "Before";
        nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);
      } else {
        normalisedDirection = "After";
        nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);
      }
      if (nextHeader || !fromTab) {
        return this.focusService.focusHeaderPosition({
          headerPosition: nextHeader,
          direction: normalisedDirection,
          fromTab,
          allowUserOverride: true,
          event
        });
      }
      return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);
    };
    HeaderNavigationService2.prototype.focusNextHeaderRow = function(focusedHeader, direction, event) {
      var currentIndex = focusedHeader.headerRowIndex;
      var nextPosition = null;
      var nextRowIndex;
      if (direction === "Before") {
        if (currentIndex > 0) {
          nextRowIndex = currentIndex - 1;
          nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, "end");
        }
      } else {
        nextRowIndex = currentIndex + 1;
        nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, "start");
      }
      return this.focusService.focusHeaderPosition({
        headerPosition: nextPosition,
        direction,
        fromTab: true,
        allowUserOverride: true,
        event
      });
    };
    HeaderNavigationService2.prototype.scrollToColumn = function(column, direction) {
      if (direction === void 0) {
        direction = "After";
      }
      if (column.getPinned()) {
        return;
      }
      var columnToScrollTo;
      if (column instanceof ColumnGroup) {
        var columns = column.getDisplayedLeafColumns();
        columnToScrollTo = direction === "Before" ? last(columns) : columns[0];
      } else {
        columnToScrollTo = column;
      }
      this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);
    };
    __decorate90([
      Autowired("focusService")
    ], HeaderNavigationService2.prototype, "focusService", void 0);
    __decorate90([
      Autowired("headerPositionUtils")
    ], HeaderNavigationService2.prototype, "headerPositionUtils", void 0);
    __decorate90([
      Autowired("animationFrameService")
    ], HeaderNavigationService2.prototype, "animationFrameService", void 0);
    __decorate90([
      Autowired("ctrlsService")
    ], HeaderNavigationService2.prototype, "ctrlsService", void 0);
    __decorate90([
      PostConstruct
    ], HeaderNavigationService2.prototype, "postConstruct", null);
    HeaderNavigationService2 = __decorate90([
      Bean("headerNavigationService")
    ], HeaderNavigationService2);
    return HeaderNavigationService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/gridHeaderCtrl.js
var __extends100 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate91 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GridHeaderCtrl = (
  /** @class */
  function(_super) {
    __extends100(GridHeaderCtrl2, _super);
    function GridHeaderCtrl2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    GridHeaderCtrl2.prototype.setComp = function(comp, eGui, eFocusableElement) {
      this.comp = comp;
      this.eGui = eGui;
      this.createManagedBean(new ManagedFocusFeature(eFocusableElement, {
        onTabKeyDown: this.onTabKeyDown.bind(this),
        handleKeyDown: this.handleKeyDown.bind(this),
        onFocusOut: this.onFocusOut.bind(this)
      }));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));
      this.onPivotModeChanged();
      this.setupHeaderHeight();
      this.ctrlsService.registerGridHeaderCtrl(this);
    };
    GridHeaderCtrl2.prototype.setupHeaderHeight = function() {
      var listener = this.setHeaderHeight.bind(this);
      listener();
      this.addManagedPropertyListener("headerHeight", listener);
      this.addManagedPropertyListener("pivotHeaderHeight", listener);
      this.addManagedPropertyListener("groupHeaderHeight", listener);
      this.addManagedPropertyListener("pivotGroupHeaderHeight", listener);
      this.addManagedPropertyListener("floatingFiltersHeight", listener);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, listener);
    };
    GridHeaderCtrl2.prototype.getHeaderHeight = function() {
      return this.headerHeight;
    };
    GridHeaderCtrl2.prototype.setHeaderHeight = function() {
      var columnModel = this.columnModel;
      var numberOfFloating = 0;
      var headerRowCount = columnModel.getHeaderRowCount();
      var totalHeaderHeight;
      var hasFloatingFilters = columnModel.hasFloatingFilters();
      if (hasFloatingFilters) {
        headerRowCount++;
        numberOfFloating = 1;
      }
      var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();
      var headerHeight = this.columnModel.getColumnHeaderRowHeight();
      var numberOfNonGroups = 1 + numberOfFloating;
      var numberOfGroups = headerRowCount - numberOfNonGroups;
      totalHeaderHeight = numberOfFloating * columnModel.getFloatingFiltersHeight();
      totalHeaderHeight += numberOfGroups * groupHeight;
      totalHeaderHeight += headerHeight;
      if (this.headerHeight === totalHeaderHeight) {
        return;
      }
      this.headerHeight = totalHeaderHeight;
      var px = totalHeaderHeight + 1 + "px";
      this.comp.setHeightAndMinHeight(px);
      this.eventService.dispatchEvent({
        type: Events.EVENT_HEADER_HEIGHT_CHANGED
      });
    };
    GridHeaderCtrl2.prototype.onPivotModeChanged = function() {
      var pivotMode = this.columnModel.isPivotMode();
      this.comp.addOrRemoveCssClass("ag-pivot-on", pivotMode);
      this.comp.addOrRemoveCssClass("ag-pivot-off", !pivotMode);
    };
    GridHeaderCtrl2.prototype.onTabKeyDown = function(e2) {
      var isRtl = this.gridOptionsService.is("enableRtl");
      var direction = e2.shiftKey !== isRtl ? HeaderNavigationDirection.LEFT : HeaderNavigationDirection.RIGHT;
      if (this.headerNavigationService.navigateHorizontally(direction, true, e2) || this.focusService.focusNextGridCoreContainer(e2.shiftKey)) {
        e2.preventDefault();
      }
    };
    GridHeaderCtrl2.prototype.handleKeyDown = function(e2) {
      var direction = null;
      switch (e2.key) {
        case KeyCode.LEFT:
          direction = HeaderNavigationDirection.LEFT;
        case KeyCode.RIGHT:
          if (!exists(direction)) {
            direction = HeaderNavigationDirection.RIGHT;
          }
          this.headerNavigationService.navigateHorizontally(direction, false, e2);
          break;
        case KeyCode.UP:
          direction = HeaderNavigationDirection.UP;
        case KeyCode.DOWN:
          if (!exists(direction)) {
            direction = HeaderNavigationDirection.DOWN;
          }
          if (this.headerNavigationService.navigateVertically(direction, null, e2)) {
            e2.preventDefault();
          }
          break;
        default:
          return;
      }
    };
    GridHeaderCtrl2.prototype.onFocusOut = function(e2) {
      var eDocument = this.gridOptionsService.getDocument();
      var relatedTarget = e2.relatedTarget;
      if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {
        return;
      }
      if (!this.eGui.contains(relatedTarget)) {
        this.focusService.clearFocusedHeader();
      }
    };
    __decorate91([
      Autowired("headerNavigationService")
    ], GridHeaderCtrl2.prototype, "headerNavigationService", void 0);
    __decorate91([
      Autowired("focusService")
    ], GridHeaderCtrl2.prototype, "focusService", void 0);
    __decorate91([
      Autowired("columnModel")
    ], GridHeaderCtrl2.prototype, "columnModel", void 0);
    __decorate91([
      Autowired("ctrlsService")
    ], GridHeaderCtrl2.prototype, "ctrlsService", void 0);
    return GridHeaderCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/gridHeaderComp.js
var __extends101 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate92 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GridHeaderComp = (
  /** @class */
  function(_super) {
    __extends101(GridHeaderComp2, _super);
    function GridHeaderComp2() {
      return _super.call(this, GridHeaderComp2.TEMPLATE) || this;
    }
    GridHeaderComp2.prototype.postConstruct = function() {
      var _this = this;
      var compProxy = {
        addOrRemoveCssClass: function(cssClassName, on2) {
          return _this.addOrRemoveCssClass(cssClassName, on2);
        },
        setHeightAndMinHeight: function(height) {
          _this.getGui().style.height = height;
          _this.getGui().style.minHeight = height;
        }
      };
      var ctrl = this.createManagedBean(new GridHeaderCtrl());
      ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());
      var addContainer = function(container) {
        _this.createManagedBean(container);
        _this.appendChild(container);
      };
      addContainer(new HeaderRowContainerComp("left"));
      addContainer(new HeaderRowContainerComp(null));
      addContainer(new HeaderRowContainerComp("right"));
    };
    GridHeaderComp2.TEMPLATE = '<div class="ag-header" role="presentation"/>';
    __decorate92([
      PostConstruct
    ], GridHeaderComp2.prototype, "postConstruct", null);
    return GridHeaderComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/common/horizontalResizeService.js
var __extends102 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate93 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HorizontalResizeService = (
  /** @class */
  function(_super) {
    __extends102(HorizontalResizeService2, _super);
    function HorizontalResizeService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    HorizontalResizeService2.prototype.addResizeBar = function(params) {
      var _this = this;
      var dragSource = {
        dragStartPixels: params.dragStartPixels || 0,
        eElement: params.eResizeBar,
        onDragStart: this.onDragStart.bind(this, params),
        onDragStop: this.onDragStop.bind(this, params),
        onDragging: this.onDragging.bind(this, params)
      };
      this.dragService.addDragSource(dragSource, true);
      var finishedWithResizeFunc = function() {
        return _this.dragService.removeDragSource(dragSource);
      };
      return finishedWithResizeFunc;
    };
    HorizontalResizeService2.prototype.onDragStart = function(params, mouseEvent) {
      this.dragStartX = mouseEvent.clientX;
      this.setResizeIcons();
      var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;
      params.onResizeStart(shiftKey);
    };
    HorizontalResizeService2.prototype.setResizeIcons = function() {
      var ctrl = this.ctrlsService.getGridCtrl();
      ctrl.setResizeCursor(true);
      ctrl.disableUserSelect(true);
    };
    HorizontalResizeService2.prototype.onDragStop = function(params, mouseEvent) {
      params.onResizeEnd(this.resizeAmount);
      this.resetIcons();
    };
    HorizontalResizeService2.prototype.resetIcons = function() {
      var ctrl = this.ctrlsService.getGridCtrl();
      ctrl.setResizeCursor(false);
      ctrl.disableUserSelect(false);
    };
    HorizontalResizeService2.prototype.onDragging = function(params, mouseEvent) {
      this.resizeAmount = mouseEvent.clientX - this.dragStartX;
      params.onResizing(this.resizeAmount);
    };
    __decorate93([
      Autowired("dragService")
    ], HorizontalResizeService2.prototype, "dragService", void 0);
    __decorate93([
      Autowired("ctrlsService")
    ], HorizontalResizeService2.prototype, "ctrlsService", void 0);
    HorizontalResizeService2 = __decorate93([
      Bean("horizontalResizeService")
    ], HorizontalResizeService2);
    return HorizontalResizeService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/standardMenu.js
var __extends103 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate94 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var StandardMenuFactory = (
  /** @class */
  function(_super) {
    __extends103(StandardMenuFactory2, _super);
    function StandardMenuFactory2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    StandardMenuFactory2.prototype.hideActiveMenu = function() {
      if (this.hidePopup) {
        this.hidePopup();
      }
    };
    StandardMenuFactory2.prototype.showMenuAfterMouseEvent = function(column, mouseEvent) {
      var _this = this;
      this.showPopup(column, function(eMenu) {
        _this.popupService.positionPopupUnderMouseEvent({
          column,
          type: "columnMenu",
          mouseEvent,
          ePopup: eMenu
        });
      }, mouseEvent.target);
    };
    StandardMenuFactory2.prototype.showMenuAfterButtonClick = function(column, eventSource, containerType) {
      var _this = this;
      this.showPopup(column, function(eMenu) {
        _this.popupService.positionPopupByComponent({
          type: containerType,
          eventSource,
          ePopup: eMenu,
          keepWithinBounds: true,
          position: "under",
          column
        });
      }, eventSource);
    };
    StandardMenuFactory2.prototype.showPopup = function(column, positionCallback, eventSource) {
      var _this = this;
      var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, "COLUMN_MENU");
      if (!filterWrapper) {
        throw new Error("AG Grid - unable to show popup filter, filter instantiation failed");
      }
      var eMenu = document.createElement("div");
      setAriaRole(eMenu, "presentation");
      eMenu.classList.add("ag-menu");
      this.tabListener = this.addManagedListener(eMenu, "keydown", function(e2) {
        return _this.trapFocusWithin(e2, eMenu);
      });
      filterWrapper.guiPromise.then(function(gui) {
        return eMenu.appendChild(gui);
      });
      var hidePopup;
      var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();
      var closedCallback = function(e2) {
        column.setMenuVisible(false, "contextMenu");
        var isKeyboardEvent = e2 instanceof KeyboardEvent;
        if (_this.tabListener) {
          _this.tabListener = _this.tabListener();
        }
        if (isKeyboardEvent && eventSource && isVisible(eventSource)) {
          var focusableEl = _this.focusService.findTabbableParent(eventSource);
          if (focusableEl) {
            focusableEl.focus();
          }
        }
      };
      var translate = this.localeService.getLocaleTextFunc();
      var addPopupRes = this.popupService.addPopup({
        modal: true,
        eChild: eMenu,
        closeOnEsc: true,
        closedCallback,
        positionCallback: function() {
          return positionCallback(eMenu);
        },
        anchorToElement,
        ariaLabel: translate("ariaLabelColumnMenu", "Column Menu")
      });
      if (addPopupRes) {
        this.hidePopup = hidePopup = addPopupRes.hideFunc;
      }
      filterWrapper.filterPromise.then(function(filter2) {
        positionCallback(eMenu);
        if (filter2.afterGuiAttached) {
          filter2.afterGuiAttached({ container: "columnMenu", hidePopup });
        }
      });
      column.setMenuVisible(true, "contextMenu");
    };
    StandardMenuFactory2.prototype.trapFocusWithin = function(e2, menu) {
      if (e2.key !== KeyCode.TAB || e2.defaultPrevented || this.focusService.findNextFocusableElement(menu, false, e2.shiftKey)) {
        return;
      }
      e2.preventDefault();
      this.focusService.focusInto(menu, e2.shiftKey);
    };
    StandardMenuFactory2.prototype.isMenuEnabled = function(column) {
      return column.isFilterAllowed();
    };
    __decorate94([
      Autowired("filterManager")
    ], StandardMenuFactory2.prototype, "filterManager", void 0);
    __decorate94([
      Autowired("popupService")
    ], StandardMenuFactory2.prototype, "popupService", void 0);
    __decorate94([
      Autowired("focusService")
    ], StandardMenuFactory2.prototype, "focusService", void 0);
    __decorate94([
      Autowired("ctrlsService")
    ], StandardMenuFactory2.prototype, "ctrlsService", void 0);
    StandardMenuFactory2 = __decorate94([
      Bean("menuFactory")
    ], StandardMenuFactory2);
    return StandardMenuFactory2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/layout/tabbedLayout.js
var __extends104 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate95 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TabbedLayout = (
  /** @class */
  function(_super) {
    __extends104(TabbedLayout2, _super);
    function TabbedLayout2(params) {
      var _this = _super.call(this, TabbedLayout2.getTemplate(params.cssClass)) || this;
      _this.items = [];
      _this.tabbedItemScrollMap = /* @__PURE__ */ new Map();
      _this.params = params;
      if (params.items) {
        params.items.forEach(function(item) {
          return _this.addItem(item);
        });
      }
      return _this;
    }
    TabbedLayout2.prototype.postConstruct = function() {
      this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {
        onTabKeyDown: this.onTabKeyDown.bind(this),
        handleKeyDown: this.handleKeyDown.bind(this)
      }));
    };
    TabbedLayout2.getTemplate = function(cssClass) {
      return (
        /* html */
        '<div class="ag-tabs ' + cssClass + '">\n            <div ref="eHeader" role="tablist" class="ag-tabs-header ' + (cssClass ? cssClass + "-header" : "") + '"></div>\n            <div ref="eBody" role="presentation" class="ag-tabs-body ' + (cssClass ? cssClass + "-body" : "") + '"></div>\n        </div>'
      );
    };
    TabbedLayout2.prototype.handleKeyDown = function(e2) {
      var eDocument = this.gridOptionsService.getDocument();
      switch (e2.key) {
        case KeyCode.RIGHT:
        case KeyCode.LEFT:
          if (!this.eHeader.contains(eDocument.activeElement)) {
            return;
          }
          var isRightKey = e2.key === KeyCode.RIGHT;
          var isRtl = this.gridOptionsService.is("enableRtl");
          var currentPosition = this.items.indexOf(this.activeItem);
          var nextPosition = isRightKey !== isRtl ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);
          if (currentPosition === nextPosition) {
            return;
          }
          e2.preventDefault();
          var nextItem = this.items[nextPosition];
          this.showItemWrapper(nextItem);
          nextItem.eHeaderButton.focus();
          break;
        case KeyCode.UP:
        case KeyCode.DOWN:
          e2.stopPropagation();
          break;
      }
    };
    TabbedLayout2.prototype.onTabKeyDown = function(e2) {
      if (e2.defaultPrevented) {
        return;
      }
      var _a47 = this, focusService = _a47.focusService, eHeader = _a47.eHeader, eBody = _a47.eBody, activeItem = _a47.activeItem;
      var eDocument = this.gridOptionsService.getDocument();
      var activeElement = eDocument.activeElement;
      e2.preventDefault();
      if (eHeader.contains(activeElement)) {
        focusService.focusInto(eBody, e2.shiftKey);
      } else {
        if (focusService.isFocusUnderManagedComponent(eBody)) {
          activeItem.eHeaderButton.focus();
        } else {
          var nextEl = focusService.findNextFocusableElement(eBody, false, e2.shiftKey);
          if (nextEl) {
            nextEl.focus();
          } else {
            activeItem.eHeaderButton.focus();
          }
        }
      }
    };
    TabbedLayout2.prototype.setAfterAttachedParams = function(params) {
      this.afterAttachedParams = params;
    };
    TabbedLayout2.prototype.showFirstItem = function() {
      if (this.items.length > 0) {
        this.showItemWrapper(this.items[0]);
      }
    };
    TabbedLayout2.prototype.addItem = function(item) {
      var eHeaderButton = document.createElement("span");
      setAriaRole(eHeaderButton, "tab");
      eHeaderButton.setAttribute("tabIndex", "-1");
      eHeaderButton.appendChild(item.title);
      eHeaderButton.classList.add("ag-tab");
      this.eHeader.appendChild(eHeaderButton);
      setAriaLabel(eHeaderButton, item.titleLabel);
      var wrapper = {
        tabbedItem: item,
        eHeaderButton
      };
      this.items.push(wrapper);
      eHeaderButton.addEventListener("click", this.showItemWrapper.bind(this, wrapper));
    };
    TabbedLayout2.prototype.showItem = function(tabbedItem) {
      var itemWrapper = this.items.find(function(wrapper) {
        return wrapper.tabbedItem === tabbedItem;
      });
      if (itemWrapper) {
        this.showItemWrapper(itemWrapper);
      }
    };
    TabbedLayout2.prototype.showItemWrapper = function(wrapper) {
      var _this = this;
      var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;
      if (this.params.onItemClicked) {
        this.params.onItemClicked({ item: tabbedItem });
      }
      if (this.activeItem === wrapper) {
        callIfPresent(this.params.onActiveItemClicked);
        return;
      }
      if (this.lastScrollListener) {
        this.lastScrollListener = this.lastScrollListener();
      }
      clearElement(this.eBody);
      tabbedItem.bodyPromise.then(function(body) {
        _this.eBody.appendChild(body);
        var onlyUnmanaged = !_this.focusService.isKeyboardMode();
        _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);
        if (tabbedItem.afterAttachedCallback) {
          tabbedItem.afterAttachedCallback(_this.afterAttachedParams);
        }
        if (_this.params.keepScrollPosition) {
          var scrollableContainer_1 = tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer() || body;
          _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, "scroll", function() {
            _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);
          });
          var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);
          if (scrollPosition_1 !== void 0) {
            setTimeout(function() {
              scrollableContainer_1.scrollTop = scrollPosition_1;
            }, 0);
          }
        }
      });
      if (this.activeItem) {
        this.activeItem.eHeaderButton.classList.remove("ag-tab-selected");
      }
      eHeaderButton.classList.add("ag-tab-selected");
      this.activeItem = wrapper;
    };
    __decorate95([
      Autowired("focusService")
    ], TabbedLayout2.prototype, "focusService", void 0);
    __decorate95([
      RefSelector("eHeader")
    ], TabbedLayout2.prototype, "eHeader", void 0);
    __decorate95([
      RefSelector("eBody")
    ], TabbedLayout2.prototype, "eBody", void 0);
    __decorate95([
      PostConstruct
    ], TabbedLayout2.prototype, "postConstruct", null);
    return TabbedLayout2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/misc/resizeObserverService.js
var __extends105 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate96 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DEBOUNCE_DELAY = 50;
var ResizeObserverService = (
  /** @class */
  function(_super) {
    __extends105(ResizeObserverService2, _super);
    function ResizeObserverService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.polyfillFunctions = [];
      return _this;
    }
    ResizeObserverService2.prototype.observeResize = function(element, callback) {
      var _this = this;
      var eDocument = this.gridOptionsService.getDocument();
      var win = eDocument.defaultView || window;
      var debouncedCallback = debounce2(callback, DEBOUNCE_DELAY);
      var useBrowserResizeObserver = function() {
        var resizeObserver = new win.ResizeObserver(debouncedCallback);
        resizeObserver.observe(element);
        return function() {
          return resizeObserver.disconnect();
        };
      };
      var usePolyfill = function() {
        var widthLastTime = offsetWidth(element);
        var heightLastTime = offsetHeight(element);
        var running = true;
        var periodicallyCheckWidthAndHeight = function() {
          if (running) {
            var newWidth = offsetWidth(element);
            var newHeight = offsetHeight(element);
            var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;
            if (changed) {
              widthLastTime = newWidth;
              heightLastTime = newHeight;
              callback();
            }
            _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);
          }
        };
        periodicallyCheckWidthAndHeight();
        return function() {
          return running = false;
        };
      };
      var suppressResize = this.gridOptionsService.is("suppressBrowserResizeObserver");
      var resizeObserverExists = !!win.ResizeObserver;
      if (resizeObserverExists && !suppressResize) {
        return useBrowserResizeObserver();
      }
      return usePolyfill();
    };
    ResizeObserverService2.prototype.doNextPolyfillTurn = function(func) {
      this.polyfillFunctions.push(func);
      this.schedulePolyfill();
    };
    ResizeObserverService2.prototype.schedulePolyfill = function() {
      var _this = this;
      if (this.polyfillScheduled) {
        return;
      }
      var executeAllFuncs = function() {
        var funcs = _this.polyfillFunctions;
        _this.polyfillScheduled = false;
        _this.polyfillFunctions = [];
        funcs.forEach(function(f2) {
          return f2();
        });
      };
      this.polyfillScheduled = true;
      this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);
    };
    ResizeObserverService2 = __decorate96([
      Bean("resizeObserverService")
    ], ResizeObserverService2);
    return ResizeObserverService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/misc/animationFrameService.js
var __extends106 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate97 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AnimationFrameService = (
  /** @class */
  function(_super) {
    __extends106(AnimationFrameService2, _super);
    function AnimationFrameService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.createTasksP1 = { list: [], sorted: false };
      _this.createTasksP2 = { list: [], sorted: false };
      _this.destroyTasks = [];
      _this.ticking = false;
      _this.scrollGoingDown = true;
      _this.lastScrollTop = 0;
      _this.taskCount = 0;
      _this.cancelledTasks = /* @__PURE__ */ new Set();
      return _this;
    }
    AnimationFrameService2.prototype.setScrollTop = function(scrollTop2) {
      this.scrollGoingDown = scrollTop2 > this.lastScrollTop;
      this.lastScrollTop = scrollTop2;
    };
    AnimationFrameService2.prototype.init = function() {
      this.useAnimationFrame = !this.gridOptionsService.is("suppressAnimationFrame");
    };
    AnimationFrameService2.prototype.isOn = function() {
      return this.useAnimationFrame;
    };
    AnimationFrameService2.prototype.verifyAnimationFrameOn = function(methodName) {
      if (this.useAnimationFrame === false) {
        console.warn("AG Grid: AnimationFrameService." + methodName + " called but animation frames are off");
      }
    };
    AnimationFrameService2.prototype.createTask = function(task, index, list) {
      this.verifyAnimationFrameOn(list);
      var taskItem = { task, index, createOrder: ++this.taskCount };
      this.addTaskToList(this[list], taskItem);
      this.schedule();
    };
    AnimationFrameService2.prototype.cancelTask = function(task) {
      this.cancelledTasks.add(task);
    };
    AnimationFrameService2.prototype.addTaskToList = function(taskList, task) {
      taskList.list.push(task);
      taskList.sorted = false;
    };
    AnimationFrameService2.prototype.sortTaskList = function(taskList) {
      if (taskList.sorted) {
        return;
      }
      var sortDirection = this.scrollGoingDown ? 1 : -1;
      taskList.list.sort(function(a2, b2) {
        return a2.index !== b2.index ? sortDirection * (b2.index - a2.index) : b2.createOrder - a2.createOrder;
      });
      taskList.sorted = true;
    };
    AnimationFrameService2.prototype.addDestroyTask = function(task) {
      this.verifyAnimationFrameOn("createTasksP3");
      this.destroyTasks.push(task);
      this.schedule();
    };
    AnimationFrameService2.prototype.executeFrame = function(millis) {
      this.verifyAnimationFrameOn("executeFrame");
      var p1TaskList = this.createTasksP1;
      var p1Tasks = p1TaskList.list;
      var p2TaskList = this.createTasksP2;
      var p2Tasks = p2TaskList.list;
      var destroyTasks = this.destroyTasks;
      var frameStart = (/* @__PURE__ */ new Date()).getTime();
      var duration = (/* @__PURE__ */ new Date()).getTime() - frameStart;
      var noMaxMillis = millis <= 0;
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      while (noMaxMillis || duration < millis) {
        var gridBodyDidSomething = gridBodyCon.getScrollFeature().executeAnimationFrameScroll();
        if (!gridBodyDidSomething) {
          var task = void 0;
          if (p1Tasks.length) {
            this.sortTaskList(p1TaskList);
            task = p1Tasks.pop().task;
          } else if (p2Tasks.length) {
            this.sortTaskList(p2TaskList);
            task = p2Tasks.pop().task;
          } else if (destroyTasks.length) {
            task = destroyTasks.pop();
          } else {
            this.cancelledTasks.clear();
            break;
          }
          if (!this.cancelledTasks.has(task)) {
            task();
          }
        }
        duration = (/* @__PURE__ */ new Date()).getTime() - frameStart;
      }
      if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {
        this.requestFrame();
      } else {
        this.stopTicking();
      }
    };
    AnimationFrameService2.prototype.stopTicking = function() {
      this.ticking = false;
    };
    AnimationFrameService2.prototype.flushAllFrames = function() {
      if (!this.useAnimationFrame) {
        return;
      }
      this.executeFrame(-1);
    };
    AnimationFrameService2.prototype.schedule = function() {
      if (!this.useAnimationFrame) {
        return;
      }
      if (!this.ticking) {
        this.ticking = true;
        this.requestFrame();
      }
    };
    AnimationFrameService2.prototype.requestFrame = function() {
      var callback = this.executeFrame.bind(this, 60);
      var eDocument = this.gridOptionsService.getDocument();
      var win = eDocument.defaultView || window;
      if (win.requestAnimationFrame) {
        win.requestAnimationFrame(callback);
      } else if (win.webkitRequestAnimationFrame) {
        win.webkitRequestAnimationFrame(callback);
      } else {
        win.setTimeout(callback, 0);
      }
    };
    AnimationFrameService2.prototype.isQueueEmpty = function() {
      return !this.ticking;
    };
    AnimationFrameService2.prototype.debounce = function(func) {
      var _this = this;
      var pending = false;
      return function() {
        if (!_this.isOn()) {
          _this.getFrameworkOverrides().setTimeout(func, 0);
          return;
        }
        if (pending) {
          return;
        }
        pending = true;
        _this.addDestroyTask(function() {
          pending = false;
          func();
        });
      };
    };
    __decorate97([
      Autowired("ctrlsService")
    ], AnimationFrameService2.prototype, "ctrlsService", void 0);
    __decorate97([
      PostConstruct
    ], AnimationFrameService2.prototype, "init", null);
    AnimationFrameService2 = __decorate97([
      Bean("animationFrameService")
    ], AnimationFrameService2);
    return AnimationFrameService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/features/positionableFeature.js
var __extends107 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate98 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RESIZE_CONTAINER_STYLE = "ag-resizer-wrapper";
var RESIZE_TEMPLATE = (
  /* html */
  '<div class="' + RESIZE_CONTAINER_STYLE + '">\n        <div ref="eTopLeftResizer" class="ag-resizer ag-resizer-topLeft"></div>\n        <div ref="eTopResizer" class="ag-resizer ag-resizer-top"></div>\n        <div ref="eTopRightResizer" class="ag-resizer ag-resizer-topRight"></div>\n        <div ref="eRightResizer" class="ag-resizer ag-resizer-right"></div>\n        <div ref="eBottomRightResizer" class="ag-resizer ag-resizer-bottomRight"></div>\n        <div ref="eBottomResizer" class="ag-resizer ag-resizer-bottom"></div>\n        <div ref="eBottomLeftResizer" class="ag-resizer ag-resizer-bottomLeft"></div>\n        <div ref="eLeftResizer" class="ag-resizer ag-resizer-left"></div>\n    </div>'
);
var PositionableFeature = (
  /** @class */
  function(_super) {
    __extends107(PositionableFeature2, _super);
    function PositionableFeature2(element, config) {
      var _this = _super.call(this) || this;
      _this.element = element;
      _this.dragStartPosition = {
        x: 0,
        y: 0
      };
      _this.position = {
        x: 0,
        y: 0
      };
      _this.lastSize = {
        width: -1,
        height: -1
      };
      _this.positioned = false;
      _this.resizersAdded = false;
      _this.resizeListeners = [];
      _this.boundaryEl = null;
      _this.isResizing = false;
      _this.isMoving = false;
      _this.resizable = {};
      _this.movable = false;
      _this.currentResizer = null;
      _this.config = Object.assign({}, { popup: false }, config);
      return _this;
    }
    PositionableFeature2.prototype.center = function() {
      var _a47 = this.offsetParent, clientHeight = _a47.clientHeight, clientWidth = _a47.clientWidth;
      var x2 = clientWidth / 2 - this.getWidth() / 2;
      var y2 = clientHeight / 2 - this.getHeight() / 2;
      this.offsetElement(x2, y2);
    };
    PositionableFeature2.prototype.initialisePosition = function() {
      var _a47 = this.config, centered = _a47.centered, forcePopupParentAsOffsetParent = _a47.forcePopupParentAsOffsetParent, minWidth = _a47.minWidth, width = _a47.width, minHeight = _a47.minHeight, height = _a47.height, x2 = _a47.x, y2 = _a47.y;
      if (!this.offsetParent) {
        this.setOffsetParent();
      }
      var computedMinHeight = 0;
      var computedMinWidth = 0;
      var isVisible2 = !!this.element.offsetParent;
      if (isVisible2) {
        var boundaryEl = this.findBoundaryElement();
        var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);
        if (offsetParentComputedStyles.minWidth != null) {
          var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;
          computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;
        }
        if (offsetParentComputedStyles.minHeight != null) {
          var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;
          computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;
        }
      }
      this.minHeight = minHeight || computedMinHeight;
      this.minWidth = minWidth || computedMinWidth;
      if (width) {
        this.setWidth(width);
      }
      if (height) {
        this.setHeight(height);
      }
      if (!width || !height) {
        this.refreshSize();
      }
      if (centered) {
        this.center();
      } else if (x2 || y2) {
        this.offsetElement(x2, y2);
      } else if (isVisible2 && forcePopupParentAsOffsetParent && this.boundaryEl) {
        var top_1 = parseFloat(this.boundaryEl.style.top);
        var left = parseFloat(this.boundaryEl.style.left);
        this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);
      }
      this.positioned = !!this.offsetParent;
    };
    PositionableFeature2.prototype.isPositioned = function() {
      return this.positioned;
    };
    PositionableFeature2.prototype.getPosition = function() {
      return this.position;
    };
    PositionableFeature2.prototype.setMovable = function(movable, moveElement) {
      if (!this.config.popup || movable === this.movable) {
        return;
      }
      this.movable = movable;
      var params = this.moveElementDragListener || {
        eElement: moveElement,
        onDragStart: this.onMoveStart.bind(this),
        onDragging: this.onMove.bind(this),
        onDragStop: this.onMoveEnd.bind(this)
      };
      if (movable) {
        this.dragService.addDragSource(params);
        this.moveElementDragListener = params;
      } else {
        this.dragService.removeDragSource(params);
        this.moveElementDragListener = void 0;
      }
    };
    PositionableFeature2.prototype.setResizable = function(resizable) {
      var _this = this;
      this.clearResizeListeners();
      if (resizable) {
        this.addResizers();
      } else {
        this.removeResizers();
      }
      if (typeof resizable === "boolean") {
        if (resizable === false) {
          return;
        }
        resizable = {
          topLeft: resizable,
          top: resizable,
          topRight: resizable,
          right: resizable,
          bottomRight: resizable,
          bottom: resizable,
          bottomLeft: resizable,
          left: resizable
        };
      }
      Object.keys(resizable).forEach(function(side) {
        var resizableStructure = resizable;
        var isSideResizable = !!resizableStructure[side];
        var resizerEl = _this.getResizerElement(side);
        var params = {
          dragStartPixels: 0,
          eElement: resizerEl,
          onDragStart: function(e2) {
            return _this.onResizeStart(e2, side);
          },
          onDragging: _this.onResize.bind(_this),
          onDragStop: function(e2) {
            return _this.onResizeEnd(e2, side);
          }
        };
        if (isSideResizable || !_this.isAlive() && !isSideResizable) {
          if (isSideResizable) {
            _this.dragService.addDragSource(params);
            _this.resizeListeners.push(params);
            resizerEl.style.pointerEvents = "all";
          } else {
            resizerEl.style.pointerEvents = "none";
          }
          _this.resizable[side] = isSideResizable;
        }
      });
    };
    PositionableFeature2.prototype.removeSizeFromEl = function() {
      this.element.style.removeProperty("height");
      this.element.style.removeProperty("width");
      this.element.style.removeProperty("flex");
    };
    PositionableFeature2.prototype.restoreLastSize = function() {
      this.element.style.flex = "0 0 auto";
      var _a47 = this.lastSize, height = _a47.height, width = _a47.width;
      if (width !== -1) {
        this.element.style.width = width + "px";
      }
      if (height !== -1) {
        this.element.style.height = height + "px";
      }
    };
    PositionableFeature2.prototype.getHeight = function() {
      return this.element.offsetHeight;
    };
    PositionableFeature2.prototype.setHeight = function(height) {
      var popup = this.config.popup;
      var eGui = this.element;
      var isPercent = false;
      if (typeof height === "string" && height.indexOf("%") !== -1) {
        setFixedHeight(eGui, height);
        height = getAbsoluteHeight(eGui);
        isPercent = true;
      } else if (this.positioned) {
        var elRect = this.element.getBoundingClientRect();
        var parentRect = this.offsetParent.getBoundingClientRect();
        height = Math.max(this.minHeight, height);
        var clientHeight = this.offsetParent.clientHeight;
        var yPosition = popup ? this.position.y : elRect.top;
        var parentTop = popup ? 0 : parentRect.top;
        if (clientHeight && height + yPosition > clientHeight + parentTop) {
          height = clientHeight - yPosition;
        }
      }
      if (this.getHeight() === height) {
        return;
      }
      if (!isPercent) {
        if (popup) {
          setFixedHeight(eGui, height);
        } else {
          eGui.style.height = height + "px";
          eGui.style.flex = "0 0 auto";
          this.lastSize.height = typeof height === "number" ? height : parseFloat(height);
        }
      } else {
        eGui.style.maxHeight = "unset";
        eGui.style.minHeight = "unset";
      }
    };
    PositionableFeature2.prototype.getWidth = function() {
      return this.element.offsetWidth;
    };
    PositionableFeature2.prototype.setWidth = function(width) {
      var eGui = this.element;
      var popup = this.config.popup;
      var isPercent = false;
      if (typeof width === "string" && width.indexOf("%") !== -1) {
        setFixedWidth(eGui, width);
        width = getAbsoluteWidth(eGui);
        isPercent = true;
      } else if (this.positioned) {
        width = Math.max(this.minWidth, width);
        var clientWidth = this.offsetParent.clientWidth;
        var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;
        if (clientWidth && width + xPosition > clientWidth) {
          width = clientWidth - xPosition;
        }
      }
      if (this.getWidth() === width) {
        return;
      }
      if (!isPercent) {
        if (this.config.popup) {
          setFixedWidth(eGui, width);
        } else {
          eGui.style.width = width + "px";
          eGui.style.flex = " unset";
          this.lastSize.width = typeof width === "number" ? width : parseFloat(width);
        }
      } else {
        eGui.style.maxWidth = "unset";
        eGui.style.minWidth = "unset";
      }
    };
    PositionableFeature2.prototype.offsetElement = function(x2, y2) {
      if (x2 === void 0) {
        x2 = 0;
      }
      if (y2 === void 0) {
        y2 = 0;
      }
      var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;
      this.popupService.positionPopup({
        ePopup,
        keepWithinBounds: true,
        skipObserver: this.movable || this.isResizable(),
        updatePosition: function() {
          return { x: x2, y: y2 };
        }
      });
      this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));
    };
    PositionableFeature2.prototype.setPosition = function(x2, y2) {
      this.position.x = x2;
      this.position.y = y2;
    };
    PositionableFeature2.prototype.updateDragStartPosition = function(x2, y2) {
      this.dragStartPosition = { x: x2, y: y2 };
    };
    PositionableFeature2.prototype.calculateMouseMovement = function(params) {
      var e2 = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;
      var xDiff = e2.clientX - this.dragStartPosition.x;
      var yDiff = e2.clientY - this.dragStartPosition.y;
      var movementX = this.shouldSkipX(e2, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;
      var movementY = this.shouldSkipY(e2, !!isTop, topBuffer, yDiff) ? 0 : yDiff;
      return { movementX, movementY };
    };
    PositionableFeature2.prototype.shouldSkipX = function(e2, isLeft, anywhereWithin, diff) {
      var elRect = this.element.getBoundingClientRect();
      var parentRect = this.offsetParent.getBoundingClientRect();
      var boundaryElRect = this.boundaryEl.getBoundingClientRect();
      var xPosition = this.config.popup ? this.position.x : elRect.left;
      var skipX = xPosition <= 0 && parentRect.left >= e2.clientX || parentRect.right <= e2.clientX && parentRect.right <= boundaryElRect.right;
      if (skipX) {
        return true;
      }
      if (isLeft) {
        skipX = // skip if we are moving to the left and the cursor
        // is positioned to the right of the left side anchor
        diff < 0 && e2.clientX > xPosition + parentRect.left || // skip if we are moving to the right and the cursor
        // is positioned to the left of the dialog
        diff > 0 && e2.clientX < xPosition + parentRect.left;
      } else {
        if (anywhereWithin) {
          skipX = diff < 0 && e2.clientX > boundaryElRect.right || diff > 0 && e2.clientX < xPosition + parentRect.left;
        } else {
          skipX = // if the movement is bound to the right side of the dialog
          // we skip if we are moving to the left and the cursor
          // is to the right of the dialog
          diff < 0 && e2.clientX > boundaryElRect.right || // or skip if we are moving to the right and the cursor
          // is to the left of the right side anchor
          diff > 0 && e2.clientX < boundaryElRect.right;
        }
      }
      return skipX;
    };
    PositionableFeature2.prototype.shouldSkipY = function(e2, isTop, topBuffer, diff) {
      if (topBuffer === void 0) {
        topBuffer = 0;
      }
      var elRect = this.element.getBoundingClientRect();
      var parentRect = this.offsetParent.getBoundingClientRect();
      var boundaryElRect = this.boundaryEl.getBoundingClientRect();
      var yPosition = this.config.popup ? this.position.y : elRect.top;
      var skipY = yPosition <= 0 && parentRect.top >= e2.clientY || parentRect.bottom <= e2.clientY && parentRect.bottom <= boundaryElRect.bottom;
      if (skipY) {
        return true;
      }
      if (isTop) {
        skipY = // skip if we are moving to towards top and the cursor is
        // below the top anchor + topBuffer
        // note: topBuffer is used when moving the dialog using the title bar
        diff < 0 && e2.clientY > yPosition + parentRect.top + topBuffer || // skip if we are moving to the bottom and the cursor is
        // above the top anchor
        diff > 0 && e2.clientY < yPosition + parentRect.top;
      } else {
        skipY = // skip if we are moving towards the top and the cursor
        // is below the bottom anchor
        diff < 0 && e2.clientY > boundaryElRect.bottom || // skip if we are moving towards the bottom and the cursor
        // is above the bottom anchor
        diff > 0 && e2.clientY < boundaryElRect.bottom;
      }
      return skipY;
    };
    PositionableFeature2.prototype.createResizeMap = function() {
      var eGui = this.element;
      this.resizerMap = {
        topLeft: { element: eGui.querySelector("[ref=eTopLeftResizer]") },
        top: { element: eGui.querySelector("[ref=eTopResizer]") },
        topRight: { element: eGui.querySelector("[ref=eTopRightResizer]") },
        right: { element: eGui.querySelector("[ref=eRightResizer]") },
        bottomRight: { element: eGui.querySelector("[ref=eBottomRightResizer]") },
        bottom: { element: eGui.querySelector("[ref=eBottomResizer]") },
        bottomLeft: { element: eGui.querySelector("[ref=eBottomLeftResizer]") },
        left: { element: eGui.querySelector("[ref=eLeftResizer]") }
      };
    };
    PositionableFeature2.prototype.addResizers = function() {
      if (this.resizersAdded) {
        return;
      }
      var eGui = this.element;
      if (!eGui) {
        return;
      }
      var parser = new DOMParser();
      var resizers = parser.parseFromString(RESIZE_TEMPLATE, "text/html").body;
      eGui.appendChild(resizers.firstChild);
      this.createResizeMap();
      this.resizersAdded = true;
    };
    PositionableFeature2.prototype.removeResizers = function() {
      this.resizerMap = void 0;
      var resizerEl = this.element.querySelector("." + RESIZE_CONTAINER_STYLE);
      if (resizerEl) {
        this.element.removeChild(resizerEl);
      }
      this.resizersAdded = false;
    };
    PositionableFeature2.prototype.getResizerElement = function(side) {
      return this.resizerMap[side].element;
    };
    PositionableFeature2.prototype.onResizeStart = function(e2, side) {
      this.boundaryEl = this.findBoundaryElement();
      if (!this.positioned) {
        this.initialisePosition();
      }
      this.currentResizer = {
        isTop: !!side.match(/top/i),
        isRight: !!side.match(/right/i),
        isBottom: !!side.match(/bottom/i),
        isLeft: !!side.match(/left/i)
      };
      this.element.classList.add("ag-resizing");
      this.resizerMap[side].element.classList.add("ag-active");
      var _a47 = this.config, popup = _a47.popup, forcePopupParentAsOffsetParent = _a47.forcePopupParentAsOffsetParent;
      if (!popup && !forcePopupParentAsOffsetParent) {
        this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);
      }
      this.isResizing = true;
      this.updateDragStartPosition(e2.clientX, e2.clientY);
    };
    PositionableFeature2.prototype.getSiblings = function() {
      var element = this.element;
      var parent2 = element.parentElement;
      if (!parent2) {
        return null;
      }
      return Array.prototype.slice.call(parent2.children).filter(function(el) {
        return !el.classList.contains("ag-hidden");
      });
    };
    PositionableFeature2.prototype.getMinSizeOfSiblings = function() {
      var siblings = this.getSiblings() || [];
      var height = 0;
      var width = 0;
      for (var i2 = 0; i2 < siblings.length; i2++) {
        var currentEl = siblings[i2];
        var isFlex = !!currentEl.style.flex && currentEl.style.flex !== "0 0 auto";
        if (currentEl === this.element) {
          continue;
        }
        var nextHeight = this.minHeight || 0;
        var nextWidth = this.minWidth || 0;
        if (isFlex) {
          var computedStyle = window.getComputedStyle(currentEl);
          if (computedStyle.minHeight) {
            nextHeight = parseInt(computedStyle.minHeight, 10);
          }
          if (computedStyle.minWidth) {
            nextWidth = parseInt(computedStyle.minWidth, 10);
          }
        } else {
          nextHeight = currentEl.offsetHeight;
          nextWidth = currentEl.offsetWidth;
        }
        height += nextHeight;
        width += nextWidth;
      }
      return { height, width };
    };
    PositionableFeature2.prototype.applySizeToSiblings = function(vertical) {
      var containerToFlex = null;
      var siblings = this.getSiblings();
      if (!siblings) {
        return;
      }
      for (var i2 = 0; i2 < siblings.length; i2++) {
        var el = siblings[i2];
        if (el === containerToFlex) {
          continue;
        }
        if (vertical) {
          el.style.height = el.offsetHeight + "px";
        } else {
          el.style.width = el.offsetWidth + "px";
        }
        el.style.flex = "0 0 auto";
        if (el === this.element) {
          containerToFlex = siblings[i2 + 1];
        }
      }
      if (containerToFlex) {
        containerToFlex.style.removeProperty("height");
        containerToFlex.style.removeProperty("min-height");
        containerToFlex.style.removeProperty("max-height");
        containerToFlex.style.flex = "1 1 auto";
      }
    };
    PositionableFeature2.prototype.isResizable = function() {
      return Object.values(this.resizable).some(function(value) {
        return value;
      });
    };
    PositionableFeature2.prototype.onResize = function(e2) {
      if (!this.isResizing || !this.currentResizer) {
        return;
      }
      var _a47 = this.config, popup = _a47.popup, forcePopupParentAsOffsetParent = _a47.forcePopupParentAsOffsetParent;
      var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;
      var isHorizontal = isRight || isLeft;
      var isVertical = isBottom || isTop;
      var _c = this.calculateMouseMovement({ e: e2, isLeft, isTop }), movementX = _c.movementX, movementY = _c.movementY;
      var xPosition = this.position.x;
      var yPosition = this.position.y;
      var offsetLeft = 0;
      var offsetTop = 0;
      if (isHorizontal && movementX) {
        var direction = isLeft ? -1 : 1;
        var oldWidth = this.getWidth();
        var newWidth = oldWidth + movementX * direction;
        var skipWidth = false;
        if (isLeft) {
          offsetLeft = oldWidth - newWidth;
          if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {
            skipWidth = true;
            offsetLeft = 0;
          }
        }
        if (!skipWidth) {
          this.setWidth(newWidth);
        }
      }
      if (isVertical && movementY) {
        var direction = isTop ? -1 : 1;
        var oldHeight = this.getHeight();
        var newHeight = oldHeight + movementY * direction;
        var skipHeight = false;
        if (isTop) {
          offsetTop = oldHeight - newHeight;
          if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {
            skipHeight = true;
            offsetTop = 0;
          }
        } else {
          if (!this.config.popup && !this.config.forcePopupParentAsOffsetParent && oldHeight < newHeight && this.getMinSizeOfSiblings().height + newHeight > this.element.parentElement.offsetHeight) {
            skipHeight = true;
          }
        }
        if (!skipHeight) {
          this.setHeight(newHeight);
        }
      }
      this.updateDragStartPosition(e2.clientX, e2.clientY);
      if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {
        this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);
      }
    };
    PositionableFeature2.prototype.onResizeEnd = function(e2, side) {
      this.isResizing = false;
      this.currentResizer = null;
      this.boundaryEl = null;
      var params = {
        type: "resize",
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi")
      };
      this.element.classList.remove("ag-resizing");
      this.resizerMap[side].element.classList.remove("ag-active");
      this.dispatchEvent(params);
    };
    PositionableFeature2.prototype.refreshSize = function() {
      var eGui = this.element;
      if (this.config.popup) {
        if (!this.config.width) {
          this.setWidth(eGui.offsetWidth);
        }
        if (!this.config.height) {
          this.setHeight(eGui.offsetHeight);
        }
      }
    };
    PositionableFeature2.prototype.onMoveStart = function(e2) {
      this.boundaryEl = this.findBoundaryElement();
      if (!this.positioned) {
        this.initialisePosition();
      }
      this.isMoving = true;
      this.element.classList.add("ag-moving");
      this.updateDragStartPosition(e2.clientX, e2.clientY);
    };
    PositionableFeature2.prototype.onMove = function(e2) {
      if (!this.isMoving) {
        return;
      }
      var _a47 = this.position, x2 = _a47.x, y2 = _a47.y;
      var topBuffer;
      if (this.config.calculateTopBuffer) {
        topBuffer = this.config.calculateTopBuffer();
      }
      var _b = this.calculateMouseMovement({
        e: e2,
        isTop: true,
        anywhereWithin: true,
        topBuffer
      }), movementX = _b.movementX, movementY = _b.movementY;
      this.offsetElement(x2 + movementX, y2 + movementY);
      this.updateDragStartPosition(e2.clientX, e2.clientY);
    };
    PositionableFeature2.prototype.onMoveEnd = function() {
      this.isMoving = false;
      this.boundaryEl = null;
      this.element.classList.remove("ag-moving");
    };
    PositionableFeature2.prototype.setOffsetParent = function() {
      if (this.config.forcePopupParentAsOffsetParent) {
        this.offsetParent = this.popupService.getPopupParent();
      } else {
        this.offsetParent = this.element.offsetParent;
      }
    };
    PositionableFeature2.prototype.findBoundaryElement = function() {
      var el = this.element;
      while (el) {
        if (window.getComputedStyle(el).position !== "static") {
          return el;
        }
        el = el.parentElement;
      }
      return this.element;
    };
    PositionableFeature2.prototype.clearResizeListeners = function() {
      while (this.resizeListeners.length) {
        var params = this.resizeListeners.pop();
        this.dragService.removeDragSource(params);
      }
    };
    PositionableFeature2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
      if (this.moveElementDragListener) {
        this.dragService.removeDragSource(this.moveElementDragListener);
      }
      this.clearResizeListeners();
      this.removeResizers();
    };
    __decorate98([
      Autowired("popupService")
    ], PositionableFeature2.prototype, "popupService", void 0);
    __decorate98([
      Autowired("dragService")
    ], PositionableFeature2.prototype, "dragService", void 0);
    return PositionableFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/autoWidthCalculator.js
var __extends108 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate99 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AutoWidthCalculator = (
  /** @class */
  function(_super) {
    __extends108(AutoWidthCalculator2, _super);
    function AutoWidthCalculator2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    AutoWidthCalculator2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        _this.centerRowContainerCtrl = p2.centerRowContainerCtrl;
      });
    };
    AutoWidthCalculator2.prototype.getPreferredWidthForColumn = function(column, skipHeader) {
      var eHeaderCell = this.getHeaderCellForColumn(column);
      if (!eHeaderCell) {
        return -1;
      }
      var elements = this.rowRenderer.getAllCellsForColumn(column);
      if (!skipHeader) {
        elements.push(eHeaderCell);
      }
      return this.addElementsToContainerAndGetWidth(elements);
    };
    AutoWidthCalculator2.prototype.getPreferredWidthForColumnGroup = function(columnGroup) {
      var eHeaderCell = this.getHeaderCellForColumn(columnGroup);
      if (!eHeaderCell) {
        return -1;
      }
      return this.addElementsToContainerAndGetWidth([eHeaderCell]);
    };
    AutoWidthCalculator2.prototype.addElementsToContainerAndGetWidth = function(elements) {
      var _this = this;
      var eDummyContainer = document.createElement("form");
      eDummyContainer.style.position = "fixed";
      var eBodyContainer = this.centerRowContainerCtrl.getContainerElement();
      eBodyContainer.appendChild(eDummyContainer);
      elements.forEach(function(el) {
        return _this.cloneItemIntoDummy(el, eDummyContainer);
      });
      var dummyContainerWidth = eDummyContainer.offsetWidth;
      eBodyContainer.removeChild(eDummyContainer);
      var autoSizePadding = this.getAutoSizePadding();
      return dummyContainerWidth + autoSizePadding;
    };
    AutoWidthCalculator2.prototype.getAutoSizePadding = function() {
      var value = this.gridOptionsService.getNum("autoSizePadding");
      return value != null && value >= 0 ? value : 20;
    };
    AutoWidthCalculator2.prototype.getHeaderCellForColumn = function(column) {
      var element = null;
      this.ctrlsService.getHeaderRowContainerCtrls().forEach(function(container) {
        var res = container.getHtmlElementForColumnHeader(column);
        if (res != null) {
          element = res;
        }
      });
      return element;
    };
    AutoWidthCalculator2.prototype.cloneItemIntoDummy = function(eCell, eDummyContainer) {
      var eCellClone = eCell.cloneNode(true);
      eCellClone.style.width = "";
      eCellClone.style.position = "static";
      eCellClone.style.left = "";
      var eCloneParent = document.createElement("div");
      var eCloneParentClassList = eCloneParent.classList;
      var isHeader = ["ag-header-cell", "ag-header-group-cell"].some(function(cls) {
        return eCellClone.classList.contains(cls);
      });
      if (isHeader) {
        eCloneParentClassList.add("ag-header", "ag-header-row");
        eCloneParent.style.position = "static";
      } else {
        eCloneParentClassList.add("ag-row");
      }
      var pointer = eCell.parentElement;
      while (pointer) {
        var isRow = ["ag-header-row", "ag-row"].some(function(cls) {
          return pointer.classList.contains(cls);
        });
        if (isRow) {
          for (var i2 = 0; i2 < pointer.classList.length; i2++) {
            var item = pointer.classList[i2];
            if (item != "ag-row-position-absolute") {
              eCloneParentClassList.add(item);
            }
          }
          break;
        }
        pointer = pointer.parentElement;
      }
      eCloneParent.appendChild(eCellClone);
      eDummyContainer.appendChild(eCloneParent);
    };
    __decorate99([
      Autowired("rowRenderer")
    ], AutoWidthCalculator2.prototype, "rowRenderer", void 0);
    __decorate99([
      Autowired("ctrlsService")
    ], AutoWidthCalculator2.prototype, "ctrlsService", void 0);
    __decorate99([
      Autowired("rowCssClassCalculator")
    ], AutoWidthCalculator2.prototype, "rowCssClassCalculator", void 0);
    __decorate99([
      PostConstruct
    ], AutoWidthCalculator2.prototype, "postConstruct", null);
    AutoWidthCalculator2 = __decorate99([
      Bean("autoWidthCalculator")
    ], AutoWidthCalculator2);
    return AutoWidthCalculator2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/features/stickyRowFeature.js
var __extends109 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate100 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __values5 = function(o2) {
  var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0;
  if (m2)
    return m2.call(o2);
  if (o2 && typeof o2.length === "number")
    return {
      next: function() {
        if (o2 && i2 >= o2.length)
          o2 = void 0;
        return { value: o2 && o2[i2++], done: !o2 };
      }
    };
  throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read15 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread11 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read15(arguments[i2]));
  return ar;
};
var StickyRowFeature = (
  /** @class */
  function(_super) {
    __extends109(StickyRowFeature2, _super);
    function StickyRowFeature2(createRowCon, destroyRowCtrls) {
      var _this = _super.call(this) || this;
      _this.createRowCon = createRowCon;
      _this.destroyRowCtrls = destroyRowCtrls;
      _this.stickyRowCtrls = [];
      _this.containerHeight = 0;
      return _this;
    }
    StickyRowFeature2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(params) {
        _this.gridBodyCtrl = params.gridBodyCtrl;
      });
    };
    StickyRowFeature2.prototype.getStickyRowCtrls = function() {
      return this.stickyRowCtrls;
    };
    StickyRowFeature2.prototype.checkStickyRows = function() {
      var height = 0;
      if (!this.gridOptionsService.is("groupRowsSticky")) {
        this.refreshNodesAndContainerHeight([], height);
        return;
      }
      var stickyRows = [];
      var firstPixel = this.rowRenderer.getFirstVisibleVerticalPixel();
      var addStickyRow = function(stickyRow) {
        stickyRows.push(stickyRow);
        var lastAncester = stickyRow;
        while (lastAncester.expanded) {
          lastAncester = last(lastAncester.childrenAfterSort);
        }
        var lastChildBottom = lastAncester.rowTop + lastAncester.rowHeight;
        var stickRowBottom = firstPixel + height + stickyRow.rowHeight;
        if (lastChildBottom < stickRowBottom) {
          stickyRow.stickyRowTop = height + (lastChildBottom - stickRowBottom);
        } else {
          stickyRow.stickyRowTop = height;
        }
        height = 0;
        stickyRows.forEach(function(rowNode) {
          var thisRowLastPx = rowNode.stickyRowTop + rowNode.rowHeight;
          if (height < thisRowLastPx) {
            height = thisRowLastPx;
          }
        });
      };
      while (true) {
        var firstPixelAfterStickyRows = firstPixel + height;
        var firstIndex = this.rowModel.getRowIndexAtPixel(firstPixelAfterStickyRows);
        var firstRow = this.rowModel.getRow(firstIndex);
        if (firstRow == null) {
          break;
        }
        if (firstRow.level < 0) {
          break;
        }
        var parents = [];
        var p2 = firstRow.parent;
        while (p2.level >= 0) {
          parents.push(p2);
          p2 = p2.parent;
        }
        var firstMissingParent = parents.reverse().find(function(parent2) {
          return stickyRows.indexOf(parent2) < 0 && parent2.displayed;
        });
        if (firstMissingParent) {
          addStickyRow(firstMissingParent);
          continue;
        }
        if (firstRow.group && firstRow.expanded && !firstRow.footer && firstRow.rowTop < firstPixelAfterStickyRows) {
          addStickyRow(firstRow);
          continue;
        }
        break;
      }
      this.refreshNodesAndContainerHeight(stickyRows, height);
    };
    StickyRowFeature2.prototype.refreshNodesAndContainerHeight = function(allStickyNodes, height) {
      var e_1, _a47, _b;
      var _this = this;
      var removedCtrls = this.stickyRowCtrls.filter(function(ctrl2) {
        return allStickyNodes.indexOf(ctrl2.getRowNode()) === -1;
      });
      var addedNodes = allStickyNodes.filter(function(rowNode) {
        return _this.stickyRowCtrls.findIndex(function(ctrl2) {
          return ctrl2.getRowNode() === rowNode;
        }) === -1;
      });
      var ctrlsToDestroy = {};
      removedCtrls.forEach(function(removedCtrl) {
        ctrlsToDestroy[removedCtrl.getRowNode().id] = removedCtrl;
        _this.stickyRowCtrls = _this.stickyRowCtrls.filter(function(ctrl2) {
          return ctrl2 !== removedCtrl;
        });
      });
      try {
        for (var _c = __values5(Object.values(ctrlsToDestroy)), _d = _c.next(); !_d.done; _d = _c.next()) {
          var ctrl = _d.value;
          ctrl.getRowNode().sticky = false;
        }
      } catch (e_1_1) {
        e_1 = { error: e_1_1 };
      } finally {
        try {
          if (_d && !_d.done && (_a47 = _c.return))
            _a47.call(_c);
        } finally {
          if (e_1)
            throw e_1.error;
        }
      }
      this.destroyRowCtrls(ctrlsToDestroy, false);
      var newCtrls = addedNodes.map(function(rowNode) {
        rowNode.sticky = true;
        return _this.createRowCon(rowNode, false, false);
      });
      (_b = this.stickyRowCtrls).push.apply(_b, __spread11(newCtrls));
      this.stickyRowCtrls.forEach(function(ctrl2) {
        return ctrl2.setRowTop(ctrl2.getRowNode().stickyRowTop);
      });
      this.stickyRowCtrls.sort(function(a2, b2) {
        return b2.getRowNode().rowIndex - a2.getRowNode().rowIndex;
      });
      if (this.containerHeight !== height) {
        this.containerHeight = height;
        this.gridBodyCtrl.setStickyTopHeight(height);
      }
    };
    __decorate100([
      Autowired("rowModel")
    ], StickyRowFeature2.prototype, "rowModel", void 0);
    __decorate100([
      Autowired("rowRenderer")
    ], StickyRowFeature2.prototype, "rowRenderer", void 0);
    __decorate100([
      Autowired("ctrlsService")
    ], StickyRowFeature2.prototype, "ctrlsService", void 0);
    __decorate100([
      PostConstruct
    ], StickyRowFeature2.prototype, "postConstruct", null);
    return StickyRowFeature2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/rowRenderer.js
var __extends110 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate101 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read16 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread12 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read16(arguments[i2]));
  return ar;
};
var DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;
var RowRenderer = (
  /** @class */
  function(_super) {
    __extends110(RowRenderer2, _super);
    function RowRenderer2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.destroyFuncsForColumnListeners = [];
      _this.rowCtrlsByRowIndex = {};
      _this.zombieRowCtrls = {};
      _this.allRowCtrls = [];
      _this.topRowCtrls = [];
      _this.bottomRowCtrls = [];
      _this.refreshInProgress = false;
      _this.dataFirstRenderedFired = false;
      return _this;
    }
    RowRenderer2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function() {
        _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
        _this.initialise();
      });
    };
    RowRenderer2.prototype.initialise = function() {
      this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));
      this.addManagedPropertyListener("domLayout", this.onDomLayoutChanged.bind(this));
      this.addManagedPropertyListener("rowClass", this.redrawRows.bind(this));
      if (this.gridOptionsService.is("groupRowsSticky")) {
        if (this.rowModel.getType() != "clientSide") {
          doOnce(function() {
            return console.warn("AG Grid: The feature Sticky Row Groups only works with the Client Side Row Model");
          }, "rowRenderer.stickyWorksWithCsrmOnly");
        } else if (this.gridOptionsService.isTreeData()) {
          doOnce(function() {
            return console.warn("AG Grid: The feature Sticky Row Groups does not work with Tree Data.");
          }, "rowRenderer.stickyDoesNotWorkWithTreeData");
        } else {
          this.stickyRowFeature = this.createManagedBean(new StickyRowFeature(this.createRowCon.bind(this), this.destroyRowCtrls.bind(this)));
        }
      }
      this.registerCellEventListeners();
      this.initialiseCache();
      this.printLayout = this.gridOptionsService.isDomLayout("print");
      this.embedFullWidthRows = this.printLayout || this.gridOptionsService.is("embedFullWidthRows");
      this.redrawAfterModelUpdate();
    };
    RowRenderer2.prototype.initialiseCache = function() {
      if (this.gridOptionsService.is("keepDetailRows")) {
        var countProp = this.getKeepDetailRowsCount();
        var count = countProp != null ? countProp : 3;
        this.cachedRowCtrls = new RowCtrlCache(count);
      }
    };
    RowRenderer2.prototype.getKeepDetailRowsCount = function() {
      var keepDetailRowsCount = this.gridOptionsService.getNum("keepDetailRowsCount");
      if (exists(keepDetailRowsCount) && keepDetailRowsCount > 0) {
        return keepDetailRowsCount;
      }
      return DEFAULT_KEEP_DETAIL_ROW_COUNT;
    };
    RowRenderer2.prototype.getRowCtrls = function() {
      return this.allRowCtrls;
    };
    RowRenderer2.prototype.getStickyTopRowCtrls = function() {
      if (!this.stickyRowFeature) {
        return [];
      }
      return this.stickyRowFeature.getStickyRowCtrls();
    };
    RowRenderer2.prototype.updateAllRowCtrls = function() {
      var liveList = getAllValuesInObject(this.rowCtrlsByRowIndex);
      var isEnsureDomOrder = this.gridOptionsService.is("ensureDomOrder");
      var isPrintLayout = this.gridOptionsService.isDomLayout("print");
      if (isEnsureDomOrder || isPrintLayout) {
        liveList.sort(function(a2, b2) {
          return a2.getRowNode().rowIndex - b2.getRowNode.rowIndex;
        });
      }
      var zombieList = getAllValuesInObject(this.zombieRowCtrls);
      var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];
      this.allRowCtrls = __spread12(liveList, zombieList, cachedList);
    };
    RowRenderer2.prototype.registerCellEventListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUSED, function(event) {
        _this.getAllCellCtrls().forEach(function(cellCtrl) {
          return cellCtrl.onCellFocused(event);
        });
        _this.getFullWidthRowCtrls().forEach(function(rowCtrl) {
          rowCtrl.onFullWidthRowFocused(event);
        });
      });
      this.addManagedListener(this.eventService, Events.EVENT_FLASH_CELLS, function(event) {
        _this.getAllCellCtrls().forEach(function(cellCtrl) {
          return cellCtrl.onFlashCells(event);
        });
      });
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function() {
        _this.getAllCellCtrls().forEach(function(cellCtrl) {
          return cellCtrl.onColumnHover();
        });
      });
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function() {
        _this.getAllCellCtrls().forEach(function(cellCtrl) {
          return cellCtrl.onDisplayedColumnsChanged();
        });
      });
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function() {
        if (_this.printLayout) {
          _this.getAllCellCtrls().forEach(function(cellCtrl) {
            return cellCtrl.onLeftChanged();
          });
        }
      });
      var rangeSelectionEnabled = this.gridOptionsService.isEnableRangeSelection();
      if (rangeSelectionEnabled) {
        this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function() {
          _this.getAllCellCtrls().forEach(function(cellCtrl) {
            return cellCtrl.onRangeSelectionChanged();
          });
        });
        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function() {
          _this.getAllCellCtrls().forEach(function(cellCtrl) {
            return cellCtrl.updateRangeBordersIfRangeCount();
          });
        });
        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, function() {
          _this.getAllCellCtrls().forEach(function(cellCtrl) {
            return cellCtrl.updateRangeBordersIfRangeCount();
          });
        });
        this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function() {
          _this.getAllCellCtrls().forEach(function(cellCtrl) {
            return cellCtrl.updateRangeBordersIfRangeCount();
          });
        });
      }
      this.refreshListenersToColumnsForCellComps();
      this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));
      this.addDestroyFunc(this.removeGridColumnListeners.bind(this));
    };
    RowRenderer2.prototype.removeGridColumnListeners = function() {
      this.destroyFuncsForColumnListeners.forEach(function(func) {
        return func();
      });
      this.destroyFuncsForColumnListeners.length = 0;
    };
    RowRenderer2.prototype.refreshListenersToColumnsForCellComps = function() {
      var _this = this;
      this.removeGridColumnListeners();
      var cols = this.columnModel.getAllGridColumns();
      if (!cols) {
        return;
      }
      cols.forEach(function(col) {
        var forEachCellWithThisCol = function(callback) {
          _this.getAllCellCtrls().forEach(function(cellCtrl) {
            if (cellCtrl.getColumn() === col) {
              callback(cellCtrl);
            }
          });
        };
        var leftChangedListener = function() {
          forEachCellWithThisCol(function(cellCtrl) {
            return cellCtrl.onLeftChanged();
          });
        };
        var widthChangedListener = function() {
          forEachCellWithThisCol(function(cellCtrl) {
            return cellCtrl.onWidthChanged();
          });
        };
        var firstRightPinnedChangedListener = function() {
          forEachCellWithThisCol(function(cellCtrl) {
            return cellCtrl.onFirstRightPinnedChanged();
          });
        };
        var lastLeftPinnedChangedListener = function() {
          forEachCellWithThisCol(function(cellCtrl) {
            return cellCtrl.onLastLeftPinnedChanged();
          });
        };
        var colDefChangedListener = function() {
          forEachCellWithThisCol(function(cellCtrl) {
            return cellCtrl.onColDefChanged();
          });
        };
        col.addEventListener("leftChanged", leftChangedListener);
        col.addEventListener("widthChanged", widthChangedListener);
        col.addEventListener("firstRightPinnedChanged", firstRightPinnedChangedListener);
        col.addEventListener("lastLeftPinnedChanged", lastLeftPinnedChangedListener);
        col.addEventListener("colDefChanged", colDefChangedListener);
        _this.destroyFuncsForColumnListeners.push(function() {
          col.removeEventListener("leftChanged", leftChangedListener);
          col.removeEventListener("widthChanged", widthChangedListener);
          col.removeEventListener("firstRightPinnedChanged", firstRightPinnedChangedListener);
          col.removeEventListener("lastLeftPinnedChanged", lastLeftPinnedChangedListener);
          col.removeEventListener("colDefChanged", colDefChangedListener);
        });
      });
    };
    RowRenderer2.prototype.onDomLayoutChanged = function() {
      var printLayout = this.gridOptionsService.isDomLayout("print");
      var embedFullWidthRows = printLayout || this.gridOptionsService.is("embedFullWidthRows");
      var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;
      this.printLayout = printLayout;
      this.embedFullWidthRows = embedFullWidthRows;
      if (destroyRows) {
        this.redrawAfterModelUpdate({ domLayoutChanged: true });
      }
    };
    RowRenderer2.prototype.datasourceChanged = function() {
      this.firstRenderedRow = 0;
      this.lastRenderedRow = -1;
      var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
      this.removeRowCtrls(rowIndexesToRemove);
    };
    RowRenderer2.prototype.onPageLoaded = function(event) {
      var params = {
        recycleRows: event.keepRenderedRows,
        animate: event.animate,
        newData: event.newData,
        newPage: event.newPage,
        // because this is a model updated event (not pinned rows), we
        // can skip updating the pinned rows. this is needed so that if user
        // is doing transaction updates, the pinned rows are not getting constantly
        // trashed - or editing cells in pinned rows are not refreshed and put into read mode
        onlyBody: true
      };
      this.redrawAfterModelUpdate(params);
    };
    RowRenderer2.prototype.getAllCellsForColumn = function(column) {
      var res = [];
      this.getAllRowCtrls().forEach(function(rowCtrl) {
        var eCell = rowCtrl.getCellElement(column);
        if (eCell) {
          res.push(eCell);
        }
      });
      return res;
    };
    RowRenderer2.prototype.refreshFloatingRowComps = function() {
      this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());
      this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());
    };
    RowRenderer2.prototype.getTopRowCtrls = function() {
      return this.topRowCtrls;
    };
    RowRenderer2.prototype.getBottomRowCtrls = function() {
      return this.bottomRowCtrls;
    };
    RowRenderer2.prototype.refreshFloatingRows = function(rowComps, rowNodes) {
      var _this = this;
      rowComps.forEach(function(row) {
        row.destroyFirstPass();
        row.destroySecondPass();
      });
      rowComps.length = 0;
      if (!rowNodes) {
        return;
      }
      rowNodes.forEach(function(rowNode) {
        var rowCtrl = new RowCtrl(rowNode, _this.beans, false, false, _this.printLayout);
        rowComps.push(rowCtrl);
      });
    };
    RowRenderer2.prototype.onPinnedRowDataChanged = function() {
      var params = {
        recycleRows: true
      };
      this.redrawAfterModelUpdate(params);
    };
    RowRenderer2.prototype.getRenderedIndexesForRowNodes = function(rowNodes) {
      var result = [];
      if (missing(rowNodes)) {
        return result;
      }
      iterateObject(this.rowCtrlsByRowIndex, function(index, renderedRow) {
        var rowNode = renderedRow.getRowNode();
        if (rowNodes.indexOf(rowNode) >= 0) {
          result.push(index);
        }
      });
      return result;
    };
    RowRenderer2.prototype.redrawRows = function(rowNodes) {
      var partialRefresh = rowNodes != null && rowNodes.length > 0;
      if (partialRefresh) {
        var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);
        this.removeRowCtrls(indexesToRemove);
      }
      this.redrawAfterModelUpdate({
        recycleRows: partialRefresh
      });
    };
    RowRenderer2.prototype.getCellToRestoreFocusToAfterRefresh = function(params) {
      var focusedCell = (params === null || params === void 0 ? void 0 : params.suppressKeepFocus) ? null : this.focusService.getFocusCellToUseAfterRefresh();
      if (focusedCell == null) {
        return null;
      }
      var eDocument = this.gridOptionsService.getDocument();
      var activeElement = eDocument.activeElement;
      var cellDomData = this.gridOptionsService.getDomData(activeElement, CellCtrl.DOM_DATA_KEY_CELL_CTRL);
      var rowDomData = this.gridOptionsService.getDomData(activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);
      var gridElementFocused = cellDomData || rowDomData;
      return gridElementFocused ? focusedCell : null;
    };
    RowRenderer2.prototype.redrawAfterModelUpdate = function(params) {
      if (params === void 0) {
        params = {};
      }
      this.getLockOnRefresh();
      var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);
      this.updateContainerHeights();
      this.scrollToTopIfNewData(params);
      var recycleRows = !params.domLayoutChanged && !!params.recycleRows;
      var animate2 = params.animate && this.gridOptionsService.isAnimateRows();
      var rowsToRecycle = recycleRows ? this.recycleRows() : null;
      if (!recycleRows) {
        this.removeAllRowComps();
      }
      var isFocusedCellGettingRecycled = function() {
        if (focusedCell == null || rowsToRecycle == null) {
          return false;
        }
        var res = false;
        iterateObject(rowsToRecycle, function(key, rowComp) {
          var rowNode = rowComp.getRowNode();
          var rowIndexEqual = rowNode.rowIndex == focusedCell.rowIndex;
          var pinnedEqual = rowNode.rowPinned == focusedCell.rowPinned;
          if (rowIndexEqual && pinnedEqual) {
            res = true;
          }
        });
        return res;
      };
      var focusedCellRecycled = isFocusedCellGettingRecycled();
      this.redraw(rowsToRecycle, animate2);
      this.gridBodyCtrl.updateRowCount();
      if (!params.onlyBody) {
        this.refreshFloatingRowComps();
      }
      this.dispatchDisplayedRowsChanged();
      if (!focusedCellRecycled) {
        this.restoreFocusedCell(focusedCell);
      }
      this.releaseLockOnRefresh();
    };
    RowRenderer2.prototype.scrollToTopIfNewData = function(params) {
      var scrollToTop = params.newData || params.newPage;
      var suppressScrollToTop = this.gridOptionsService.is("suppressScrollOnNewData");
      if (scrollToTop && !suppressScrollToTop) {
        this.gridBodyCtrl.getScrollFeature().scrollToTop();
      }
    };
    RowRenderer2.prototype.updateContainerHeights = function() {
      if (this.printLayout) {
        this.rowContainerHeightService.setModelHeight(null);
        return;
      }
      var containerHeight = this.paginationProxy.getCurrentPageHeight();
      if (containerHeight === 0) {
        containerHeight = 1;
      }
      this.rowContainerHeightService.setModelHeight(containerHeight);
    };
    RowRenderer2.prototype.getLockOnRefresh = function() {
      if (this.refreshInProgress) {
        throw new Error("AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. Your code probably called a grid API method while the grid was in the render stage. To overcome this, put the API call into a timeout, e.g. instead of api.redrawRows(), call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code that caused the refresh check this stacktrace.");
      }
      this.refreshInProgress = true;
    };
    RowRenderer2.prototype.releaseLockOnRefresh = function() {
      this.refreshInProgress = false;
    };
    RowRenderer2.prototype.isRefreshInProgress = function() {
      return this.refreshInProgress;
    };
    RowRenderer2.prototype.restoreFocusedCell = function(cellPosition) {
      if (cellPosition) {
        this.focusService.setFocusedCell({
          rowIndex: cellPosition.rowIndex,
          column: cellPosition.column,
          rowPinned: cellPosition.rowPinned,
          forceBrowserFocus: true,
          preventScrollOnBrowserFocus: true
        });
      }
    };
    RowRenderer2.prototype.stopEditing = function(cancel) {
      if (cancel === void 0) {
        cancel = false;
      }
      this.getAllRowCtrls().forEach(function(rowCtrl) {
        rowCtrl.stopEditing(cancel);
      });
    };
    RowRenderer2.prototype.getAllCellCtrls = function() {
      var res = [];
      this.getAllRowCtrls().forEach(function(rowCtrl) {
        return res = res.concat(rowCtrl.getAllCellCtrls());
      });
      return res;
    };
    RowRenderer2.prototype.getAllRowCtrls = function() {
      var _this = this;
      var stickyRowCtrls = this.stickyRowFeature && this.stickyRowFeature.getStickyRowCtrls() || [];
      var res = __spread12(this.topRowCtrls, this.bottomRowCtrls, stickyRowCtrls);
      Object.keys(this.rowCtrlsByRowIndex).forEach(function(key) {
        return res.push(_this.rowCtrlsByRowIndex[key]);
      });
      return res;
    };
    RowRenderer2.prototype.addRenderedRowListener = function(eventName, rowIndex, callback) {
      var rowComp = this.rowCtrlsByRowIndex[rowIndex];
      if (rowComp) {
        rowComp.addEventListener(eventName, callback);
      }
    };
    RowRenderer2.prototype.flashCells = function(params) {
      if (params === void 0) {
        params = {};
      }
      var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;
      this.getCellCtrls(params.rowNodes, params.columns).forEach(function(cellCtrl) {
        return cellCtrl.flashCell({ flashDelay, fadeDelay });
      });
    };
    RowRenderer2.prototype.refreshCells = function(params) {
      if (params === void 0) {
        params = {};
      }
      var refreshCellParams = {
        forceRefresh: params.force,
        newData: false,
        suppressFlash: params.suppressFlash
      };
      this.getCellCtrls(params.rowNodes, params.columns).forEach(function(cellCtrl) {
        if (cellCtrl.refreshShouldDestroy()) {
          var rowCtrl = cellCtrl.getRowCtrl();
          if (rowCtrl) {
            rowCtrl.refreshCell(cellCtrl);
          }
        } else {
          cellCtrl.refreshCell(refreshCellParams);
        }
      });
      this.getFullWidthRowCtrls(params.rowNodes).forEach(function(fullWidthRowCtrl) {
        fullWidthRowCtrl.refreshFullWidth();
      });
    };
    RowRenderer2.prototype.getCellRendererInstances = function(params) {
      var res = this.getCellCtrls(params.rowNodes, params.columns).map(function(cellCtrl) {
        return cellCtrl.getCellRenderer();
      }).filter(function(renderer) {
        return renderer != null;
      });
      return res;
    };
    RowRenderer2.prototype.getCellEditorInstances = function(params) {
      var res = [];
      this.getCellCtrls(params.rowNodes, params.columns).forEach(function(cellCtrl) {
        var cellEditor = cellCtrl.getCellEditor();
        if (cellEditor) {
          res.push(cellEditor);
        }
      });
      return res;
    };
    RowRenderer2.prototype.getEditingCells = function() {
      var res = [];
      this.getAllCellCtrls().forEach(function(cellCtrl) {
        if (cellCtrl.isEditing()) {
          var cellPosition = cellCtrl.getCellPosition();
          res.push(cellPosition);
        }
      });
      return res;
    };
    RowRenderer2.prototype.mapRowNodes = function(rowNodes) {
      if (!rowNodes) {
        return;
      }
      var res = {
        top: {},
        bottom: {},
        normal: {}
      };
      rowNodes.forEach(function(rowNode) {
        var id = rowNode.id;
        if (rowNode.rowPinned === "top") {
          res.top[id] = rowNode;
        } else if (rowNode.rowPinned === "bottom") {
          res.bottom[id] = rowNode;
        } else {
          res.normal[id] = rowNode;
        }
      });
      return res;
    };
    RowRenderer2.prototype.isRowInMap = function(rowNode, rowIdsMap) {
      var id = rowNode.id;
      var floating = rowNode.rowPinned;
      if (floating === "bottom") {
        return rowIdsMap.bottom[id] != null;
      }
      if (floating === "top") {
        return rowIdsMap.top[id] != null;
      }
      return rowIdsMap.normal[id] != null;
    };
    RowRenderer2.prototype.getCellCtrls = function(rowNodes, columns) {
      var _this = this;
      var rowIdsMap = this.mapRowNodes(rowNodes);
      var res = [];
      var colIdsMap;
      if (exists(columns)) {
        colIdsMap = {};
        columns.forEach(function(colKey) {
          var column = _this.columnModel.getGridColumn(colKey);
          if (exists(column)) {
            colIdsMap[column.getId()] = true;
          }
        });
      }
      var processRow = function(rowComp) {
        var rowNode = rowComp.getRowNode();
        if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {
          return;
        }
        rowComp.getAllCellCtrls().forEach(function(cellCtrl) {
          var colId = cellCtrl.getColumn().getId();
          var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];
          if (excludeColFromRefresh) {
            return;
          }
          res.push(cellCtrl);
        });
      };
      iterateObject(this.rowCtrlsByRowIndex, function(index, rowComp) {
        processRow(rowComp);
      });
      if (this.topRowCtrls) {
        this.topRowCtrls.forEach(processRow);
      }
      if (this.bottomRowCtrls) {
        this.bottomRowCtrls.forEach(processRow);
      }
      return res;
    };
    RowRenderer2.prototype.destroy = function() {
      this.removeAllRowComps();
      _super.prototype.destroy.call(this);
    };
    RowRenderer2.prototype.removeAllRowComps = function() {
      var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
      this.removeRowCtrls(rowIndexesToRemove);
    };
    RowRenderer2.prototype.recycleRows = function() {
      var stubNodeIndexes = [];
      iterateObject(this.rowCtrlsByRowIndex, function(index, rowComp) {
        var stubNode = rowComp.getRowNode().id == null;
        if (stubNode) {
          stubNodeIndexes.push(index);
        }
      });
      this.removeRowCtrls(stubNodeIndexes);
      var ctrlsByIdMap = {};
      iterateObject(this.rowCtrlsByRowIndex, function(index, rowComp) {
        var rowNode = rowComp.getRowNode();
        ctrlsByIdMap[rowNode.id] = rowComp;
      });
      this.rowCtrlsByRowIndex = {};
      return ctrlsByIdMap;
    };
    RowRenderer2.prototype.removeRowCtrls = function(rowsToRemove) {
      var _this = this;
      rowsToRemove.forEach(function(indexToRemove) {
        var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];
        if (rowCtrl) {
          rowCtrl.destroyFirstPass();
          rowCtrl.destroySecondPass();
        }
        delete _this.rowCtrlsByRowIndex[indexToRemove];
      });
    };
    RowRenderer2.prototype.redrawAfterScroll = function() {
      var cellFocused;
      if (this.stickyRowFeature && browserSupportsPreventScroll()) {
        cellFocused = this.getCellToRestoreFocusToAfterRefresh() || void 0;
      }
      this.getLockOnRefresh();
      this.redraw(null, false, true);
      this.releaseLockOnRefresh();
      this.dispatchDisplayedRowsChanged();
      if (cellFocused != null) {
        var newFocusedCell = this.getCellToRestoreFocusToAfterRefresh();
        if (cellFocused != null && newFocusedCell == null) {
          this.animationFrameService.flushAllFrames();
          this.restoreFocusedCell(cellFocused);
        }
      }
    };
    RowRenderer2.prototype.removeRowCompsNotToDraw = function(indexesToDraw) {
      var indexesToDrawMap = {};
      indexesToDraw.forEach(function(index) {
        return indexesToDrawMap[index] = true;
      });
      var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);
      var indexesNotToDraw = existingIndexes.filter(function(index) {
        return !indexesToDrawMap[index];
      });
      this.removeRowCtrls(indexesNotToDraw);
    };
    RowRenderer2.prototype.calculateIndexesToDraw = function(rowsToRecycle) {
      var _this = this;
      var indexesToDraw = createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);
      var checkRowToDraw = function(indexStr, rowComp) {
        var index = rowComp.getRowNode().rowIndex;
        if (index == null) {
          return;
        }
        if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {
          if (_this.doNotUnVirtualiseRow(rowComp)) {
            indexesToDraw.push(index);
          }
        }
      };
      iterateObject(this.rowCtrlsByRowIndex, checkRowToDraw);
      iterateObject(rowsToRecycle, checkRowToDraw);
      indexesToDraw.sort(function(a2, b2) {
        return a2 - b2;
      });
      indexesToDraw = indexesToDraw.filter(function(index) {
        var rowNode = _this.paginationProxy.getRow(index);
        return rowNode && !rowNode.sticky;
      });
      return indexesToDraw;
    };
    RowRenderer2.prototype.redraw = function(rowsToRecycle, animate2, afterScroll) {
      var _this = this;
      if (animate2 === void 0) {
        animate2 = false;
      }
      if (afterScroll === void 0) {
        afterScroll = false;
      }
      this.rowContainerHeightService.updateOffset();
      this.workOutFirstAndLastRowsToRender();
      if (this.stickyRowFeature) {
        this.stickyRowFeature.checkStickyRows();
      }
      var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);
      this.removeRowCompsNotToDraw(indexesToDraw);
      if (this.printLayout) {
        animate2 = false;
      }
      var rowCtrls = [];
      indexesToDraw.forEach(function(rowIndex) {
        var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate2, afterScroll);
        if (exists(rowCtrl)) {
          rowCtrls.push(rowCtrl);
        }
      });
      if (rowsToRecycle) {
        var useAnimationFrame = afterScroll && !this.gridOptionsService.is("suppressAnimationFrame") && !this.printLayout;
        if (useAnimationFrame) {
          this.beans.animationFrameService.addDestroyTask(function() {
            _this.destroyRowCtrls(rowsToRecycle, animate2);
            _this.updateAllRowCtrls();
            _this.dispatchDisplayedRowsChanged();
          });
        } else {
          this.destroyRowCtrls(rowsToRecycle, animate2);
        }
      }
      this.updateAllRowCtrls();
    };
    RowRenderer2.prototype.dispatchDisplayedRowsChanged = function() {
      var event = { type: Events.EVENT_DISPLAYED_ROWS_CHANGED };
      this.eventService.dispatchEvent(event);
    };
    RowRenderer2.prototype.onDisplayedColumnsChanged = function() {
      var pinningLeft = this.columnModel.isPinningLeft();
      var pinningRight = this.columnModel.isPinningRight();
      var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;
      if (atLeastOneChanged) {
        this.pinningLeft = pinningLeft;
        this.pinningRight = pinningRight;
        if (this.embedFullWidthRows) {
          this.redrawFullWidthEmbeddedRows();
        }
      }
    };
    RowRenderer2.prototype.redrawFullWidthEmbeddedRows = function() {
      var rowsToRemove = [];
      this.getFullWidthRowCtrls().forEach(function(fullWidthCtrl) {
        var rowIndex = fullWidthCtrl.getRowNode().rowIndex;
        rowsToRemove.push(rowIndex.toString());
      });
      this.refreshFloatingRowComps();
      this.removeRowCtrls(rowsToRemove);
      this.redrawAfterScroll();
    };
    RowRenderer2.prototype.getFullWidthRowCtrls = function(rowNodes) {
      var _this = this;
      var rowNodesMap = this.mapRowNodes(rowNodes);
      return getAllValuesInObject(this.rowCtrlsByRowIndex).filter(function(rowCtrl) {
        if (!rowCtrl.isFullWidth()) {
          return false;
        }
        var rowNode = rowCtrl.getRowNode();
        if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {
          return false;
        }
        return true;
      });
    };
    RowRenderer2.prototype.refreshFullWidthRows = function(rowNodesToRefresh) {
      var rowsToRemove = [];
      var selectivelyRefreshing = !!rowNodesToRefresh;
      var idsToRefresh = selectivelyRefreshing ? {} : void 0;
      if (selectivelyRefreshing && idsToRefresh) {
        rowNodesToRefresh.forEach(function(r2) {
          return idsToRefresh[r2.id] = true;
        });
      }
      this.getFullWidthRowCtrls().forEach(function(fullWidthRowCtrl) {
        var rowNode = fullWidthRowCtrl.getRowNode();
        if (selectivelyRefreshing && idsToRefresh) {
          var parentId = rowNode.level > 0 && rowNode.parent ? rowNode.parent.id : void 0;
          var skipThisNode = !idsToRefresh[rowNode.id] && !idsToRefresh[parentId];
          if (skipThisNode) {
            return;
          }
        }
        var fullWidthRowsRefreshed = fullWidthRowCtrl.refreshFullWidth();
        if (!fullWidthRowsRefreshed) {
          var rowIndex = fullWidthRowCtrl.getRowNode().rowIndex;
          rowsToRemove.push(rowIndex.toString());
        }
      });
      this.removeRowCtrls(rowsToRemove);
      this.redrawAfterScroll();
    };
    RowRenderer2.prototype.createOrUpdateRowCtrl = function(rowIndex, rowsToRecycle, animate2, afterScroll) {
      var rowNode;
      var rowCtrl = this.rowCtrlsByRowIndex[rowIndex];
      if (!rowCtrl) {
        rowNode = this.paginationProxy.getRow(rowIndex);
        if (exists(rowNode) && exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {
          rowCtrl = rowsToRecycle[rowNode.id];
          rowsToRecycle[rowNode.id] = null;
        }
      }
      var creatingNewRowCtrl = !rowCtrl;
      if (creatingNewRowCtrl) {
        if (!rowNode) {
          rowNode = this.paginationProxy.getRow(rowIndex);
        }
        if (exists(rowNode)) {
          rowCtrl = this.createRowCon(rowNode, animate2, afterScroll);
        } else {
          return;
        }
      }
      if (rowNode) {
        rowNode.alreadyRendered = true;
      }
      this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;
      return rowCtrl;
    };
    RowRenderer2.prototype.destroyRowCtrls = function(rowCtrlsMap, animate2) {
      var _this = this;
      var executeInAWhileFuncs = [];
      iterateObject(rowCtrlsMap, function(nodeId, rowCtrl) {
        if (!rowCtrl) {
          return;
        }
        if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {
          _this.cachedRowCtrls.addRow(rowCtrl);
          return;
        }
        rowCtrl.destroyFirstPass();
        if (animate2) {
          _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;
          executeInAWhileFuncs.push(function() {
            rowCtrl.destroySecondPass();
            delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];
          });
        } else {
          rowCtrl.destroySecondPass();
        }
      });
      if (animate2) {
        executeInAWhileFuncs.push(function() {
          _this.updateAllRowCtrls();
          _this.dispatchDisplayedRowsChanged();
        });
        executeInAWhile(executeInAWhileFuncs);
      }
    };
    RowRenderer2.prototype.getRowBuffer = function() {
      var rowBuffer = this.gridOptionsService.getNum("rowBuffer");
      if (typeof rowBuffer === "number") {
        if (rowBuffer < 0) {
          doOnce(function() {
            return console.warn("AG Grid: rowBuffer should not be negative");
          }, "warn rowBuffer negative");
          rowBuffer = 0;
          this.gridOptionsService.set("rowBuffer", 0);
        }
      } else {
        rowBuffer = 10;
      }
      return rowBuffer;
    };
    RowRenderer2.prototype.getRowBufferInPixels = function() {
      var rowsToBuffer = this.getRowBuffer();
      var defaultRowHeight = this.gridOptionsService.getRowHeightAsNumber();
      return rowsToBuffer * defaultRowHeight;
    };
    RowRenderer2.prototype.workOutFirstAndLastRowsToRender = function() {
      var newFirst;
      var newLast;
      if (!this.paginationProxy.isRowsToRender()) {
        newFirst = 0;
        newLast = -1;
      } else if (this.printLayout) {
        newFirst = this.paginationProxy.getPageFirstRow();
        newLast = this.paginationProxy.getPageLastRow();
      } else {
        var bufferPixels = this.getRowBufferInPixels();
        var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();
        var suppressRowVirtualisation = this.gridOptionsService.is("suppressRowVirtualisation");
        var rowHeightsChanged = false;
        var firstPixel = void 0;
        var lastPixel = void 0;
        do {
          var paginationOffset = this.paginationProxy.getPixelOffset();
          var _a47 = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a47.pageFirstPixel, pageLastPixel = _a47.pageLastPixel;
          var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();
          var bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();
          var bodyTopPixel = bodyVRange.top;
          var bodyBottomPixel = bodyVRange.bottom;
          if (suppressRowVirtualisation) {
            firstPixel = pageFirstPixel + divStretchOffset;
            lastPixel = pageLastPixel + divStretchOffset;
          } else {
            firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;
            lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;
          }
          this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;
          rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);
        } while (rowHeightsChanged);
        var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);
        var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);
        var pageFirstRow = this.paginationProxy.getPageFirstRow();
        var pageLastRow = this.paginationProxy.getPageLastRow();
        if (firstRowIndex < pageFirstRow) {
          firstRowIndex = pageFirstRow;
        }
        if (lastRowIndex > pageLastRow) {
          lastRowIndex = pageLastRow;
        }
        newFirst = firstRowIndex;
        newLast = lastRowIndex;
      }
      var rowLayoutNormal = this.gridOptionsService.isDomLayout("normal");
      var suppressRowCountRestriction = this.gridOptionsService.is("suppressMaxRenderedRowRestriction");
      var rowBufferMaxSize = Math.max(this.getRowBuffer(), 500);
      if (rowLayoutNormal && !suppressRowCountRestriction) {
        if (newLast - newFirst > rowBufferMaxSize) {
          newLast = newFirst + rowBufferMaxSize;
        }
      }
      var firstDiffers = newFirst !== this.firstRenderedRow;
      var lastDiffers = newLast !== this.lastRenderedRow;
      if (firstDiffers || lastDiffers) {
        this.firstRenderedRow = newFirst;
        this.lastRenderedRow = newLast;
        var event_1 = {
          type: Events.EVENT_VIEWPORT_CHANGED,
          firstRow: newFirst,
          lastRow: newLast
        };
        this.eventService.dispatchEvent(event_1);
      }
    };
    RowRenderer2.prototype.dispatchFirstDataRenderedEvent = function() {
      var _this = this;
      if (this.dataFirstRenderedFired) {
        return;
      }
      this.dataFirstRenderedFired = true;
      var event = {
        type: Events.EVENT_FIRST_DATA_RENDERED,
        firstRow: this.firstRenderedRow,
        lastRow: this.lastRenderedRow
      };
      window.requestAnimationFrame(function() {
        _this.beans.eventService.dispatchEvent(event);
      });
    };
    RowRenderer2.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function(topPixel, bottomPixel) {
      var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);
      if (res) {
        this.updateContainerHeights();
      }
      return res;
    };
    RowRenderer2.prototype.getFirstVisibleVerticalPixel = function() {
      return this.firstVisibleVPixel;
    };
    RowRenderer2.prototype.getFirstVirtualRenderedRow = function() {
      return this.firstRenderedRow;
    };
    RowRenderer2.prototype.getLastVirtualRenderedRow = function() {
      return this.lastRenderedRow;
    };
    RowRenderer2.prototype.doNotUnVirtualiseRow = function(rowComp) {
      var REMOVE_ROW = false;
      var KEEP_ROW = true;
      var rowNode = rowComp.getRowNode();
      var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);
      var rowIsEditing = rowComp.isEditing();
      var rowIsDetail = rowNode.detail;
      var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;
      if (!mightWantToKeepRow) {
        return REMOVE_ROW;
      }
      var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);
      return rowNodePresent ? KEEP_ROW : REMOVE_ROW;
    };
    RowRenderer2.prototype.createRowCon = function(rowNode, animate2, afterScroll) {
      var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;
      if (rowCtrlFromCache) {
        return rowCtrlFromCache;
      }
      var suppressAnimationFrame = this.gridOptionsService.is("suppressAnimationFrame");
      var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;
      var res = new RowCtrl(rowNode, this.beans, animate2, useAnimationFrameForCreate, this.printLayout);
      return res;
    };
    RowRenderer2.prototype.getRenderedNodes = function() {
      var renderedRows = this.rowCtrlsByRowIndex;
      return Object.keys(renderedRows).map(function(key) {
        return renderedRows[key].getRowNode();
      });
    };
    RowRenderer2.prototype.getRowByPosition = function(rowPosition) {
      var rowCtrl;
      var rowIndex = rowPosition.rowIndex;
      switch (rowPosition.rowPinned) {
        case "top":
          rowCtrl = this.topRowCtrls[rowIndex];
          break;
        case "bottom":
          rowCtrl = this.bottomRowCtrls[rowIndex];
          break;
        default:
          rowCtrl = this.rowCtrlsByRowIndex[rowIndex];
          if (!rowCtrl) {
            rowCtrl = this.getStickyTopRowCtrls().find(function(ctrl) {
              return ctrl.getRowNode().rowIndex === rowIndex;
            }) || null;
          }
          break;
      }
      return rowCtrl;
    };
    RowRenderer2.prototype.getRowNode = function(gridRow) {
      switch (gridRow.rowPinned) {
        case "top":
          return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
        case "bottom":
          return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
        default:
          return this.rowModel.getRow(gridRow.rowIndex);
      }
    };
    RowRenderer2.prototype.isRangeInRenderedViewport = function(startIndex, endIndex) {
      var parentClosed = startIndex == null || endIndex == null;
      if (parentClosed) {
        return false;
      }
      var blockAfterViewport = startIndex > this.lastRenderedRow;
      var blockBeforeViewport = endIndex < this.firstRenderedRow;
      var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;
      return blockInsideViewport;
    };
    __decorate101([
      Autowired("animationFrameService")
    ], RowRenderer2.prototype, "animationFrameService", void 0);
    __decorate101([
      Autowired("paginationProxy")
    ], RowRenderer2.prototype, "paginationProxy", void 0);
    __decorate101([
      Autowired("columnModel")
    ], RowRenderer2.prototype, "columnModel", void 0);
    __decorate101([
      Autowired("pinnedRowModel")
    ], RowRenderer2.prototype, "pinnedRowModel", void 0);
    __decorate101([
      Autowired("rowModel")
    ], RowRenderer2.prototype, "rowModel", void 0);
    __decorate101([
      Autowired("focusService")
    ], RowRenderer2.prototype, "focusService", void 0);
    __decorate101([
      Autowired("beans")
    ], RowRenderer2.prototype, "beans", void 0);
    __decorate101([
      Autowired("rowContainerHeightService")
    ], RowRenderer2.prototype, "rowContainerHeightService", void 0);
    __decorate101([
      Autowired("ctrlsService")
    ], RowRenderer2.prototype, "ctrlsService", void 0);
    __decorate101([
      PostConstruct
    ], RowRenderer2.prototype, "postConstruct", null);
    RowRenderer2 = __decorate101([
      Bean("rowRenderer")
    ], RowRenderer2);
    return RowRenderer2;
  }(BeanStub)
);
var RowCtrlCache = (
  /** @class */
  function() {
    function RowCtrlCache2(maxCount) {
      this.entriesMap = {};
      this.entriesList = [];
      this.maxCount = maxCount;
    }
    RowCtrlCache2.prototype.addRow = function(rowCtrl) {
      this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;
      this.entriesList.push(rowCtrl);
      rowCtrl.setCached(true);
      if (this.entriesList.length > this.maxCount) {
        var rowCtrlToDestroy = this.entriesList[0];
        rowCtrlToDestroy.destroyFirstPass();
        rowCtrlToDestroy.destroySecondPass();
        this.removeFromCache(rowCtrlToDestroy);
      }
    };
    RowCtrlCache2.prototype.getRow = function(rowNode) {
      if (rowNode == null || rowNode.id == null) {
        return null;
      }
      var res = this.entriesMap[rowNode.id];
      if (!res) {
        return null;
      }
      this.removeFromCache(res);
      res.setCached(false);
      var rowNodeMismatch = res.getRowNode() != rowNode;
      return rowNodeMismatch ? null : res;
    };
    RowCtrlCache2.prototype.removeFromCache = function(rowCtrl) {
      var rowNodeId = rowCtrl.getRowNode().id;
      delete this.entriesMap[rowNodeId];
      removeFromArray(this.entriesList, rowCtrl);
    };
    RowCtrlCache2.prototype.getEntries = function() {
      return this.entriesList;
    };
    return RowCtrlCache2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/valueFormatterService.js
var __extends111 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate102 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ValueFormatterService = (
  /** @class */
  function(_super) {
    __extends111(ValueFormatterService2, _super);
    function ValueFormatterService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ValueFormatterService2.prototype.formatValue = function(column, node, value, suppliedFormatter, useFormatterFromColumn) {
      if (useFormatterFromColumn === void 0) {
        useFormatterFromColumn = true;
      }
      var result = null;
      var formatter;
      var colDef = column.getColDef();
      if (suppliedFormatter) {
        formatter = suppliedFormatter;
      } else if (useFormatterFromColumn) {
        formatter = colDef.valueFormatter;
      }
      if (formatter) {
        var params = {
          value,
          node,
          data: node ? node.data : null,
          colDef,
          column,
          api: this.gridOptionsService.get("api"),
          columnApi: this.gridOptionsService.get("columnApi"),
          context: this.gridOptionsService.get("context")
        };
        result = this.expressionService.evaluate(formatter, params);
      } else if (colDef.refData) {
        return colDef.refData[value] || "";
      }
      if (result == null && Array.isArray(value)) {
        result = value.join(", ");
      }
      return result;
    };
    __decorate102([
      Autowired("expressionService")
    ], ValueFormatterService2.prototype, "expressionService", void 0);
    ValueFormatterService2 = __decorate102([
      Bean("valueFormatterService")
    ], ValueFormatterService2);
    return ValueFormatterService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/pinnedRowModel/pinnedRowModel.js
var __extends112 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate103 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var PinnedRowModel = (
  /** @class */
  function(_super) {
    __extends112(PinnedRowModel2, _super);
    function PinnedRowModel2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    PinnedRowModel2.prototype.init = function() {
      this.setPinnedTopRowData(this.gridOptionsService.get("pinnedTopRowData"));
      this.setPinnedBottomRowData(this.gridOptionsService.get("pinnedBottomRowData"));
    };
    PinnedRowModel2.prototype.isEmpty = function(floating) {
      var rows = floating === "top" ? this.pinnedTopRows : this.pinnedBottomRows;
      return missingOrEmpty(rows);
    };
    PinnedRowModel2.prototype.isRowsToRender = function(floating) {
      return !this.isEmpty(floating);
    };
    PinnedRowModel2.prototype.getRowAtPixel = function(pixel, floating) {
      var rows = floating === "top" ? this.pinnedTopRows : this.pinnedBottomRows;
      if (missingOrEmpty(rows)) {
        return 0;
      }
      for (var i2 = 0; i2 < rows.length; i2++) {
        var rowNode = rows[i2];
        var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;
        if (rowTopPixel >= pixel) {
          return i2;
        }
      }
      return rows.length - 1;
    };
    PinnedRowModel2.prototype.setPinnedTopRowData = function(rowData) {
      this.pinnedTopRows = this.createNodesFromData(rowData, true);
      var event = {
        type: Events.EVENT_PINNED_ROW_DATA_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    PinnedRowModel2.prototype.setPinnedBottomRowData = function(rowData) {
      this.pinnedBottomRows = this.createNodesFromData(rowData, false);
      var event = {
        type: Events.EVENT_PINNED_ROW_DATA_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    PinnedRowModel2.prototype.createNodesFromData = function(allData, isTop) {
      var _this = this;
      var rowNodes = [];
      if (allData) {
        var nextRowTop_1 = 0;
        allData.forEach(function(dataItem, index) {
          var rowNode = new RowNode(_this.beans);
          rowNode.data = dataItem;
          var idPrefix = isTop ? RowNode.ID_PREFIX_TOP_PINNED : RowNode.ID_PREFIX_BOTTOM_PINNED;
          rowNode.id = idPrefix + index;
          rowNode.rowPinned = isTop ? "top" : "bottom";
          rowNode.setRowTop(nextRowTop_1);
          rowNode.setRowHeight(_this.gridOptionsService.getRowHeightForNode(rowNode).height);
          rowNode.setRowIndex(index);
          nextRowTop_1 += rowNode.rowHeight;
          rowNodes.push(rowNode);
        });
      }
      return rowNodes;
    };
    PinnedRowModel2.prototype.getPinnedTopRowData = function() {
      return this.pinnedTopRows;
    };
    PinnedRowModel2.prototype.getPinnedBottomRowData = function() {
      return this.pinnedBottomRows;
    };
    PinnedRowModel2.prototype.getPinnedTopTotalHeight = function() {
      return this.getTotalHeight(this.pinnedTopRows);
    };
    PinnedRowModel2.prototype.getPinnedTopRowCount = function() {
      return this.pinnedTopRows ? this.pinnedTopRows.length : 0;
    };
    PinnedRowModel2.prototype.getPinnedBottomRowCount = function() {
      return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;
    };
    PinnedRowModel2.prototype.getPinnedTopRow = function(index) {
      return this.pinnedTopRows[index];
    };
    PinnedRowModel2.prototype.getPinnedBottomRow = function(index) {
      return this.pinnedBottomRows[index];
    };
    PinnedRowModel2.prototype.forEachPinnedTopRow = function(callback) {
      if (missingOrEmpty(this.pinnedTopRows)) {
        return;
      }
      this.pinnedTopRows.forEach(callback);
    };
    PinnedRowModel2.prototype.forEachPinnedBottomRow = function(callback) {
      if (missingOrEmpty(this.pinnedBottomRows)) {
        return;
      }
      this.pinnedBottomRows.forEach(callback);
    };
    PinnedRowModel2.prototype.getPinnedBottomTotalHeight = function() {
      return this.getTotalHeight(this.pinnedBottomRows);
    };
    PinnedRowModel2.prototype.getTotalHeight = function(rowNodes) {
      if (!rowNodes || rowNodes.length === 0) {
        return 0;
      }
      var lastNode = last(rowNodes);
      return lastNode.rowTop + lastNode.rowHeight;
    };
    __decorate103([
      Autowired("beans")
    ], PinnedRowModel2.prototype, "beans", void 0);
    __decorate103([
      PostConstruct
    ], PinnedRowModel2.prototype, "init", null);
    PinnedRowModel2 = __decorate103([
      Bean("pinnedRowModel")
    ], PinnedRowModel2);
    return PinnedRowModel2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/serverSideTransaction.js
var ServerSideTransactionResultStatus;
(function(ServerSideTransactionResultStatus2) {
  ServerSideTransactionResultStatus2["Applied"] = "Applied";
  ServerSideTransactionResultStatus2["StoreNotFound"] = "StoreNotFound";
  ServerSideTransactionResultStatus2["StoreLoading"] = "StoreLoading";
  ServerSideTransactionResultStatus2["StoreWaitingToLoad"] = "StoreWaitingToLoad";
  ServerSideTransactionResultStatus2["StoreLoadingFailed"] = "StoreLoadingFailed";
  ServerSideTransactionResultStatus2["StoreWrongType"] = "StoreWrongType";
  ServerSideTransactionResultStatus2["Cancelled"] = "Cancelled";
})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/utils/changedPath.js
var ChangedPath = (
  /** @class */
  function() {
    function ChangedPath2(keepingColumns, rootNode) {
      this.active = true;
      this.nodeIdsToColumns = {};
      this.mapToItems = {};
      this.keepingColumns = keepingColumns;
      this.pathRoot = {
        rowNode: rootNode,
        children: null
      };
      this.mapToItems[rootNode.id] = this.pathRoot;
    }
    ChangedPath2.prototype.setInactive = function() {
      this.active = false;
    };
    ChangedPath2.prototype.isActive = function() {
      return this.active;
    };
    ChangedPath2.prototype.depthFirstSearchChangedPath = function(pathItem, callback) {
      if (pathItem.children) {
        for (var i2 = 0; i2 < pathItem.children.length; i2++) {
          this.depthFirstSearchChangedPath(pathItem.children[i2], callback);
        }
      }
      callback(pathItem.rowNode);
    };
    ChangedPath2.prototype.depthFirstSearchEverything = function(rowNode, callback, traverseEverything) {
      if (rowNode.childrenAfterGroup) {
        for (var i2 = 0; i2 < rowNode.childrenAfterGroup.length; i2++) {
          var childNode = rowNode.childrenAfterGroup[i2];
          if (childNode.childrenAfterGroup) {
            this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i2], callback, traverseEverything);
          } else if (traverseEverything) {
            callback(childNode);
          }
        }
      }
      callback(rowNode);
    };
    ChangedPath2.prototype.forEachChangedNodeDepthFirst = function(callback, traverseLeafNodes, includeUnchangedNodes) {
      if (traverseLeafNodes === void 0) {
        traverseLeafNodes = false;
      }
      if (includeUnchangedNodes === void 0) {
        includeUnchangedNodes = false;
      }
      if (this.active && !includeUnchangedNodes) {
        this.depthFirstSearchChangedPath(this.pathRoot, callback);
      } else {
        this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);
      }
    };
    ChangedPath2.prototype.executeFromRootNode = function(callback) {
      callback(this.pathRoot.rowNode);
    };
    ChangedPath2.prototype.createPathItems = function(rowNode) {
      var pointer = rowNode;
      var newEntryCount = 0;
      while (!this.mapToItems[pointer.id]) {
        var newEntry = {
          rowNode: pointer,
          children: null
        };
        this.mapToItems[pointer.id] = newEntry;
        newEntryCount++;
        pointer = pointer.parent;
      }
      return newEntryCount;
    };
    ChangedPath2.prototype.populateColumnsMap = function(rowNode, columns) {
      var _this = this;
      if (!this.keepingColumns || !columns) {
        return;
      }
      var pointer = rowNode;
      while (pointer) {
        if (!this.nodeIdsToColumns[pointer.id]) {
          this.nodeIdsToColumns[pointer.id] = {};
        }
        columns.forEach(function(col) {
          return _this.nodeIdsToColumns[pointer.id][col.getId()] = true;
        });
        pointer = pointer.parent;
      }
    };
    ChangedPath2.prototype.linkPathItems = function(rowNode, newEntryCount) {
      var pointer = rowNode;
      for (var i2 = 0; i2 < newEntryCount; i2++) {
        var thisItem = this.mapToItems[pointer.id];
        var parentItem = this.mapToItems[pointer.parent.id];
        if (!parentItem.children) {
          parentItem.children = [];
        }
        parentItem.children.push(thisItem);
        pointer = pointer.parent;
      }
    };
    ChangedPath2.prototype.addParentNode = function(rowNode, columns) {
      if (!rowNode || rowNode.isRowPinned()) {
        return;
      }
      var newEntryCount = this.createPathItems(rowNode);
      this.linkPathItems(rowNode, newEntryCount);
      this.populateColumnsMap(rowNode, columns);
    };
    ChangedPath2.prototype.canSkip = function(rowNode) {
      return this.active && !this.mapToItems[rowNode.id];
    };
    ChangedPath2.prototype.getValueColumnsForNode = function(rowNode, valueColumns) {
      if (!this.keepingColumns) {
        return valueColumns;
      }
      var colsForThisNode = this.nodeIdsToColumns[rowNode.id];
      var result = valueColumns.filter(function(col) {
        return colsForThisNode[col.getId()];
      });
      return result;
    };
    ChangedPath2.prototype.getNotValueColumnsForNode = function(rowNode, valueColumns) {
      if (!this.keepingColumns) {
        return null;
      }
      var colsForThisNode = this.nodeIdsToColumns[rowNode.id];
      var result = valueColumns.filter(function(col) {
        return !colsForThisNode[col.getId()];
      });
      return result;
    };
    return ChangedPath2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rowNodeCache/rowNodeBlock.js
var __extends113 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var RowNodeBlock = (
  /** @class */
  function(_super) {
    __extends113(RowNodeBlock2, _super);
    function RowNodeBlock2(id) {
      var _this = _super.call(this) || this;
      _this.state = RowNodeBlock2.STATE_WAITING_TO_LOAD;
      _this.version = 0;
      _this.id = id;
      return _this;
    }
    RowNodeBlock2.prototype.getId = function() {
      return this.id;
    };
    RowNodeBlock2.prototype.load = function() {
      this.state = RowNodeBlock2.STATE_LOADING;
      this.loadFromDatasource();
    };
    RowNodeBlock2.prototype.getVersion = function() {
      return this.version;
    };
    RowNodeBlock2.prototype.setStateWaitingToLoad = function() {
      this.version++;
      this.state = RowNodeBlock2.STATE_WAITING_TO_LOAD;
    };
    RowNodeBlock2.prototype.getState = function() {
      return this.state;
    };
    RowNodeBlock2.prototype.pageLoadFailed = function(version) {
      var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);
      if (requestMostRecentAndLive) {
        this.state = RowNodeBlock2.STATE_FAILED;
        this.processServerFail();
      }
      this.dispatchLoadCompleted(false);
    };
    RowNodeBlock2.prototype.success = function(version, params) {
      this.successCommon(version, params);
    };
    RowNodeBlock2.prototype.pageLoaded = function(version, rows, lastRow) {
      this.successCommon(version, { rowData: rows, rowCount: lastRow });
    };
    RowNodeBlock2.prototype.isRequestMostRecentAndLive = function(version) {
      var thisIsMostRecentRequest = version === this.version;
      var weAreNotDestroyed = this.isAlive();
      return thisIsMostRecentRequest && weAreNotDestroyed;
    };
    RowNodeBlock2.prototype.successCommon = function(version, params) {
      this.dispatchLoadCompleted();
      var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);
      if (requestMostRecentAndLive) {
        this.state = RowNodeBlock2.STATE_LOADED;
        this.processServerResult(params);
      }
    };
    RowNodeBlock2.prototype.dispatchLoadCompleted = function(success) {
      if (success === void 0) {
        success = true;
      }
      var event = {
        type: RowNodeBlock2.EVENT_LOAD_COMPLETE,
        success,
        block: this
      };
      this.dispatchEvent(event);
    };
    RowNodeBlock2.EVENT_LOAD_COMPLETE = "loadComplete";
    RowNodeBlock2.STATE_WAITING_TO_LOAD = "needsLoading";
    RowNodeBlock2.STATE_LOADING = "loading";
    RowNodeBlock2.STATE_LOADED = "loaded";
    RowNodeBlock2.STATE_FAILED = "failed";
    return RowNodeBlock2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rowNodeCache/rowNodeBlockLoader.js
var __extends114 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate104 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param4 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var RowNodeBlockLoader = (
  /** @class */
  function(_super) {
    __extends114(RowNodeBlockLoader2, _super);
    function RowNodeBlockLoader2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.activeBlockLoadsCount = 0;
      _this.blocks = [];
      _this.active = true;
      return _this;
    }
    RowNodeBlockLoader_1 = RowNodeBlockLoader2;
    RowNodeBlockLoader2.prototype.postConstruct = function() {
      this.maxConcurrentRequests = this.getMaxConcurrentDatasourceRequests();
      var blockLoadDebounceMillis = this.gridOptionsService.getNum("blockLoadDebounceMillis");
      if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {
        this.checkBlockToLoadDebounce = _2.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);
      }
    };
    RowNodeBlockLoader2.prototype.setBeans = function(loggerFactory) {
      this.logger = loggerFactory.create("RowNodeBlockLoader");
    };
    RowNodeBlockLoader2.prototype.getMaxConcurrentDatasourceRequests = function() {
      var res = this.gridOptionsService.getNum("maxConcurrentDatasourceRequests");
      if (res == null) {
        return 2;
      }
      if (res <= 0) {
        return;
      }
      return res;
    };
    RowNodeBlockLoader2.prototype.addBlock = function(block) {
      this.blocks.push(block);
      block.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));
      this.checkBlockToLoad();
    };
    RowNodeBlockLoader2.prototype.removeBlock = function(block) {
      _2.removeFromArray(this.blocks, block);
    };
    RowNodeBlockLoader2.prototype.destroy = function() {
      _super.prototype.destroy.call(this);
      this.active = false;
    };
    RowNodeBlockLoader2.prototype.loadComplete = function() {
      this.activeBlockLoadsCount--;
      this.checkBlockToLoad();
      this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADED_EVENT });
      if (this.activeBlockLoadsCount == 0) {
        this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });
      }
    };
    RowNodeBlockLoader2.prototype.checkBlockToLoad = function() {
      if (this.checkBlockToLoadDebounce) {
        this.checkBlockToLoadDebounce();
      } else {
        this.performCheckBlocksToLoad();
      }
    };
    RowNodeBlockLoader2.prototype.performCheckBlocksToLoad = function() {
      if (!this.active) {
        return;
      }
      this.printCacheStatus();
      if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {
        this.logger.log("checkBlockToLoad: max loads exceeded");
        return;
      }
      var loadAvailability = this.getAvailableLoadingCount();
      var blocksToLoad = this.blocks.filter(function(block) {
        return block.getState() === RowNodeBlock.STATE_WAITING_TO_LOAD;
      }).slice(0, loadAvailability);
      this.registerLoads(blocksToLoad.length);
      blocksToLoad.forEach(function(block) {
        return block.load();
      });
      this.printCacheStatus();
    };
    RowNodeBlockLoader2.prototype.getBlockState = function() {
      var result = {};
      this.blocks.forEach(function(block) {
        var _a47 = block.getBlockStateJson(), id = _a47.id, state2 = _a47.state;
        result[id] = state2;
      });
      return result;
    };
    RowNodeBlockLoader2.prototype.printCacheStatus = function() {
      if (this.logger.isLogging()) {
        this.logger.log("printCacheStatus: activePageLoadsCount = " + this.activeBlockLoadsCount + "," + (" blocks = " + JSON.stringify(this.getBlockState())));
      }
    };
    RowNodeBlockLoader2.prototype.isLoading = function() {
      return this.activeBlockLoadsCount > 0;
    };
    RowNodeBlockLoader2.prototype.registerLoads = function(count) {
      this.activeBlockLoadsCount += count;
    };
    RowNodeBlockLoader2.prototype.getAvailableLoadingCount = function() {
      return this.maxConcurrentRequests !== void 0 ? this.maxConcurrentRequests - this.activeBlockLoadsCount : void 0;
    };
    var RowNodeBlockLoader_1;
    RowNodeBlockLoader2.BLOCK_LOADED_EVENT = "blockLoaded";
    RowNodeBlockLoader2.BLOCK_LOADER_FINISHED_EVENT = "blockLoaderFinished";
    __decorate104([
      PostConstruct
    ], RowNodeBlockLoader2.prototype, "postConstruct", null);
    __decorate104([
      __param4(0, Qualifier("loggerFactory"))
    ], RowNodeBlockLoader2.prototype, "setBeans", null);
    RowNodeBlockLoader2 = RowNodeBlockLoader_1 = __decorate104([
      Bean("rowNodeBlockLoader")
    ], RowNodeBlockLoader2);
    return RowNodeBlockLoader2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/pagination/paginationProxy.js
var __extends115 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate105 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var PaginationProxy = (
  /** @class */
  function(_super) {
    __extends115(PaginationProxy2, _super);
    function PaginationProxy2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.currentPage = 0;
      _this.topDisplayedRowIndex = 0;
      _this.bottomDisplayedRowIndex = 0;
      _this.pixelOffset = 0;
      _this.masterRowCount = 0;
      return _this;
    }
    PaginationProxy2.prototype.postConstruct = function() {
      this.active = this.gridOptionsService.is("pagination");
      this.paginateChildRows = this.isPaginateChildRows();
      this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));
      this.addManagedPropertyListener("pagination", this.onPaginationPageSizeChanged.bind(this));
      this.addManagedPropertyListener("paginationPageSize", this.onPaginationPageSizeChanged.bind(this));
      this.onModelUpdated();
    };
    PaginationProxy2.prototype.ensureRowHeightsValid = function(startPixel, endPixel, startLimitIndex, endLimitIndex) {
      var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());
      if (res) {
        this.calculatePages();
      }
      return res;
    };
    PaginationProxy2.prototype.isPaginateChildRows = function() {
      var shouldPaginate = this.gridOptionsService.is("groupRemoveSingleChildren") || this.gridOptionsService.is("groupRemoveLowestSingleChildren");
      if (shouldPaginate) {
        return true;
      }
      return this.gridOptionsService.is("paginateChildRows");
    };
    PaginationProxy2.prototype.onModelUpdated = function(modelUpdatedEvent) {
      this.calculatePages();
      var paginationChangedEvent = {
        type: Events.EVENT_PAGINATION_CHANGED,
        animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,
        newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,
        newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,
        keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false
      };
      this.eventService.dispatchEvent(paginationChangedEvent);
    };
    PaginationProxy2.prototype.onPaginationPageSizeChanged = function() {
      this.active = this.gridOptionsService.is("pagination");
      this.calculatePages();
      var paginationChangedEvent = {
        type: Events.EVENT_PAGINATION_CHANGED,
        animate: false,
        newData: false,
        newPage: false,
        // important to keep rendered rows, otherwise every time grid is resized,
        // we would destroy all the rows.
        keepRenderedRows: true
      };
      this.eventService.dispatchEvent(paginationChangedEvent);
    };
    PaginationProxy2.prototype.goToPage = function(page) {
      if (!this.active || this.currentPage === page || typeof this.currentPage !== "number") {
        return;
      }
      this.currentPage = page;
      var event = {
        type: Events.EVENT_MODEL_UPDATED,
        animate: false,
        keepRenderedRows: false,
        newData: false,
        newPage: true
      };
      this.onModelUpdated(event);
    };
    PaginationProxy2.prototype.getPixelOffset = function() {
      return this.pixelOffset;
    };
    PaginationProxy2.prototype.getRow = function(index) {
      return this.rowModel.getRow(index);
    };
    PaginationProxy2.prototype.getRowNode = function(id) {
      return this.rowModel.getRowNode(id);
    };
    PaginationProxy2.prototype.getRowIndexAtPixel = function(pixel) {
      return this.rowModel.getRowIndexAtPixel(pixel);
    };
    PaginationProxy2.prototype.getCurrentPageHeight = function() {
      if (missing(this.topRowBounds) || missing(this.bottomRowBounds)) {
        return 0;
      }
      return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);
    };
    PaginationProxy2.prototype.getCurrentPagePixelRange = function() {
      var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;
      var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;
      return { pageFirstPixel, pageLastPixel };
    };
    PaginationProxy2.prototype.isRowPresent = function(rowNode) {
      if (!this.rowModel.isRowPresent(rowNode)) {
        return false;
      }
      var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;
      return nodeIsInPage;
    };
    PaginationProxy2.prototype.isEmpty = function() {
      return this.rowModel.isEmpty();
    };
    PaginationProxy2.prototype.isRowsToRender = function() {
      return this.rowModel.isRowsToRender();
    };
    PaginationProxy2.prototype.getNodesInRangeForSelection = function(firstInRange, lastInRange) {
      return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);
    };
    PaginationProxy2.prototype.forEachNode = function(callback) {
      return this.rowModel.forEachNode(callback);
    };
    PaginationProxy2.prototype.getType = function() {
      return this.rowModel.getType();
    };
    PaginationProxy2.prototype.getRowBounds = function(index) {
      var res = this.rowModel.getRowBounds(index);
      res.rowIndex = index;
      return res;
    };
    PaginationProxy2.prototype.getPageFirstRow = function() {
      return this.topRowBounds ? this.topRowBounds.rowIndex : -1;
    };
    PaginationProxy2.prototype.getPageLastRow = function() {
      return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;
    };
    PaginationProxy2.prototype.getRowCount = function() {
      return this.rowModel.getRowCount();
    };
    PaginationProxy2.prototype.getPageForIndex = function(index) {
      return Math.floor(index / this.pageSize);
    };
    PaginationProxy2.prototype.goToPageWithIndex = function(index) {
      if (!this.active) {
        return;
      }
      var pageNumber = this.getPageForIndex(index);
      this.goToPage(pageNumber);
    };
    PaginationProxy2.prototype.isRowInPage = function(row) {
      if (!this.active) {
        return true;
      }
      var rowPage = this.getPageForIndex(row.rowIndex);
      return rowPage === this.currentPage;
    };
    PaginationProxy2.prototype.isLastPageFound = function() {
      return this.rowModel.isLastRowIndexKnown();
    };
    PaginationProxy2.prototype.getCurrentPage = function() {
      return this.currentPage;
    };
    PaginationProxy2.prototype.goToNextPage = function() {
      this.goToPage(this.currentPage + 1);
    };
    PaginationProxy2.prototype.goToPreviousPage = function() {
      this.goToPage(this.currentPage - 1);
    };
    PaginationProxy2.prototype.goToFirstPage = function() {
      this.goToPage(0);
    };
    PaginationProxy2.prototype.goToLastPage = function() {
      var rowCount = this.rowModel.getRowCount();
      var lastPage = Math.floor(rowCount / this.pageSize);
      this.goToPage(lastPage);
    };
    PaginationProxy2.prototype.getPageSize = function() {
      return this.pageSize;
    };
    PaginationProxy2.prototype.getTotalPages = function() {
      return this.totalPages;
    };
    PaginationProxy2.prototype.setPageSize = function() {
      this.pageSize = this.gridOptionsService.getNum("paginationPageSize");
      if (this.pageSize == null || this.pageSize < 1) {
        this.pageSize = 100;
      }
    };
    PaginationProxy2.prototype.calculatePages = function() {
      if (this.active) {
        this.setPageSize();
        if (this.paginateChildRows) {
          this.calculatePagesAllRows();
        } else {
          this.calculatePagesMasterRowsOnly();
        }
      } else {
        this.calculatedPagesNotActive();
      }
      this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);
      if (this.topRowBounds) {
        this.topRowBounds.rowIndex = this.topDisplayedRowIndex;
      }
      this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);
      if (this.bottomRowBounds) {
        this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;
      }
      this.setPixelOffset(exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0);
    };
    PaginationProxy2.prototype.setPixelOffset = function(value) {
      if (this.pixelOffset === value) {
        return;
      }
      this.pixelOffset = value;
      this.eventService.dispatchEvent({ type: Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });
    };
    PaginationProxy2.prototype.setZeroRows = function() {
      this.masterRowCount = 0;
      this.topDisplayedRowIndex = 0;
      this.bottomDisplayedRowIndex = -1;
      this.currentPage = 0;
      this.totalPages = 0;
    };
    PaginationProxy2.prototype.adjustCurrentPageIfInvalid = function() {
      if (this.currentPage >= this.totalPages) {
        this.currentPage = this.totalPages - 1;
      }
      if (!isFinite(this.currentPage) || isNaN(this.currentPage) || this.currentPage < 0) {
        this.currentPage = 0;
      }
    };
    PaginationProxy2.prototype.calculatePagesMasterRowsOnly = function() {
      this.masterRowCount = this.rowModel.getTopLevelRowCount();
      if (this.masterRowCount <= 0) {
        this.setZeroRows();
        return;
      }
      var masterLastRowIndex = this.masterRowCount - 1;
      this.totalPages = Math.floor(masterLastRowIndex / this.pageSize) + 1;
      this.adjustCurrentPageIfInvalid();
      var masterPageStartIndex = this.pageSize * this.currentPage;
      var masterPageEndIndex = this.pageSize * (this.currentPage + 1) - 1;
      if (masterPageEndIndex > masterLastRowIndex) {
        masterPageEndIndex = masterLastRowIndex;
      }
      this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);
      if (masterPageEndIndex === masterLastRowIndex) {
        this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;
      } else {
        var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);
        this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;
      }
    };
    PaginationProxy2.prototype.getMasterRowCount = function() {
      return this.masterRowCount;
    };
    PaginationProxy2.prototype.calculatePagesAllRows = function() {
      this.masterRowCount = this.rowModel.getRowCount();
      if (this.masterRowCount === 0) {
        this.setZeroRows();
        return;
      }
      var maxRowIndex = this.masterRowCount - 1;
      this.totalPages = Math.floor(maxRowIndex / this.pageSize) + 1;
      this.adjustCurrentPageIfInvalid();
      this.topDisplayedRowIndex = this.pageSize * this.currentPage;
      this.bottomDisplayedRowIndex = this.pageSize * (this.currentPage + 1) - 1;
      if (this.bottomDisplayedRowIndex > maxRowIndex) {
        this.bottomDisplayedRowIndex = maxRowIndex;
      }
    };
    PaginationProxy2.prototype.calculatedPagesNotActive = function() {
      this.pageSize = this.rowModel.getRowCount();
      this.totalPages = 1;
      this.currentPage = 0;
      this.topDisplayedRowIndex = 0;
      this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;
    };
    __decorate105([
      Autowired("rowModel")
    ], PaginationProxy2.prototype, "rowModel", void 0);
    __decorate105([
      PostConstruct
    ], PaginationProxy2.prototype, "postConstruct", null);
    PaginationProxy2 = __decorate105([
      Bean("paginationProxy")
    ], PaginationProxy2);
    return PaginationProxy2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/styling/stylingService.js
var __extends116 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate106 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var StylingService = (
  /** @class */
  function(_super) {
    __extends116(StylingService2, _super);
    function StylingService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    StylingService2.prototype.processAllCellClasses = function(colDef, params, onApplicableClass, onNotApplicableClass) {
      this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);
      this.processStaticCellClasses(colDef, params, onApplicableClass);
    };
    StylingService2.prototype.processClassRules = function(classRules, params, onApplicableClass, onNotApplicableClass) {
      if (classRules == null) {
        return;
      }
      var classNames = Object.keys(classRules);
      var classesToApply = {};
      var classesToRemove = {};
      var _loop_1 = function(i3) {
        var className = classNames[i3];
        var rule = classRules[className];
        var resultOfRule;
        if (typeof rule === "string") {
          resultOfRule = this_1.expressionService.evaluate(rule, params);
        } else if (typeof rule === "function") {
          resultOfRule = rule(params);
        }
        className.split(" ").forEach(function(singleClass) {
          if (singleClass == null || singleClass.trim() == "") {
            return;
          }
          resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;
        });
      };
      var this_1 = this;
      for (var i2 = 0; i2 < classNames.length; i2++) {
        _loop_1(i2);
      }
      if (onNotApplicableClass) {
        Object.keys(classesToRemove).forEach(onNotApplicableClass);
      }
      Object.keys(classesToApply).forEach(onApplicableClass);
    };
    StylingService2.prototype.getStaticCellClasses = function(colDef, params) {
      var cellClass = colDef.cellClass;
      if (!cellClass) {
        return [];
      }
      var classOrClasses;
      if (typeof cellClass === "function") {
        var cellClassFunc = cellClass;
        classOrClasses = cellClassFunc(params);
      } else {
        classOrClasses = cellClass;
      }
      if (typeof classOrClasses === "string") {
        classOrClasses = [classOrClasses];
      }
      return classOrClasses || [];
    };
    StylingService2.prototype.processStaticCellClasses = function(colDef, params, onApplicableClass) {
      var classOrClasses = this.getStaticCellClasses(colDef, params);
      classOrClasses.forEach(function(cssClassItem) {
        onApplicableClass(cssClassItem);
      });
    };
    __decorate106([
      Autowired("expressionService")
    ], StylingService2.prototype, "expressionService", void 0);
    StylingService2 = __decorate106([
      Bean("stylingService")
    ], StylingService2);
    return StylingService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agRadioButton.js
var __extends117 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgRadioButton = (
  /** @class */
  function(_super) {
    __extends117(AgRadioButton2, _super);
    function AgRadioButton2(config) {
      return _super.call(this, config, "ag-radio-button", "radio") || this;
    }
    AgRadioButton2.prototype.isSelected = function() {
      return this.eInput.checked;
    };
    AgRadioButton2.prototype.toggle = function() {
      if (this.eInput.disabled) {
        return;
      }
      if (!this.isSelected()) {
        this.setValue(true);
      }
    };
    AgRadioButton2.prototype.addInputListeners = function() {
      _super.prototype.addInputListeners.call(this);
      this.addManagedListener(this.eventService, Events.EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));
    };
    AgRadioButton2.prototype.onChange = function(event) {
      if (event.selected && event.name && this.eInput.name && this.eInput.name === event.name && event.id && this.eInput.id !== event.id) {
        this.setValue(false, true);
      }
    };
    return AgRadioButton2;
  }(AgCheckbox)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agToggleButton.js
var __extends118 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgToggleButton = (
  /** @class */
  function(_super) {
    __extends118(AgToggleButton2, _super);
    function AgToggleButton2(config) {
      return _super.call(this, config, "ag-toggle-button") || this;
    }
    AgToggleButton2.prototype.setValue = function(value, silent) {
      _super.prototype.setValue.call(this, value, silent);
      this.addOrRemoveCssClass("ag-selected", this.getValue());
      return this;
    };
    return AgToggleButton2;
  }(AgCheckbox)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputTextField.js
var __extends119 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgInputTextField = (
  /** @class */
  function(_super) {
    __extends119(AgInputTextField2, _super);
    function AgInputTextField2(config, className, inputType) {
      if (className === void 0) {
        className = "ag-text-field";
      }
      if (inputType === void 0) {
        inputType = "text";
      }
      return _super.call(this, config, className, inputType) || this;
    }
    AgInputTextField2.prototype.postConstruct = function() {
      _super.prototype.postConstruct.call(this);
      if (this.config.allowedCharPattern) {
        this.preventDisallowedCharacters();
      }
    };
    AgInputTextField2.prototype.setValue = function(value, silent) {
      var ret = _super.prototype.setValue.call(this, value, silent);
      if (this.eInput.value !== value) {
        this.eInput.value = exists(value) ? value : "";
      }
      return ret;
    };
    AgInputTextField2.prototype.preventDisallowedCharacters = function() {
      var pattern = new RegExp("[" + this.config.allowedCharPattern + "]");
      var preventDisallowedCharacters = function(event) {
        if (event.key && !pattern.test(event.key)) {
          event.preventDefault();
        }
      };
      this.addManagedListener(this.eInput, "keypress", preventDisallowedCharacters);
      this.addManagedListener(this.eInput, "paste", function(e2) {
        var _a47;
        var text = (_a47 = e2.clipboardData) === null || _a47 === void 0 ? void 0 : _a47.getData("text");
        if (text && text.split("").some(function(c2) {
          return !pattern.test(c2);
        })) {
          e2.preventDefault();
        }
      });
    };
    return AgInputTextField2;
  }(AgAbstractInputField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputTextArea.js
var __extends120 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgInputTextArea = (
  /** @class */
  function(_super) {
    __extends120(AgInputTextArea2, _super);
    function AgInputTextArea2(config) {
      return _super.call(this, config, "ag-text-area", null, "textarea") || this;
    }
    AgInputTextArea2.prototype.setValue = function(value, silent) {
      var ret = _super.prototype.setValue.call(this, value, silent);
      this.eInput.value = value;
      return ret;
    };
    AgInputTextArea2.prototype.setCols = function(cols) {
      this.eInput.cols = cols;
      return this;
    };
    AgInputTextArea2.prototype.setRows = function(rows) {
      this.eInput.rows = rows;
      return this;
    };
    return AgInputTextArea2;
  }(AgAbstractInputField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputNumberField.js
var __extends121 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgInputNumberField = (
  /** @class */
  function(_super) {
    __extends121(AgInputNumberField2, _super);
    function AgInputNumberField2(config) {
      return _super.call(this, config, "ag-number-field", "number") || this;
    }
    AgInputNumberField2.prototype.postConstruct = function() {
      var _this = this;
      _super.prototype.postConstruct.call(this);
      this.addManagedListener(this.eInput, "blur", function() {
        var floatedValue = parseFloat(_this.eInput.value);
        var value = isNaN(floatedValue) ? "" : _this.normalizeValue(floatedValue.toString());
        if (_this.value !== value) {
          _this.setValue(value);
        }
      });
      this.addManagedListener(this.eInput, "wheel", this.onWheel.bind(this));
      this.eInput.step = "any";
    };
    AgInputNumberField2.prototype.onWheel = function(e2) {
      if (document.activeElement === this.eInput) {
        e2.preventDefault();
      }
    };
    AgInputNumberField2.prototype.normalizeValue = function(value) {
      if (value === "") {
        return "";
      }
      if (this.precision) {
        value = this.adjustPrecision(value);
      }
      var val = parseFloat(value);
      if (this.min != null && val < this.min) {
        value = this.min.toString();
      } else if (this.max != null && val > this.max) {
        value = this.max.toString();
      }
      return value;
    };
    AgInputNumberField2.prototype.adjustPrecision = function(value) {
      if (this.precision) {
        var floatString = parseFloat(value).toFixed(this.precision);
        value = parseFloat(floatString).toString();
      }
      return value;
    };
    AgInputNumberField2.prototype.setMin = function(min) {
      if (this.min === min) {
        return this;
      }
      this.min = min;
      addOrRemoveAttribute(this.eInput, "min", min);
      return this;
    };
    AgInputNumberField2.prototype.setMax = function(max) {
      if (this.max === max) {
        return this;
      }
      this.max = max;
      addOrRemoveAttribute(this.eInput, "max", max);
      return this;
    };
    AgInputNumberField2.prototype.setPrecision = function(precision) {
      this.precision = precision;
      return this;
    };
    AgInputNumberField2.prototype.setStep = function(step) {
      if (this.step === step) {
        return this;
      }
      this.step = step;
      addOrRemoveAttribute(this.eInput, "step", step);
      return this;
    };
    AgInputNumberField2.prototype.setValue = function(value, silent) {
      value = this.adjustPrecision(value);
      var normalizedValue = this.normalizeValue(value);
      if (value != normalizedValue) {
        return this;
      }
      return _super.prototype.setValue.call(this, value, silent);
    };
    return AgInputNumberField2;
  }(AgInputTextField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputRange.js
var __extends122 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var AgInputRange = (
  /** @class */
  function(_super) {
    __extends122(AgInputRange2, _super);
    function AgInputRange2(config) {
      return _super.call(this, config, "ag-range-field", "range") || this;
    }
    AgInputRange2.prototype.postConstruct = function() {
      _super.prototype.postConstruct.call(this);
      var _a47 = this.config, min = _a47.min, max = _a47.max, step = _a47.step;
      if (min != null) {
        this.setMinValue(min);
      }
      if (max != null) {
        this.setMaxValue(max);
      }
      this.setStep(step || 1);
    };
    AgInputRange2.prototype.addInputListeners = function() {
      var _this = this;
      this.addManagedListener(this.eInput, "input", function(e2) {
        var value = e2.target.value;
        _this.setValue(value);
      });
    };
    AgInputRange2.prototype.setMinValue = function(value) {
      this.min = value;
      this.eInput.setAttribute("min", value.toString());
      return this;
    };
    AgInputRange2.prototype.setMaxValue = function(value) {
      this.max = value;
      this.eInput.setAttribute("max", value.toString());
      return this;
    };
    AgInputRange2.prototype.setStep = function(value) {
      this.eInput.setAttribute("step", value.toString());
      return this;
    };
    AgInputRange2.prototype.setValue = function(value, silent) {
      if (this.min != null) {
        value = Math.max(parseFloat(value), this.min).toString();
      }
      if (this.max != null) {
        value = Math.min(parseFloat(value), this.max).toString();
      }
      var ret = _super.prototype.setValue.call(this, value, silent);
      this.eInput.value = value;
      return ret;
    };
    return AgInputRange2;
  }(AgAbstractInputField)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agSlider.js
var __extends123 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate107 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgSlider = (
  /** @class */
  function(_super) {
    __extends123(AgSlider2, _super);
    function AgSlider2(config) {
      var _this = _super.call(this, config, AgSlider2.TEMPLATE) || this;
      _this.labelAlignment = "top";
      return _this;
    }
    AgSlider2.prototype.init = function() {
      this.eSlider.addCssClass("ag-slider-field");
    };
    AgSlider2.prototype.onValueChange = function(callbackFn) {
      var _this = this;
      var eventChanged = AgAbstractField.EVENT_CHANGED;
      this.addManagedListener(this.eText, eventChanged, function() {
        var textValue = parseFloat(_this.eText.getValue());
        _this.eSlider.setValue(textValue.toString(), true);
        callbackFn(textValue || 0);
      });
      this.addManagedListener(this.eSlider, eventChanged, function() {
        var sliderValue = _this.eSlider.getValue();
        _this.eText.setValue(sliderValue, true);
        callbackFn(parseFloat(sliderValue));
      });
      return this;
    };
    AgSlider2.prototype.setSliderWidth = function(width) {
      this.eSlider.setWidth(width);
      return this;
    };
    AgSlider2.prototype.setTextFieldWidth = function(width) {
      this.eText.setWidth(width);
      return this;
    };
    AgSlider2.prototype.setMinValue = function(minValue) {
      this.eSlider.setMinValue(minValue);
      this.eText.setMin(minValue);
      return this;
    };
    AgSlider2.prototype.setMaxValue = function(maxValue) {
      this.eSlider.setMaxValue(maxValue);
      this.eText.setMax(maxValue);
      return this;
    };
    AgSlider2.prototype.getValue = function() {
      return this.eText.getValue();
    };
    AgSlider2.prototype.setValue = function(value) {
      if (this.getValue() === value) {
        return this;
      }
      this.eText.setValue(value, true);
      this.eSlider.setValue(value, true);
      this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });
      return this;
    };
    AgSlider2.prototype.setStep = function(step) {
      this.eSlider.setStep(step);
      this.eText.setStep(step);
      return this;
    };
    AgSlider2.TEMPLATE = '<div class="ag-slider">\n            <label ref="eLabel"></label>\n            <div class="ag-wrapper ag-slider-wrapper">\n                <ag-input-range ref="eSlider"></ag-input-range>\n                <ag-input-number-field ref="eText"></ag-input-number-field>\n            </div>\n        </div>';
    __decorate107([
      RefSelector("eLabel")
    ], AgSlider2.prototype, "eLabel", void 0);
    __decorate107([
      RefSelector("eSlider")
    ], AgSlider2.prototype, "eSlider", void 0);
    __decorate107([
      RefSelector("eText")
    ], AgSlider2.prototype, "eText", void 0);
    __decorate107([
      PostConstruct
    ], AgSlider2.prototype, "init", null);
    return AgSlider2;
  }(AgAbstractLabel)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agGroupComponent.js
var __extends124 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate108 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgGroupComponent = (
  /** @class */
  function(_super) {
    __extends124(AgGroupComponent2, _super);
    function AgGroupComponent2(params) {
      if (params === void 0) {
        params = {};
      }
      var _this = _super.call(this, AgGroupComponent2.getTemplate(params)) || this;
      _this.suppressEnabledCheckbox = true;
      _this.suppressOpenCloseIcons = false;
      var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;
      _this.title = title;
      _this.cssIdentifier = params.cssIdentifier || "default";
      _this.enabled = enabled != null ? enabled : true;
      _this.items = items || [];
      _this.alignItems = params.alignItems || "center";
      if (suppressEnabledCheckbox != null) {
        _this.suppressEnabledCheckbox = suppressEnabledCheckbox;
      }
      if (suppressOpenCloseIcons != null) {
        _this.suppressOpenCloseIcons = suppressOpenCloseIcons;
      }
      return _this;
    }
    AgGroupComponent2.getTemplate = function(params) {
      var cssIdentifier = params.cssIdentifier || "default";
      var direction = params.direction || "vertical";
      return (
        /* html */
        '<div class="ag-group ag-' + cssIdentifier + '-group" role="presentation">\n            <div class="ag-group-title-bar ag-' + cssIdentifier + '-group-title-bar ag-unselectable" ref="eTitleBar" role="button">\n                <span class="ag-group-title-bar-icon ag-' + cssIdentifier + '-group-title-bar-icon" ref="eGroupOpenedIcon" role="presentation"></span>\n                <span class="ag-group-title-bar-icon ag-' + cssIdentifier + '-group-title-bar-icon" ref="eGroupClosedIcon" role="presentation"></span>\n                <span ref="eTitle" class="ag-group-title ag-' + cssIdentifier + '-group-title"></span>\n            </div>\n            <div ref="eToolbar" class="ag-group-toolbar ag-' + cssIdentifier + '-group-toolbar">\n                <ag-checkbox ref="cbGroupEnabled"></ag-checkbox>\n            </div>\n            <div ref="eContainer" class="ag-group-container ag-group-container-' + direction + " ag-" + cssIdentifier + '-group-container"></div>\n        </div>'
      );
    };
    AgGroupComponent2.prototype.postConstruct = function() {
      if (this.items.length) {
        var initialItems = this.items;
        this.items = [];
        this.addItems(initialItems);
      }
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      this.cbGroupEnabled.setLabel(localeTextFunc("enabled", "Enabled"));
      if (this.title) {
        this.setTitle(this.title);
      }
      if (this.enabled) {
        this.setEnabled(this.enabled);
      }
      this.setAlignItems(this.alignItems);
      this.hideEnabledCheckbox(this.suppressEnabledCheckbox);
      this.hideOpenCloseIcons(this.suppressOpenCloseIcons);
      this.setupExpandContract();
      this.refreshAriaStatus();
      this.refreshChildDisplay();
    };
    AgGroupComponent2.prototype.setupExpandContract = function() {
      var _this = this;
      this.eGroupClosedIcon.appendChild(createIcon("columnSelectClosed", this.gridOptionsService, null));
      this.eGroupOpenedIcon.appendChild(createIcon("columnSelectOpen", this.gridOptionsService, null));
      this.addManagedListener(this.eTitleBar, "click", function() {
        return _this.toggleGroupExpand();
      });
      this.addManagedListener(this.eTitleBar, "keydown", function(e2) {
        switch (e2.key) {
          case KeyCode.ENTER:
          case KeyCode.SPACE:
            e2.preventDefault();
            _this.toggleGroupExpand();
            break;
          case KeyCode.RIGHT:
          case KeyCode.LEFT:
            e2.preventDefault();
            _this.toggleGroupExpand(e2.key === KeyCode.RIGHT);
            break;
        }
      });
    };
    AgGroupComponent2.prototype.refreshAriaStatus = function() {
      if (!this.suppressOpenCloseIcons) {
        setAriaExpanded(this.eTitleBar, this.expanded);
      }
    };
    AgGroupComponent2.prototype.refreshChildDisplay = function() {
      var showIcon = !this.suppressOpenCloseIcons;
      setDisplayed(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);
      setDisplayed(this.eGroupOpenedIcon, showIcon && this.expanded);
      setDisplayed(this.eGroupClosedIcon, showIcon && !this.expanded);
    };
    AgGroupComponent2.prototype.isExpanded = function() {
      return this.expanded;
    };
    AgGroupComponent2.prototype.setAlignItems = function(alignment) {
      if (this.alignItems !== alignment) {
        this.removeCssClass("ag-group-item-alignment-" + this.alignItems);
      }
      this.alignItems = alignment;
      var newCls = "ag-group-item-alignment-" + this.alignItems;
      this.addCssClass(newCls);
      return this;
    };
    AgGroupComponent2.prototype.toggleGroupExpand = function(expanded) {
      if (this.suppressOpenCloseIcons) {
        this.expanded = true;
        this.refreshChildDisplay();
        setDisplayed(this.eContainer, true);
        return this;
      }
      expanded = expanded != null ? expanded : !this.expanded;
      if (this.expanded === expanded) {
        return this;
      }
      this.expanded = expanded;
      this.refreshAriaStatus();
      this.refreshChildDisplay();
      setDisplayed(this.eContainer, expanded);
      this.dispatchEvent({ type: this.expanded ? AgGroupComponent2.EVENT_EXPANDED : AgGroupComponent2.EVENT_COLLAPSED });
      return this;
    };
    AgGroupComponent2.prototype.addItems = function(items) {
      var _this = this;
      items.forEach(function(item) {
        return _this.addItem(item);
      });
    };
    AgGroupComponent2.prototype.addItem = function(item) {
      var container = this.eContainer;
      var el = item instanceof Component2 ? item.getGui() : item;
      el.classList.add("ag-group-item", "ag-" + this.cssIdentifier + "-group-item");
      container.appendChild(el);
      this.items.push(el);
    };
    AgGroupComponent2.prototype.hideItem = function(hide, index) {
      var itemToHide = this.items[index];
      setDisplayed(itemToHide, !hide);
    };
    AgGroupComponent2.prototype.setTitle = function(title) {
      this.eTitle.innerText = title;
      return this;
    };
    AgGroupComponent2.prototype.addCssClassToTitleBar = function(cssClass) {
      this.eTitleBar.classList.add(cssClass);
    };
    AgGroupComponent2.prototype.setEnabled = function(enabled, skipToggle) {
      this.enabled = enabled;
      this.refreshDisabledStyles();
      this.toggleGroupExpand(enabled);
      if (!skipToggle) {
        this.cbGroupEnabled.setValue(enabled);
      }
      return this;
    };
    AgGroupComponent2.prototype.isEnabled = function() {
      return this.enabled;
    };
    AgGroupComponent2.prototype.onEnableChange = function(callbackFn) {
      var _this = this;
      this.cbGroupEnabled.onValueChange(function(newSelection) {
        _this.setEnabled(newSelection, true);
        callbackFn(newSelection);
      });
      return this;
    };
    AgGroupComponent2.prototype.hideEnabledCheckbox = function(hide) {
      this.suppressEnabledCheckbox = hide;
      this.refreshChildDisplay();
      this.refreshDisabledStyles();
      return this;
    };
    AgGroupComponent2.prototype.hideOpenCloseIcons = function(hide) {
      this.suppressOpenCloseIcons = hide;
      if (hide) {
        this.toggleGroupExpand(true);
      }
      return this;
    };
    AgGroupComponent2.prototype.refreshDisabledStyles = function() {
      this.addOrRemoveCssClass("ag-disabled", !this.enabled);
      if (this.suppressEnabledCheckbox && !this.enabled) {
        this.eTitleBar.classList.add("ag-disabled-group-title-bar");
        this.eTitleBar.removeAttribute("tabindex");
      } else {
        this.eTitleBar.classList.remove("ag-disabled-group-title-bar");
        this.eTitleBar.setAttribute("tabindex", "0");
      }
      this.eContainer.classList.toggle("ag-disabled-group-container", !this.enabled);
    };
    AgGroupComponent2.EVENT_EXPANDED = "expanded";
    AgGroupComponent2.EVENT_COLLAPSED = "collapsed";
    __decorate108([
      RefSelector("eTitleBar")
    ], AgGroupComponent2.prototype, "eTitleBar", void 0);
    __decorate108([
      RefSelector("eGroupOpenedIcon")
    ], AgGroupComponent2.prototype, "eGroupOpenedIcon", void 0);
    __decorate108([
      RefSelector("eGroupClosedIcon")
    ], AgGroupComponent2.prototype, "eGroupClosedIcon", void 0);
    __decorate108([
      RefSelector("eToolbar")
    ], AgGroupComponent2.prototype, "eToolbar", void 0);
    __decorate108([
      RefSelector("cbGroupEnabled")
    ], AgGroupComponent2.prototype, "cbGroupEnabled", void 0);
    __decorate108([
      RefSelector("eTitle")
    ], AgGroupComponent2.prototype, "eTitle", void 0);
    __decorate108([
      RefSelector("eContainer")
    ], AgGroupComponent2.prototype, "eContainer", void 0);
    __decorate108([
      PostConstruct
    ], AgGroupComponent2.prototype, "postConstruct", null);
    return AgGroupComponent2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/tabGuardCtrl.js
var __extends125 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate109 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TabGuardCtrl = (
  /** @class */
  function(_super) {
    __extends125(TabGuardCtrl2, _super);
    function TabGuardCtrl2(params) {
      var _this = _super.call(this) || this;
      _this.skipTabGuardFocus = false;
      var comp = params.comp, eTopGuard = params.eTopGuard, eBottomGuard = params.eBottomGuard, focusInnerElement = params.focusInnerElement, onFocusIn = params.onFocusIn, onFocusOut = params.onFocusOut, shouldStopEventPropagation = params.shouldStopEventPropagation, onTabKeyDown = params.onTabKeyDown, handleKeyDown = params.handleKeyDown, eFocusableElement = params.eFocusableElement;
      _this.comp = comp;
      _this.eTopGuard = eTopGuard;
      _this.eBottomGuard = eBottomGuard;
      _this.providedFocusInnerElement = focusInnerElement;
      _this.eFocusableElement = eFocusableElement;
      _this.providedFocusIn = onFocusIn;
      _this.providedFocusOut = onFocusOut;
      _this.providedShouldStopEventPropagation = shouldStopEventPropagation;
      _this.providedOnTabKeyDown = onTabKeyDown;
      _this.providedHandleKeyDown = handleKeyDown;
      return _this;
    }
    TabGuardCtrl2.prototype.postConstruct = function() {
      var _this = this;
      this.createManagedBean(new ManagedFocusFeature(this.eFocusableElement, {
        shouldStopEventPropagation: function() {
          return _this.shouldStopEventPropagation();
        },
        onTabKeyDown: function(e2) {
          return _this.onTabKeyDown(e2);
        },
        handleKeyDown: function(e2) {
          return _this.handleKeyDown(e2);
        },
        onFocusIn: function(e2) {
          return _this.onFocusIn(e2);
        },
        onFocusOut: function(e2) {
          return _this.onFocusOut(e2);
        }
      }));
      this.activateTabGuards();
      [this.eTopGuard, this.eBottomGuard].forEach(function(guard) {
        return _this.addManagedListener(guard, "focus", _this.onFocus.bind(_this));
      });
    };
    TabGuardCtrl2.prototype.handleKeyDown = function(e2) {
      if (this.providedHandleKeyDown) {
        this.providedHandleKeyDown(e2);
      }
    };
    TabGuardCtrl2.prototype.tabGuardsAreActive = function() {
      return !!this.eTopGuard && this.eTopGuard.hasAttribute("tabIndex");
    };
    TabGuardCtrl2.prototype.shouldStopEventPropagation = function() {
      if (this.providedShouldStopEventPropagation) {
        return this.providedShouldStopEventPropagation();
      }
      return false;
    };
    TabGuardCtrl2.prototype.activateTabGuards = function() {
      this.comp.setTabIndex(this.getGridTabIndex());
    };
    TabGuardCtrl2.prototype.deactivateTabGuards = function() {
      this.comp.setTabIndex();
    };
    TabGuardCtrl2.prototype.onFocus = function(e2) {
      if (this.skipTabGuardFocus) {
        this.skipTabGuardFocus = false;
        return;
      }
      var fromBottom = e2.target === this.eBottomGuard;
      if (this.providedFocusInnerElement) {
        this.providedFocusInnerElement(fromBottom);
      } else {
        this.focusInnerElement(fromBottom);
      }
    };
    TabGuardCtrl2.prototype.onFocusIn = function(e2) {
      if (this.providedFocusIn && this.providedFocusIn(e2)) {
        return;
      }
      this.deactivateTabGuards();
    };
    TabGuardCtrl2.prototype.onFocusOut = function(e2) {
      if (this.providedFocusOut && this.providedFocusOut(e2)) {
        return;
      }
      if (!this.eFocusableElement.contains(e2.relatedTarget)) {
        this.activateTabGuards();
      }
    };
    TabGuardCtrl2.prototype.onTabKeyDown = function(e2) {
      var _this = this;
      if (this.providedOnTabKeyDown) {
        this.providedOnTabKeyDown(e2);
        return;
      }
      if (e2.defaultPrevented) {
        return;
      }
      var tabGuardsAreActive = this.tabGuardsAreActive();
      if (tabGuardsAreActive) {
        this.deactivateTabGuards();
      }
      var nextRoot = this.getNextFocusableElement(e2.shiftKey);
      if (tabGuardsAreActive) {
        setTimeout(function() {
          return _this.activateTabGuards();
        }, 0);
      }
      if (!nextRoot) {
        return;
      }
      nextRoot.focus();
      e2.preventDefault();
    };
    TabGuardCtrl2.prototype.getGridTabIndex = function() {
      return (this.gridOptionsService.getNum("tabIndex") || 0).toString();
    };
    TabGuardCtrl2.prototype.focusInnerElement = function(fromBottom) {
      if (fromBottom === void 0) {
        fromBottom = false;
      }
      var focusable = this.focusService.findFocusableElements(this.eFocusableElement);
      if (this.tabGuardsAreActive()) {
        focusable.splice(0, 1);
        focusable.splice(focusable.length - 1, 1);
      }
      if (!focusable.length) {
        return;
      }
      focusable[fromBottom ? focusable.length - 1 : 0].focus();
    };
    TabGuardCtrl2.prototype.getNextFocusableElement = function(backwards) {
      return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);
    };
    TabGuardCtrl2.prototype.forceFocusOutOfContainer = function(up) {
      if (up === void 0) {
        up = false;
      }
      var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;
      this.activateTabGuards();
      this.skipTabGuardFocus = true;
      tabGuardToFocus.focus();
    };
    __decorate109([
      Autowired("focusService")
    ], TabGuardCtrl2.prototype, "focusService", void 0);
    __decorate109([
      PostConstruct
    ], TabGuardCtrl2.prototype, "postConstruct", null);
    return TabGuardCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/tabGuardComp.js
var __extends126 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __read17 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread13 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read17(arguments[i2]));
  return ar;
};
var TabGuardComp = (
  /** @class */
  function(_super) {
    __extends126(TabGuardComp2, _super);
    function TabGuardComp2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    TabGuardComp2.prototype.initialiseTabGuard = function(params) {
      this.eTopGuard = this.createTabGuard("top");
      this.eBottomGuard = this.createTabGuard("bottom");
      this.eFocusableElement = this.getFocusableElement();
      var tabGuards = [this.eTopGuard, this.eBottomGuard];
      var compProxy = {
        setTabIndex: function(tabIndex) {
          tabGuards.forEach(function(tabGuard) {
            return tabIndex != null ? tabGuard.setAttribute("tabIndex", tabIndex) : tabGuard.removeAttribute("tabIndex");
          });
        }
      };
      this.addTabGuards(this.eTopGuard, this.eBottomGuard);
      this.tabGuardCtrl = this.createManagedBean(new TabGuardCtrl({
        comp: compProxy,
        eTopGuard: this.eTopGuard,
        eBottomGuard: this.eBottomGuard,
        eFocusableElement: this.eFocusableElement,
        onFocusIn: params.onFocusIn,
        onFocusOut: params.onFocusOut,
        focusInnerElement: params.focusInnerElement,
        handleKeyDown: params.handleKeyDown,
        onTabKeyDown: params.onTabKeyDown,
        shouldStopEventPropagation: params.shouldStopEventPropagation
      }));
    };
    TabGuardComp2.prototype.createTabGuard = function(side) {
      var tabGuard = document.createElement("div");
      tabGuard.classList.add("ag-tab-guard", "ag-tab-guard-" + side);
      setAriaRole(tabGuard, "presentation");
      return tabGuard;
    };
    TabGuardComp2.prototype.addTabGuards = function(topTabGuard, bottomTabGuard) {
      this.eFocusableElement.insertAdjacentElement("afterbegin", topTabGuard);
      this.eFocusableElement.insertAdjacentElement("beforeend", bottomTabGuard);
    };
    TabGuardComp2.prototype.removeAllChildrenExceptTabGuards = function() {
      var tabGuards = [this.eTopGuard, this.eBottomGuard];
      clearElement(this.getFocusableElement());
      this.addTabGuards.apply(this, __spread13(tabGuards));
    };
    TabGuardComp2.prototype.forceFocusOutOfContainer = function(up) {
      if (up === void 0) {
        up = false;
      }
      this.tabGuardCtrl.forceFocusOutOfContainer(up);
    };
    TabGuardComp2.prototype.appendChild = function(newChild, container) {
      if (!isNodeOrElement(newChild)) {
        newChild = newChild.getGui();
      }
      var bottomTabGuard = this.eBottomGuard;
      if (bottomTabGuard) {
        bottomTabGuard.insertAdjacentElement("beforebegin", newChild);
      } else {
        _super.prototype.appendChild.call(this, newChild, container);
      }
    };
    return TabGuardComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agMenuList.js
var __extends127 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign17 = function() {
  __assign17 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign17.apply(this, arguments);
};
var __decorate110 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgMenuList = (
  /** @class */
  function(_super) {
    __extends127(AgMenuList2, _super);
    function AgMenuList2(level) {
      if (level === void 0) {
        level = 1;
      }
      var _this = _super.call(
        this,
        /* html */
        '<div class="ag-menu-list" role="tree"></div>'
      ) || this;
      _this.level = level;
      _this.menuItems = [];
      return _this;
    }
    AgMenuList2.prototype.postConstruct = function() {
      var _this = this;
      this.initialiseTabGuard({
        onTabKeyDown: function(e2) {
          return _this.onTabKeyDown(e2);
        },
        handleKeyDown: function(e2) {
          return _this.handleKeyDown(e2);
        }
      });
    };
    AgMenuList2.prototype.onTabKeyDown = function(e2) {
      var parent2 = this.getParentComponent();
      var parentGui = parent2 && parent2.getGui();
      var isManaged = parentGui && parentGui.classList.contains("ag-focus-managed");
      if (!isManaged) {
        e2.preventDefault();
      }
      if (e2.shiftKey) {
        this.closeIfIsChild(e2);
      }
    };
    AgMenuList2.prototype.handleKeyDown = function(e2) {
      switch (e2.key) {
        case KeyCode.UP:
        case KeyCode.RIGHT:
        case KeyCode.DOWN:
        case KeyCode.LEFT:
          e2.preventDefault();
          this.handleNavKey(e2.key);
          break;
        case KeyCode.ESCAPE:
          var topMenu = this.findTopMenu();
          if (topMenu) {
            this.focusService.focusInto(topMenu.getGui());
          }
          break;
      }
    };
    AgMenuList2.prototype.clearActiveItem = function() {
      if (this.activeMenuItem) {
        this.activeMenuItem.deactivate();
        this.activeMenuItem = null;
      }
    };
    AgMenuList2.prototype.addMenuItems = function(menuItems) {
      var _this = this;
      if (menuItems == null) {
        return;
      }
      menuItems.forEach(function(menuItemOrString) {
        if (menuItemOrString === "separator") {
          _this.addSeparator();
        } else if (typeof menuItemOrString === "string") {
          console.warn("AG Grid: unrecognised menu item " + menuItemOrString);
        } else {
          _this.addItem(menuItemOrString);
        }
      });
    };
    AgMenuList2.prototype.addItem = function(menuItemDef) {
      var _this = this;
      var menuItem = this.createManagedBean(new AgMenuItemComponent(__assign17(__assign17({}, menuItemDef), { isAnotherSubMenuOpen: function() {
        return _this.menuItems.some(function(m2) {
          return m2.isSubMenuOpen();
        });
      } })));
      menuItem.setParentComponent(this);
      setAriaLevel(menuItem.getGui(), this.level);
      this.menuItems.push(menuItem);
      this.appendChild(menuItem.getGui());
      this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function(event) {
        _this.dispatchEvent(event);
      });
      this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function(event) {
        if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {
          _this.activeMenuItem.deactivate();
        }
        _this.activeMenuItem = event.menuItem;
      });
    };
    AgMenuList2.prototype.activateFirstItem = function() {
      var item = this.menuItems.filter(function(currentItem) {
        return !currentItem.isDisabled();
      })[0];
      if (!item) {
        return;
      }
      item.activate();
    };
    AgMenuList2.prototype.addSeparator = function() {
      var separatorHtml = (
        /* html */
        '\n            <div class="ag-menu-separator" aria-hidden="true">\n                <div class="ag-menu-separator-part"></div>\n                <div class="ag-menu-separator-part"></div>\n                <div class="ag-menu-separator-part"></div>\n                <div class="ag-menu-separator-part"></div>\n            </div>'
      );
      this.appendChild(loadTemplate(separatorHtml));
    };
    AgMenuList2.prototype.findTopMenu = function() {
      var parent2 = this.getParentComponent();
      if (!parent2 && this instanceof AgMenuList2) {
        return this;
      }
      while (true) {
        var nextParent = parent2 && parent2.getParentComponent && parent2.getParentComponent();
        if (!nextParent || !(nextParent instanceof AgMenuList2 || nextParent instanceof AgMenuItemComponent)) {
          break;
        }
        parent2 = nextParent;
      }
      return parent2 instanceof AgMenuList2 ? parent2 : void 0;
    };
    AgMenuList2.prototype.handleNavKey = function(key) {
      switch (key) {
        case KeyCode.UP:
        case KeyCode.DOWN:
          var nextItem = this.findNextItem(key === KeyCode.UP);
          if (nextItem && nextItem !== this.activeMenuItem) {
            nextItem.activate();
          }
          return;
      }
      var left = this.gridOptionsService.is("enableRtl") ? KeyCode.RIGHT : KeyCode.LEFT;
      if (key === left) {
        this.closeIfIsChild();
      } else {
        this.openChild();
      }
    };
    AgMenuList2.prototype.closeIfIsChild = function(e2) {
      var parentItem = this.getParentComponent();
      if (parentItem && parentItem instanceof AgMenuItemComponent) {
        if (e2) {
          e2.preventDefault();
        }
        parentItem.closeSubMenu();
        parentItem.getGui().focus();
      }
    };
    AgMenuList2.prototype.openChild = function() {
      if (this.activeMenuItem) {
        this.activeMenuItem.openSubMenu(true);
      }
    };
    AgMenuList2.prototype.findNextItem = function(up) {
      var items = this.menuItems.filter(function(item2) {
        return !item2.isDisabled();
      });
      if (!items.length) {
        return;
      }
      if (!this.activeMenuItem) {
        return up ? last(items) : items[0];
      }
      if (up) {
        items.reverse();
      }
      var nextItem;
      var foundCurrent = false;
      for (var i2 = 0; i2 < items.length; i2++) {
        var item = items[i2];
        if (!foundCurrent) {
          if (item === this.activeMenuItem) {
            foundCurrent = true;
          }
          continue;
        }
        nextItem = item;
        break;
      }
      return nextItem || this.activeMenuItem;
    };
    AgMenuList2.prototype.destroy = function() {
      this.clearActiveItem();
      _super.prototype.destroy.call(this);
    };
    __decorate110([
      Autowired("focusService")
    ], AgMenuList2.prototype, "focusService", void 0);
    __decorate110([
      PostConstruct
    ], AgMenuList2.prototype, "postConstruct", null);
    return AgMenuList2;
  }(TabGuardComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agMenuPanel.js
var __extends128 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate111 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgMenuPanel = (
  /** @class */
  function(_super) {
    __extends128(AgMenuPanel2, _super);
    function AgMenuPanel2(wrappedComponent) {
      var _this = _super.call(this) || this;
      _this.wrappedComponent = wrappedComponent;
      _this.setTemplateFromElement(wrappedComponent.getGui());
      return _this;
    }
    AgMenuPanel2.prototype.postConstruct = function() {
      var _this = this;
      this.initialiseTabGuard({
        onTabKeyDown: function(e2) {
          return _this.onTabKeyDown(e2);
        },
        handleKeyDown: function(e2) {
          return _this.handleKeyDown(e2);
        }
      });
    };
    AgMenuPanel2.prototype.handleKeyDown = function(e2) {
      if (e2.key === KeyCode.ESCAPE) {
        this.closePanel();
      }
    };
    AgMenuPanel2.prototype.onTabKeyDown = function(e2) {
      if (e2.defaultPrevented) {
        return;
      }
      this.closePanel();
      e2.preventDefault();
    };
    AgMenuPanel2.prototype.closePanel = function() {
      var menuItem = this.parentComponent;
      menuItem.closeSubMenu();
      setTimeout(function() {
        return menuItem.getGui().focus();
      }, 0);
    };
    __decorate111([
      PostConstruct
    ], AgMenuPanel2.prototype, "postConstruct", null);
    return AgMenuPanel2;
  }(TabGuardComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agMenuItemComponent.js
var __extends129 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate112 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgMenuItemComponent = (
  /** @class */
  function(_super) {
    __extends129(AgMenuItemComponent2, _super);
    function AgMenuItemComponent2(params) {
      var _this = _super.call(this) || this;
      _this.params = params;
      _this.isActive = false;
      _this.subMenuIsOpen = false;
      _this.setTemplate(
        /* html */
        '<div class="' + _this.getClassName() + '" tabindex="-1" role="treeitem"></div>'
      );
      return _this;
    }
    AgMenuItemComponent2.prototype.init = function() {
      var _this = this;
      this.addIcon();
      this.addName();
      this.addShortcut();
      this.addSubMenu();
      this.addTooltip();
      var eGui = this.getGui();
      if (this.params.disabled) {
        this.addCssClass(this.getClassName("disabled"));
        setAriaDisabled(eGui, true);
      } else {
        this.addGuiEventListener("click", function(e2) {
          return _this.onItemSelected(e2);
        });
        this.addGuiEventListener("keydown", function(e2) {
          if (e2.key === KeyCode.ENTER || e2.key === KeyCode.SPACE) {
            e2.preventDefault();
            _this.onItemSelected(e2);
          }
        });
        this.addGuiEventListener("mousedown", function(e2) {
          e2.stopPropagation();
          e2.preventDefault();
        });
        this.addGuiEventListener("mouseenter", function() {
          return _this.onMouseEnter();
        });
        this.addGuiEventListener("mouseleave", function() {
          return _this.onMouseLeave();
        });
      }
      if (this.params.cssClasses) {
        this.params.cssClasses.forEach(function(it2) {
          return _this.addCssClass(it2);
        });
      }
    };
    AgMenuItemComponent2.prototype.isDisabled = function() {
      return !!this.params.disabled;
    };
    AgMenuItemComponent2.prototype.openSubMenu = function(activateFirstItem) {
      var _this = this;
      if (activateFirstItem === void 0) {
        activateFirstItem = false;
      }
      this.closeSubMenu();
      if (!this.params.subMenu) {
        return;
      }
      var ePopup = loadTemplate(
        /* html */
        '<div class="ag-menu" role="presentation"></div>'
      );
      var destroySubMenu;
      if (this.params.subMenu instanceof Array) {
        var currentLevel = getAriaLevel(this.getGui());
        var nextLevel = isNaN(currentLevel) ? 1 : currentLevel + 1;
        var childMenu_1 = this.createBean(new AgMenuList(nextLevel));
        childMenu_1.setParentComponent(this);
        childMenu_1.addMenuItems(this.params.subMenu);
        ePopup.appendChild(childMenu_1.getGui());
        this.addManagedListener(childMenu_1, AgMenuItemComponent2.EVENT_MENU_ITEM_SELECTED, function(e2) {
          return _this.dispatchEvent(e2);
        });
        childMenu_1.addGuiEventListener("mouseenter", function() {
          return _this.cancelDeactivate();
        });
        destroySubMenu = function() {
          return _this.destroyBean(childMenu_1);
        };
        if (activateFirstItem) {
          setTimeout(function() {
            return childMenu_1.activateFirstItem();
          }, 0);
        }
      } else {
        var subMenu_1 = this.params.subMenu;
        var menuPanel = this.createBean(new AgMenuPanel(subMenu_1));
        menuPanel.setParentComponent(this);
        var subMenuGui_1 = menuPanel.getGui();
        var mouseEvent_1 = "mouseenter";
        var mouseEnterListener_1 = function() {
          return _this.cancelDeactivate();
        };
        subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);
        destroySubMenu = function() {
          return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1);
        };
        ePopup.appendChild(subMenuGui_1);
        if (subMenu_1.afterGuiAttached) {
          setTimeout(function() {
            return subMenu_1.afterGuiAttached();
          }, 0);
        }
      }
      var eGui = this.getGui();
      var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup });
      var translate = this.localeService.getLocaleTextFunc();
      var addPopupRes = this.popupService.addPopup({
        modal: true,
        eChild: ePopup,
        positionCallback,
        anchorToElement: eGui,
        ariaLabel: translate("ariaLabelSubMenu", "SubMenu")
      });
      this.subMenuIsOpen = true;
      setAriaExpanded(eGui, true);
      this.hideSubMenu = function() {
        if (addPopupRes) {
          addPopupRes.hideFunc();
        }
        _this.subMenuIsOpen = false;
        setAriaExpanded(eGui, false);
        destroySubMenu();
      };
    };
    AgMenuItemComponent2.prototype.closeSubMenu = function() {
      if (!this.hideSubMenu) {
        return;
      }
      this.hideSubMenu();
      this.hideSubMenu = null;
      setAriaExpanded(this.getGui(), false);
    };
    AgMenuItemComponent2.prototype.isSubMenuOpen = function() {
      return this.subMenuIsOpen;
    };
    AgMenuItemComponent2.prototype.activate = function(openSubMenu) {
      var _this = this;
      this.cancelActivate();
      if (this.params.disabled) {
        return;
      }
      this.isActive = true;
      this.addCssClass(this.getClassName("active"));
      this.getGui().focus();
      if (openSubMenu && this.params.subMenu) {
        window.setTimeout(function() {
          if (_this.isAlive() && _this.isActive) {
            _this.openSubMenu();
          }
        }, 300);
      }
      this.onItemActivated();
    };
    AgMenuItemComponent2.prototype.deactivate = function() {
      this.cancelDeactivate();
      this.removeCssClass(this.getClassName("active"));
      this.isActive = false;
      if (this.subMenuIsOpen) {
        this.hideSubMenu();
      }
    };
    AgMenuItemComponent2.prototype.addIcon = function() {
      if (!this.params.checked && !this.params.icon && this.params.isCompact) {
        return;
      }
      var icon = loadTemplate(
        /* html */
        '<span ref="eIcon" class="' + this.getClassName("part") + " " + this.getClassName("icon") + '" role="presentation"></span>'
      );
      if (this.params.checked) {
        icon.appendChild(createIconNoSpan("check", this.gridOptionsService));
      } else if (this.params.icon) {
        if (isNodeOrElement(this.params.icon)) {
          icon.appendChild(this.params.icon);
        } else if (typeof this.params.icon === "string") {
          icon.innerHTML = this.params.icon;
        } else {
          console.warn("AG Grid: menu item icon must be DOM node or string");
        }
      }
      this.getGui().appendChild(icon);
    };
    AgMenuItemComponent2.prototype.addName = function() {
      if (!this.params.name && this.params.isCompact) {
        return;
      }
      var name = loadTemplate(
        /* html */
        '<span ref="eName" class="' + this.getClassName("part") + " " + this.getClassName("text") + '">' + (this.params.name || "") + "</span>"
      );
      this.getGui().appendChild(name);
    };
    AgMenuItemComponent2.prototype.addTooltip = function() {
      if (!this.params.tooltip) {
        return;
      }
      this.tooltip = this.params.tooltip;
      if (this.gridOptionsService.is("enableBrowserTooltips")) {
        this.getGui().setAttribute("title", this.tooltip);
      } else {
        this.createManagedBean(new CustomTooltipFeature(this));
      }
    };
    AgMenuItemComponent2.prototype.getTooltipParams = function() {
      return {
        location: "menu",
        value: this.tooltip
      };
    };
    AgMenuItemComponent2.prototype.addShortcut = function() {
      if (!this.params.shortcut && this.params.isCompact) {
        return;
      }
      var shortcut = loadTemplate(
        /* html */
        '<span ref="eShortcut" class="' + this.getClassName("part") + " " + this.getClassName("shortcut") + '">' + (this.params.shortcut || "") + "</span>"
      );
      this.getGui().appendChild(shortcut);
    };
    AgMenuItemComponent2.prototype.addSubMenu = function() {
      if (!this.params.subMenu && this.params.isCompact) {
        return;
      }
      var pointer = loadTemplate(
        /* html */
        '<span ref="ePopupPointer" class="' + this.getClassName("part") + " " + this.getClassName("popup-pointer") + '"></span>'
      );
      var eGui = this.getGui();
      if (this.params.subMenu) {
        var iconName = this.gridOptionsService.is("enableRtl") ? "smallLeft" : "smallRight";
        setAriaExpanded(eGui, false);
        pointer.appendChild(createIconNoSpan(iconName, this.gridOptionsService));
      }
      eGui.appendChild(pointer);
    };
    AgMenuItemComponent2.prototype.onItemSelected = function(event) {
      if (this.params.action) {
        this.params.action();
      } else {
        this.openSubMenu(event && event.type === "keydown");
      }
      if (this.params.subMenu && !this.params.action) {
        return;
      }
      var e2 = {
        type: AgMenuItemComponent2.EVENT_MENU_ITEM_SELECTED,
        action: this.params.action,
        checked: this.params.checked,
        cssClasses: this.params.cssClasses,
        disabled: this.params.disabled,
        icon: this.params.icon,
        name: this.params.name,
        shortcut: this.params.shortcut,
        subMenu: this.params.subMenu,
        tooltip: this.params.tooltip,
        event
      };
      this.dispatchEvent(e2);
    };
    AgMenuItemComponent2.prototype.onItemActivated = function() {
      var event = {
        type: AgMenuItemComponent2.EVENT_MENU_ITEM_ACTIVATED,
        menuItem: this
      };
      this.dispatchEvent(event);
    };
    AgMenuItemComponent2.prototype.cancelActivate = function() {
      if (this.activateTimeoutId) {
        window.clearTimeout(this.activateTimeoutId);
        this.activateTimeoutId = 0;
      }
    };
    AgMenuItemComponent2.prototype.cancelDeactivate = function() {
      if (this.deactivateTimeoutId) {
        window.clearTimeout(this.deactivateTimeoutId);
        this.deactivateTimeoutId = 0;
      }
    };
    AgMenuItemComponent2.prototype.onMouseEnter = function() {
      var _this = this;
      this.cancelDeactivate();
      if (this.params.isAnotherSubMenuOpen()) {
        this.activateTimeoutId = window.setTimeout(function() {
          return _this.activate(true);
        }, AgMenuItemComponent2.ACTIVATION_DELAY);
      } else {
        this.activate(true);
      }
    };
    AgMenuItemComponent2.prototype.onMouseLeave = function() {
      var _this = this;
      this.cancelActivate();
      if (this.isSubMenuOpen()) {
        this.deactivateTimeoutId = window.setTimeout(function() {
          return _this.deactivate();
        }, AgMenuItemComponent2.ACTIVATION_DELAY);
      } else {
        this.deactivate();
      }
    };
    AgMenuItemComponent2.prototype.getClassName = function(suffix) {
      var prefix = this.params.isCompact ? "ag-compact-menu-option" : "ag-menu-option";
      return suffix ? prefix + "-" + suffix : prefix;
    };
    AgMenuItemComponent2.EVENT_MENU_ITEM_SELECTED = "menuItemSelected";
    AgMenuItemComponent2.EVENT_MENU_ITEM_ACTIVATED = "menuItemActivated";
    AgMenuItemComponent2.ACTIVATION_DELAY = 80;
    __decorate112([
      Autowired("popupService")
    ], AgMenuItemComponent2.prototype, "popupService", void 0);
    __decorate112([
      PostConstruct
    ], AgMenuItemComponent2.prototype, "init", null);
    return AgMenuItemComponent2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agPanel.js
var __extends130 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate113 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgPanel = (
  /** @class */
  function(_super) {
    __extends130(AgPanel2, _super);
    function AgPanel2(config) {
      var _this = _super.call(this, AgPanel2.getTemplate(config)) || this;
      _this.closable = true;
      _this.config = config;
      return _this;
    }
    AgPanel2.getTemplate = function(config) {
      var cssIdentifier = config && config.cssIdentifier || "default";
      return (
        /* html */
        '<div class="ag-panel ag-' + cssIdentifier + '-panel" tabindex="-1">\n            <div ref="eTitleBar" class="ag-panel-title-bar ag-' + cssIdentifier + '-panel-title-bar ag-unselectable">\n                <span ref="eTitle" class="ag-panel-title-bar-title ag-' + cssIdentifier + '-panel-title-bar-title"></span>\n                <div ref="eTitleBarButtons" class="ag-panel-title-bar-buttons ag-' + cssIdentifier + '-panel-title-bar-buttons"></div>\n            </div>\n            <div ref="eContentWrapper" class="ag-panel-content-wrapper ag-' + cssIdentifier + '-panel-content-wrapper"></div>\n        </div>'
      );
    };
    AgPanel2.prototype.postConstruct = function() {
      var _this = this;
      var _a47 = this.config, component = _a47.component, closable = _a47.closable, hideTitleBar = _a47.hideTitleBar, title = _a47.title, _b = _a47.minWidth, minWidth = _b === void 0 ? 250 : _b, width = _a47.width, _c = _a47.minHeight, minHeight = _c === void 0 ? 250 : _c, height = _a47.height, centered = _a47.centered, popup = _a47.popup, x2 = _a47.x, y2 = _a47.y;
      this.positionableFeature = new PositionableFeature(this.getGui(), {
        minWidth,
        width,
        minHeight,
        height,
        centered,
        x: x2,
        y: y2,
        popup,
        calculateTopBuffer: function() {
          return _this.positionableFeature.getHeight() - _this.getBodyHeight();
        }
      });
      this.createManagedBean(this.positionableFeature);
      var eGui = this.getGui();
      if (component) {
        this.setBodyComponent(component);
      }
      if (!hideTitleBar) {
        if (title) {
          this.setTitle(title);
        }
        this.setClosable(closable != null ? closable : this.closable);
      } else {
        setDisplayed(this.eTitleBar, false);
      }
      this.addManagedListener(this.eTitleBar, "mousedown", function(e2) {
        var eDocument = _this.gridOptionsService.getDocument();
        if (eGui.contains(e2.relatedTarget) || eGui.contains(eDocument.activeElement) || _this.eTitleBarButtons.contains(e2.target)) {
          e2.preventDefault();
          return;
        }
        var focusEl = _this.eContentWrapper.querySelector("button, [href], input, select, textarea, [tabindex]");
        if (focusEl) {
          focusEl.focus();
        }
      });
      if (popup && this.positionableFeature.isPositioned()) {
        return;
      }
      if (this.renderComponent) {
        this.renderComponent();
      }
      this.positionableFeature.initialisePosition();
      this.eContentWrapper.style.height = "0";
    };
    AgPanel2.prototype.renderComponent = function() {
      var _this = this;
      var eGui = this.getGui();
      eGui.focus();
      this.close = function() {
        eGui.parentElement.removeChild(eGui);
        _this.destroy();
      };
    };
    AgPanel2.prototype.getHeight = function() {
      return this.positionableFeature.getHeight();
    };
    AgPanel2.prototype.setHeight = function(height) {
      this.positionableFeature.setHeight(height);
    };
    AgPanel2.prototype.getWidth = function() {
      return this.positionableFeature.getWidth();
    };
    AgPanel2.prototype.setWidth = function(width) {
      this.positionableFeature.setWidth(width);
    };
    AgPanel2.prototype.setClosable = function(closable) {
      if (closable !== this.closable) {
        this.closable = closable;
      }
      if (closable) {
        var closeButtonComp = this.closeButtonComp = new Component2(AgPanel2.CLOSE_BTN_TEMPLATE);
        this.getContext().createBean(closeButtonComp);
        var eGui = closeButtonComp.getGui();
        var child = createIconNoSpan("close", this.gridOptionsService);
        child.classList.add("ag-panel-title-bar-button-icon");
        eGui.appendChild(child);
        this.addTitleBarButton(closeButtonComp);
        closeButtonComp.addManagedListener(eGui, "click", this.onBtClose.bind(this));
      } else if (this.closeButtonComp) {
        var eGui = this.closeButtonComp.getGui();
        eGui.parentElement.removeChild(eGui);
        this.closeButtonComp = this.destroyBean(this.closeButtonComp);
      }
    };
    AgPanel2.prototype.setBodyComponent = function(bodyComponent) {
      bodyComponent.setParentComponent(this);
      this.eContentWrapper.appendChild(bodyComponent.getGui());
    };
    AgPanel2.prototype.addTitleBarButton = function(button, position) {
      var eTitleBarButtons = this.eTitleBarButtons;
      var buttons = eTitleBarButtons.children;
      var len = buttons.length;
      if (position == null) {
        position = len;
      }
      position = Math.max(0, Math.min(position, len));
      button.addCssClass("ag-panel-title-bar-button");
      var eGui = button.getGui();
      if (position === 0) {
        eTitleBarButtons.insertAdjacentElement("afterbegin", eGui);
      } else if (position === len) {
        eTitleBarButtons.insertAdjacentElement("beforeend", eGui);
      } else {
        buttons[position - 1].insertAdjacentElement("afterend", eGui);
      }
      button.setParentComponent(this);
    };
    AgPanel2.prototype.getBodyHeight = function() {
      return getInnerHeight(this.eContentWrapper);
    };
    AgPanel2.prototype.getBodyWidth = function() {
      return getInnerWidth(this.eContentWrapper);
    };
    AgPanel2.prototype.setTitle = function(title) {
      this.eTitle.innerText = title;
    };
    AgPanel2.prototype.onBtClose = function() {
      this.close();
    };
    AgPanel2.prototype.destroy = function() {
      if (this.closeButtonComp) {
        this.closeButtonComp = this.destroyBean(this.closeButtonComp);
      }
      var eGui = this.getGui();
      if (eGui && eGui.offsetParent) {
        this.close();
      }
      _super.prototype.destroy.call(this);
    };
    AgPanel2.CLOSE_BTN_TEMPLATE = '<div class="ag-button"></div>';
    __decorate113([
      RefSelector("eContentWrapper")
    ], AgPanel2.prototype, "eContentWrapper", void 0);
    __decorate113([
      RefSelector("eTitleBar")
    ], AgPanel2.prototype, "eTitleBar", void 0);
    __decorate113([
      RefSelector("eTitleBarButtons")
    ], AgPanel2.prototype, "eTitleBarButtons", void 0);
    __decorate113([
      RefSelector("eTitle")
    ], AgPanel2.prototype, "eTitle", void 0);
    __decorate113([
      PostConstruct
    ], AgPanel2.prototype, "postConstruct", null);
    return AgPanel2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agDialog.js
var __extends131 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign18 = function() {
  __assign18 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign18.apply(this, arguments);
};
var __decorate114 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgDialog = (
  /** @class */
  function(_super) {
    __extends131(AgDialog2, _super);
    function AgDialog2(config) {
      var _this = _super.call(this, __assign18(__assign18({}, config), { popup: true })) || this;
      _this.isMaximizable = false;
      _this.isMaximized = false;
      _this.maximizeListeners = [];
      _this.resizeListenerDestroy = null;
      _this.lastPosition = {
        x: 0,
        y: 0,
        width: 0,
        height: 0
      };
      return _this;
    }
    AgDialog2.prototype.postConstruct = function() {
      var _this = this;
      var eGui = this.getGui();
      var _a47 = this.config, movable = _a47.movable, resizable = _a47.resizable, maximizable = _a47.maximizable;
      this.addCssClass("ag-dialog");
      _super.prototype.postConstruct.call(this);
      this.addManagedListener(eGui, "focusin", function(e2) {
        if (eGui.contains(e2.relatedTarget)) {
          return;
        }
        _this.popupService.bringPopupToFront(eGui);
      });
      if (movable) {
        this.setMovable(movable);
      }
      if (maximizable) {
        this.setMaximizable(maximizable);
      }
      if (resizable) {
        this.setResizable(resizable);
      }
    };
    AgDialog2.prototype.renderComponent = function() {
      var eGui = this.getGui();
      var _a47 = this.config, alwaysOnTop = _a47.alwaysOnTop, modal = _a47.modal, title = _a47.title;
      var translate = this.localeService.getLocaleTextFunc();
      var addPopupRes = this.popupService.addPopup({
        modal,
        eChild: eGui,
        closeOnEsc: true,
        closedCallback: this.destroy.bind(this),
        alwaysOnTop,
        ariaLabel: title || translate("ariaLabelDialog", "Dialog")
      });
      if (addPopupRes) {
        this.close = addPopupRes.hideFunc;
      }
    };
    AgDialog2.prototype.toggleMaximize = function() {
      var position = this.positionableFeature.getPosition();
      if (this.isMaximized) {
        var _a47 = this.lastPosition, x2 = _a47.x, y2 = _a47.y, width = _a47.width, height = _a47.height;
        this.setWidth(width);
        this.setHeight(height);
        this.positionableFeature.offsetElement(x2, y2);
      } else {
        this.lastPosition.width = this.getWidth();
        this.lastPosition.height = this.getHeight();
        this.lastPosition.x = position.x;
        this.lastPosition.y = position.y;
        this.positionableFeature.offsetElement(0, 0);
        this.setHeight("100%");
        this.setWidth("100%");
      }
      this.isMaximized = !this.isMaximized;
      this.refreshMaximizeIcon();
    };
    AgDialog2.prototype.refreshMaximizeIcon = function() {
      setDisplayed(this.maximizeIcon, !this.isMaximized);
      setDisplayed(this.minimizeIcon, this.isMaximized);
    };
    AgDialog2.prototype.clearMaximizebleListeners = function() {
      if (this.maximizeListeners.length) {
        this.maximizeListeners.forEach(function(destroyListener) {
          return destroyListener();
        });
        this.maximizeListeners.length = 0;
      }
      if (this.resizeListenerDestroy) {
        this.resizeListenerDestroy();
        this.resizeListenerDestroy = null;
      }
    };
    AgDialog2.prototype.destroy = function() {
      this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);
      this.clearMaximizebleListeners();
      _super.prototype.destroy.call(this);
    };
    AgDialog2.prototype.setResizable = function(resizable) {
      this.positionableFeature.setResizable(resizable);
    };
    AgDialog2.prototype.setMovable = function(movable) {
      this.positionableFeature.setMovable(movable, this.eTitleBar);
    };
    AgDialog2.prototype.setMaximizable = function(maximizable) {
      var _this = this;
      if (!maximizable) {
        this.clearMaximizebleListeners();
        if (this.maximizeButtonComp) {
          this.destroyBean(this.maximizeButtonComp);
          this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = void 0;
        }
        return;
      }
      var eTitleBar = this.eTitleBar;
      if (!eTitleBar || maximizable === this.isMaximizable) {
        return;
      }
      var maximizeButtonComp = this.maximizeButtonComp = this.createBean(new Component2(
        /* html */
        '<div class="ag-dialog-button"></span>'
      ));
      var eGui = maximizeButtonComp.getGui();
      eGui.appendChild(this.maximizeIcon = createIconNoSpan("maximize", this.gridOptionsService));
      this.maximizeIcon.classList.add("ag-panel-title-bar-button-icon");
      eGui.appendChild(this.minimizeIcon = createIconNoSpan("minimize", this.gridOptionsService));
      this.minimizeIcon.classList.add("ag-panel-title-bar-button-icon");
      setDisplayed(this.minimizeIcon, false);
      maximizeButtonComp.addManagedListener(eGui, "click", this.toggleMaximize.bind(this));
      this.addTitleBarButton(maximizeButtonComp, 0);
      this.maximizeListeners.push(this.addManagedListener(eTitleBar, "dblclick", this.toggleMaximize.bind(this)));
      this.resizeListenerDestroy = this.addManagedListener(this, "resize", function() {
        _this.isMaximized = false;
        _this.refreshMaximizeIcon();
      });
    };
    __decorate114([
      Autowired("popupService")
    ], AgDialog2.prototype, "popupService", void 0);
    return AgDialog2;
  }(AgPanel)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/focusService.js
var __extends132 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate115 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read18 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread14 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read18(arguments[i2]));
  return ar;
};
var FocusService = (
  /** @class */
  function(_super) {
    __extends132(FocusService2, _super);
    function FocusService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    FocusService_1 = FocusService2;
    FocusService2.addKeyboardModeEvents = function(doc, controller) {
      var docControllers = FocusService_1.instancesMonitored.get(doc);
      if (docControllers && docControllers.length > 0) {
        if (docControllers.indexOf(controller) === -1) {
          docControllers.push(controller);
        }
      } else {
        FocusService_1.instancesMonitored.set(doc, [controller]);
        doc.addEventListener("keydown", FocusService_1.toggleKeyboardMode);
        doc.addEventListener("mousedown", FocusService_1.toggleKeyboardMode);
      }
    };
    FocusService2.removeKeyboardModeEvents = function(doc, controller) {
      var docControllers = FocusService_1.instancesMonitored.get(doc);
      var newControllers = [];
      if (docControllers && docControllers.length) {
        newControllers = __spread14(docControllers).filter(function(currentGridCore) {
          return currentGridCore !== controller;
        });
        FocusService_1.instancesMonitored.set(doc, newControllers);
      }
      if (newControllers.length === 0) {
        doc.removeEventListener("keydown", FocusService_1.toggleKeyboardMode);
        doc.removeEventListener("mousedown", FocusService_1.toggleKeyboardMode);
      }
    };
    FocusService2.toggleKeyboardMode = function(event) {
      var isKeyboardActive = FocusService_1.keyboardModeActive;
      var isKeyboardEvent = event.type === "keydown";
      if (isKeyboardEvent) {
        if (event.ctrlKey || event.metaKey || event.altKey) {
          return;
        }
      }
      if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {
        return;
      }
      FocusService_1.keyboardModeActive = isKeyboardEvent;
      var doc = event.target.ownerDocument;
      if (!doc) {
        return;
      }
      var controllersForDoc = FocusService_1.instancesMonitored.get(doc);
      if (controllersForDoc) {
        controllersForDoc.forEach(function(controller) {
          controller.dispatchEvent({ type: isKeyboardEvent ? Events.EVENT_KEYBOARD_FOCUS : Events.EVENT_MOUSE_FOCUS });
        });
      }
    };
    FocusService2.prototype.init = function() {
      var _this = this;
      var clearFocusedCellListener = this.clearFocusedCell.bind(this);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);
      this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);
      this.ctrlsService.whenReady(function(p2) {
        _this.gridCtrl = p2.gridCtrl;
        var doc = _this.gridOptionsService.getDocument();
        FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);
        _this.addDestroyFunc(function() {
          return _this.unregisterGridCompController(_this.gridCtrl);
        });
      });
    };
    FocusService2.prototype.unregisterGridCompController = function(gridCompController) {
      var doc = this.gridOptionsService.getDocument();
      FocusService_1.removeKeyboardModeEvents(doc, gridCompController);
    };
    FocusService2.prototype.onColumnEverythingChanged = function() {
      if (!this.focusedCellPosition) {
        return;
      }
      var col = this.focusedCellPosition.column;
      var colFromColumnModel = this.columnModel.getGridColumn(col.getId());
      if (col !== colFromColumnModel) {
        this.clearFocusedCell();
      }
    };
    FocusService2.prototype.isKeyboardMode = function() {
      return FocusService_1.keyboardModeActive;
    };
    FocusService2.prototype.getFocusCellToUseAfterRefresh = function() {
      var eDocument = this.gridOptionsService.getDocument();
      if (this.gridOptionsService.is("suppressFocusAfterRefresh") || !this.focusedCellPosition) {
        return null;
      }
      if (this.isDomDataMissingInHierarchy(eDocument.activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL)) {
        return null;
      }
      return this.focusedCellPosition;
    };
    FocusService2.prototype.getFocusHeaderToUseAfterRefresh = function() {
      var eDocument = this.gridOptionsService.getDocument();
      if (this.gridOptionsService.is("suppressFocusAfterRefresh") || !this.focusedHeaderPosition) {
        return null;
      }
      if (this.isDomDataMissingInHierarchy(eDocument.activeElement, AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL)) {
        return null;
      }
      return this.focusedHeaderPosition;
    };
    FocusService2.prototype.isDomDataMissingInHierarchy = function(eBrowserCell, key) {
      var ePointer = eBrowserCell;
      while (ePointer) {
        var data = this.gridOptionsService.getDomData(ePointer, key);
        if (data) {
          return false;
        }
        ePointer = ePointer.parentNode;
      }
      return true;
    };
    FocusService2.prototype.clearFocusedCell = function() {
      this.focusedCellPosition = null;
      this.onCellFocused(false, false);
    };
    FocusService2.prototype.getFocusedCell = function() {
      return this.focusedCellPosition;
    };
    FocusService2.prototype.setFocusedCell = function(params) {
      var column = params.column, rowIndex = params.rowIndex, rowPinned = params.rowPinned, _a47 = params.forceBrowserFocus, forceBrowserFocus = _a47 === void 0 ? false : _a47, _b = params.preventScrollOnBrowserFocus, preventScrollOnBrowserFocus = _b === void 0 ? false : _b;
      var gridColumn = this.columnModel.getGridColumn(column);
      if (!gridColumn) {
        this.focusedCellPosition = null;
        return;
      }
      this.focusedCellPosition = gridColumn ? {
        rowIndex,
        rowPinned: makeNull(rowPinned),
        column: gridColumn
      } : null;
      this.onCellFocused(forceBrowserFocus, preventScrollOnBrowserFocus);
    };
    FocusService2.prototype.isCellFocused = function(cellPosition) {
      if (this.focusedCellPosition == null) {
        return false;
      }
      return this.focusedCellPosition.column === cellPosition.column && this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);
    };
    FocusService2.prototype.isRowNodeFocused = function(rowNode) {
      return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);
    };
    FocusService2.prototype.isHeaderWrapperFocused = function(headerCtrl) {
      if (this.focusedHeaderPosition == null) {
        return false;
      }
      var column = headerCtrl.getColumnGroupChild();
      var headerRowIndex = headerCtrl.getRowIndex();
      var pinned = headerCtrl.getPinned();
      var _a47 = this.focusedHeaderPosition, focusedColumn = _a47.column, focusedHeaderRowIndex = _a47.headerRowIndex;
      return column === focusedColumn && headerRowIndex === focusedHeaderRowIndex && pinned == focusedColumn.getPinned();
    };
    FocusService2.prototype.clearFocusedHeader = function() {
      this.focusedHeaderPosition = null;
    };
    FocusService2.prototype.getFocusedHeader = function() {
      return this.focusedHeaderPosition;
    };
    FocusService2.prototype.setFocusedHeader = function(headerRowIndex, column) {
      this.focusedHeaderPosition = { headerRowIndex, column };
    };
    FocusService2.prototype.focusHeaderPosition = function(params) {
      var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;
      var headerPosition = params.headerPosition;
      if (allowUserOverride) {
        var currentPosition = this.getFocusedHeader();
        var headerRowCount = this.headerNavigationService.getHeaderRowCount();
        if (fromTab) {
          var userFunc = this.gridOptionsService.getCallback("tabToNextHeader");
          if (userFunc) {
            var params_1 = {
              backwards: direction === "Before",
              previousHeaderPosition: currentPosition,
              nextHeaderPosition: headerPosition,
              headerRowCount
            };
            headerPosition = userFunc(params_1);
          }
        } else {
          var userFunc = this.gridOptionsService.getCallback("navigateToNextHeader");
          if (userFunc && event) {
            var params_2 = {
              key: event.key,
              previousHeaderPosition: currentPosition,
              nextHeaderPosition: headerPosition,
              headerRowCount,
              event
            };
            headerPosition = userFunc(params_2);
          }
        }
      }
      if (!headerPosition) {
        return false;
      }
      if (headerPosition.headerRowIndex === -1) {
        return this.focusGridView(headerPosition.column);
      }
      this.headerNavigationService.scrollToColumn(headerPosition.column, direction);
      var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());
      var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);
      return focusSuccess;
    };
    FocusService2.prototype.focusFirstHeader = function() {
      var firstColumn = this.columnModel.getAllDisplayedColumns()[0];
      if (!firstColumn) {
        return false;
      }
      if (firstColumn.getParent()) {
        firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);
      }
      return this.focusHeaderPosition({
        headerPosition: { headerRowIndex: 0, column: firstColumn }
      });
    };
    FocusService2.prototype.focusLastHeader = function(event) {
      var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;
      var column = last(this.columnModel.getAllDisplayedColumns());
      return this.focusHeaderPosition({
        headerPosition: { headerRowIndex, column },
        event
      });
    };
    FocusService2.prototype.isAnyCellFocused = function() {
      return !!this.focusedCellPosition;
    };
    FocusService2.prototype.isRowFocused = function(rowIndex, floating) {
      if (this.focusedCellPosition == null) {
        return false;
      }
      return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === makeNull(floating);
    };
    FocusService2.prototype.findFocusableElements = function(rootNode, exclude, onlyUnmanaged) {
      if (onlyUnmanaged === void 0) {
        onlyUnmanaged = false;
      }
      var focusableString = FOCUSABLE_SELECTOR;
      var excludeString = FOCUSABLE_EXCLUDE;
      if (exclude) {
        excludeString += ", " + exclude;
      }
      if (onlyUnmanaged) {
        excludeString += ', [tabindex="-1"]';
      }
      var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));
      var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));
      if (!excludeNodes.length) {
        return nodes;
      }
      var diff = function(a2, b2) {
        return a2.filter(function(element) {
          return b2.indexOf(element) === -1;
        });
      };
      return diff(nodes, excludeNodes);
    };
    FocusService2.prototype.focusInto = function(rootNode, up, onlyUnmanaged) {
      if (up === void 0) {
        up = false;
      }
      if (onlyUnmanaged === void 0) {
        onlyUnmanaged = false;
      }
      var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);
      var toFocus = up ? last(focusableElements) : focusableElements[0];
      if (toFocus) {
        toFocus.focus();
        return true;
      }
      return false;
    };
    FocusService2.prototype.findNextFocusableElement = function(rootNode, onlyManaged, backwards) {
      if (rootNode === void 0) {
        rootNode = this.eGridDiv;
      }
      var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex="-1"])' : null);
      var eDocument = this.gridOptionsService.getDocument();
      var activeEl = eDocument.activeElement;
      var currentIndex;
      if (onlyManaged) {
        currentIndex = focusable.findIndex(function(el) {
          return el.contains(activeEl);
        });
      } else {
        currentIndex = focusable.indexOf(activeEl);
      }
      var nextIndex = currentIndex + (backwards ? -1 : 1);
      if (nextIndex < 0 || nextIndex >= focusable.length) {
        return null;
      }
      return focusable[nextIndex];
    };
    FocusService2.prototype.isFocusUnderManagedComponent = function(rootNode) {
      var eDocument = this.gridOptionsService.getDocument();
      var managedContainers = rootNode.querySelectorAll("." + ManagedFocusFeature.FOCUS_MANAGED_CLASS);
      if (!managedContainers.length) {
        return false;
      }
      for (var i2 = 0; i2 < managedContainers.length; i2++) {
        if (managedContainers[i2].contains(eDocument.activeElement)) {
          return true;
        }
      }
      return false;
    };
    FocusService2.prototype.findTabbableParent = function(node, limit) {
      if (limit === void 0) {
        limit = 5;
      }
      var counter = 0;
      while (node && getTabIndex(node) === null && ++counter <= limit) {
        node = node.parentElement;
      }
      if (getTabIndex(node) === null) {
        return null;
      }
      return node;
    };
    FocusService2.prototype.onCellFocused = function(forceBrowserFocus, preventScrollOnBrowserFocus) {
      var event = {
        type: Events.EVENT_CELL_FOCUSED,
        forceBrowserFocus,
        preventScrollOnBrowserFocus,
        rowIndex: null,
        column: null,
        floating: null,
        rowPinned: null,
        isFullWidthCell: false
      };
      if (this.focusedCellPosition) {
        var rowIndex = event.rowIndex = this.focusedCellPosition.rowIndex;
        var rowPinned = event.rowPinned = this.focusedCellPosition.rowPinned;
        event.column = this.focusedCellPosition.column;
        var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex, rowPinned });
        if (rowCtrl) {
          event.isFullWidthCell = rowCtrl.isFullWidth();
        }
      }
      this.eventService.dispatchEvent(event);
    };
    FocusService2.prototype.focusGridView = function(column, backwards) {
      if (this.gridOptionsService.is("suppressCellFocus")) {
        if (backwards) {
          return this.focusLastHeader();
        }
        return this.focusNextGridCoreContainer(false);
      }
      var nextRow = backwards ? this.rowPositionUtils.getLastRow() : this.rowPositionUtils.getFirstRow();
      if (!nextRow) {
        return false;
      }
      var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;
      var focusedHeader = this.getFocusedHeader();
      if (!column && focusedHeader) {
        column = focusedHeader.column;
      }
      if (rowIndex == null || !column) {
        return false;
      }
      this.navigationService.ensureCellVisible({ rowIndex, column, rowPinned });
      this.setFocusedCell({
        rowIndex,
        column,
        rowPinned: makeNull(rowPinned),
        forceBrowserFocus: true
      });
      if (this.rangeService) {
        var cellPosition = { rowIndex, rowPinned, column };
        this.rangeService.setRangeToCell(cellPosition);
      }
      return true;
    };
    FocusService2.prototype.focusNextGridCoreContainer = function(backwards) {
      if (this.gridCtrl.focusNextInnerContainer(backwards)) {
        return true;
      }
      if (!backwards && !this.gridCtrl.isDetailGrid()) {
        this.gridCtrl.forceFocusOutOfContainer();
      }
      return false;
    };
    var FocusService_1;
    FocusService2.AG_KEYBOARD_FOCUS = "ag-keyboard-focus";
    FocusService2.keyboardModeActive = false;
    FocusService2.instancesMonitored = /* @__PURE__ */ new Map();
    __decorate115([
      Autowired("eGridDiv")
    ], FocusService2.prototype, "eGridDiv", void 0);
    __decorate115([
      Autowired("columnModel")
    ], FocusService2.prototype, "columnModel", void 0);
    __decorate115([
      Autowired("headerNavigationService")
    ], FocusService2.prototype, "headerNavigationService", void 0);
    __decorate115([
      Autowired("rowRenderer")
    ], FocusService2.prototype, "rowRenderer", void 0);
    __decorate115([
      Autowired("rowPositionUtils")
    ], FocusService2.prototype, "rowPositionUtils", void 0);
    __decorate115([
      Optional2("rangeService")
    ], FocusService2.prototype, "rangeService", void 0);
    __decorate115([
      Autowired("navigationService")
    ], FocusService2.prototype, "navigationService", void 0);
    __decorate115([
      Autowired("ctrlsService")
    ], FocusService2.prototype, "ctrlsService", void 0);
    __decorate115([
      PostConstruct
    ], FocusService2.prototype, "init", null);
    FocusService2 = FocusService_1 = __decorate115([
      Bean("focusService")
    ], FocusService2);
    return FocusService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/popupService.js
var __extends133 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate116 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read19 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread15 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read19(arguments[i2]));
  return ar;
};
var DIRECTION;
(function(DIRECTION2) {
  DIRECTION2[DIRECTION2["vertical"] = 0] = "vertical";
  DIRECTION2[DIRECTION2["horizontal"] = 1] = "horizontal";
})(DIRECTION || (DIRECTION = {}));
var instanceIdSeq = 0;
var PopupService = (
  /** @class */
  function(_super) {
    __extends133(PopupService2, _super);
    function PopupService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.popupList = [];
      return _this;
    }
    PopupService_1 = PopupService2;
    PopupService2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        _this.gridCtrl = p2.gridCtrl;
        _this.addManagedListener(_this.gridCtrl, Events.EVENT_KEYBOARD_FOCUS, function() {
          _this.popupList.forEach(function(popup) {
            return popup.element.classList.add(FocusService.AG_KEYBOARD_FOCUS);
          });
        });
        _this.addManagedListener(_this.gridCtrl, Events.EVENT_MOUSE_FOCUS, function() {
          _this.popupList.forEach(function(popup) {
            return popup.element.classList.remove(FocusService.AG_KEYBOARD_FOCUS);
          });
        });
      });
    };
    PopupService2.prototype.getPopupParent = function() {
      var ePopupParent = this.gridOptionsService.get("popupParent");
      if (ePopupParent) {
        return ePopupParent;
      }
      return this.gridCtrl.getGui();
    };
    PopupService2.prototype.positionPopupForMenu = function(params) {
      var sourceRect = params.eventSource.getBoundingClientRect();
      var parentRect = this.getParentRect();
      var y2 = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);
      var minWidth = params.ePopup.clientWidth > 0 ? params.ePopup.clientWidth : 200;
      params.ePopup.style.minWidth = minWidth + "px";
      var widthOfParent = parentRect.right - parentRect.left;
      var maxX = widthOfParent - minWidth;
      var x2;
      if (this.gridOptionsService.is("enableRtl")) {
        x2 = xLeftPosition();
        if (x2 < 0) {
          x2 = xRightPosition();
        }
        if (x2 > maxX) {
          x2 = 0;
        }
      } else {
        x2 = xRightPosition();
        if (x2 > maxX) {
          x2 = xLeftPosition();
        }
        if (x2 < 0) {
          x2 = 0;
        }
      }
      params.ePopup.style.left = x2 + "px";
      params.ePopup.style.top = y2 + "px";
      function xRightPosition() {
        return sourceRect.right - parentRect.left - 2;
      }
      function xLeftPosition() {
        return sourceRect.left - parentRect.left - minWidth;
      }
    };
    PopupService2.prototype.positionPopupUnderMouseEvent = function(params) {
      var _this = this;
      var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver;
      this.positionPopup({
        ePopup,
        nudgeX,
        nudgeY,
        keepWithinBounds: true,
        skipObserver,
        updatePosition: function() {
          return _this.calculatePointerAlign(params.mouseEvent);
        }
      });
      this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode);
    };
    PopupService2.prototype.calculatePointerAlign = function(e2) {
      var parentRect = this.getParentRect();
      return {
        x: e2.clientX - parentRect.left,
        y: e2.clientY - parentRect.top
      };
    };
    PopupService2.prototype.positionPopupByComponent = function(params) {
      var sourceRect = params.eventSource.getBoundingClientRect();
      var alignSide = params.alignSide || "left";
      var position = params.position || "over";
      var parentRect = this.getParentRect();
      var updatePosition = function() {
        var x2 = sourceRect.left - parentRect.left;
        if (alignSide === "right") {
          x2 -= params.ePopup.offsetWidth - sourceRect.width;
        }
        var y2 = position === "over" ? sourceRect.top - parentRect.top : sourceRect.top - parentRect.top + sourceRect.height;
        return { x: x2, y: y2 };
      };
      this.positionPopup({
        ePopup: params.ePopup,
        nudgeX: params.nudgeX,
        nudgeY: params.nudgeY,
        keepWithinBounds: params.keepWithinBounds,
        updatePosition
      });
      this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);
    };
    PopupService2.prototype.callPostProcessPopup = function(type2, ePopup, eventSource, mouseEvent, column, rowNode) {
      var callback = this.gridOptionsService.getCallback("postProcessPopup");
      if (callback) {
        var params = {
          column,
          rowNode,
          ePopup,
          type: type2,
          eventSource,
          mouseEvent
        };
        callback(params);
      }
    };
    PopupService2.prototype.positionPopup = function(params) {
      var _this = this;
      var ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver, updatePosition = params.updatePosition;
      var lastSize = { width: 0, height: 0 };
      var updatePopupPosition = function(fromResizeObserver) {
        if (fromResizeObserver === void 0) {
          fromResizeObserver = false;
        }
        var _a47 = updatePosition(), x2 = _a47.x, y2 = _a47.y;
        if (fromResizeObserver && ePopup.clientWidth === lastSize.width && ePopup.clientHeight === lastSize.height) {
          return;
        }
        lastSize.width = ePopup.clientWidth;
        lastSize.height = ePopup.clientHeight;
        if (nudgeX) {
          x2 += nudgeX;
        }
        if (nudgeY) {
          y2 += nudgeY;
        }
        if (keepWithinBounds) {
          x2 = _this.keepXYWithinBounds(ePopup, x2, DIRECTION.horizontal);
          y2 = _this.keepXYWithinBounds(ePopup, y2, DIRECTION.vertical);
        }
        ePopup.style.left = x2 + "px";
        ePopup.style.top = y2 + "px";
      };
      updatePopupPosition();
      if (!skipObserver) {
        var resizeObserverDestroyFunc_1 = this.resizeObserverService.observeResize(ePopup, function() {
          return updatePopupPosition(true);
        });
        setTimeout(function() {
          return resizeObserverDestroyFunc_1();
        }, PopupService_1.WAIT_FOR_POPUP_CONTENT_RESIZE);
      }
    };
    PopupService2.prototype.getActivePopups = function() {
      return this.popupList.map(function(popup) {
        return popup.element;
      });
    };
    PopupService2.prototype.getPopupList = function() {
      return this.popupList;
    };
    PopupService2.prototype.getParentRect = function() {
      var eDocument = this.gridOptionsService.getDocument();
      var popupParent = this.getPopupParent();
      if (popupParent === eDocument.body) {
        popupParent = eDocument.documentElement;
      } else if (getComputedStyle(popupParent).position === "static") {
        popupParent = popupParent.offsetParent;
      }
      var style3 = getComputedStyle(popupParent);
      var bounds = popupParent.getBoundingClientRect();
      return {
        top: bounds.top + parseFloat(style3.borderTopWidth) || 0,
        left: bounds.left + parseFloat(style3.borderLeftWidth) || 0,
        right: bounds.right + parseFloat(style3.borderRightWidth) || 0,
        bottom: bounds.bottom + parseFloat(style3.borderBottomWidth) || 0
      };
    };
    PopupService2.prototype.keepXYWithinBounds = function(ePopup, position, direction) {
      var isVertical = direction === DIRECTION.vertical;
      var sizeProperty = isVertical ? "clientHeight" : "clientWidth";
      var anchorProperty = isVertical ? "top" : "left";
      var offsetProperty = isVertical ? "offsetHeight" : "offsetWidth";
      var scrollPositionProperty = isVertical ? "scrollTop" : "scrollLeft";
      var eDocument = this.gridOptionsService.getDocument();
      var docElement = eDocument.documentElement;
      var popupParent = this.getPopupParent();
      var parentRect = popupParent.getBoundingClientRect();
      var documentRect = eDocument.documentElement.getBoundingClientRect();
      var isBody = popupParent === eDocument.body;
      var offsetSize2 = ePopup[offsetProperty];
      var getSize = isVertical ? getAbsoluteHeight : getAbsoluteWidth;
      var sizeOfParent = isBody ? getSize(docElement) + docElement[scrollPositionProperty] : popupParent[sizeProperty];
      if (isBody) {
        sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);
      }
      var max = sizeOfParent - offsetSize2;
      return Math.min(Math.max(position, 0), Math.abs(max));
    };
    PopupService2.prototype.keepPopupPositionedRelativeTo = function(params) {
      var _this = this;
      var eParent = this.getPopupParent();
      var parentRect = eParent.getBoundingClientRect();
      var sourceRect = params.element.getBoundingClientRect();
      var initialDiffTop = parentRect.top - sourceRect.top;
      var initialDiffLeft = parentRect.left - sourceRect.left;
      var lastDiffTop = initialDiffTop;
      var lastDiffLeft = initialDiffLeft;
      var topPx = params.ePopup.style.top;
      var top = parseInt(topPx.substring(0, topPx.length - 1), 10);
      var leftPx = params.ePopup.style.left;
      var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);
      return new AgPromise(function(resolve) {
        _this.getFrameworkOverrides().setInterval(function() {
          var pRect = eParent.getBoundingClientRect();
          var sRect = params.element.getBoundingClientRect();
          var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;
          if (elementNotInDom) {
            params.hidePopup();
            return;
          }
          var currentDiffTop = pRect.top - sRect.top;
          if (currentDiffTop != lastDiffTop) {
            var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);
            params.ePopup.style.top = newTop + "px";
          }
          lastDiffTop = currentDiffTop;
          var currentDiffLeft = pRect.left - sRect.left;
          if (currentDiffLeft != lastDiffLeft) {
            var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);
            params.ePopup.style.left = newLeft + "px";
          }
          lastDiffLeft = currentDiffLeft;
        }, 200).then(function(intervalId) {
          var result = function() {
            if (intervalId != null) {
              window.clearInterval(intervalId);
            }
          };
          resolve(result);
        });
      });
    };
    PopupService2.prototype.addPopup = function(params) {
      var _a47;
      var _this = this;
      var modal = params.modal, eChild = params.eChild, closeOnEsc = params.closeOnEsc, closedCallback = params.closedCallback, click = params.click, alwaysOnTop = params.alwaysOnTop, afterGuiAttached = params.afterGuiAttached, positionCallback = params.positionCallback, anchorToElement = params.anchorToElement, ariaLabel = params.ariaLabel;
      var eDocument = this.gridOptionsService.getDocument();
      var destroyPositionTracker = new AgPromise(function(resolve) {
        return resolve(function() {
        });
      });
      if (!eDocument) {
        console.warn("AG Grid: could not find the document, document is empty");
        return { hideFunc: function() {
        }, stopAnchoringPromise: destroyPositionTracker };
      }
      var pos = this.popupList.findIndex(function(popup2) {
        return popup2.element === eChild;
      });
      if (pos !== -1) {
        var popup = this.popupList[pos];
        return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };
      }
      var ePopupParent = this.getPopupParent();
      if (eChild.style.top == null) {
        eChild.style.top = "0px";
      }
      if (eChild.style.left == null) {
        eChild.style.left = "0px";
      }
      var eWrapper = document.createElement("div");
      var allThemes = this.environment.getTheme().allThemes;
      if (allThemes.length) {
        (_a47 = eWrapper.classList).add.apply(_a47, __spread15(allThemes));
      }
      eWrapper.classList.add("ag-popup");
      eChild.classList.add(this.gridOptionsService.is("enableRtl") ? "ag-rtl" : "ag-ltr", "ag-popup-child");
      if (!eChild.hasAttribute("role")) {
        setAriaRole(eChild, "dialog");
      }
      setAriaLabel(eChild, ariaLabel);
      if (this.focusService.isKeyboardMode()) {
        eChild.classList.add(FocusService.AG_KEYBOARD_FOCUS);
      }
      eWrapper.appendChild(eChild);
      ePopupParent.appendChild(eWrapper);
      if (alwaysOnTop) {
        this.setAlwaysOnTop(eWrapper, true);
      } else {
        this.bringPopupToFront(eWrapper);
      }
      var popupHidden = false;
      var hidePopupOnKeyboardEvent = function(event) {
        if (!eWrapper.contains(eDocument.activeElement)) {
          return;
        }
        var key = event.key;
        if (key === KeyCode.ESCAPE) {
          hidePopup({ keyboardEvent: event });
        }
      };
      var hidePopupOnMouseEvent = function(event) {
        return hidePopup({ mouseEvent: event });
      };
      var hidePopupOnTouchEvent = function(event) {
        return hidePopup({ touchEvent: event });
      };
      var hidePopup = function(popupParams) {
        if (popupParams === void 0) {
          popupParams = {};
        }
        var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;
        if (
          // we don't hide popup if the event was on the child, or any
          // children of this child
          _this.isEventFromCurrentPopup({ mouseEvent, touchEvent }, eChild) || // if the event to close is actually the open event, then ignore it
          _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent, touchEvent }) || // this method should only be called once. the client can have different
          // paths, each one wanting to close, so this method may be called multiple times.
          popupHidden
        ) {
          return;
        }
        popupHidden = true;
        ePopupParent.removeChild(eWrapper);
        eDocument.removeEventListener("keydown", hidePopupOnKeyboardEvent);
        eDocument.removeEventListener("mousedown", hidePopupOnMouseEvent);
        eDocument.removeEventListener("touchstart", hidePopupOnTouchEvent);
        eDocument.removeEventListener("contextmenu", hidePopupOnMouseEvent);
        _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);
        if (closedCallback) {
          closedCallback(mouseEvent || touchEvent || keyboardEvent);
        }
        _this.popupList = _this.popupList.filter(function(popup2) {
          return popup2.element !== eChild;
        });
        if (destroyPositionTracker) {
          destroyPositionTracker.then(function(destroyFunc) {
            return destroyFunc && destroyFunc();
          });
        }
      };
      if (afterGuiAttached) {
        afterGuiAttached({ hidePopup });
      }
      window.setTimeout(function() {
        if (closeOnEsc) {
          eDocument.addEventListener("keydown", hidePopupOnKeyboardEvent);
        }
        if (modal) {
          eDocument.addEventListener("mousedown", hidePopupOnMouseEvent);
          _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);
          eDocument.addEventListener("touchstart", hidePopupOnTouchEvent);
          eDocument.addEventListener("contextmenu", hidePopupOnMouseEvent);
        }
      }, 0);
      if (positionCallback) {
        positionCallback();
      }
      if (anchorToElement) {
        destroyPositionTracker = this.keepPopupPositionedRelativeTo({
          element: anchorToElement,
          ePopup: eChild,
          hidePopup
        });
      }
      this.popupList.push({
        element: eChild,
        wrapper: eWrapper,
        hideFunc: hidePopup,
        stopAnchoringPromise: destroyPositionTracker,
        instanceId: instanceIdSeq++,
        isAnchored: !!anchorToElement
      });
      return {
        hideFunc: hidePopup,
        stopAnchoringPromise: destroyPositionTracker
      };
    };
    PopupService2.prototype.hasAnchoredPopup = function() {
      return this.popupList.some(function(popup) {
        return popup.isAnchored;
      });
    };
    PopupService2.prototype.isEventFromCurrentPopup = function(params, target) {
      var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;
      var event = mouseEvent ? mouseEvent : touchEvent;
      if (!event) {
        return false;
      }
      var indexOfThisChild = this.popupList.findIndex(function(popup2) {
        return popup2.element === target;
      });
      if (indexOfThisChild === -1) {
        return false;
      }
      for (var i2 = indexOfThisChild; i2 < this.popupList.length; i2++) {
        var popup = this.popupList[i2];
        if (isElementInEventPath(popup.element, event)) {
          return true;
        }
      }
      return this.isElementWithinCustomPopup(event.target);
    };
    PopupService2.prototype.isElementWithinCustomPopup = function(el) {
      var eDocument = this.gridOptionsService.getDocument();
      while (el && el !== eDocument.body) {
        if (el.classList.contains("ag-custom-component-popup") || el.parentElement === null) {
          return true;
        }
        el = el.parentElement;
      }
      return false;
    };
    PopupService2.prototype.isEventSameChainAsOriginalEvent = function(params) {
      var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;
      var mouseEventOrTouch = null;
      if (mouseEvent) {
        mouseEventOrTouch = mouseEvent;
      } else if (touchEvent) {
        mouseEventOrTouch = touchEvent.touches[0];
      }
      if (mouseEventOrTouch && originalMouseEvent) {
        var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;
        var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;
        var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;
        var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;
        if (xMatch && yMatch) {
          return true;
        }
      }
      return false;
    };
    PopupService2.prototype.getWrapper = function(ePopup) {
      while (!ePopup.classList.contains("ag-popup") && ePopup.parentElement) {
        ePopup = ePopup.parentElement;
      }
      return ePopup.classList.contains("ag-popup") ? ePopup : null;
    };
    PopupService2.prototype.setAlwaysOnTop = function(ePopup, alwaysOnTop) {
      var eWrapper = this.getWrapper(ePopup);
      if (!eWrapper) {
        return;
      }
      eWrapper.classList.toggle("ag-always-on-top", !!alwaysOnTop);
      if (alwaysOnTop) {
        this.bringPopupToFront(eWrapper);
      }
    };
    PopupService2.prototype.bringPopupToFront = function(ePopup) {
      var parent2 = this.getPopupParent();
      var popupList = Array.prototype.slice.call(parent2.querySelectorAll(".ag-popup"));
      var popupLen = popupList.length;
      var alwaysOnTopList = Array.prototype.slice.call(parent2.querySelectorAll(".ag-popup.ag-always-on-top"));
      var onTopLength = alwaysOnTopList.length;
      var eWrapper = this.getWrapper(ePopup);
      if (!eWrapper || popupLen <= 1 || !parent2.contains(ePopup)) {
        return;
      }
      var pos = popupList.indexOf(eWrapper);
      var innerEls = eWrapper.querySelectorAll("div");
      var innerElsScrollMap = [];
      innerEls.forEach(function(el) {
        if (el.scrollTop !== 0) {
          innerElsScrollMap.push([el, el.scrollTop]);
        }
      });
      if (onTopLength) {
        var isPopupAlwaysOnTop = eWrapper.classList.contains("ag-always-on-top");
        if (isPopupAlwaysOnTop) {
          if (pos !== popupLen - 1) {
            last(alwaysOnTopList).insertAdjacentElement("afterend", eWrapper);
          }
        } else if (pos !== popupLen - onTopLength - 1) {
          alwaysOnTopList[0].insertAdjacentElement("beforebegin", eWrapper);
        }
      } else if (pos !== popupLen - 1) {
        last(popupList).insertAdjacentElement("afterend", eWrapper);
      }
      while (innerElsScrollMap.length) {
        var currentEl = innerElsScrollMap.pop();
        currentEl[0].scrollTop = currentEl[1];
      }
      var params = {
        type: "popupToFront",
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        eWrapper
      };
      this.eventService.dispatchEvent(params);
    };
    var PopupService_1;
    PopupService2.WAIT_FOR_POPUP_CONTENT_RESIZE = 200;
    __decorate116([
      Autowired("focusService")
    ], PopupService2.prototype, "focusService", void 0);
    __decorate116([
      Autowired("ctrlsService")
    ], PopupService2.prototype, "ctrlsService", void 0);
    __decorate116([
      Autowired("resizeObserverService")
    ], PopupService2.prototype, "resizeObserverService", void 0);
    __decorate116([
      PostConstruct
    ], PopupService2.prototype, "postConstruct", null);
    PopupService2 = PopupService_1 = __decorate116([
      Bean("popupService")
    ], PopupService2);
    return PopupService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/widgets/virtualList.js
var __extends134 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate117 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var VirtualList = (
  /** @class */
  function(_super) {
    __extends134(VirtualList2, _super);
    function VirtualList2(cssIdentifier, ariaRole, listName) {
      if (cssIdentifier === void 0) {
        cssIdentifier = "default";
      }
      if (ariaRole === void 0) {
        ariaRole = "listbox";
      }
      var _this = _super.call(this, VirtualList2.getTemplate(cssIdentifier)) || this;
      _this.cssIdentifier = cssIdentifier;
      _this.ariaRole = ariaRole;
      _this.listName = listName;
      _this.renderedRows = /* @__PURE__ */ new Map();
      _this.rowHeight = 20;
      return _this;
    }
    VirtualList2.prototype.postConstruct = function() {
      var _this = this;
      this.addScrollListener();
      this.rowHeight = this.getItemHeight();
      this.addResizeObserver();
      this.initialiseTabGuard({
        onFocusIn: function(e2) {
          return _this.onFocusIn(e2);
        },
        onFocusOut: function(e2) {
          return _this.onFocusOut(e2);
        },
        focusInnerElement: function(fromBottom) {
          return _this.focusInnerElement(fromBottom);
        },
        onTabKeyDown: function(e2) {
          return _this.onTabKeyDown(e2);
        },
        handleKeyDown: function(e2) {
          return _this.handleKeyDown(e2);
        }
      });
      this.setAriaProperties();
    };
    VirtualList2.prototype.setAriaProperties = function() {
      var translate = this.localeService.getLocaleTextFunc();
      var listName = translate("ariaDefaultListName", this.listName || "List");
      var ariaEl = this.eContainer;
      setAriaRole(ariaEl, this.ariaRole);
      setAriaLabel(ariaEl, listName);
    };
    VirtualList2.prototype.addResizeObserver = function() {
      var _this = this;
      var listener = function() {
        return _this.drawVirtualRows();
      };
      var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);
      this.addDestroyFunc(destroyObserver);
    };
    VirtualList2.prototype.focusInnerElement = function(fromBottom) {
      this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);
    };
    VirtualList2.prototype.onFocusIn = function(e2) {
      var target = e2.target;
      if (target.classList.contains("ag-virtual-list-item")) {
        this.lastFocusedRowIndex = getAriaPosInSet(target) - 1;
      }
      return false;
    };
    VirtualList2.prototype.onFocusOut = function(e2) {
      if (!this.getFocusableElement().contains(e2.relatedTarget)) {
        this.lastFocusedRowIndex = null;
      }
      return false;
    };
    VirtualList2.prototype.handleKeyDown = function(e2) {
      switch (e2.key) {
        case KeyCode.UP:
        case KeyCode.DOWN:
          if (this.navigate(e2.key === KeyCode.UP)) {
            e2.preventDefault();
          }
          break;
      }
    };
    VirtualList2.prototype.onTabKeyDown = function(e2) {
      if (this.navigate(e2.shiftKey)) {
        e2.preventDefault();
      } else {
        this.focusService.focusInto(this.getGui(), !e2.shiftKey);
      }
    };
    VirtualList2.prototype.navigate = function(up) {
      if (this.lastFocusedRowIndex == null) {
        return false;
      }
      var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);
      if (nextRow < 0 || nextRow >= this.model.getRowCount()) {
        return false;
      }
      this.focusRow(nextRow);
      return true;
    };
    VirtualList2.prototype.getLastFocusedRow = function() {
      return this.lastFocusedRowIndex;
    };
    VirtualList2.prototype.focusRow = function(rowNumber) {
      var _this = this;
      this.ensureIndexVisible(rowNumber);
      window.setTimeout(function() {
        if (!_this.isAlive()) {
          return;
        }
        var renderedRow = _this.renderedRows.get(rowNumber);
        if (renderedRow) {
          renderedRow.eDiv.focus();
        }
      }, 10);
    };
    VirtualList2.prototype.getComponentAt = function(rowIndex) {
      var comp = this.renderedRows.get(rowIndex);
      return comp && comp.rowComponent;
    };
    VirtualList2.prototype.forEachRenderedRow = function(func) {
      this.renderedRows.forEach(function(value, key) {
        return func(value.rowComponent, key);
      });
    };
    VirtualList2.getTemplate = function(cssIdentifier) {
      return (
        /* html */
        '\n            <div class="ag-virtual-list-viewport ag-' + cssIdentifier + '-virtual-list-viewport" role="presentation">\n                <div class="ag-virtual-list-container ag-' + cssIdentifier + '-virtual-list-container" ref="eContainer"></div>\n            </div>'
      );
    };
    VirtualList2.prototype.getItemHeight = function() {
      return this.environment.getListItemHeight();
    };
    VirtualList2.prototype.ensureIndexVisible = function(index) {
      var lastRow = this.model.getRowCount();
      if (typeof index !== "number" || index < 0 || index >= lastRow) {
        console.warn("AG Grid: invalid row index for ensureIndexVisible: " + index);
        return;
      }
      var rowTopPixel = index * this.rowHeight;
      var rowBottomPixel = rowTopPixel + this.rowHeight;
      var eGui = this.getGui();
      var viewportTopPixel = eGui.scrollTop;
      var viewportHeight = eGui.offsetHeight;
      var viewportBottomPixel = viewportTopPixel + viewportHeight;
      var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;
      var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;
      if (viewportScrolledPastRow) {
        eGui.scrollTop = rowTopPixel;
      } else if (viewportScrolledBeforeRow) {
        var newScrollPosition = rowBottomPixel - viewportHeight;
        eGui.scrollTop = newScrollPosition;
      }
    };
    VirtualList2.prototype.setComponentCreator = function(componentCreator) {
      this.componentCreator = componentCreator;
    };
    VirtualList2.prototype.setComponentUpdater = function(componentUpdater) {
      this.componentUpdater = componentUpdater;
    };
    VirtualList2.prototype.getRowHeight = function() {
      return this.rowHeight;
    };
    VirtualList2.prototype.getScrollTop = function() {
      return this.getGui().scrollTop;
    };
    VirtualList2.prototype.setRowHeight = function(rowHeight) {
      this.rowHeight = rowHeight;
      this.refresh();
    };
    VirtualList2.prototype.refresh = function(softRefresh) {
      var _this = this;
      if (this.model == null || !this.isAlive()) {
        return;
      }
      var rowCount = this.model.getRowCount();
      this.eContainer.style.height = rowCount * this.rowHeight + "px";
      waitUntil(function() {
        return _this.eContainer.clientHeight >= rowCount * _this.rowHeight;
      }, function() {
        if (!_this.isAlive()) {
          return;
        }
        if (_this.canSoftRefresh(softRefresh)) {
          _this.drawVirtualRows(true);
        } else {
          _this.clearVirtualRows();
          _this.drawVirtualRows();
        }
      });
    };
    VirtualList2.prototype.canSoftRefresh = function(softRefresh) {
      return !!(softRefresh && this.renderedRows.size && typeof this.model.areRowsEqual === "function" && this.componentUpdater);
    };
    VirtualList2.prototype.clearVirtualRows = function() {
      var _this = this;
      this.renderedRows.forEach(function(_3, rowIndex) {
        return _this.removeRow(rowIndex);
      });
    };
    VirtualList2.prototype.drawVirtualRows = function(softRefresh) {
      if (!this.isAlive()) {
        return;
      }
      var gui = this.getGui();
      var topPixel = gui.scrollTop;
      var bottomPixel = topPixel + gui.offsetHeight;
      var firstRow = Math.floor(topPixel / this.rowHeight);
      var lastRow = Math.floor(bottomPixel / this.rowHeight);
      this.ensureRowsRendered(firstRow, lastRow, softRefresh);
    };
    VirtualList2.prototype.ensureRowsRendered = function(start, finish, softRefresh) {
      var _this = this;
      this.renderedRows.forEach(function(_3, rowIndex2) {
        if ((rowIndex2 < start || rowIndex2 > finish) && rowIndex2 !== _this.lastFocusedRowIndex) {
          _this.removeRow(rowIndex2);
        }
      });
      if (softRefresh) {
        this.refreshRows();
      }
      for (var rowIndex = start; rowIndex <= finish; rowIndex++) {
        if (this.renderedRows.has(rowIndex)) {
          continue;
        }
        if (rowIndex < this.model.getRowCount()) {
          this.insertRow(rowIndex);
        }
      }
    };
    VirtualList2.prototype.insertRow = function(rowIndex) {
      var _this = this;
      var value = this.model.getRow(rowIndex);
      var eDiv = document.createElement("div");
      eDiv.classList.add("ag-virtual-list-item", "ag-" + this.cssIdentifier + "-virtual-list-item");
      setAriaRole(eDiv, this.ariaRole === "tree" ? "treeitem" : "option");
      setAriaSetSize(eDiv, this.model.getRowCount());
      setAriaPosInSet(eDiv, rowIndex + 1);
      eDiv.setAttribute("tabindex", "-1");
      if (typeof this.model.isRowSelected === "function") {
        var isSelected = this.model.isRowSelected(rowIndex);
        setAriaSelected(eDiv, !!isSelected);
        setAriaChecked(eDiv, isSelected);
      }
      eDiv.style.height = this.rowHeight + "px";
      eDiv.style.top = this.rowHeight * rowIndex + "px";
      var rowComponent = this.componentCreator(value, eDiv);
      rowComponent.addGuiEventListener("focusin", function() {
        return _this.lastFocusedRowIndex = rowIndex;
      });
      eDiv.appendChild(rowComponent.getGui());
      if (this.renderedRows.has(rowIndex - 1)) {
        this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement("afterend", eDiv);
      } else if (this.renderedRows.has(rowIndex + 1)) {
        this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement("beforebegin", eDiv);
      } else {
        this.eContainer.appendChild(eDiv);
      }
      this.renderedRows.set(rowIndex, { rowComponent, eDiv, value });
    };
    VirtualList2.prototype.removeRow = function(rowIndex) {
      var component = this.renderedRows.get(rowIndex);
      this.eContainer.removeChild(component.eDiv);
      this.destroyBean(component.rowComponent);
      this.renderedRows.delete(rowIndex);
    };
    VirtualList2.prototype.refreshRows = function() {
      var _this = this;
      var rowCount = this.model.getRowCount();
      this.renderedRows.forEach(function(row, rowIndex) {
        var _a47, _b;
        if (rowIndex >= rowCount) {
          _this.removeRow(rowIndex);
        } else {
          var newValue = _this.model.getRow(rowIndex);
          if ((_b = (_a47 = _this.model).areRowsEqual) === null || _b === void 0 ? void 0 : _b.call(_a47, row.value, newValue)) {
            _this.componentUpdater(newValue, row.rowComponent);
          } else {
            _this.removeRow(rowIndex);
          }
        }
      });
    };
    VirtualList2.prototype.addScrollListener = function() {
      var _this = this;
      this.addGuiEventListener("scroll", function() {
        return _this.drawVirtualRows();
      }, { passive: true });
    };
    VirtualList2.prototype.setModel = function(model) {
      this.model = model;
    };
    VirtualList2.prototype.destroy = function() {
      if (!this.isAlive()) {
        return;
      }
      this.clearVirtualRows();
      _super.prototype.destroy.call(this);
    };
    __decorate117([
      Autowired("resizeObserverService")
    ], VirtualList2.prototype, "resizeObserverService", void 0);
    __decorate117([
      Autowired("focusService")
    ], VirtualList2.prototype, "focusService", void 0);
    __decorate117([
      RefSelector("eContainer")
    ], VirtualList2.prototype, "eContainer", void 0);
    __decorate117([
      PostConstruct
    ], VirtualList2.prototype, "postConstruct", null);
    return VirtualList2;
  }(TabGuardComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/vanillaFrameworkOverrides.js
var OUTSIDE_ANGULAR_EVENTS = ["mouseover", "mouseout", "mouseenter", "mouseleave"];
var PASSIVE_EVENTS2 = ["touchstart", "touchend", "touchmove", "touchcancel"];
var VanillaFrameworkOverrides = (
  /** @class */
  function() {
    function VanillaFrameworkOverrides2() {
      this.isOutsideAngular = function(eventType) {
        return includes(OUTSIDE_ANGULAR_EVENTS, eventType);
      };
    }
    VanillaFrameworkOverrides2.prototype.setTimeout = function(action, timeout) {
      window.setTimeout(action, timeout);
    };
    VanillaFrameworkOverrides2.prototype.setInterval = function(action, timeout) {
      return new AgPromise(function(resolve) {
        resolve(window.setInterval(action, timeout));
      });
    };
    VanillaFrameworkOverrides2.prototype.addEventListener = function(element, type2, listener, useCapture) {
      var isPassive = includes(PASSIVE_EVENTS2, type2);
      element.addEventListener(type2, listener, { capture: !!useCapture, passive: isPassive });
    };
    VanillaFrameworkOverrides2.prototype.dispatchEvent = function(eventType, listener, global2) {
      if (global2 === void 0) {
        global2 = false;
      }
      listener();
    };
    VanillaFrameworkOverrides2.prototype.frameworkComponent = function(name) {
      return null;
    };
    VanillaFrameworkOverrides2.prototype.isFrameworkComponent = function(comp) {
      return false;
    };
    return VanillaFrameworkOverrides2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/cellNavigationService.js
var __extends135 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate118 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read20 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread16 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read20(arguments[i2]));
  return ar;
};
var CellNavigationService = (
  /** @class */
  function(_super) {
    __extends135(CellNavigationService2, _super);
    function CellNavigationService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    CellNavigationService2.prototype.getNextCellToFocus = function(key, focusedCell, ctrlPressed) {
      if (ctrlPressed === void 0) {
        ctrlPressed = false;
      }
      if (ctrlPressed) {
        return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);
      }
      return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);
    };
    CellNavigationService2.prototype.getNextCellToFocusWithCtrlPressed = function(key, focusedCell) {
      var upKey = key === KeyCode.UP;
      var downKey = key === KeyCode.DOWN;
      var leftKey = key === KeyCode.LEFT;
      var column;
      var rowIndex;
      if (upKey || downKey) {
        rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();
        column = focusedCell.column;
      } else {
        var allColumns = this.columnModel.getAllDisplayedColumns();
        var isRtl = this.gridOptionsService.is("enableRtl");
        rowIndex = focusedCell.rowIndex;
        column = leftKey !== isRtl ? allColumns[0] : last(allColumns);
      }
      return {
        rowIndex,
        rowPinned: null,
        column
      };
    };
    CellNavigationService2.prototype.getNextCellToFocusWithoutCtrlPressed = function(key, focusedCell) {
      var pointer = focusedCell;
      var finished = false;
      while (!finished) {
        switch (key) {
          case KeyCode.UP:
            pointer = this.getCellAbove(pointer);
            break;
          case KeyCode.DOWN:
            pointer = this.getCellBelow(pointer);
            break;
          case KeyCode.RIGHT:
            if (this.gridOptionsService.is("enableRtl")) {
              pointer = this.getCellToLeft(pointer);
            } else {
              pointer = this.getCellToRight(pointer);
            }
            break;
          case KeyCode.LEFT:
            if (this.gridOptionsService.is("enableRtl")) {
              pointer = this.getCellToRight(pointer);
            } else {
              pointer = this.getCellToLeft(pointer);
            }
            break;
          default:
            pointer = null;
            console.warn("AG Grid: unknown key for navigation " + key);
            break;
        }
        if (pointer) {
          finished = this.isCellGoodToFocusOn(pointer);
        } else {
          finished = true;
        }
      }
      return pointer;
    };
    CellNavigationService2.prototype.isCellGoodToFocusOn = function(gridCell) {
      var column = gridCell.column;
      var rowNode;
      switch (gridCell.rowPinned) {
        case "top":
          rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);
          break;
        case "bottom":
          rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);
          break;
        default:
          rowNode = this.rowModel.getRow(gridCell.rowIndex);
          break;
      }
      if (!rowNode) {
        return false;
      }
      var suppressNavigable = column.isSuppressNavigable(rowNode);
      return !suppressNavigable;
    };
    CellNavigationService2.prototype.getCellToLeft = function(lastCell) {
      if (!lastCell) {
        return null;
      }
      var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);
      if (!colToLeft) {
        return null;
      }
      return {
        rowIndex: lastCell.rowIndex,
        column: colToLeft,
        rowPinned: lastCell.rowPinned
      };
    };
    CellNavigationService2.prototype.getCellToRight = function(lastCell) {
      if (!lastCell) {
        return null;
      }
      var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);
      if (!colToRight) {
        return null;
      }
      return {
        rowIndex: lastCell.rowIndex,
        column: colToRight,
        rowPinned: lastCell.rowPinned
      };
    };
    CellNavigationService2.prototype.getRowBelow = function(rowPosition) {
      var index = rowPosition.rowIndex;
      var pinned = rowPosition.rowPinned;
      if (this.isLastRowInContainer(rowPosition)) {
        switch (pinned) {
          case "bottom":
            return null;
          case "top":
            if (this.rowModel.isRowsToRender()) {
              return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };
            }
            if (this.pinnedRowModel.isRowsToRender("bottom")) {
              return { rowIndex: 0, rowPinned: "bottom" };
            }
            return null;
          default:
            if (this.pinnedRowModel.isRowsToRender("bottom")) {
              return { rowIndex: 0, rowPinned: "bottom" };
            }
            return null;
        }
      }
      var rowNode = this.rowModel.getRow(rowPosition.rowIndex);
      var nextStickyPosition = this.getNextStickyPosition(rowNode);
      if (nextStickyPosition) {
        return nextStickyPosition;
      }
      return { rowIndex: index + 1, rowPinned: pinned };
    };
    CellNavigationService2.prototype.getNextStickyPosition = function(rowNode, up) {
      if (!this.gridOptionsService.is("groupRowsSticky") || !rowNode || !rowNode.sticky) {
        return;
      }
      var stickyRowCtrls = __spread16(this.rowRenderer.getStickyTopRowCtrls()).sort(function(a2, b2) {
        return a2.getRowNode().rowIndex - b2.getRowNode().rowIndex;
      });
      var diff = up ? -1 : 1;
      var idx = stickyRowCtrls.findIndex(function(ctrl) {
        return ctrl.getRowNode().rowIndex === rowNode.rowIndex;
      });
      var nextCtrl = stickyRowCtrls[idx + diff];
      if (nextCtrl) {
        return { rowIndex: nextCtrl.getRowNode().rowIndex, rowPinned: null };
      }
    };
    CellNavigationService2.prototype.getCellBelow = function(lastCell) {
      if (!lastCell) {
        return null;
      }
      var rowBelow = this.getRowBelow(lastCell);
      if (rowBelow) {
        return {
          rowIndex: rowBelow.rowIndex,
          column: lastCell.column,
          rowPinned: rowBelow.rowPinned
        };
      }
      return null;
    };
    CellNavigationService2.prototype.isLastRowInContainer = function(rowPosition) {
      var pinned = rowPosition.rowPinned;
      var index = rowPosition.rowIndex;
      if (pinned === "top") {
        var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;
        return lastTopIndex <= index;
      }
      if (pinned === "bottom") {
        var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;
        return lastBottomIndex <= index;
      }
      var lastBodyIndex = this.paginationProxy.getPageLastRow();
      return lastBodyIndex <= index;
    };
    CellNavigationService2.prototype.getRowAbove = function(rowPosition) {
      var index = rowPosition.rowIndex;
      var pinned = rowPosition.rowPinned;
      var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();
      if (isFirstRow) {
        if (pinned === "top") {
          return null;
        }
        if (!pinned) {
          if (this.pinnedRowModel.isRowsToRender("top")) {
            return this.getLastFloatingTopRow();
          }
          return null;
        }
        if (this.rowModel.isRowsToRender()) {
          return this.getLastBodyCell();
        }
        if (this.pinnedRowModel.isRowsToRender("top")) {
          return this.getLastFloatingTopRow();
        }
        return null;
      }
      var rowNode = this.rowModel.getRow(rowPosition.rowIndex);
      var nextStickyPosition = this.getNextStickyPosition(rowNode, true);
      if (nextStickyPosition) {
        return nextStickyPosition;
      }
      return { rowIndex: index - 1, rowPinned: pinned };
    };
    CellNavigationService2.prototype.getCellAbove = function(lastCell) {
      if (!lastCell) {
        return null;
      }
      var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });
      if (rowAbove) {
        return {
          rowIndex: rowAbove.rowIndex,
          column: lastCell.column,
          rowPinned: rowAbove.rowPinned
        };
      }
      return null;
    };
    CellNavigationService2.prototype.getLastBodyCell = function() {
      var lastBodyRow = this.paginationProxy.getPageLastRow();
      return { rowIndex: lastBodyRow, rowPinned: null };
    };
    CellNavigationService2.prototype.getLastFloatingTopRow = function() {
      var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;
      return { rowIndex: lastFloatingRow, rowPinned: "top" };
    };
    CellNavigationService2.prototype.getNextTabbedCell = function(gridCell, backwards) {
      if (backwards) {
        return this.getNextTabbedCellBackwards(gridCell);
      }
      return this.getNextTabbedCellForwards(gridCell);
    };
    CellNavigationService2.prototype.getNextTabbedCellForwards = function(gridCell) {
      var displayedColumns = this.columnModel.getAllDisplayedColumns();
      var newRowIndex = gridCell.rowIndex;
      var newFloating = gridCell.rowPinned;
      var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);
      if (!newColumn) {
        newColumn = displayedColumns[0];
        var rowBelow = this.getRowBelow(gridCell);
        if (missing(rowBelow)) {
          return null;
        }
        if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {
          return null;
        }
        newRowIndex = rowBelow ? rowBelow.rowIndex : null;
        newFloating = rowBelow ? rowBelow.rowPinned : null;
      }
      return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };
    };
    CellNavigationService2.prototype.getNextTabbedCellBackwards = function(gridCell) {
      var displayedColumns = this.columnModel.getAllDisplayedColumns();
      var newRowIndex = gridCell.rowIndex;
      var newFloating = gridCell.rowPinned;
      var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);
      if (!newColumn) {
        newColumn = last(displayedColumns);
        var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });
        if (missing(rowAbove)) {
          return null;
        }
        if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {
          return null;
        }
        newRowIndex = rowAbove ? rowAbove.rowIndex : null;
        newFloating = rowAbove ? rowAbove.rowPinned : null;
      }
      return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };
    };
    __decorate118([
      Autowired("columnModel")
    ], CellNavigationService2.prototype, "columnModel", void 0);
    __decorate118([
      Autowired("rowModel")
    ], CellNavigationService2.prototype, "rowModel", void 0);
    __decorate118([
      Autowired("rowRenderer")
    ], CellNavigationService2.prototype, "rowRenderer", void 0);
    __decorate118([
      Autowired("pinnedRowModel")
    ], CellNavigationService2.prototype, "pinnedRowModel", void 0);
    __decorate118([
      Autowired("paginationProxy")
    ], CellNavigationService2.prototype, "paginationProxy", void 0);
    CellNavigationService2 = __decorate118([
      Bean("cellNavigationService")
    ], CellNavigationService2);
    return CellNavigationService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/alignedGridsService.js
var __extends136 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate119 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param5 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var AlignedGridsService = (
  /** @class */
  function(_super) {
    __extends136(AlignedGridsService2, _super);
    function AlignedGridsService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.consuming = false;
      return _this;
    }
    AlignedGridsService2.prototype.setBeans = function(loggerFactory) {
      this.logger = loggerFactory.create("AlignedGridsService");
    };
    AlignedGridsService2.prototype.init = function() {
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));
    };
    AlignedGridsService2.prototype.fireEvent = function(callback) {
      if (this.consuming) {
        return;
      }
      var otherGrids = this.gridOptionsService.get("alignedGrids");
      if (otherGrids) {
        otherGrids.forEach(function(otherGridOptions) {
          if (otherGridOptions.api) {
            var alignedGridService = otherGridOptions.api.__getAlignedGridService();
            callback(alignedGridService);
          }
        });
      }
    };
    AlignedGridsService2.prototype.onEvent = function(callback) {
      this.consuming = true;
      callback();
      this.consuming = false;
    };
    AlignedGridsService2.prototype.fireColumnEvent = function(event) {
      this.fireEvent(function(alignedGridsService) {
        alignedGridsService.onColumnEvent(event);
      });
    };
    AlignedGridsService2.prototype.fireScrollEvent = function(event) {
      if (event.direction !== "horizontal") {
        return;
      }
      this.fireEvent(function(alignedGridsService) {
        alignedGridsService.onScrollEvent(event);
      });
    };
    AlignedGridsService2.prototype.onScrollEvent = function(event) {
      var _this = this;
      this.onEvent(function() {
        var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
        gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);
      });
    };
    AlignedGridsService2.prototype.getMasterColumns = function(event) {
      var result = [];
      if (event.columns) {
        event.columns.forEach(function(column) {
          result.push(column);
        });
      } else if (event.column) {
        result.push(event.column);
      }
      return result;
    };
    AlignedGridsService2.prototype.getColumnIds = function(event) {
      var result = [];
      if (event.columns) {
        event.columns.forEach(function(column) {
          result.push(column.getColId());
        });
      } else if (event.column) {
        result.push(event.column.getColId());
      }
      return result;
    };
    AlignedGridsService2.prototype.onColumnEvent = function(event) {
      var _this = this;
      this.onEvent(function() {
        switch (event.type) {
          case Events.EVENT_COLUMN_MOVED:
          case Events.EVENT_COLUMN_VISIBLE:
          case Events.EVENT_COLUMN_PINNED:
          case Events.EVENT_COLUMN_RESIZED:
            var colEvent = event;
            _this.processColumnEvent(colEvent);
            break;
          case Events.EVENT_COLUMN_GROUP_OPENED:
            var groupOpenedEvent = event;
            _this.processGroupOpenedEvent(groupOpenedEvent);
            break;
          case Events.EVENT_COLUMN_PIVOT_CHANGED:
            console.warn("AG Grid: pivoting is not supported with aligned grids. You can only use one of these features at a time in a grid.");
            break;
        }
      });
    };
    AlignedGridsService2.prototype.processGroupOpenedEvent = function(groupOpenedEvent) {
      var masterColumnGroup = groupOpenedEvent.columnGroup;
      var otherColumnGroup = null;
      if (masterColumnGroup) {
        var groupId = masterColumnGroup.getGroupId();
        otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);
      }
      if (masterColumnGroup && !otherColumnGroup) {
        return;
      }
      this.logger.log("onColumnEvent-> processing " + groupOpenedEvent + " expanded = " + masterColumnGroup.isExpanded());
      this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), "alignedGridChanged");
    };
    AlignedGridsService2.prototype.processColumnEvent = function(colEvent) {
      var _this = this;
      var _a47;
      var masterColumn = colEvent.column;
      var otherColumn = null;
      if (masterColumn) {
        otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());
      }
      if (masterColumn && !otherColumn) {
        return;
      }
      var masterColumns = this.getMasterColumns(colEvent);
      switch (colEvent.type) {
        case Events.EVENT_COLUMN_MOVED:
          {
            var movedEvent = colEvent;
            var srcColState = colEvent.columnApi.getColumnState();
            var destColState = srcColState.map(function(s2) {
              return { colId: s2.colId };
            });
            this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, "alignedGridChanged");
            this.logger.log("onColumnEvent-> processing " + colEvent.type + " toIndex = " + movedEvent.toIndex);
          }
          break;
        case Events.EVENT_COLUMN_VISIBLE:
          {
            var visibleEvent = colEvent;
            var srcColState = colEvent.columnApi.getColumnState();
            var destColState = srcColState.map(function(s2) {
              return { colId: s2.colId, hide: s2.hide };
            });
            this.columnModel.applyColumnState({ state: destColState }, "alignedGridChanged");
            this.logger.log("onColumnEvent-> processing " + colEvent.type + " visible = " + visibleEvent.visible);
          }
          break;
        case Events.EVENT_COLUMN_PINNED:
          {
            var pinnedEvent = colEvent;
            var srcColState = colEvent.columnApi.getColumnState();
            var destColState = srcColState.map(function(s2) {
              return { colId: s2.colId, pinned: s2.pinned };
            });
            this.columnModel.applyColumnState({ state: destColState }, "alignedGridChanged");
            this.logger.log("onColumnEvent-> processing " + colEvent.type + " pinned = " + pinnedEvent.pinned);
          }
          break;
        case Events.EVENT_COLUMN_RESIZED:
          var resizedEvent = colEvent;
          var columnWidths_1 = {};
          masterColumns.forEach(function(column) {
            _this.logger.log("onColumnEvent-> processing " + colEvent.type + " actualWidth = " + column.getActualWidth());
            columnWidths_1[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };
          });
          (_a47 = resizedEvent.flexColumns) === null || _a47 === void 0 ? void 0 : _a47.forEach(function(col) {
            if (columnWidths_1[col.getId()]) {
              delete columnWidths_1[col.getId()];
            }
          });
          this.columnModel.setColumnWidths(Object.values(columnWidths_1), false, resizedEvent.finished, "alignedGridChanged");
          break;
      }
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var isVerticalScrollShowing2 = gridBodyCon.isVerticalScrollShowing();
      var alignedGrids = this.gridOptionsService.get("alignedGrids");
      if (alignedGrids) {
        alignedGrids.forEach(function(grid) {
          if (grid.api) {
            grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing2);
          }
        });
      }
    };
    __decorate119([
      Autowired("columnModel")
    ], AlignedGridsService2.prototype, "columnModel", void 0);
    __decorate119([
      Autowired("ctrlsService")
    ], AlignedGridsService2.prototype, "ctrlsService", void 0);
    __decorate119([
      __param5(0, Qualifier("loggerFactory"))
    ], AlignedGridsService2.prototype, "setBeans", null);
    __decorate119([
      PostConstruct
    ], AlignedGridsService2.prototype, "init", null);
    AlignedGridsService2 = __decorate119([
      Bean("alignedGridsService")
    ], AlignedGridsService2);
    return AlignedGridsService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/selectionService.js
var __extends137 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate120 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param6 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var SelectionService = (
  /** @class */
  function(_super) {
    __extends137(SelectionService2, _super);
    function SelectionService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SelectionService2.prototype.setBeans = function(loggerFactory) {
      this.logger = loggerFactory.create("selectionService");
      this.reset();
    };
    SelectionService2.prototype.init = function() {
      this.groupSelectsChildren = this.gridOptionsService.is("groupSelectsChildren");
      this.addManagedListener(this.eventService, Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));
    };
    SelectionService2.prototype.setLastSelectedNode = function(rowNode) {
      this.lastSelectedNode = rowNode;
    };
    SelectionService2.prototype.getLastSelectedNode = function() {
      return this.lastSelectedNode;
    };
    SelectionService2.prototype.getSelectedNodes = function() {
      var selectedNodes = [];
      iterateObject(this.selectedNodes, function(key, rowNode) {
        if (rowNode) {
          selectedNodes.push(rowNode);
        }
      });
      return selectedNodes;
    };
    SelectionService2.prototype.getSelectedRows = function() {
      var selectedRows = [];
      iterateObject(this.selectedNodes, function(key, rowNode) {
        if (rowNode && rowNode.data) {
          selectedRows.push(rowNode.data);
        }
      });
      return selectedRows;
    };
    SelectionService2.prototype.removeGroupsFromSelection = function() {
      var _this = this;
      iterateObject(this.selectedNodes, function(key, rowNode) {
        if (rowNode && rowNode.group) {
          _this.selectedNodes[rowNode.id] = void 0;
        }
      });
    };
    SelectionService2.prototype.updateGroupsFromChildrenSelections = function(source, changedPath) {
      if (!this.gridOptionsService.is("groupSelectsChildren")) {
        return false;
      }
      if (this.rowModel.getType() !== "clientSide") {
        return false;
      }
      var clientSideRowModel = this.rowModel;
      var rootNode = clientSideRowModel.getRootNode();
      if (!changedPath) {
        changedPath = new ChangedPath(true, rootNode);
        changedPath.setInactive();
      }
      var selectionChanged = false;
      changedPath.forEachChangedNodeDepthFirst(function(rowNode) {
        if (rowNode !== rootNode) {
          var selected = rowNode.calculateSelectedFromChildren();
          selectionChanged = rowNode.selectThisNode(selected === null ? false : selected, void 0, source) || selectionChanged;
        }
      });
      return selectionChanged;
    };
    SelectionService2.prototype.getNodeForIdIfSelected = function(id) {
      return this.selectedNodes[id];
    };
    SelectionService2.prototype.clearOtherNodes = function(rowNodeToKeepSelected, source) {
      var _this = this;
      var groupsToRefresh = {};
      var updatedCount = 0;
      iterateObject(this.selectedNodes, function(key, otherRowNode) {
        if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {
          var rowNode = _this.selectedNodes[otherRowNode.id];
          updatedCount += rowNode.setSelectedParams({
            newValue: false,
            clearSelection: false,
            suppressFinishActions: true,
            source
          });
          if (_this.groupSelectsChildren && otherRowNode.parent) {
            groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;
          }
        }
      });
      iterateObject(groupsToRefresh, function(key, group) {
        var selected = group.calculateSelectedFromChildren();
        group.selectThisNode(selected === null ? false : selected, void 0, source);
      });
      return updatedCount;
    };
    SelectionService2.prototype.onRowSelected = function(event) {
      var rowNode = event.node;
      if (this.groupSelectsChildren && rowNode.group) {
        return;
      }
      if (rowNode.isSelected()) {
        this.selectedNodes[rowNode.id] = rowNode;
      } else {
        this.selectedNodes[rowNode.id] = void 0;
      }
    };
    SelectionService2.prototype.syncInRowNode = function(rowNode, oldNode) {
      this.syncInOldRowNode(rowNode, oldNode);
      this.syncInNewRowNode(rowNode);
    };
    SelectionService2.prototype.syncInOldRowNode = function(rowNode, oldNode) {
      var oldNodeHasDifferentId = exists(oldNode) && rowNode.id !== oldNode.id;
      if (oldNodeHasDifferentId && oldNode) {
        var id = oldNode.id;
        var oldNodeSelected = this.selectedNodes[id] == rowNode;
        if (oldNodeSelected) {
          this.selectedNodes[oldNode.id] = oldNode;
        }
      }
    };
    SelectionService2.prototype.syncInNewRowNode = function(rowNode) {
      if (exists(this.selectedNodes[rowNode.id])) {
        rowNode.setSelectedInitialValue(true);
        this.selectedNodes[rowNode.id] = rowNode;
      } else {
        rowNode.setSelectedInitialValue(false);
      }
    };
    SelectionService2.prototype.reset = function() {
      this.logger.log("reset");
      this.selectedNodes = {};
      this.lastSelectedNode = null;
    };
    SelectionService2.prototype.getBestCostNodeSelection = function() {
      if (this.rowModel.getType() !== "clientSide") {
        return;
      }
      var clientSideRowModel = this.rowModel;
      var topLevelNodes = clientSideRowModel.getTopLevelNodes();
      if (topLevelNodes === null) {
        return;
      }
      var result = [];
      function traverse(nodes) {
        for (var i2 = 0, l2 = nodes.length; i2 < l2; i2++) {
          var node = nodes[i2];
          if (node.isSelected()) {
            result.push(node);
          } else {
            var maybeGroup = node;
            if (maybeGroup.group && maybeGroup.children) {
              traverse(maybeGroup.children);
            }
          }
        }
      }
      traverse(topLevelNodes);
      return result;
    };
    SelectionService2.prototype.setRowModel = function(rowModel) {
      this.rowModel = rowModel;
    };
    SelectionService2.prototype.isEmpty = function() {
      var count = 0;
      iterateObject(this.selectedNodes, function(nodeId, rowNode) {
        if (rowNode) {
          count++;
        }
      });
      return count === 0;
    };
    SelectionService2.prototype.deselectAllRowNodes = function(source, justFiltered) {
      if (justFiltered === void 0) {
        justFiltered = false;
      }
      var callback = function(rowNode) {
        return rowNode.selectThisNode(false, void 0, source);
      };
      var rowModelClientSide = this.rowModel.getType() === "clientSide";
      if (justFiltered) {
        if (!rowModelClientSide) {
          console.error("AG Grid: selecting just filtered only works when gridOptions.rowModelType='clientSide'");
          return;
        }
        var clientSideRowModel = this.rowModel;
        clientSideRowModel.forEachNodeAfterFilter(callback);
      } else {
        iterateObject(this.selectedNodes, function(id, rowNode) {
          if (rowNode) {
            callback(rowNode);
          }
        });
        this.reset();
      }
      if (rowModelClientSide && this.groupSelectsChildren) {
        this.updateGroupsFromChildrenSelections(source);
      }
      var event = {
        type: Events.EVENT_SELECTION_CHANGED,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    SelectionService2.prototype.selectAllRowNodes = function(source, justFiltered) {
      if (justFiltered === void 0) {
        justFiltered = false;
      }
      if (this.rowModel.getType() !== "clientSide") {
        throw new Error("selectAll only available when rowModelType='clientSide', ie not " + this.rowModel.getType());
      }
      var clientSideRowModel = this.rowModel;
      var callback = function(rowNode) {
        return rowNode.selectThisNode(true, void 0, source);
      };
      if (justFiltered) {
        clientSideRowModel.forEachNodeAfterFilter(callback);
      } else {
        clientSideRowModel.forEachNode(callback);
      }
      if (this.rowModel.getType() === "clientSide" && this.groupSelectsChildren) {
        this.updateGroupsFromChildrenSelections(source);
      }
      var event = {
        type: Events.EVENT_SELECTION_CHANGED,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    __decorate120([
      Autowired("rowModel")
    ], SelectionService2.prototype, "rowModel", void 0);
    __decorate120([
      __param6(0, Qualifier("loggerFactory"))
    ], SelectionService2.prototype, "setBeans", null);
    __decorate120([
      PostConstruct
    ], SelectionService2.prototype, "init", null);
    SelectionService2 = __decorate120([
      Bean("selectionService")
    ], SelectionService2);
    return SelectionService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnApi.js
var __decorate121 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ColumnApi = (
  /** @class */
  function() {
    function ColumnApi2() {
    }
    ColumnApi2.prototype.sizeColumnsToFit = function(gridWidth) {
      if (typeof gridWidth === "undefined") {
        console.error("AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)");
      }
      this.columnModel.sizeColumnsToFit(gridWidth, "api");
    };
    ColumnApi2.prototype.setColumnGroupOpened = function(group, newValue) {
      this.columnModel.setColumnGroupOpened(group, newValue, "api");
    };
    ColumnApi2.prototype.getColumnGroup = function(name, instanceId) {
      return this.columnModel.getColumnGroup(name, instanceId);
    };
    ColumnApi2.prototype.getProvidedColumnGroup = function(name) {
      return this.columnModel.getProvidedColumnGroup(name);
    };
    ColumnApi2.prototype.getDisplayNameForColumn = function(column, location) {
      return this.columnModel.getDisplayNameForColumn(column, location) || "";
    };
    ColumnApi2.prototype.getDisplayNameForColumnGroup = function(columnGroup, location) {
      return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || "";
    };
    ColumnApi2.prototype.getColumn = function(key) {
      return this.columnModel.getPrimaryColumn(key);
    };
    ColumnApi2.prototype.getColumns = function() {
      return this.columnModel.getAllPrimaryColumns();
    };
    ColumnApi2.prototype.applyColumnState = function(params) {
      return this.columnModel.applyColumnState(params, "api");
    };
    ColumnApi2.prototype.getColumnState = function() {
      return this.columnModel.getColumnState();
    };
    ColumnApi2.prototype.resetColumnState = function() {
      this.columnModel.resetColumnState("api");
    };
    ColumnApi2.prototype.getColumnGroupState = function() {
      return this.columnModel.getColumnGroupState();
    };
    ColumnApi2.prototype.setColumnGroupState = function(stateItems) {
      this.columnModel.setColumnGroupState(stateItems, "api");
    };
    ColumnApi2.prototype.resetColumnGroupState = function() {
      this.columnModel.resetColumnGroupState("api");
    };
    ColumnApi2.prototype.isPinning = function() {
      return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight();
    };
    ColumnApi2.prototype.isPinningLeft = function() {
      return this.columnModel.isPinningLeft();
    };
    ColumnApi2.prototype.isPinningRight = function() {
      return this.columnModel.isPinningRight();
    };
    ColumnApi2.prototype.getDisplayedColAfter = function(col) {
      return this.columnModel.getDisplayedColAfter(col);
    };
    ColumnApi2.prototype.getDisplayedColBefore = function(col) {
      return this.columnModel.getDisplayedColBefore(col);
    };
    ColumnApi2.prototype.setColumnVisible = function(key, visible) {
      this.columnModel.setColumnVisible(key, visible, "api");
    };
    ColumnApi2.prototype.setColumnsVisible = function(keys3, visible) {
      this.columnModel.setColumnsVisible(keys3, visible, "api");
    };
    ColumnApi2.prototype.setColumnPinned = function(key, pinned) {
      this.columnModel.setColumnPinned(key, pinned, "api");
    };
    ColumnApi2.prototype.setColumnsPinned = function(keys3, pinned) {
      this.columnModel.setColumnsPinned(keys3, pinned, "api");
    };
    ColumnApi2.prototype.getAllGridColumns = function() {
      return this.columnModel.getAllGridColumns();
    };
    ColumnApi2.prototype.getDisplayedLeftColumns = function() {
      return this.columnModel.getDisplayedLeftColumns();
    };
    ColumnApi2.prototype.getDisplayedCenterColumns = function() {
      return this.columnModel.getDisplayedCenterColumns();
    };
    ColumnApi2.prototype.getDisplayedRightColumns = function() {
      return this.columnModel.getDisplayedRightColumns();
    };
    ColumnApi2.prototype.getAllDisplayedColumns = function() {
      return this.columnModel.getAllDisplayedColumns();
    };
    ColumnApi2.prototype.getAllDisplayedVirtualColumns = function() {
      return this.columnModel.getViewportColumns();
    };
    ColumnApi2.prototype.moveColumn = function(key, toIndex) {
      this.columnModel.moveColumn(key, toIndex, "api");
    };
    ColumnApi2.prototype.moveColumnByIndex = function(fromIndex, toIndex) {
      this.columnModel.moveColumnByIndex(fromIndex, toIndex, "api");
    };
    ColumnApi2.prototype.moveColumns = function(columnsToMoveKeys, toIndex) {
      this.columnModel.moveColumns(columnsToMoveKeys, toIndex, "api");
    };
    ColumnApi2.prototype.moveRowGroupColumn = function(fromIndex, toIndex) {
      this.columnModel.moveRowGroupColumn(fromIndex, toIndex);
    };
    ColumnApi2.prototype.setColumnAggFunc = function(key, aggFunc) {
      this.columnModel.setColumnAggFunc(key, aggFunc);
    };
    ColumnApi2.prototype.setColumnWidth = function(key, newWidth, finished, source) {
      if (finished === void 0) {
        finished = true;
      }
      this.columnModel.setColumnWidths([{ key, newWidth }], false, finished, source);
    };
    ColumnApi2.prototype.setColumnWidths = function(columnWidths, finished, source) {
      if (finished === void 0) {
        finished = true;
      }
      this.columnModel.setColumnWidths(columnWidths, false, finished, source);
    };
    ColumnApi2.prototype.setPivotMode = function(pivotMode) {
      this.columnModel.setPivotMode(pivotMode);
    };
    ColumnApi2.prototype.isPivotMode = function() {
      return this.columnModel.isPivotMode();
    };
    ColumnApi2.prototype.getPivotResultColumn = function(pivotKeys, valueColKey) {
      return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey);
    };
    ColumnApi2.prototype.setValueColumns = function(colKeys) {
      this.columnModel.setValueColumns(colKeys, "api");
    };
    ColumnApi2.prototype.getValueColumns = function() {
      return this.columnModel.getValueColumns();
    };
    ColumnApi2.prototype.removeValueColumn = function(colKey) {
      this.columnModel.removeValueColumn(colKey, "api");
    };
    ColumnApi2.prototype.removeValueColumns = function(colKeys) {
      this.columnModel.removeValueColumns(colKeys, "api");
    };
    ColumnApi2.prototype.addValueColumn = function(colKey) {
      this.columnModel.addValueColumn(colKey, "api");
    };
    ColumnApi2.prototype.addValueColumns = function(colKeys) {
      this.columnModel.addValueColumns(colKeys, "api");
    };
    ColumnApi2.prototype.setRowGroupColumns = function(colKeys) {
      this.columnModel.setRowGroupColumns(colKeys, "api");
    };
    ColumnApi2.prototype.removeRowGroupColumn = function(colKey) {
      this.columnModel.removeRowGroupColumn(colKey, "api");
    };
    ColumnApi2.prototype.removeRowGroupColumns = function(colKeys) {
      this.columnModel.removeRowGroupColumns(colKeys, "api");
    };
    ColumnApi2.prototype.addRowGroupColumn = function(colKey) {
      this.columnModel.addRowGroupColumn(colKey, "api");
    };
    ColumnApi2.prototype.addRowGroupColumns = function(colKeys) {
      this.columnModel.addRowGroupColumns(colKeys, "api");
    };
    ColumnApi2.prototype.getRowGroupColumns = function() {
      return this.columnModel.getRowGroupColumns();
    };
    ColumnApi2.prototype.setPivotColumns = function(colKeys) {
      this.columnModel.setPivotColumns(colKeys, "api");
    };
    ColumnApi2.prototype.removePivotColumn = function(colKey) {
      this.columnModel.removePivotColumn(colKey, "api");
    };
    ColumnApi2.prototype.removePivotColumns = function(colKeys) {
      this.columnModel.removePivotColumns(colKeys, "api");
    };
    ColumnApi2.prototype.addPivotColumn = function(colKey) {
      this.columnModel.addPivotColumn(colKey, "api");
    };
    ColumnApi2.prototype.addPivotColumns = function(colKeys) {
      this.columnModel.addPivotColumns(colKeys, "api");
    };
    ColumnApi2.prototype.getPivotColumns = function() {
      return this.columnModel.getPivotColumns();
    };
    ColumnApi2.prototype.getLeftDisplayedColumnGroups = function() {
      return this.columnModel.getDisplayedTreeLeft();
    };
    ColumnApi2.prototype.getCenterDisplayedColumnGroups = function() {
      return this.columnModel.getDisplayedTreeCentre();
    };
    ColumnApi2.prototype.getRightDisplayedColumnGroups = function() {
      return this.columnModel.getDisplayedTreeRight();
    };
    ColumnApi2.prototype.getAllDisplayedColumnGroups = function() {
      return this.columnModel.getAllDisplayedTrees();
    };
    ColumnApi2.prototype.autoSizeColumn = function(key, skipHeader) {
      return this.columnModel.autoSizeColumn(key, skipHeader, "api");
    };
    ColumnApi2.prototype.autoSizeColumns = function(keys3, skipHeader) {
      this.columnModel.autoSizeColumns({ columns: keys3, skipHeader });
    };
    ColumnApi2.prototype.autoSizeAllColumns = function(skipHeader) {
      this.columnModel.autoSizeAllColumns(skipHeader, "api");
    };
    ColumnApi2.prototype.setPivotResultColumns = function(colDefs) {
      this.columnModel.setSecondaryColumns(colDefs, "api");
    };
    ColumnApi2.prototype.getPivotResultColumns = function() {
      return this.columnModel.getSecondaryColumns();
    };
    ColumnApi2.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function() {
      setTimeout(_2.removeAllReferences.bind(window, this, "Column API"), 100);
    };
    ColumnApi2.prototype.getAllColumns = function() {
      logDeprecation("28.0", "getAllColumns", "getColumns");
      return this.getColumns();
    };
    ColumnApi2.prototype.getOriginalColumnGroup = function(name) {
      logDeprecation("27.0", "getOriginalColumnGroup", "getProvidedColumnGroup");
      return this.columnModel.getProvidedColumnGroup(name);
    };
    ColumnApi2.prototype.getPrimaryColumns = function() {
      logDeprecation("28.0", "getPrimaryColumns", "getColumns");
      return this.getColumns();
    };
    ColumnApi2.prototype.getSecondaryColumns = function() {
      logDeprecation("28.0", "getSecondaryColumns", "getPivotResultColumns");
      return this.getPivotResultColumns();
    };
    ColumnApi2.prototype.setSecondaryColumns = function(colDefs) {
      logDeprecation("28.0", "setSecondaryColumns", "setPivotResultColumns");
      this.setPivotResultColumns(colDefs);
    };
    ColumnApi2.prototype.getSecondaryPivotColumn = function(pivotKeys, valueColKey) {
      logDeprecation("28.0", "getSecondaryPivotColumn", "getPivotResultColumn");
      return this.getPivotResultColumn(pivotKeys, valueColKey);
    };
    __decorate121([
      Autowired("columnModel")
    ], ColumnApi2.prototype, "columnModel", void 0);
    __decorate121([
      PreDestroy
    ], ColumnApi2.prototype, "cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid", null);
    ColumnApi2 = __decorate121([
      Bean("columnApi")
    ], ColumnApi2);
    return ColumnApi2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/valueService/valueService.js
var __extends138 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate122 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ValueService = (
  /** @class */
  function(_super) {
    __extends138(ValueService2, _super);
    function ValueService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.initialised = false;
      return _this;
    }
    ValueService2.prototype.init = function() {
      var _this = this;
      this.cellExpressions = this.gridOptionsService.is("enableCellExpressions");
      this.initialised = true;
      this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, function(event) {
        return _this.callColumnCellValueChangedHandler(event);
      }, this.gridOptionsService.useAsyncEvents());
    };
    ValueService2.prototype.getValue = function(column, rowNode, forFilter, ignoreAggData) {
      if (forFilter === void 0) {
        forFilter = false;
      }
      if (ignoreAggData === void 0) {
        ignoreAggData = false;
      }
      if (!this.initialised) {
        this.init();
      }
      if (!rowNode) {
        return;
      }
      var colDef = column.getColDef();
      var field = colDef.field;
      var colId = column.getId();
      var data = rowNode.data;
      var result;
      var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== void 0;
      var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== void 0;
      if (forFilter && colDef.filterValueGetter) {
        result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);
      } else if (this.gridOptionsService.isTreeData() && aggDataExists) {
        result = rowNode.aggData[colId];
      } else if (this.gridOptionsService.isTreeData() && colDef.valueGetter) {
        result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);
      } else if (this.gridOptionsService.isTreeData() && (field && data)) {
        result = getValueUsingField(data, field, column.isFieldContainsDots());
      } else if (groupDataExists) {
        result = rowNode.groupData[colId];
      } else if (aggDataExists) {
        result = rowNode.aggData[colId];
      } else if (colDef.valueGetter) {
        result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);
      } else if (field && data) {
        result = getValueUsingField(data, field, column.isFieldContainsDots());
      }
      if (this.cellExpressions && typeof result === "string" && result.indexOf("=") === 0) {
        var cellValueGetter = result.substring(1);
        result = this.executeValueGetter(cellValueGetter, data, column, rowNode);
      }
      if (result == null) {
        var openedGroup = this.getOpenedGroup(rowNode, column);
        if (openedGroup != null) {
          return openedGroup;
        }
      }
      return result;
    };
    ValueService2.prototype.getOpenedGroup = function(rowNode, column) {
      if (!this.gridOptionsService.is("showOpenedGroup")) {
        return;
      }
      var colDef = column.getColDef();
      if (!colDef.showRowGroup) {
        return;
      }
      var showRowGroup = column.getColDef().showRowGroup;
      var pointer = rowNode.parent;
      while (pointer != null) {
        if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getId())) {
          return pointer.key;
        }
        pointer = pointer.parent;
      }
      return void 0;
    };
    ValueService2.prototype.setValue = function(rowNode, colKey, newValue, eventSource) {
      var column = this.columnModel.getPrimaryColumn(colKey);
      if (!rowNode || !column) {
        return false;
      }
      if (missing(rowNode.data)) {
        rowNode.data = {};
      }
      var _a47 = column.getColDef(), field = _a47.field, valueSetter = _a47.valueSetter;
      if (missing(field) && missing(valueSetter)) {
        console.warn("AG Grid: you need either field or valueSetter set on colDef for editing to work");
        return false;
      }
      var params = {
        node: rowNode,
        data: rowNode.data,
        oldValue: this.getValue(column, rowNode),
        newValue,
        colDef: column.getColDef(),
        column,
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context")
      };
      params.newValue = newValue;
      var valueWasDifferent;
      if (exists(valueSetter)) {
        valueWasDifferent = this.expressionService.evaluate(valueSetter, params);
      } else {
        valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());
      }
      if (valueWasDifferent === void 0) {
        valueWasDifferent = true;
      }
      if (!valueWasDifferent) {
        return false;
      }
      rowNode.resetQuickFilterAggregateText();
      this.valueCache.onDataChanged();
      params.newValue = this.getValue(column, rowNode);
      var event = {
        type: Events.EVENT_CELL_VALUE_CHANGED,
        event: null,
        rowIndex: rowNode.rowIndex,
        rowPinned: rowNode.rowPinned,
        column: params.column,
        api: params.api,
        columnApi: params.columnApi,
        colDef: params.colDef,
        context: params.context,
        data: rowNode.data,
        node: rowNode,
        oldValue: params.oldValue,
        newValue: params.newValue,
        value: params.newValue,
        source: eventSource
      };
      this.eventService.dispatchEvent(event);
      return true;
    };
    ValueService2.prototype.callColumnCellValueChangedHandler = function(event) {
      var onCellValueChanged = event.colDef.onCellValueChanged;
      if (typeof onCellValueChanged === "function") {
        onCellValueChanged({
          node: event.node,
          data: event.data,
          oldValue: event.oldValue,
          newValue: event.newValue,
          colDef: event.colDef,
          column: event.column,
          api: event.api,
          columnApi: event.columnApi,
          context: event.context
        });
      }
    };
    ValueService2.prototype.setValueUsingField = function(data, field, newValue, isFieldContainsDots) {
      if (!field) {
        return false;
      }
      var valuesAreSame = false;
      if (!isFieldContainsDots) {
        valuesAreSame = data[field] == newValue;
        if (!valuesAreSame) {
          data[field] = newValue;
        }
      } else {
        var fieldPieces = field.split(".");
        var currentObject = data;
        while (fieldPieces.length > 0 && currentObject) {
          var fieldPiece = fieldPieces.shift();
          if (fieldPieces.length === 0) {
            valuesAreSame = currentObject[fieldPiece] == newValue;
            if (!valuesAreSame) {
              currentObject[fieldPiece] = newValue;
            }
          } else {
            currentObject = currentObject[fieldPiece];
          }
        }
      }
      return !valuesAreSame;
    };
    ValueService2.prototype.executeFilterValueGetter = function(valueGetter, data, column, rowNode) {
      var params = {
        data,
        node: rowNode,
        column,
        colDef: column.getColDef(),
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context"),
        getValue: this.getValueCallback.bind(this, rowNode)
      };
      return this.expressionService.evaluate(valueGetter, params);
    };
    ValueService2.prototype.executeValueGetter = function(valueGetter, data, column, rowNode) {
      var colId = column.getId();
      var valueFromCache = this.valueCache.getValue(rowNode, colId);
      if (valueFromCache !== void 0) {
        return valueFromCache;
      }
      var params = {
        data,
        node: rowNode,
        column,
        colDef: column.getColDef(),
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context"),
        getValue: this.getValueCallback.bind(this, rowNode)
      };
      var result = this.expressionService.evaluate(valueGetter, params);
      this.valueCache.setValue(rowNode, colId, result);
      return result;
    };
    ValueService2.prototype.getValueCallback = function(node, field) {
      var otherColumn = this.columnModel.getPrimaryColumn(field);
      if (otherColumn) {
        return this.getValue(otherColumn, node);
      }
      return null;
    };
    ValueService2.prototype.getKeyForNode = function(col, rowNode) {
      var value = this.getValue(col, rowNode);
      var keyCreator = col.getColDef().keyCreator;
      var result = value;
      if (keyCreator) {
        var keyParams = {
          value,
          colDef: col.getColDef(),
          column: col,
          node: rowNode,
          data: rowNode.data,
          api: this.gridOptionsService.get("api"),
          columnApi: this.gridOptionsService.get("columnApi"),
          context: this.gridOptionsService.get("context")
        };
        result = keyCreator(keyParams);
      }
      if (typeof result === "string" || result == null) {
        return result;
      }
      result = String(result);
      if (result === "[object Object]") {
        doOnce(function() {
          console.warn("AG Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se AG Grid docs) or b) to toString() on the object to return a key");
        }, "getKeyForNode - warn about [object,object]");
      }
      return result;
    };
    __decorate122([
      Autowired("expressionService")
    ], ValueService2.prototype, "expressionService", void 0);
    __decorate122([
      Autowired("columnModel")
    ], ValueService2.prototype, "columnModel", void 0);
    __decorate122([
      Autowired("valueCache")
    ], ValueService2.prototype, "valueCache", void 0);
    __decorate122([
      PostConstruct
    ], ValueService2.prototype, "init", null);
    ValueService2 = __decorate122([
      Bean("valueService")
    ], ValueService2);
    return ValueService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/valueService/expressionService.js
var __extends139 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate123 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param7 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var ExpressionService = (
  /** @class */
  function(_super) {
    __extends139(ExpressionService2, _super);
    function ExpressionService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.expressionToFunctionCache = {};
      return _this;
    }
    ExpressionService2.prototype.setBeans = function(loggerFactory) {
      this.logger = loggerFactory.create("ExpressionService");
    };
    ExpressionService2.prototype.evaluate = function(expressionOrFunc, params) {
      if (typeof expressionOrFunc === "function") {
        var func = expressionOrFunc;
        return func(params);
      } else if (typeof expressionOrFunc === "string") {
        var expression = expressionOrFunc;
        return this.evaluateExpression(expression, params);
      } else {
        console.error("AG Grid: value should be either a string or a function", expressionOrFunc);
      }
    };
    ExpressionService2.prototype.evaluateExpression = function(expression, params) {
      try {
        var javaScriptFunction = this.createExpressionFunction(expression);
        var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);
        return result;
      } catch (e2) {
        console.log("Processing of the expression failed");
        console.log("Expression = " + expression);
        console.log("Params =", params);
        console.log("Exception = " + e2);
        return null;
      }
    };
    ExpressionService2.prototype.createExpressionFunction = function(expression) {
      if (this.expressionToFunctionCache[expression]) {
        return this.expressionToFunctionCache[expression];
      }
      var functionBody = this.createFunctionBody(expression);
      var theFunction = new Function("x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup", functionBody);
      this.expressionToFunctionCache[expression] = theFunction;
      return theFunction;
    };
    ExpressionService2.prototype.createFunctionBody = function(expression) {
      if (expression.indexOf("return") >= 0) {
        return expression;
      } else {
        return "return " + expression + ";";
      }
    };
    __decorate123([
      __param7(0, Qualifier("loggerFactory"))
    ], ExpressionService2.prototype, "setBeans", null);
    ExpressionService2 = __decorate123([
      Bean("expressionService")
    ], ExpressionService2);
    return ExpressionService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/templateService.js
var __extends140 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate124 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var TemplateService = (
  /** @class */
  function(_super) {
    __extends140(TemplateService2, _super);
    function TemplateService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.templateCache = {};
      _this.waitingCallbacks = {};
      return _this;
    }
    TemplateService2.prototype.getTemplate = function(url, callback) {
      var templateFromCache = this.templateCache[url];
      if (templateFromCache) {
        return templateFromCache;
      }
      var callbackList = this.waitingCallbacks[url];
      var that = this;
      if (!callbackList) {
        callbackList = [];
        this.waitingCallbacks[url] = callbackList;
        var client = new XMLHttpRequest();
        client.onload = function() {
          that.handleHttpResult(this, url);
        };
        client.open("GET", url);
        client.send();
      }
      if (callback) {
        callbackList.push(callback);
      }
      return null;
    };
    TemplateService2.prototype.handleHttpResult = function(httpResult, url) {
      if (httpResult.status !== 200 || httpResult.response === null) {
        console.warn("AG Grid: Unable to get template error " + httpResult.status + " - " + url);
        return;
      }
      this.templateCache[url] = httpResult.response || httpResult.responseText;
      var callbacks = this.waitingCallbacks[url];
      for (var i2 = 0; i2 < callbacks.length; i2++) {
        var callback = callbacks[i2];
        callback();
      }
    };
    TemplateService2 = __decorate124([
      Bean("templateService")
    ], TemplateService2);
    return TemplateService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/logger.js
var __extends141 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate125 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param8 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var LoggerFactory = (
  /** @class */
  function(_super) {
    __extends141(LoggerFactory2, _super);
    function LoggerFactory2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    LoggerFactory2.prototype.setBeans = function(gridOptionsService) {
      this.logging = gridOptionsService.is("debug");
    };
    LoggerFactory2.prototype.create = function(name) {
      return new Logger(name, this.isLogging.bind(this));
    };
    LoggerFactory2.prototype.isLogging = function() {
      return this.logging;
    };
    __decorate125([
      __param8(0, Qualifier("gridOptionsService"))
    ], LoggerFactory2.prototype, "setBeans", null);
    LoggerFactory2 = __decorate125([
      Bean("loggerFactory")
    ], LoggerFactory2);
    return LoggerFactory2;
  }(BeanStub)
);
var Logger = (
  /** @class */
  function() {
    function Logger2(name, isLoggingFunc) {
      this.name = name;
      this.isLoggingFunc = isLoggingFunc;
    }
    Logger2.prototype.isLogging = function() {
      return this.isLoggingFunc();
    };
    Logger2.prototype.log = function(message) {
      if (this.isLoggingFunc()) {
        console.log("AG Grid." + this.name + ": " + message);
      }
    };
    return Logger2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridComp/gridCtrl.js
var __extends142 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate126 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GridCtrl = (
  /** @class */
  function(_super) {
    __extends142(GridCtrl2, _super);
    function GridCtrl2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    GridCtrl2.prototype.setComp = function(view, eGridDiv, eGui) {
      var _this = this;
      this.view = view;
      this.eGridHostDiv = eGridDiv;
      this.eGui = eGui;
      this.dragAndDropService.addDropTarget({
        getContainer: function() {
          return _this.eGui;
        },
        isInterestedIn: function(type2) {
          return type2 === DragSourceType.HeaderCell || type2 === DragSourceType.ToolPanel;
        },
        getIconName: function() {
          return DragAndDropService.ICON_NOT_ALLOWED;
        }
      });
      this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);
      this.createManagedBean(new LayoutFeature(this.view));
      this.addRtlSupport();
      this.addManagedListener(this, Events.EVENT_KEYBOARD_FOCUS, function() {
        _this.view.addOrRemoveKeyboardFocusClass(true);
      });
      this.addManagedListener(this, Events.EVENT_MOUSE_FOCUS, function() {
        _this.view.addOrRemoveKeyboardFocusClass(false);
      });
      var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));
      this.addDestroyFunc(function() {
        return unsubscribeFromResize();
      });
      this.ctrlsService.registerGridCtrl(this);
    };
    GridCtrl2.prototype.isDetailGrid = function() {
      var _a47;
      var el = this.focusService.findTabbableParent(this.getGui());
      return ((_a47 = el === null || el === void 0 ? void 0 : el.getAttribute("row-id")) === null || _a47 === void 0 ? void 0 : _a47.startsWith("detail")) || false;
    };
    GridCtrl2.prototype.showDropZones = function() {
      return ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);
    };
    GridCtrl2.prototype.showSideBar = function() {
      return ModuleRegistry.isRegistered(ModuleNames.SideBarModule);
    };
    GridCtrl2.prototype.showStatusBar = function() {
      return ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);
    };
    GridCtrl2.prototype.showWatermark = function() {
      return ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);
    };
    GridCtrl2.prototype.onGridSizeChanged = function() {
      var event = {
        type: Events.EVENT_GRID_SIZE_CHANGED,
        clientWidth: this.eGridHostDiv.clientWidth,
        clientHeight: this.eGridHostDiv.clientHeight
      };
      this.eventService.dispatchEvent(event);
    };
    GridCtrl2.prototype.addRtlSupport = function() {
      var cssClass = this.gridOptionsService.is("enableRtl") ? "ag-rtl" : "ag-ltr";
      this.view.setRtlClass(cssClass);
    };
    GridCtrl2.prototype.destroyGridUi = function() {
      this.view.destroyGridUi();
    };
    GridCtrl2.prototype.getGui = function() {
      return this.eGui;
    };
    GridCtrl2.prototype.setResizeCursor = function(on2) {
      this.view.setCursor(on2 ? "ew-resize" : null);
    };
    GridCtrl2.prototype.disableUserSelect = function(on2) {
      this.view.setUserSelect(on2 ? "none" : null);
    };
    GridCtrl2.prototype.focusNextInnerContainer = function(backwards) {
      var eDocument = this.gridOptionsService.getDocument();
      var focusableContainers = this.view.getFocusableContainers();
      var idxWithFocus = focusableContainers.findIndex(function(container) {
        return container.contains(eDocument.activeElement);
      });
      var nextIdx = idxWithFocus + (backwards ? -1 : 1);
      if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {
        return false;
      }
      return this.focusService.focusInto(focusableContainers[nextIdx]);
    };
    GridCtrl2.prototype.focusInnerElement = function(fromBottom) {
      var focusableContainers = this.view.getFocusableContainers();
      if (fromBottom) {
        if (focusableContainers.length > 1) {
          return this.focusService.focusInto(last(focusableContainers), true);
        }
        var lastColumn = last(this.columnModel.getAllDisplayedColumns());
        if (this.focusService.focusGridView(lastColumn, true)) {
          return true;
        }
      }
      return this.focusService.focusFirstHeader();
    };
    GridCtrl2.prototype.forceFocusOutOfContainer = function(up) {
      if (up === void 0) {
        up = false;
      }
      this.view.forceFocusOutOfContainer(up);
    };
    __decorate126([
      Autowired("focusService")
    ], GridCtrl2.prototype, "focusService", void 0);
    __decorate126([
      Autowired("resizeObserverService")
    ], GridCtrl2.prototype, "resizeObserverService", void 0);
    __decorate126([
      Autowired("columnModel")
    ], GridCtrl2.prototype, "columnModel", void 0);
    __decorate126([
      Autowired("ctrlsService")
    ], GridCtrl2.prototype, "ctrlsService", void 0);
    __decorate126([
      Autowired("mouseEventService")
    ], GridCtrl2.prototype, "mouseEventService", void 0);
    __decorate126([
      Autowired("dragAndDropService")
    ], GridCtrl2.prototype, "dragAndDropService", void 0);
    return GridCtrl2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridComp/gridComp.js
var __extends143 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate127 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var GridComp = (
  /** @class */
  function(_super) {
    __extends143(GridComp2, _super);
    function GridComp2(eGridDiv) {
      var _this = _super.call(this) || this;
      _this.eGridDiv = eGridDiv;
      return _this;
    }
    GridComp2.prototype.postConstruct = function() {
      var _this = this;
      this.logger = this.loggerFactory.create("GridComp");
      var compProxy = {
        destroyGridUi: function() {
          return _this.destroyBean(_this);
        },
        setRtlClass: function(cssClass) {
          return _this.addCssClass(cssClass);
        },
        addOrRemoveKeyboardFocusClass: function(addOrRemove) {
          return _this.addOrRemoveCssClass(FocusService.AG_KEYBOARD_FOCUS, addOrRemove);
        },
        forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),
        updateLayoutClasses: this.updateLayoutClasses.bind(this),
        getFocusableContainers: this.getFocusableContainers.bind(this),
        setUserSelect: function(value) {
          _this.getGui().style.userSelect = value != null ? value : "";
          _this.getGui().style.webkitUserSelect = value != null ? value : "";
        },
        setCursor: function(value) {
          _this.getGui().style.cursor = value != null ? value : "";
        }
      };
      this.ctrl = this.createManagedBean(new GridCtrl());
      var template = this.createTemplate();
      this.setTemplate(template);
      this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());
      this.insertGridIntoDom();
      this.initialiseTabGuard({
        // we want to override the default behaviour to do nothing for onTabKeyDown
        onTabKeyDown: function() {
          return void 0;
        },
        focusInnerElement: function(fromBottom) {
          return _this.ctrl.focusInnerElement(fromBottom);
        }
      });
    };
    GridComp2.prototype.insertGridIntoDom = function() {
      var _this = this;
      var eGui = this.getGui();
      this.eGridDiv.appendChild(eGui);
      this.addDestroyFunc(function() {
        _this.eGridDiv.removeChild(eGui);
        _this.logger.log("Grid removed from DOM");
      });
    };
    GridComp2.prototype.updateLayoutClasses = function(cssClass, params) {
      var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;
      eRootWrapperBodyClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);
      eRootWrapperBodyClassList.toggle(LayoutCssClasses.NORMAL, params.normal);
      eRootWrapperBodyClassList.toggle(LayoutCssClasses.PRINT, params.print);
      this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);
      this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);
      this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);
    };
    GridComp2.prototype.createTemplate = function() {
      var dropZones = this.ctrl.showDropZones() ? "<ag-grid-header-drop-zones></ag-grid-header-drop-zones>" : "";
      var sideBar = this.ctrl.showSideBar() ? '<ag-side-bar ref="sideBar"></ag-side-bar>' : "";
      var statusBar = this.ctrl.showStatusBar() ? '<ag-status-bar ref="statusBar"></ag-status-bar>' : "";
      var watermark = this.ctrl.showWatermark() ? "<ag-watermark></ag-watermark>" : "";
      var template = (
        /* html */
        '<div class="ag-root-wrapper" role="presentation">\n                ' + dropZones + '\n                <div class="ag-root-wrapper-body" ref="rootWrapperBody" role="presentation">\n                    <ag-grid-body ref="gridBody"></ag-grid-body>\n                    ' + sideBar + "\n                </div>\n                " + statusBar + "\n                <ag-pagination></ag-pagination>\n                " + watermark + "\n            </div>"
      );
      return template;
    };
    GridComp2.prototype.getFocusableElement = function() {
      return this.eRootWrapperBody;
    };
    GridComp2.prototype.getFocusableContainers = function() {
      var focusableContainers = [
        this.gridBodyComp.getGui()
      ];
      if (this.sideBarComp) {
        focusableContainers.push(this.sideBarComp.getGui());
      }
      return focusableContainers.filter(function(el) {
        return isVisible(el);
      });
    };
    __decorate127([
      Autowired("loggerFactory")
    ], GridComp2.prototype, "loggerFactory", void 0);
    __decorate127([
      RefSelector("gridBody")
    ], GridComp2.prototype, "gridBodyComp", void 0);
    __decorate127([
      RefSelector("sideBar")
    ], GridComp2.prototype, "sideBarComp", void 0);
    __decorate127([
      RefSelector("rootWrapperBody")
    ], GridComp2.prototype, "eRootWrapperBody", void 0);
    __decorate127([
      PostConstruct
    ], GridComp2.prototype, "postConstruct", null);
    return GridComp2;
  }(TabGuardComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/sortController.js
var __extends144 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate128 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read21 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread17 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read21(arguments[i2]));
  return ar;
};
var SortController = (
  /** @class */
  function(_super) {
    __extends144(SortController2, _super);
    function SortController2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SortController_1 = SortController2;
    SortController2.prototype.progressSort = function(column, multiSort, source) {
      var nextDirection = this.getNextSortDirection(column);
      this.setSortForColumn(column, nextDirection, multiSort, source);
    };
    SortController2.prototype.setSortForColumn = function(column, sort, multiSort, source) {
      if (sort !== "asc" && sort !== "desc") {
        sort = null;
      }
      var isColumnsSortingCoupledToGroup = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      var columnsToUpdate = [column];
      if (isColumnsSortingCoupledToGroup) {
        if (column.getColDef().showRowGroup) {
          var rowGroupColumns = this.columnModel.getSourceColumnsForGroupColumn(column);
          var sortableRowGroupColumns = rowGroupColumns === null || rowGroupColumns === void 0 ? void 0 : rowGroupColumns.filter(function(col) {
            return col.getColDef().sortable;
          });
          if (sortableRowGroupColumns) {
            columnsToUpdate = __spread17([column], sortableRowGroupColumns);
          }
        }
      }
      columnsToUpdate.forEach(function(col) {
        return col.setSort(sort, source);
      });
      var doingMultiSort = (multiSort || this.gridOptionsService.is("alwaysMultiSort")) && !this.gridOptionsService.is("suppressMultiSort");
      if (!doingMultiSort) {
        this.clearSortBarTheseColumns(columnsToUpdate, source);
      }
      this.updateSortIndex(column);
      this.dispatchSortChangedEvents(source);
    };
    SortController2.prototype.updateSortIndex = function(lastColToChange) {
      var isCoupled = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      var groupParent = this.columnModel.getGroupDisplayColumnForGroup(lastColToChange.getId());
      var lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;
      var allSortedCols = this.getIndexableColumnsOrdered();
      this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function(col) {
        return col.setSortIndex(null);
      });
      var allSortedColsWithoutChanges = allSortedCols.filter(function(col) {
        return col !== lastSortIndexCol;
      });
      var sortedColsWithIndices = !!lastSortIndexCol.getSort() ? __spread17(allSortedColsWithoutChanges, [lastSortIndexCol]) : allSortedColsWithoutChanges;
      sortedColsWithIndices.forEach(function(col, idx) {
        return col.setSortIndex(idx);
      });
    };
    SortController2.prototype.onSortChanged = function(source) {
      this.dispatchSortChangedEvents(source);
    };
    SortController2.prototype.isSortActive = function() {
      var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
      var sortedCols = allCols.filter(function(column) {
        return !!column.getSort();
      });
      return sortedCols && sortedCols.length > 0;
    };
    SortController2.prototype.dispatchSortChangedEvents = function(source) {
      var event = {
        type: Events.EVENT_SORT_CHANGED,
        source
      };
      this.eventService.dispatchEvent(event);
    };
    SortController2.prototype.clearSortBarTheseColumns = function(columnsToSkip, source) {
      this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function(columnToClear) {
        if (!columnsToSkip.includes(columnToClear)) {
          columnToClear.setSort(void 0, source);
        }
      });
    };
    SortController2.prototype.getNextSortDirection = function(column) {
      var sortingOrder;
      if (column.getColDef().sortingOrder) {
        sortingOrder = column.getColDef().sortingOrder;
      } else if (this.gridOptionsService.get("sortingOrder")) {
        sortingOrder = this.gridOptionsService.get("sortingOrder");
      } else {
        sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;
      }
      if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {
        console.warn("AG Grid: sortingOrder must be an array with at least one element, currently it's " + sortingOrder);
        return null;
      }
      var currentIndex = sortingOrder.indexOf(column.getSort());
      var notInArray = currentIndex < 0;
      var lastItemInArray = currentIndex == sortingOrder.length - 1;
      var result;
      if (notInArray || lastItemInArray) {
        result = sortingOrder[0];
      } else {
        result = sortingOrder[currentIndex + 1];
      }
      if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {
        console.warn("AG Grid: invalid sort type " + result);
        return null;
      }
      return result;
    };
    SortController2.prototype.getColumnsOrderedForSort = function() {
      var allColumnsIncludingAuto = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
      var allColsIndexes = {};
      allColumnsIncludingAuto.forEach(function(col, index) {
        return allColsIndexes[col.getId()] = index;
      });
      allColumnsIncludingAuto.sort(function(a2, b2) {
        var iA = a2.getSortIndex();
        var iB = b2.getSortIndex();
        if (iA != null && iB != null) {
          return iA - iB;
        } else if (iA == null && iB == null) {
          var posA = allColsIndexes[a2.getId()];
          var posB = allColsIndexes[b2.getId()];
          return posA > posB ? 1 : -1;
        } else if (iB == null) {
          return -1;
        } else {
          return 1;
        }
      });
      return allColumnsIncludingAuto;
    };
    SortController2.prototype.getIndexableColumnsOrdered = function() {
      var _this = this;
      {
      }
      if (!this.gridOptionsService.isColumnsSortingCoupledToGroup()) {
        return this.getColumnsWithSortingOrdered();
      }
      return this.getColumnsOrderedForSort().filter(function(col) {
        if (!!col.getColDef().showRowGroup) {
          if (col.getColDef().field && col.getSort()) {
            return true;
          }
          var sourceCols = _this.columnModel.getSourceColumnsForGroupColumn(col);
          return sourceCols === null || sourceCols === void 0 ? void 0 : sourceCols.some(function(col2) {
            return !!col2.getSort();
          });
        }
        return !!col.getSort();
      });
    };
    SortController2.prototype.getColumnsWithSortingOrdered = function() {
      var orderedColumns = this.getColumnsOrderedForSort();
      return orderedColumns.filter(function(column) {
        return !!column.getSort();
      });
    };
    SortController2.prototype.getSortModel = function() {
      return this.getColumnsWithSortingOrdered().map(function(column) {
        return {
          sort: column.getSort(),
          colId: column.getId()
        };
      });
    };
    SortController2.prototype.getSortOptions = function() {
      return this.getColumnsWithSortingOrdered().map(function(column) {
        return {
          sort: column.getSort(),
          column
        };
      });
    };
    SortController2.prototype.canColumnDisplayMixedSort = function(column) {
      var isColumnSortCouplingActive = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      var isGroupDisplayColumn = !!column.getColDef().showRowGroup;
      return isColumnSortCouplingActive && isGroupDisplayColumn;
    };
    SortController2.prototype.getDisplaySortForColumn = function(column) {
      var linkedColumns = this.columnModel.getSourceColumnsForGroupColumn(column);
      if (!this.canColumnDisplayMixedSort(column) || !(linkedColumns === null || linkedColumns === void 0 ? void 0 : linkedColumns.length)) {
        return column.getSort();
      }
      var columnHasUniqueData = !!column.getColDef().field;
      var sortableColumns = columnHasUniqueData ? __spread17([column], linkedColumns) : linkedColumns;
      var firstSort = sortableColumns[0].getSort();
      var allMatch = sortableColumns.every(function(col) {
        return col.getSort() == firstSort;
      });
      if (!allMatch) {
        return "mixed";
      }
      return firstSort;
    };
    SortController2.prototype.getDisplaySortIndexForColumn = function(column) {
      var _this = this;
      var isColumnSortCouplingActive = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      if (!isColumnSortCouplingActive) {
        return this.getColumnsWithSortingOrdered().indexOf(column);
      }
      var displayColumn = this.columnModel.getGroupDisplayColumnForGroup(column.getId());
      if (displayColumn) {
        if (!!column.getSort()) {
          return this.getDisplaySortIndexForColumn(displayColumn);
        }
        return null;
      }
      var allSortedCols = this.getIndexableColumnsOrdered().filter(function(col) {
        return !_this.columnModel.getGroupDisplayColumnForGroup(col.getId());
      });
      return allSortedCols.indexOf(column);
    };
    var SortController_1;
    SortController2.DEFAULT_SORTING_ORDER = ["asc", "desc", null];
    __decorate128([
      Autowired("columnModel")
    ], SortController2.prototype, "columnModel", void 0);
    SortController2 = SortController_1 = __decorate128([
      Bean("sortController")
    ], SortController2);
    return SortController2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/columnHoverService.js
var __extends145 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate129 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ColumnHoverService = (
  /** @class */
  function(_super) {
    __extends145(ColumnHoverService2, _super);
    function ColumnHoverService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ColumnHoverService2.prototype.setMouseOver = function(columns) {
      this.selectedColumns = columns;
      var event = {
        type: Events.EVENT_COLUMN_HOVER_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnHoverService2.prototype.clearMouseOver = function() {
      this.selectedColumns = null;
      var event = {
        type: Events.EVENT_COLUMN_HOVER_CHANGED
      };
      this.eventService.dispatchEvent(event);
    };
    ColumnHoverService2.prototype.isHovered = function(column) {
      return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;
    };
    ColumnHoverService2 = __decorate129([
      Bean("columnHoverService")
    ], ColumnHoverService2);
    return ColumnHoverService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/columnAnimationService.js
var __extends146 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate130 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ColumnAnimationService = (
  /** @class */
  function(_super) {
    __extends146(ColumnAnimationService2, _super);
    function ColumnAnimationService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.executeNextFuncs = [];
      _this.executeLaterFuncs = [];
      _this.active = false;
      _this.animationThreadCount = 0;
      return _this;
    }
    ColumnAnimationService2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        return _this.gridBodyCtrl = p2.gridBodyCtrl;
      });
    };
    ColumnAnimationService2.prototype.isActive = function() {
      return this.active;
    };
    ColumnAnimationService2.prototype.start = function() {
      if (this.active) {
        return;
      }
      if (this.gridOptionsService.is("suppressColumnMoveAnimation")) {
        return;
      }
      if (this.gridOptionsService.is("enableRtl")) {
        return;
      }
      this.ensureAnimationCssClassPresent();
      this.active = true;
    };
    ColumnAnimationService2.prototype.finish = function() {
      if (!this.active) {
        return;
      }
      this.flush();
      this.active = false;
    };
    ColumnAnimationService2.prototype.executeNextVMTurn = function(func) {
      if (this.active) {
        this.executeNextFuncs.push(func);
      } else {
        func();
      }
    };
    ColumnAnimationService2.prototype.executeLaterVMTurn = function(func) {
      if (this.active) {
        this.executeLaterFuncs.push(func);
      } else {
        func();
      }
    };
    ColumnAnimationService2.prototype.ensureAnimationCssClassPresent = function() {
      var _this = this;
      this.animationThreadCount++;
      var animationThreadCountCopy = this.animationThreadCount;
      this.gridBodyCtrl.setColumnMovingCss(true);
      this.executeLaterFuncs.push(function() {
        if (_this.animationThreadCount === animationThreadCountCopy) {
          _this.gridBodyCtrl.setColumnMovingCss(false);
        }
      });
    };
    ColumnAnimationService2.prototype.flush = function() {
      var nowFuncs = this.executeNextFuncs;
      this.executeNextFuncs = [];
      var waitFuncs = this.executeLaterFuncs;
      this.executeLaterFuncs = [];
      if (nowFuncs.length === 0 && waitFuncs.length === 0) {
        return;
      }
      window.setTimeout(function() {
        return nowFuncs.forEach(function(func) {
          return func();
        });
      }, 0);
      window.setTimeout(function() {
        return waitFuncs.forEach(function(func) {
          return func();
        });
      }, 300);
    };
    __decorate130([
      Autowired("ctrlsService")
    ], ColumnAnimationService2.prototype, "ctrlsService", void 0);
    __decorate130([
      PostConstruct
    ], ColumnAnimationService2.prototype, "postConstruct", null);
    ColumnAnimationService2 = __decorate130([
      Bean("columnAnimationService")
    ], ColumnAnimationService2);
    return ColumnAnimationService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/pagination/paginationAutoPageSizeService.js
var __extends147 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate131 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var PaginationAutoPageSizeService = (
  /** @class */
  function(_super) {
    __extends147(PaginationAutoPageSizeService2, _super);
    function PaginationAutoPageSizeService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    PaginationAutoPageSizeService2.prototype.postConstruct = function() {
      var _this = this;
      this.ctrlsService.whenReady(function(p2) {
        _this.centerRowContainerCon = p2.centerRowContainerCtrl;
        _this.addManagedListener(_this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, _this.onBodyHeightChanged.bind(_this));
        _this.addManagedListener(_this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, _this.onScrollVisibilityChanged.bind(_this));
        _this.checkPageSize();
      });
    };
    PaginationAutoPageSizeService2.prototype.notActive = function() {
      return !this.gridOptionsService.is("paginationAutoPageSize");
    };
    PaginationAutoPageSizeService2.prototype.onScrollVisibilityChanged = function() {
      this.checkPageSize();
    };
    PaginationAutoPageSizeService2.prototype.onBodyHeightChanged = function() {
      this.checkPageSize();
    };
    PaginationAutoPageSizeService2.prototype.checkPageSize = function() {
      if (this.notActive()) {
        return;
      }
      var rowHeight = this.gridOptionsService.getRowHeightAsNumber();
      var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();
      if (bodyHeight > 0) {
        var newPageSize = Math.floor(bodyHeight / rowHeight);
        this.gridOptionsService.set("paginationPageSize", newPageSize);
      }
    };
    __decorate131([
      Autowired("ctrlsService")
    ], PaginationAutoPageSizeService2.prototype, "ctrlsService", void 0);
    __decorate131([
      PostConstruct
    ], PaginationAutoPageSizeService2.prototype, "postConstruct", null);
    PaginationAutoPageSizeService2 = __decorate131([
      Bean("paginationAutoPageSizeService")
    ], PaginationAutoPageSizeService2);
    return PaginationAutoPageSizeService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/valueService/valueCache.js
var __extends148 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate132 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ValueCache = (
  /** @class */
  function(_super) {
    __extends148(ValueCache2, _super);
    function ValueCache2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.cacheVersion = 0;
      return _this;
    }
    ValueCache2.prototype.init = function() {
      this.active = this.gridOptionsService.is("valueCache");
      this.neverExpires = this.gridOptionsService.is("valueCacheNeverExpires");
    };
    ValueCache2.prototype.onDataChanged = function() {
      if (this.neverExpires) {
        return;
      }
      this.expire();
    };
    ValueCache2.prototype.expire = function() {
      this.cacheVersion++;
    };
    ValueCache2.prototype.setValue = function(rowNode, colId, value) {
      if (this.active) {
        if (rowNode.__cacheVersion !== this.cacheVersion) {
          rowNode.__cacheVersion = this.cacheVersion;
          rowNode.__cacheData = {};
        }
        rowNode.__cacheData[colId] = value;
      }
    };
    ValueCache2.prototype.getValue = function(rowNode, colId) {
      if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {
        return void 0;
      }
      return rowNode.__cacheData[colId];
    };
    __decorate132([
      PostConstruct
    ], ValueCache2.prototype, "init", null);
    ValueCache2 = __decorate132([
      Bean("valueCache")
    ], ValueCache2);
    return ValueCache2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/valueService/changeDetectionService.js
var __extends149 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate133 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SOURCE_PASTE = "paste";
var ChangeDetectionService = (
  /** @class */
  function(_super) {
    __extends149(ChangeDetectionService2, _super);
    function ChangeDetectionService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ChangeDetectionService2.prototype.init = function() {
      if (this.rowModel.getType() === "clientSide") {
        this.clientSideRowModel = this.rowModel;
      }
      this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));
    };
    ChangeDetectionService2.prototype.onCellValueChanged = function(event) {
      if (event.source === SOURCE_PASTE) {
        return;
      }
      this.doChangeDetection(event.node, event.column);
    };
    ChangeDetectionService2.prototype.doChangeDetection = function(rowNode, column) {
      if (this.gridOptionsService.is("suppressChangeDetection")) {
        return;
      }
      if (this.clientSideRowModel && !rowNode.isRowPinned()) {
        var onlyChangedColumns = this.gridOptionsService.is("aggregateOnlyChangedColumns");
        var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());
        changedPath.addParentNode(rowNode.parent, [column]);
        this.clientSideRowModel.doAggregate(changedPath);
      }
      this.rowRenderer.refreshCells();
    };
    __decorate133([
      Autowired("rowModel")
    ], ChangeDetectionService2.prototype, "rowModel", void 0);
    __decorate133([
      Autowired("rowRenderer")
    ], ChangeDetectionService2.prototype, "rowRenderer", void 0);
    __decorate133([
      PostConstruct
    ], ChangeDetectionService2.prototype, "init", null);
    ChangeDetectionService2 = __decorate133([
      Bean("changeDetectionService")
    ], ChangeDetectionService2);
    return ChangeDetectionService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/agComponentUtils.js
var __extends150 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate134 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AgComponentUtils = (
  /** @class */
  function(_super) {
    __extends150(AgComponentUtils2, _super);
    function AgComponentUtils2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    AgComponentUtils2.prototype.adaptFunction = function(propertyName, jsCompFunc) {
      var metadata = this.componentMetadataProvider.retrieve(propertyName);
      if (metadata && metadata.functionAdapter) {
        return metadata.functionAdapter(jsCompFunc);
      }
      return null;
    };
    AgComponentUtils2.prototype.adaptCellRendererFunction = function(callback) {
      var Adapter = (
        /** @class */
        function() {
          function Adapter2() {
          }
          Adapter2.prototype.refresh = function(params) {
            return false;
          };
          Adapter2.prototype.getGui = function() {
            return this.eGui;
          };
          Adapter2.prototype.init = function(params) {
            var callbackResult = callback(params);
            var type2 = typeof callbackResult;
            if (type2 === "string" || type2 === "number" || type2 === "boolean") {
              this.eGui = loadTemplate("<span>" + callbackResult + "</span>");
              return;
            }
            if (callbackResult == null) {
              this.eGui = loadTemplate("<span></span>");
              return;
            }
            this.eGui = callbackResult;
          };
          return Adapter2;
        }()
      );
      return Adapter;
    };
    AgComponentUtils2.prototype.doesImplementIComponent = function(candidate) {
      if (!candidate) {
        return false;
      }
      return candidate.prototype && "getGui" in candidate.prototype;
    };
    __decorate134([
      Autowired("componentMetadataProvider")
    ], AgComponentUtils2.prototype, "componentMetadataProvider", void 0);
    AgComponentUtils2 = __decorate134([
      Bean("agComponentUtils")
    ], AgComponentUtils2);
    return AgComponentUtils2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/componentMetadataProvider.js
var __extends151 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate135 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ComponentMetadataProvider = (
  /** @class */
  function(_super) {
    __extends151(ComponentMetadataProvider2, _super);
    function ComponentMetadataProvider2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ComponentMetadataProvider2.prototype.postConstruct = function() {
      this.componentMetaData = {
        dateComponent: {
          mandatoryMethodList: ["getDate", "setDate"],
          optionalMethodList: ["afterGuiAttached", "setInputPlaceholder", "setInputAriaLabel"]
        },
        detailCellRenderer: {
          mandatoryMethodList: [],
          optionalMethodList: ["refresh"],
          functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
        },
        headerComponent: {
          mandatoryMethodList: [],
          optionalMethodList: ["refresh"]
        },
        headerGroupComponent: {
          mandatoryMethodList: [],
          optionalMethodList: []
        },
        loadingCellRenderer: {
          mandatoryMethodList: [],
          optionalMethodList: []
        },
        loadingOverlayComponent: {
          mandatoryMethodList: [],
          optionalMethodList: []
        },
        noRowsOverlayComponent: {
          mandatoryMethodList: [],
          optionalMethodList: []
        },
        floatingFilterComponent: {
          mandatoryMethodList: ["onParentModelChanged"],
          optionalMethodList: ["afterGuiAttached"]
        },
        floatingFilterWrapperComponent: {
          mandatoryMethodList: [],
          optionalMethodList: []
        },
        cellRenderer: {
          mandatoryMethodList: [],
          optionalMethodList: ["refresh", "afterGuiAttached"],
          functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
        },
        cellEditor: {
          mandatoryMethodList: ["getValue"],
          optionalMethodList: ["isPopup", "isCancelBeforeStart", "isCancelAfterEnd", "getPopupPosition", "focusIn", "focusOut", "afterGuiAttached"]
        },
        innerRenderer: {
          mandatoryMethodList: [],
          optionalMethodList: ["afterGuiAttached"],
          functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
        },
        fullWidthCellRenderer: {
          mandatoryMethodList: [],
          optionalMethodList: ["refresh", "afterGuiAttached"],
          functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
        },
        groupRowRenderer: {
          mandatoryMethodList: [],
          optionalMethodList: ["afterGuiAttached"],
          functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
        },
        filter: {
          mandatoryMethodList: ["isFilterActive", "doesFilterPass", "getModel", "setModel"],
          optionalMethodList: ["afterGuiAttached", "onNewRowsLoaded", "getModelAsString", "onFloatingFilterChanged", "onAnyFilterChanged"]
        },
        filterComponent: {
          mandatoryMethodList: ["isFilterActive", "doesFilterPass", "getModel", "setModel"],
          optionalMethodList: ["afterGuiAttached", "onNewRowsLoaded", "getModelAsString", "onFloatingFilterChanged", "onAnyFilterChanged"]
        },
        statusPanel: {
          mandatoryMethodList: [],
          optionalMethodList: ["afterGuiAttached"]
        },
        toolPanel: {
          mandatoryMethodList: [],
          optionalMethodList: ["refresh", "afterGuiAttached"]
        },
        tooltipComponent: {
          mandatoryMethodList: [],
          optionalMethodList: []
        }
      };
    };
    ComponentMetadataProvider2.prototype.retrieve = function(name) {
      return this.componentMetaData[name];
    };
    __decorate135([
      Autowired("agComponentUtils")
    ], ComponentMetadataProvider2.prototype, "agComponentUtils", void 0);
    __decorate135([
      PostConstruct
    ], ComponentMetadataProvider2.prototype, "postConstruct", null);
    ComponentMetadataProvider2 = __decorate135([
      Bean("componentMetadataProvider")
    ], ComponentMetadataProvider2);
    return ComponentMetadataProvider2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/environment.js
var __extends152 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate136 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var DEFAULT_ROW_HEIGHT = 25;
var MIN_COL_WIDTH = 10;
var MAT_GRID_SIZE = 8;
var BASE_GRID_SIZE = 4;
var BALHAM_GRID_SIZE = 4;
var ALPINE_GRID_SIZE = 6;
var HARD_CODED_SIZES = {
  // this item is required for custom themes
  "ag-theme-custom": {
    headerHeight: 25,
    headerCellMinWidth: 24,
    listItemHeight: BASE_GRID_SIZE * 5,
    rowHeight: 25,
    chartMenuPanelWidth: 220
  },
  "ag-theme-material": {
    headerHeight: MAT_GRID_SIZE * 7,
    headerCellMinWidth: 48,
    listItemHeight: MAT_GRID_SIZE * 4,
    rowHeight: MAT_GRID_SIZE * 6,
    chartMenuPanelWidth: 240
  },
  "ag-theme-balham": {
    headerHeight: BALHAM_GRID_SIZE * 8,
    headerCellMinWidth: 24,
    listItemHeight: BALHAM_GRID_SIZE * 6,
    rowHeight: BALHAM_GRID_SIZE * 7,
    chartMenuPanelWidth: 220
  },
  "ag-theme-alpine": {
    headerHeight: ALPINE_GRID_SIZE * 8,
    headerCellMinWidth: 36,
    listItemHeight: ALPINE_GRID_SIZE * 4,
    rowHeight: ALPINE_GRID_SIZE * 7,
    chartMenuPanelWidth: 240
  }
};
var SASS_PROPERTY_BUILDER = {
  headerHeight: ["ag-header-row"],
  headerCellMinWidth: ["ag-header-cell"],
  listItemHeight: ["ag-virtual-list-item"],
  rowHeight: ["ag-row"],
  chartMenuPanelWidth: ["ag-chart-docked-container"]
};
var CALCULATED_SIZES = {};
var Environment = (
  /** @class */
  function(_super) {
    __extends152(Environment2, _super);
    function Environment2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    Environment2.prototype.getSassVariable = function(theme, key) {
      var useTheme = "ag-theme-" + (theme.match("material") ? "material" : theme.match("balham") ? "balham" : theme.match("alpine") ? "alpine" : "custom");
      var defaultValue = HARD_CODED_SIZES[useTheme][key];
      var calculatedValue = 0;
      if (!CALCULATED_SIZES[theme]) {
        CALCULATED_SIZES[theme] = {};
      }
      var size = CALCULATED_SIZES[theme][key];
      if (size != null) {
        return size;
      }
      if (SASS_PROPERTY_BUILDER[key]) {
        var classList = SASS_PROPERTY_BUILDER[key];
        var div = document.createElement("div");
        div.classList.add(theme);
        div.style.position = "absolute";
        var el = classList.reduce(function(prevEl, currentClass) {
          var currentDiv = document.createElement("div");
          currentDiv.style.position = "static";
          currentDiv.classList.add(currentClass);
          prevEl.appendChild(currentDiv);
          return currentDiv;
        }, div);
        if (document.body) {
          document.body.appendChild(div);
          var sizeName = key.toLowerCase().indexOf("height") !== -1 ? "height" : "width";
          calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);
          document.body.removeChild(div);
        }
      }
      CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;
      return CALCULATED_SIZES[theme][key];
    };
    Environment2.prototype.isThemeDark = function() {
      var theme = this.getTheme().theme;
      return !!theme && theme.indexOf("dark") >= 0;
    };
    Environment2.prototype.chartMenuPanelWidth = function() {
      var theme = this.getTheme().themeFamily;
      return this.getSassVariable(theme, "chartMenuPanelWidth");
    };
    Environment2.prototype.getTheme = function() {
      var reg = /\bag-(material|(?:theme-([\w\-]*)))\b/g;
      var el = this.eGridDiv;
      var themeMatch = null;
      var allThemes = [];
      while (el) {
        themeMatch = reg.exec(el.className);
        if (!themeMatch) {
          el = el.parentElement || void 0;
        } else {
          var matched = el.className.match(reg);
          if (matched) {
            allThemes = matched;
          }
          break;
        }
      }
      if (!themeMatch) {
        return { allThemes };
      }
      var theme = themeMatch[0];
      return { theme, el, themeFamily: theme.replace(/-dark$/, ""), allThemes };
    };
    Environment2.prototype.getFromTheme = function(defaultValue, sassVariableName) {
      var theme = this.getTheme().theme;
      if (theme && theme.indexOf("ag-theme") === 0) {
        return this.getSassVariable(theme, sassVariableName);
      }
      return defaultValue;
    };
    Environment2.prototype.getDefaultRowHeight = function() {
      return this.getFromTheme(DEFAULT_ROW_HEIGHT, "rowHeight");
    };
    Environment2.prototype.getListItemHeight = function() {
      return this.getFromTheme(20, "listItemHeight");
    };
    Environment2.prototype.setRowHeightVariable = function(height) {
      var oldRowHeight = this.eGridDiv.style.getPropertyValue("--ag-line-height").trim();
      var newRowHeight = height + "px";
      if (oldRowHeight != newRowHeight) {
        this.eGridDiv.style.setProperty("--ag-line-height", newRowHeight);
      }
    };
    Environment2.prototype.getMinColWidth = function() {
      var measuredMin = this.getFromTheme(null, "headerCellMinWidth");
      return exists(measuredMin) ? Math.max(measuredMin, MIN_COL_WIDTH) : MIN_COL_WIDTH;
    };
    Environment2.prototype.destroy = function() {
      for (var prop in CALCULATED_SIZES)
        delete CALCULATED_SIZES[prop];
      _super.prototype.destroy.call(this);
    };
    __decorate136([
      Autowired("eGridDiv")
    ], Environment2.prototype, "eGridDiv", void 0);
    Environment2 = __decorate136([
      Bean("environment")
    ], Environment2);
    return Environment2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/rowContainerHeightService.js
var __extends153 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate137 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param9 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var RowContainerHeightService = (
  /** @class */
  function(_super) {
    __extends153(RowContainerHeightService2, _super);
    function RowContainerHeightService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.scrollY = 0;
      _this.uiBodyHeight = 0;
      return _this;
    }
    RowContainerHeightService2.prototype.agWire = function(loggerFactory) {
      this.logger = loggerFactory.create("RowContainerHeightService");
    };
    RowContainerHeightService2.prototype.postConstruct = function() {
      this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));
      this.maxDivHeight = getMaxDivHeight();
      this.logger.log("maxDivHeight = " + this.maxDivHeight);
    };
    RowContainerHeightService2.prototype.isStretching = function() {
      return this.stretching;
    };
    RowContainerHeightService2.prototype.getDivStretchOffset = function() {
      return this.divStretchOffset;
    };
    RowContainerHeightService2.prototype.updateOffset = function() {
      if (!this.stretching) {
        return;
      }
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;
      var newBodyHeight = this.getUiBodyHeight();
      var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;
      if (atLeastOneChanged) {
        this.scrollY = newScrollY;
        this.uiBodyHeight = newBodyHeight;
        this.calculateOffset();
      }
    };
    RowContainerHeightService2.prototype.calculateOffset = function() {
      this.setUiContainerHeight(this.maxDivHeight);
      this.pixelsToShave = this.modelHeight - this.uiContainerHeight;
      this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;
      var scrollPercent = this.scrollY / this.maxScrollY;
      var divStretchOffset = scrollPercent * this.pixelsToShave;
      this.logger.log("Div Stretch Offset = " + divStretchOffset + " (" + this.pixelsToShave + " * " + scrollPercent + ")");
      this.setDivStretchOffset(divStretchOffset);
    };
    RowContainerHeightService2.prototype.setUiContainerHeight = function(height) {
      if (height !== this.uiContainerHeight) {
        this.uiContainerHeight = height;
        this.eventService.dispatchEvent({ type: Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED });
      }
    };
    RowContainerHeightService2.prototype.clearOffset = function() {
      this.setUiContainerHeight(this.modelHeight);
      this.pixelsToShave = 0;
      this.setDivStretchOffset(0);
    };
    RowContainerHeightService2.prototype.setDivStretchOffset = function(newOffset) {
      var newOffsetFloor = typeof newOffset === "number" ? Math.floor(newOffset) : null;
      if (this.divStretchOffset === newOffsetFloor) {
        return;
      }
      this.divStretchOffset = newOffsetFloor;
      this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });
    };
    RowContainerHeightService2.prototype.setModelHeight = function(modelHeight) {
      this.modelHeight = modelHeight;
      this.stretching = modelHeight != null && this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;
      if (this.stretching) {
        this.calculateOffset();
      } else {
        this.clearOffset();
      }
    };
    RowContainerHeightService2.prototype.getUiContainerHeight = function() {
      return this.uiContainerHeight;
    };
    RowContainerHeightService2.prototype.getRealPixelPosition = function(modelPixel) {
      return modelPixel - this.divStretchOffset;
    };
    RowContainerHeightService2.prototype.getUiBodyHeight = function() {
      var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
      var pos = gridBodyCon.getScrollFeature().getVScrollPosition();
      return pos.bottom - pos.top;
    };
    RowContainerHeightService2.prototype.getScrollPositionForPixel = function(rowTop) {
      if (this.pixelsToShave <= 0) {
        return rowTop;
      }
      var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();
      var scrollPercent = rowTop / modelMaxScroll;
      var scrollPixel = this.maxScrollY * scrollPercent;
      return scrollPixel;
    };
    __decorate137([
      Autowired("ctrlsService")
    ], RowContainerHeightService2.prototype, "ctrlsService", void 0);
    __decorate137([
      __param9(0, Qualifier("loggerFactory"))
    ], RowContainerHeightService2.prototype, "agWire", null);
    __decorate137([
      PostConstruct
    ], RowContainerHeightService2.prototype, "postConstruct", null);
    RowContainerHeightService2 = __decorate137([
      Bean("rowContainerHeightService")
    ], RowContainerHeightService2);
    return RowContainerHeightService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rowNodes/selectableService.js
var __extends154 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate138 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SelectableService = (
  /** @class */
  function(_super) {
    __extends154(SelectableService2, _super);
    function SelectableService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SelectableService2.prototype.init = function() {
      this.groupSelectsChildren = this.gridOptionsService.is("groupSelectsChildren");
      this.isRowSelectableFunc = this.gridOptionsService.get("isRowSelectable");
    };
    SelectableService2.prototype.updateSelectableAfterGrouping = function(rowNode) {
      if (this.isRowSelectableFunc) {
        var nextChildrenFunc = function(node) {
          return node.childrenAfterGroup;
        };
        this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);
      }
    };
    SelectableService2.prototype.recurseDown = function(children, nextChildrenFunc) {
      var _this = this;
      if (!children) {
        return;
      }
      children.forEach(function(child) {
        if (!child.group) {
          return;
        }
        if (child.hasChildren()) {
          _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);
        }
        var rowSelectable;
        if (_this.groupSelectsChildren) {
          var firstSelectable = (nextChildrenFunc(child) || []).find(function(rowNode) {
            return rowNode.selectable === true;
          });
          rowSelectable = exists(firstSelectable);
        } else {
          rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;
        }
        child.setRowSelectable(rowSelectable);
      });
    };
    __decorate138([
      PostConstruct
    ], SelectableService2.prototype, "init", null);
    SelectableService2 = __decorate138([
      Bean("selectableService")
    ], SelectableService2);
    return SelectableService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/pagination/paginationComp.js
var __extends155 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate139 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var PaginationComp = (
  /** @class */
  function(_super) {
    __extends155(PaginationComp2, _super);
    function PaginationComp2() {
      var _this = _super.call(this) || this;
      _this.previousAndFirstButtonsDisabled = false;
      _this.nextButtonDisabled = false;
      _this.lastButtonDisabled = false;
      _this.areListenersSetup = false;
      return _this;
    }
    PaginationComp2.prototype.postConstruct = function() {
      var isRtl = this.gridOptionsService.is("enableRtl");
      this.setTemplate(this.getTemplate());
      this.btFirst.insertAdjacentElement("afterbegin", createIconNoSpan(isRtl ? "last" : "first", this.gridOptionsService));
      this.btPrevious.insertAdjacentElement("afterbegin", createIconNoSpan(isRtl ? "next" : "previous", this.gridOptionsService));
      this.btNext.insertAdjacentElement("afterbegin", createIconNoSpan(isRtl ? "previous" : "next", this.gridOptionsService));
      this.btLast.insertAdjacentElement("afterbegin", createIconNoSpan(isRtl ? "first" : "last", this.gridOptionsService));
      this.addManagedPropertyListener("pagination", this.onPaginationChanged.bind(this));
      this.addManagedPropertyListener("suppressPaginationPanel", this.onPaginationChanged.bind(this));
      this.onPaginationChanged();
    };
    PaginationComp2.prototype.onPaginationChanged = function() {
      var isPaging = this.gridOptionsService.is("pagination");
      var paginationPanelEnabled = isPaging && !this.gridOptionsService.is("suppressPaginationPanel");
      this.setDisplayed(paginationPanelEnabled);
      if (!paginationPanelEnabled) {
        return;
      }
      this.setupListeners();
      this.enableOrDisableButtons();
      this.updateRowLabels();
      this.setCurrentPageLabel();
      this.setTotalLabels();
    };
    PaginationComp2.prototype.setupListeners = function() {
      var _this = this;
      if (!this.areListenersSetup) {
        this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));
        [
          { el: this.btFirst, fn: this.onBtFirst.bind(this) },
          { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },
          { el: this.btNext, fn: this.onBtNext.bind(this) },
          { el: this.btLast, fn: this.onBtLast.bind(this) }
        ].forEach(function(item) {
          var el = item.el, fn = item.fn;
          _this.addManagedListener(el, "click", fn);
          _this.addManagedListener(el, "keydown", function(e2) {
            if (e2.key === KeyCode.ENTER || e2.key === KeyCode.SPACE) {
              e2.preventDefault();
              fn();
            }
          });
        });
        this.areListenersSetup = true;
      }
    };
    PaginationComp2.prototype.onBtFirst = function() {
      if (!this.previousAndFirstButtonsDisabled) {
        this.paginationProxy.goToFirstPage();
      }
    };
    PaginationComp2.prototype.setCurrentPageLabel = function() {
      var pagesExist = this.paginationProxy.getTotalPages() > 0;
      var currentPage = this.paginationProxy.getCurrentPage();
      var toDisplay = pagesExist ? currentPage + 1 : 0;
      this.lbCurrent.innerHTML = this.formatNumber(toDisplay);
    };
    PaginationComp2.prototype.formatNumber = function(value) {
      var userFunc = this.gridOptionsService.getCallback("paginationNumberFormatter");
      if (userFunc) {
        var params = { value };
        return userFunc(params);
      }
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      var thousandSeparator = localeTextFunc("thousandSeparator", ",");
      var decimalSeparator = localeTextFunc("decimalSeparator", ".");
      return formatNumberCommas(value, thousandSeparator, decimalSeparator);
    };
    PaginationComp2.prototype.getTemplate = function() {
      var localeTextFunc = this.localeService.getLocaleTextFunc();
      var strPage = localeTextFunc("page", "Page");
      var strTo = localeTextFunc("to", "to");
      var strOf = localeTextFunc("of", "of");
      var strFirst = localeTextFunc("firstPage", "First Page");
      var strPrevious = localeTextFunc("previousPage", "Previous Page");
      var strNext = localeTextFunc("nextPage", "Next Page");
      var strLast = localeTextFunc("lastPage", "Last Page");
      var compId = this.getCompId();
      return (
        /* html */
        '<div class="ag-paging-panel ag-unselectable" id="ag-' + compId + '">\n                <span class="ag-paging-row-summary-panel" role="status">\n                    <span id="ag-' + compId + '-first-row" ref="lbFirstRowOnPage" class="ag-paging-row-summary-panel-number"></span>\n                    <span id="ag-' + compId + '-to">' + strTo + '</span>\n                    <span id="ag-' + compId + '-last-row" ref="lbLastRowOnPage" class="ag-paging-row-summary-panel-number"></span>\n                    <span id="ag-' + compId + '-of">' + strOf + '</span>\n                    <span id="ag-' + compId + '-row-count" ref="lbRecordCount" class="ag-paging-row-summary-panel-number"></span>\n                </span>\n                <span class="ag-paging-page-summary-panel" role="presentation">\n                    <div ref="btFirst" class="ag-paging-button" role="button" aria-label="' + strFirst + '"></div>\n                    <div ref="btPrevious" class="ag-paging-button" role="button" aria-label="' + strPrevious + '"></div>\n                    <span class="ag-paging-description" role="status">\n                        <span id="ag-' + compId + '-start-page">' + strPage + '</span>\n                        <span id="ag-' + compId + '-start-page-number" ref="lbCurrent" class="ag-paging-number"></span>\n                        <span id="ag-' + compId + '-of-page">' + strOf + '</span>\n                        <span id="ag-' + compId + '-of-page-number" ref="lbTotal" class="ag-paging-number"></span>\n                    </span>\n                    <div ref="btNext" class="ag-paging-button" role="button" aria-label="' + strNext + '"></div>\n                    <div ref="btLast" class="ag-paging-button" role="button" aria-label="' + strLast + '"></div>\n                </span>\n            </div>'
      );
    };
    PaginationComp2.prototype.onBtNext = function() {
      if (!this.nextButtonDisabled) {
        this.paginationProxy.goToNextPage();
      }
    };
    PaginationComp2.prototype.onBtPrevious = function() {
      if (!this.previousAndFirstButtonsDisabled) {
        this.paginationProxy.goToPreviousPage();
      }
    };
    PaginationComp2.prototype.onBtLast = function() {
      if (!this.lastButtonDisabled) {
        this.paginationProxy.goToLastPage();
      }
    };
    PaginationComp2.prototype.enableOrDisableButtons = function() {
      var currentPage = this.paginationProxy.getCurrentPage();
      var maxRowFound = this.paginationProxy.isLastPageFound();
      var totalPages = this.paginationProxy.getTotalPages();
      this.previousAndFirstButtonsDisabled = currentPage === 0;
      this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);
      this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);
      var zeroPagesToDisplay = this.isZeroPagesToDisplay();
      var onLastPage = maxRowFound && currentPage === totalPages - 1;
      this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;
      this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === totalPages - 1;
      this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);
      this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);
    };
    PaginationComp2.prototype.toggleButtonDisabled = function(button, disabled) {
      setAriaDisabled(button, disabled);
      button.classList.toggle("ag-disabled", disabled);
      if (disabled) {
        button.removeAttribute("tabindex");
      } else {
        button.setAttribute("tabindex", "0");
      }
    };
    PaginationComp2.prototype.updateRowLabels = function() {
      var currentPage = this.paginationProxy.getCurrentPage();
      var pageSize = this.paginationProxy.getPageSize();
      var maxRowFound = this.paginationProxy.isLastPageFound();
      var rowCount = this.paginationProxy.isLastPageFound() ? this.paginationProxy.getMasterRowCount() : null;
      var startRow;
      var endRow;
      if (this.isZeroPagesToDisplay()) {
        startRow = endRow = 0;
      } else {
        startRow = pageSize * currentPage + 1;
        endRow = startRow + pageSize - 1;
        if (maxRowFound && endRow > rowCount) {
          endRow = rowCount;
        }
      }
      this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);
      if (this.rowNodeBlockLoader.isLoading()) {
        this.lbLastRowOnPage.innerHTML = "?";
      } else {
        this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);
      }
    };
    PaginationComp2.prototype.isZeroPagesToDisplay = function() {
      var maxRowFound = this.paginationProxy.isLastPageFound();
      var totalPages = this.paginationProxy.getTotalPages();
      return maxRowFound && totalPages === 0;
    };
    PaginationComp2.prototype.setTotalLabels = function() {
      var lastPageFound = this.paginationProxy.isLastPageFound();
      var totalPages = this.paginationProxy.getTotalPages();
      var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;
      if (rowCount === 1) {
        var firstRow = this.paginationProxy.getRow(0);
        var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);
        if (hiddenGroupRow) {
          this.setTotalLabelsToZero();
          return;
        }
      }
      if (lastPageFound) {
        this.lbTotal.innerHTML = this.formatNumber(totalPages);
        this.lbRecordCount.innerHTML = this.formatNumber(rowCount);
      } else {
        var moreText = this.localeService.getLocaleTextFunc()("more", "more");
        this.lbTotal.innerHTML = moreText;
        this.lbRecordCount.innerHTML = moreText;
      }
    };
    PaginationComp2.prototype.setTotalLabelsToZero = function() {
      this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);
      this.lbCurrent.innerHTML = this.formatNumber(0);
      this.lbLastRowOnPage.innerHTML = this.formatNumber(0);
      this.lbTotal.innerHTML = this.formatNumber(0);
      this.lbRecordCount.innerHTML = this.formatNumber(0);
    };
    __decorate139([
      Autowired("paginationProxy")
    ], PaginationComp2.prototype, "paginationProxy", void 0);
    __decorate139([
      Autowired("rowNodeBlockLoader")
    ], PaginationComp2.prototype, "rowNodeBlockLoader", void 0);
    __decorate139([
      RefSelector("btFirst")
    ], PaginationComp2.prototype, "btFirst", void 0);
    __decorate139([
      RefSelector("btPrevious")
    ], PaginationComp2.prototype, "btPrevious", void 0);
    __decorate139([
      RefSelector("btNext")
    ], PaginationComp2.prototype, "btNext", void 0);
    __decorate139([
      RefSelector("btLast")
    ], PaginationComp2.prototype, "btLast", void 0);
    __decorate139([
      RefSelector("lbRecordCount")
    ], PaginationComp2.prototype, "lbRecordCount", void 0);
    __decorate139([
      RefSelector("lbFirstRowOnPage")
    ], PaginationComp2.prototype, "lbFirstRowOnPage", void 0);
    __decorate139([
      RefSelector("lbLastRowOnPage")
    ], PaginationComp2.prototype, "lbLastRowOnPage", void 0);
    __decorate139([
      RefSelector("lbCurrent")
    ], PaginationComp2.prototype, "lbCurrent", void 0);
    __decorate139([
      RefSelector("lbTotal")
    ], PaginationComp2.prototype, "lbTotal", void 0);
    __decorate139([
      PostConstruct
    ], PaginationComp2.prototype, "postConstruct", null);
    return PaginationComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/overlays/overlayWrapperComponent.js
var __extends156 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate140 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var LoadingType;
(function(LoadingType2) {
  LoadingType2[LoadingType2["Loading"] = 0] = "Loading";
  LoadingType2[LoadingType2["NoRows"] = 1] = "NoRows";
})(LoadingType || (LoadingType = {}));
var OverlayWrapperComponent = (
  /** @class */
  function(_super) {
    __extends156(OverlayWrapperComponent2, _super);
    function OverlayWrapperComponent2() {
      var _this = _super.call(this, OverlayWrapperComponent2.TEMPLATE) || this;
      _this.inProgress = false;
      _this.destroyRequested = false;
      _this.manuallyDisplayed = false;
      return _this;
    }
    OverlayWrapperComponent2.prototype.updateLayoutClasses = function(cssClass, params) {
      var overlayWrapperClassList = this.eOverlayWrapper.classList;
      overlayWrapperClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);
      overlayWrapperClassList.toggle(LayoutCssClasses.NORMAL, params.normal);
      overlayWrapperClassList.toggle(LayoutCssClasses.PRINT, params.print);
    };
    OverlayWrapperComponent2.prototype.postConstruct = function() {
      this.createManagedBean(new LayoutFeature(this));
      this.setDisplayed(false, { skipAriaHidden: true });
      this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataUpdated.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
      if (this.gridOptionsService.isRowModelType("clientSide") && !this.gridOptionsService.get("rowData")) {
        this.showLoadingOverlay();
      }
      this.gridApi.registerOverlayWrapperComp(this);
    };
    OverlayWrapperComponent2.prototype.setWrapperTypeClass = function(loadingType) {
      var overlayWrapperClassList = this.eOverlayWrapper.classList;
      overlayWrapperClassList.toggle("ag-overlay-loading-wrapper", loadingType === LoadingType.Loading);
      overlayWrapperClassList.toggle("ag-overlay-no-rows-wrapper", loadingType === LoadingType.NoRows);
    };
    OverlayWrapperComponent2.prototype.showLoadingOverlay = function() {
      if (this.gridOptionsService.is("suppressLoadingOverlay")) {
        return;
      }
      var params = {};
      var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);
      var promise = compDetails.newAgStackInstance();
      this.showOverlay(promise, LoadingType.Loading);
    };
    OverlayWrapperComponent2.prototype.showNoRowsOverlay = function() {
      if (this.gridOptionsService.is("suppressNoRowsOverlay")) {
        return;
      }
      var params = {};
      var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);
      var promise = compDetails.newAgStackInstance();
      this.showOverlay(promise, LoadingType.NoRows);
    };
    OverlayWrapperComponent2.prototype.showOverlay = function(workItem, type2) {
      var _this = this;
      if (this.inProgress) {
        return;
      }
      this.setWrapperTypeClass(type2);
      this.destroyActiveOverlay();
      this.inProgress = true;
      if (workItem) {
        workItem.then(function(comp) {
          _this.inProgress = false;
          _this.eOverlayWrapper.appendChild(comp.getGui());
          _this.activeOverlay = comp;
          if (_this.destroyRequested) {
            _this.destroyRequested = false;
            _this.destroyActiveOverlay();
          }
        });
      }
      this.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();
      this.setDisplayed(true, { skipAriaHidden: true });
    };
    OverlayWrapperComponent2.prototype.destroyActiveOverlay = function() {
      if (this.inProgress) {
        this.destroyRequested = true;
        return;
      }
      if (!this.activeOverlay) {
        return;
      }
      this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);
      clearElement(this.eOverlayWrapper);
    };
    OverlayWrapperComponent2.prototype.hideOverlay = function() {
      this.manuallyDisplayed = false;
      this.destroyActiveOverlay();
      this.setDisplayed(false, { skipAriaHidden: true });
    };
    OverlayWrapperComponent2.prototype.destroy = function() {
      this.destroyActiveOverlay();
      _super.prototype.destroy.call(this);
    };
    OverlayWrapperComponent2.prototype.showOrHideOverlay = function() {
      var isEmpty = this.paginationProxy.isEmpty();
      var isSuppressNoRowsOverlay = this.gridOptionsService.is("suppressNoRowsOverlay");
      if (isEmpty && !isSuppressNoRowsOverlay) {
        this.showNoRowsOverlay();
      } else {
        this.hideOverlay();
      }
    };
    OverlayWrapperComponent2.prototype.onRowDataUpdated = function() {
      this.showOrHideOverlay();
    };
    OverlayWrapperComponent2.prototype.onNewColumnsLoaded = function() {
      if (this.columnModel.isReady() && !this.paginationProxy.isEmpty() && !this.manuallyDisplayed) {
        this.hideOverlay();
      }
    };
    OverlayWrapperComponent2.TEMPLATE = '\n        <div class="ag-overlay" aria-hidden="true">\n            <div class="ag-overlay-panel">\n                <div class="ag-overlay-wrapper" ref="eOverlayWrapper"></div>\n            </div>\n        </div>';
    __decorate140([
      Autowired("userComponentFactory")
    ], OverlayWrapperComponent2.prototype, "userComponentFactory", void 0);
    __decorate140([
      Autowired("paginationProxy")
    ], OverlayWrapperComponent2.prototype, "paginationProxy", void 0);
    __decorate140([
      Autowired("gridApi")
    ], OverlayWrapperComponent2.prototype, "gridApi", void 0);
    __decorate140([
      Autowired("columnModel")
    ], OverlayWrapperComponent2.prototype, "columnModel", void 0);
    __decorate140([
      RefSelector("eOverlayWrapper")
    ], OverlayWrapperComponent2.prototype, "eOverlayWrapper", void 0);
    __decorate140([
      PostConstruct
    ], OverlayWrapperComponent2.prototype, "postConstruct", null);
    return OverlayWrapperComponent2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/rowPosition.js
var __extends157 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate141 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RowPositionUtils = (
  /** @class */
  function(_super) {
    __extends157(RowPositionUtils2, _super);
    function RowPositionUtils2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    RowPositionUtils2.prototype.getFirstRow = function() {
      var rowIndex = 0;
      var rowPinned;
      if (this.pinnedRowModel.getPinnedTopRowCount()) {
        rowPinned = "top";
      } else if (this.rowModel.getRowCount()) {
        rowPinned = null;
        rowIndex = this.paginationProxy.getPageFirstRow();
      } else if (this.pinnedRowModel.getPinnedBottomRowCount()) {
        rowPinned = "bottom";
      }
      return rowPinned === void 0 ? null : { rowIndex, rowPinned };
    };
    RowPositionUtils2.prototype.getLastRow = function() {
      var rowIndex;
      var rowPinned = null;
      var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();
      var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();
      if (pinnedBottomCount) {
        rowPinned = "bottom";
        rowIndex = pinnedBottomCount - 1;
      } else if (this.rowModel.getRowCount()) {
        rowPinned = null;
        rowIndex = this.paginationProxy.getPageLastRow();
      } else if (pinnedTopCount) {
        rowPinned = "top";
        rowIndex = pinnedTopCount - 1;
      }
      return rowIndex === void 0 ? null : { rowIndex, rowPinned };
    };
    RowPositionUtils2.prototype.getRowNode = function(gridRow) {
      switch (gridRow.rowPinned) {
        case "top":
          return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
        case "bottom":
          return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
        default:
          return this.rowModel.getRow(gridRow.rowIndex);
      }
    };
    RowPositionUtils2.prototype.sameRow = function(rowA, rowB) {
      if (!rowA && !rowB) {
        return true;
      }
      if (rowA && !rowB || !rowA && rowB) {
        return false;
      }
      return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;
    };
    RowPositionUtils2.prototype.before = function(rowA, rowB) {
      switch (rowA.rowPinned) {
        case "top":
          if (rowB.rowPinned !== "top") {
            return true;
          }
          break;
        case "bottom":
          if (rowB.rowPinned !== "bottom") {
            return false;
          }
          break;
        default:
          if (exists(rowB.rowPinned)) {
            return rowB.rowPinned !== "top";
          }
          break;
      }
      return rowA.rowIndex < rowB.rowIndex;
    };
    RowPositionUtils2.prototype.rowMax = function(rows) {
      var _this = this;
      var max;
      rows.forEach(function(row) {
        if (max === void 0 || _this.before(max, row)) {
          max = row;
        }
      });
      return max;
    };
    RowPositionUtils2.prototype.rowMin = function(rows) {
      var _this = this;
      var min;
      rows.forEach(function(row) {
        if (min === void 0 || _this.before(row, min)) {
          min = row;
        }
      });
      return min;
    };
    __decorate141([
      Autowired("rowModel")
    ], RowPositionUtils2.prototype, "rowModel", void 0);
    __decorate141([
      Autowired("pinnedRowModel")
    ], RowPositionUtils2.prototype, "pinnedRowModel", void 0);
    __decorate141([
      Autowired("paginationProxy")
    ], RowPositionUtils2.prototype, "paginationProxy", void 0);
    RowPositionUtils2 = __decorate141([
      Bean("rowPositionUtils")
    ], RowPositionUtils2);
    return RowPositionUtils2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/cellPosition.js
var __extends158 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate142 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var CellPositionUtils = (
  /** @class */
  function(_super) {
    __extends158(CellPositionUtils2, _super);
    function CellPositionUtils2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    CellPositionUtils2.prototype.createId = function(cellPosition) {
      var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;
      return this.createIdFromValues(rowIndex, column, rowPinned);
    };
    CellPositionUtils2.prototype.createIdFromValues = function(rowIndex, column, rowPinned) {
      return rowIndex + "." + (rowPinned == null ? "null" : rowPinned) + "." + column.getId();
    };
    CellPositionUtils2.prototype.equals = function(cellA, cellB) {
      var colsMatch = cellA.column === cellB.column;
      var floatingMatch = cellA.rowPinned === cellB.rowPinned;
      var indexMatch = cellA.rowIndex === cellB.rowIndex;
      return colsMatch && floatingMatch && indexMatch;
    };
    CellPositionUtils2 = __decorate142([
      Bean("cellPositionUtils")
    ], CellPositionUtils2);
    return CellPositionUtils2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/undoRedo/undoRedoStack.js
var __extends159 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var UndoRedoAction = (
  /** @class */
  /* @__PURE__ */ function() {
    function UndoRedoAction2(cellValueChanges) {
      this.cellValueChanges = cellValueChanges;
    }
    return UndoRedoAction2;
  }()
);
var RangeUndoRedoAction = (
  /** @class */
  function(_super) {
    __extends159(RangeUndoRedoAction2, _super);
    function RangeUndoRedoAction2(cellValueChanges, initialRange, finalRange, ranges) {
      var _this = _super.call(this, cellValueChanges) || this;
      _this.initialRange = initialRange;
      _this.finalRange = finalRange;
      _this.ranges = ranges;
      return _this;
    }
    return RangeUndoRedoAction2;
  }(UndoRedoAction)
);
var UndoRedoStack = (
  /** @class */
  function() {
    function UndoRedoStack2(maxStackSize) {
      this.actionStack = [];
      this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack2.DEFAULT_STACK_SIZE;
      this.actionStack = new Array(this.maxStackSize);
    }
    UndoRedoStack2.prototype.pop = function() {
      return this.actionStack.pop();
    };
    UndoRedoStack2.prototype.push = function(item) {
      var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;
      if (!shouldAddActions) {
        return;
      }
      if (this.actionStack.length === this.maxStackSize) {
        this.actionStack.shift();
      }
      this.actionStack.push(item);
    };
    UndoRedoStack2.prototype.clear = function() {
      this.actionStack = [];
    };
    UndoRedoStack2.prototype.getCurrentStackSize = function() {
      return this.actionStack.length;
    };
    UndoRedoStack2.DEFAULT_STACK_SIZE = 10;
    return UndoRedoStack2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/undoRedo/undoRedoService.js
var __extends160 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __assign19 = function() {
  __assign19 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign19.apply(this, arguments);
};
var __decorate143 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read22 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread18 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read22(arguments[i2]));
  return ar;
};
var UndoRedoService = (
  /** @class */
  function(_super) {
    __extends160(UndoRedoService2, _super);
    function UndoRedoService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.cellValueChanges = [];
      _this.activeCellEdit = null;
      _this.activeRowEdit = null;
      _this.isPasting = false;
      _this.isRangeInAction = false;
      _this.onCellValueChanged = function(event) {
        var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };
        var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);
        var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);
        var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isRangeInAction;
        if (!shouldCaptureAction) {
          return;
        }
        var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;
        var cellValueChange = {
          rowPinned,
          rowIndex,
          columnId: column.getColId(),
          newValue: value,
          oldValue
        };
        _this.cellValueChanges.push(cellValueChange);
      };
      _this.clearStacks = function() {
        _this.undoStack.clear();
        _this.redoStack.clear();
      };
      return _this;
    }
    UndoRedoService2.prototype.init = function() {
      var _this = this;
      if (!this.gridOptionsService.is("undoRedoCellEditing")) {
        return;
      }
      var undoRedoLimit = this.gridOptionsService.getNum("undoRedoCellEditingLimit");
      if (undoRedoLimit <= 0) {
        return;
      }
      this.undoStack = new UndoRedoStack(undoRedoLimit);
      this.redoStack = new UndoRedoStack(undoRedoLimit);
      this.addRowEditingListeners();
      this.addCellEditingListeners();
      this.addPasteListeners();
      this.addFillListeners();
      this.addCellKeyListeners();
      this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);
      this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function(e2) {
        if (!e2.keepUndoRedoStack) {
          _this.clearStacks();
        }
      });
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.clearStacks);
      this.addManagedListener(this.eventService, Events.EVENT_ROW_DRAG_END, this.clearStacks);
      this.ctrlsService.whenReady(function() {
        _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
      });
    };
    UndoRedoService2.prototype.getCurrentUndoStackSize = function() {
      return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;
    };
    UndoRedoService2.prototype.getCurrentRedoStackSize = function() {
      return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;
    };
    UndoRedoService2.prototype.undo = function() {
      if (!this.undoStack) {
        return;
      }
      var undoAction = this.undoStack.pop();
      if (!undoAction || !undoAction.cellValueChanges) {
        return;
      }
      this.processAction(undoAction, function(cellValueChange) {
        return cellValueChange.oldValue;
      });
      if (undoAction instanceof RangeUndoRedoAction) {
        this.processRange(undoAction.ranges || [undoAction.initialRange]);
      } else {
        this.processCell(undoAction.cellValueChanges);
      }
      this.redoStack.push(undoAction);
    };
    UndoRedoService2.prototype.redo = function() {
      if (!this.redoStack) {
        return;
      }
      var redoAction = this.redoStack.pop();
      if (!redoAction || !redoAction.cellValueChanges) {
        return;
      }
      this.processAction(redoAction, function(cellValueChange) {
        return cellValueChange.newValue;
      });
      if (redoAction instanceof RangeUndoRedoAction) {
        this.processRange(redoAction.ranges || [redoAction.finalRange]);
      } else {
        this.processCell(redoAction.cellValueChanges);
      }
      this.undoStack.push(redoAction);
    };
    UndoRedoService2.prototype.processAction = function(action, valueExtractor) {
      var _this = this;
      action.cellValueChanges.forEach(function(cellValueChange) {
        var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;
        var rowPosition = { rowIndex, rowPinned };
        var currentRow = _this.getRowNode(rowPosition);
        if (!currentRow.displayed) {
          return;
        }
        var extractedValue = valueExtractor(cellValueChange);
        var value = typeof (extractedValue === null || extractedValue === void 0 ? void 0 : extractedValue.toString) === "function" ? extractedValue.toString() : extractedValue;
        currentRow.setDataValue(columnId, value);
      });
    };
    UndoRedoService2.prototype.processRange = function(ranges) {
      var _this = this;
      var lastFocusedCell;
      this.rangeService.removeAllCellRanges(true);
      ranges.forEach(function(range, idx) {
        if (!range) {
          return;
        }
        var startRow = range.startRow;
        var endRow = range.endRow;
        if (idx === ranges.length - 1) {
          lastFocusedCell = {
            rowPinned: startRow.rowPinned,
            rowIndex: startRow.rowIndex,
            columnId: range.startColumn.getColId()
          };
          _this.setLastFocusedCell(lastFocusedCell);
        }
        var cellRangeParams = {
          rowStartIndex: startRow.rowIndex,
          rowStartPinned: startRow.rowPinned,
          rowEndIndex: endRow.rowIndex,
          rowEndPinned: endRow.rowPinned,
          columnStart: range.startColumn,
          columns: range.columns
        };
        _this.rangeService.addCellRange(cellRangeParams);
      });
    };
    UndoRedoService2.prototype.processCell = function(cellValueChanges) {
      var cellValueChange = cellValueChanges[0];
      var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;
      var rowPosition = { rowIndex, rowPinned };
      var row = this.getRowNode(rowPosition);
      var lastFocusedCell = {
        rowPinned: cellValueChange.rowPinned,
        rowIndex: row.rowIndex,
        columnId: cellValueChange.columnId
      };
      this.setLastFocusedCell(lastFocusedCell, !!this.rangeService);
    };
    UndoRedoService2.prototype.setLastFocusedCell = function(lastFocusedCell, setRangeToCell) {
      var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;
      var scrollFeature = this.gridBodyCtrl.getScrollFeature();
      var column = this.columnModel.getGridColumn(columnId);
      if (!column) {
        return;
      }
      scrollFeature.ensureIndexVisible(rowIndex);
      scrollFeature.ensureColumnVisible(column);
      var cellPosition = { rowIndex, column, rowPinned };
      this.focusService.setFocusedCell(__assign19(__assign19({}, cellPosition), { forceBrowserFocus: true }));
      if (setRangeToCell) {
        this.rangeService.setRangeToCell(cellPosition);
      }
    };
    UndoRedoService2.prototype.addRowEditingListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STARTED, function(e2) {
        _this.activeRowEdit = { rowIndex: e2.rowIndex, rowPinned: e2.rowPinned };
      });
      this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STOPPED, function() {
        var action = new UndoRedoAction(_this.cellValueChanges);
        _this.pushActionsToUndoStack(action);
        _this.activeRowEdit = null;
      });
    };
    UndoRedoService2.prototype.addCellEditingListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STARTED, function(e2) {
        _this.activeCellEdit = { column: e2.column, rowIndex: e2.rowIndex, rowPinned: e2.rowPinned };
      });
      this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STOPPED, function(e2) {
        _this.activeCellEdit = null;
        var shouldPushAction = e2.valueChanged && !_this.activeRowEdit && !_this.isPasting && !_this.isRangeInAction;
        if (shouldPushAction) {
          var action = new UndoRedoAction(_this.cellValueChanges);
          _this.pushActionsToUndoStack(action);
        }
      });
    };
    UndoRedoService2.prototype.addPasteListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_PASTE_START, function() {
        _this.isPasting = true;
      });
      this.addManagedListener(this.eventService, Events.EVENT_PASTE_END, function() {
        var action = new UndoRedoAction(_this.cellValueChanges);
        _this.pushActionsToUndoStack(action);
        _this.isPasting = false;
      });
    };
    UndoRedoService2.prototype.addFillListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_FILL_START, function() {
        _this.isRangeInAction = true;
      });
      this.addManagedListener(this.eventService, Events.EVENT_FILL_END, function(event) {
        var action = new RangeUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);
        _this.pushActionsToUndoStack(action);
        _this.isRangeInAction = false;
      });
    };
    UndoRedoService2.prototype.addCellKeyListeners = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START, function() {
        _this.isRangeInAction = true;
      });
      this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END, function() {
        var action;
        if (_this.rangeService && _this.gridOptionsService.isEnableRangeSelection()) {
          action = new RangeUndoRedoAction(_this.cellValueChanges, void 0, void 0, __spread18(_this.rangeService.getCellRanges()));
        } else {
          action = new UndoRedoAction(_this.cellValueChanges);
        }
        _this.pushActionsToUndoStack(action);
        _this.isRangeInAction = false;
      });
    };
    UndoRedoService2.prototype.pushActionsToUndoStack = function(action) {
      this.undoStack.push(action);
      this.cellValueChanges = [];
      this.redoStack.clear();
    };
    UndoRedoService2.prototype.getRowNode = function(gridRow) {
      switch (gridRow.rowPinned) {
        case "top":
          return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
        case "bottom":
          return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
        default:
          return this.rowModel.getRow(gridRow.rowIndex);
      }
    };
    __decorate143([
      Autowired("focusService")
    ], UndoRedoService2.prototype, "focusService", void 0);
    __decorate143([
      Autowired("ctrlsService")
    ], UndoRedoService2.prototype, "ctrlsService", void 0);
    __decorate143([
      Autowired("rowModel")
    ], UndoRedoService2.prototype, "rowModel", void 0);
    __decorate143([
      Autowired("pinnedRowModel")
    ], UndoRedoService2.prototype, "pinnedRowModel", void 0);
    __decorate143([
      Autowired("cellPositionUtils")
    ], UndoRedoService2.prototype, "cellPositionUtils", void 0);
    __decorate143([
      Autowired("rowPositionUtils")
    ], UndoRedoService2.prototype, "rowPositionUtils", void 0);
    __decorate143([
      Autowired("columnModel")
    ], UndoRedoService2.prototype, "columnModel", void 0);
    __decorate143([
      Optional2("rangeService")
    ], UndoRedoService2.prototype, "rangeService", void 0);
    __decorate143([
      PostConstruct
    ], UndoRedoService2.prototype, "init", null);
    UndoRedoService2 = __decorate143([
      Bean("undoRedoService")
    ], UndoRedoService2);
    return UndoRedoService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/common/headerPosition.js
var __extends161 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate144 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var HeaderPositionUtils = (
  /** @class */
  function(_super) {
    __extends161(HeaderPositionUtils2, _super);
    function HeaderPositionUtils2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    HeaderPositionUtils2.prototype.findHeader = function(focusedHeader, direction) {
      var nextColumn;
      var getGroupMethod;
      var getColMethod;
      if (focusedHeader.column instanceof ColumnGroup) {
        getGroupMethod = "getDisplayedGroup" + direction;
        nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);
      } else {
        getColMethod = "getDisplayedCol" + direction;
        nextColumn = this.columnModel[getColMethod](focusedHeader.column);
      }
      if (nextColumn) {
        return {
          column: nextColumn,
          headerRowIndex: focusedHeader.headerRowIndex
        };
      }
    };
    HeaderPositionUtils2.prototype.findColAtEdgeForHeaderRow = function(level, position) {
      var displayedColumns = this.columnModel.getAllDisplayedColumns();
      var column = displayedColumns[position === "start" ? 0 : displayedColumns.length - 1];
      if (!column) {
        return;
      }
      var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());
      var type2 = childContainer.getRowType(level);
      if (type2 == HeaderRowType.COLUMN_GROUP) {
        var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);
        return {
          headerRowIndex: level,
          column: columnGroup
        };
      }
      return {
        // if type==null, means the header level didn't exist
        headerRowIndex: type2 == null ? -1 : level,
        column
      };
    };
    __decorate144([
      Autowired("columnModel")
    ], HeaderPositionUtils2.prototype, "columnModel", void 0);
    __decorate144([
      Autowired("ctrlsService")
    ], HeaderPositionUtils2.prototype, "ctrlsService", void 0);
    HeaderPositionUtils2 = __decorate144([
      Bean("headerPositionUtils")
    ], HeaderPositionUtils2);
    return HeaderPositionUtils2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnDefFactory.js
var __decorate145 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var ColumnDefFactory = (
  /** @class */
  function() {
    function ColumnDefFactory2() {
    }
    ColumnDefFactory2.prototype.buildColumnDefs = function(cols, rowGroupColumns, pivotColumns) {
      var _this = this;
      var res = [];
      var colGroupDefs = {};
      cols.forEach(function(col) {
        var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);
        var addToResult = true;
        var childDef = colDef;
        var pointer = col.getOriginalParent();
        while (pointer) {
          var parentDef = null;
          if (pointer.isPadding()) {
            pointer = pointer.getOriginalParent();
            continue;
          }
          var existingParentDef = colGroupDefs[pointer.getGroupId()];
          if (existingParentDef) {
            existingParentDef.children.push(childDef);
            addToResult = false;
            break;
          }
          parentDef = _this.createDefFromGroup(pointer);
          if (parentDef) {
            parentDef.children = [childDef];
            colGroupDefs[parentDef.groupId] = parentDef;
            childDef = parentDef;
            pointer = pointer.getOriginalParent();
          }
        }
        if (addToResult) {
          res.push(childDef);
        }
      });
      return res;
    };
    ColumnDefFactory2.prototype.createDefFromGroup = function(group) {
      var defCloned = deepCloneDefinition(group.getColGroupDef(), ["children"]);
      if (defCloned) {
        defCloned.groupId = group.getGroupId();
      }
      return defCloned;
    };
    ColumnDefFactory2.prototype.createDefFromColumn = function(col, rowGroupColumns, pivotColumns) {
      var colDefCloned = deepCloneDefinition(col.getColDef());
      colDefCloned.colId = col.getColId();
      colDefCloned.width = col.getActualWidth();
      colDefCloned.rowGroup = col.isRowGroupActive();
      colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;
      colDefCloned.pivot = col.isPivotActive();
      colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;
      colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;
      colDefCloned.hide = col.isVisible() ? void 0 : true;
      colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;
      colDefCloned.sort = col.getSort() ? col.getSort() : null;
      colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;
      return colDefCloned;
    };
    ColumnDefFactory2 = __decorate145([
      Bean("columnDefFactory")
    ], ColumnDefFactory2);
    return ColumnDefFactory2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowCssClassCalculator.js
var __decorate146 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RowCssClassCalculator = (
  /** @class */
  function() {
    function RowCssClassCalculator2() {
    }
    RowCssClassCalculator2.prototype.getInitialRowClasses = function(params) {
      var classes = [];
      if (exists(params.extraCssClass)) {
        classes.push(params.extraCssClass);
      }
      classes.push("ag-row");
      classes.push(params.rowFocused ? "ag-row-focus" : "ag-row-no-focus");
      if (params.fadeRowIn) {
        classes.push("ag-opacity-zero");
      }
      classes.push(params.rowIsEven ? "ag-row-even" : "ag-row-odd");
      if (params.rowNode.isRowPinned()) {
        classes.push("ag-row-pinned");
      }
      if (params.rowNode.isSelected()) {
        classes.push("ag-row-selected");
      }
      if (params.rowNode.footer) {
        classes.push("ag-row-footer");
      }
      classes.push("ag-row-level-" + params.rowLevel);
      if (params.rowNode.stub) {
        classes.push("ag-row-loading");
      }
      if (params.fullWidthRow) {
        classes.push("ag-full-width-row");
      }
      if (params.expandable) {
        classes.push("ag-row-group");
        classes.push(params.rowNode.expanded ? "ag-row-group-expanded" : "ag-row-group-contracted");
      }
      if (params.rowNode.dragging) {
        classes.push("ag-row-dragging");
      }
      pushAll(classes, this.processClassesFromGridOptions(params.rowNode));
      pushAll(classes, this.preProcessRowClassRules(params.rowNode));
      classes.push(params.printLayout ? "ag-row-position-relative" : "ag-row-position-absolute");
      if (params.firstRowOnPage) {
        classes.push("ag-row-first");
      }
      if (params.lastRowOnPage) {
        classes.push("ag-row-last");
      }
      if (params.fullWidthRow) {
        if (params.pinned === "left") {
          classes.push("ag-cell-last-left-pinned");
        }
        if (params.pinned === "right") {
          classes.push("ag-cell-first-right-pinned");
        }
      }
      return classes;
    };
    RowCssClassCalculator2.prototype.processClassesFromGridOptions = function(rowNode) {
      var res = [];
      var process = function(rowCls) {
        if (typeof rowCls === "string") {
          res.push(rowCls);
        } else if (Array.isArray(rowCls)) {
          rowCls.forEach(function(e2) {
            return res.push(e2);
          });
        }
      };
      var rowClass = this.gridOptionsService.get("rowClass");
      if (rowClass) {
        if (typeof rowClass === "function") {
          console.warn("AG Grid: rowClass should not be a function, please use getRowClass instead");
          return [];
        }
        process(rowClass);
      }
      var rowClassFunc = this.gridOptionsService.getCallback("getRowClass");
      if (rowClassFunc) {
        var params = {
          data: rowNode.data,
          node: rowNode,
          rowIndex: rowNode.rowIndex
        };
        var rowClassFuncResult = rowClassFunc(params);
        process(rowClassFuncResult);
      }
      return res;
    };
    RowCssClassCalculator2.prototype.preProcessRowClassRules = function(rowNode) {
      var res = [];
      this.processRowClassRules(rowNode, function(className) {
        res.push(className);
      }, function(className) {
      });
      return res;
    };
    RowCssClassCalculator2.prototype.processRowClassRules = function(rowNode, onApplicableClass, onNotApplicableClass) {
      var rowClassParams = {
        data: rowNode.data,
        node: rowNode,
        rowIndex: rowNode.rowIndex,
        api: this.gridOptionsService.get("api"),
        columnApi: this.gridOptionsService.get("columnApi"),
        context: this.gridOptionsService.get("context")
      };
      this.stylingService.processClassRules(this.gridOptionsService.get("rowClassRules"), rowClassParams, onApplicableClass, onNotApplicableClass);
    };
    RowCssClassCalculator2.prototype.calculateRowLevel = function(rowNode) {
      if (rowNode.group) {
        return rowNode.level;
      }
      return rowNode.parent ? rowNode.parent.level + 1 : 0;
    };
    __decorate146([
      Autowired("stylingService")
    ], RowCssClassCalculator2.prototype, "stylingService", void 0);
    __decorate146([
      Autowired("gridOptionsService")
    ], RowCssClassCalculator2.prototype, "gridOptionsService", void 0);
    RowCssClassCalculator2 = __decorate146([
      Bean("rowCssClassCalculator")
    ], RowCssClassCalculator2);
    return RowCssClassCalculator2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/rowNodes/rowNodeSorter.js
var __decorate147 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RowNodeSorter = (
  /** @class */
  function() {
    function RowNodeSorter2() {
    }
    RowNodeSorter2.prototype.doFullSort = function(rowNodes, sortOptions) {
      var mapper = function(rowNode, pos) {
        return { currentPos: pos, rowNode };
      };
      var sortedRowNodes = rowNodes.map(mapper);
      sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));
      return sortedRowNodes.map(function(item) {
        return item.rowNode;
      });
    };
    RowNodeSorter2.prototype.compareRowNodes = function(sortOptions, sortedNodeA, sortedNodeB) {
      var nodeA = sortedNodeA.rowNode;
      var nodeB = sortedNodeB.rowNode;
      for (var i2 = 0, len = sortOptions.length; i2 < len; i2++) {
        var sortOption = sortOptions[i2];
        var isDescending = sortOption.sort === "desc";
        var valueA = this.getValue(nodeA, sortOption.column);
        var valueB = this.getValue(nodeB, sortOption.column);
        var comparatorResult = void 0;
        var providedComparator = this.getComparator(sortOption, nodeA);
        if (providedComparator) {
          comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);
        } else {
          comparatorResult = _2.defaultComparator(valueA, valueB, this.gridOptionsService.is("accentedSort"));
        }
        var validResult = !isNaN(comparatorResult);
        if (validResult && comparatorResult !== 0) {
          return sortOption.sort === "asc" ? comparatorResult : comparatorResult * -1;
        }
      }
      return sortedNodeA.currentPos - sortedNodeB.currentPos;
    };
    RowNodeSorter2.prototype.getComparator = function(sortOption, rowNode) {
      var column = sortOption.column;
      var comparatorOnCol = column.getColDef().comparator;
      if (comparatorOnCol != null) {
        return comparatorOnCol;
      }
      if (!column.getColDef().showRowGroup) {
        return;
      }
      var groupLeafField = !rowNode.group && column.getColDef().field;
      if (!groupLeafField) {
        return;
      }
      var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);
      if (!primaryColumn) {
        return;
      }
      return primaryColumn.getColDef().comparator;
    };
    RowNodeSorter2.prototype.getValue = function(node, column) {
      var _a47, _b;
      var primaryColumnsSortGroups = this.gridOptionsService.isColumnsSortingCoupledToGroup();
      if (!primaryColumnsSortGroups) {
        return this.valueService.getValue(column, node, false, false);
      }
      var isNodeGroupedAtLevel = node.rowGroupColumn === column;
      if (isNodeGroupedAtLevel) {
        var isGroupRows = this.gridOptionsService.isGroupUseEntireRow(this.columnModel.isPivotActive());
        if (isGroupRows) {
          var keyCreator = column.getColDef().keyCreator;
          if (keyCreator) {
            return node.key;
          }
          var leafChild = (_a47 = node.allLeafChildren) === null || _a47 === void 0 ? void 0 : _a47[0];
          if (leafChild) {
            return this.valueService.getValue(column, leafChild, false, false);
          }
          return void 0;
        }
        var displayCol = this.columnModel.getGroupDisplayColumnForGroup(column.getId());
        if (!displayCol) {
          return void 0;
        }
        return (_b = node.groupData) === null || _b === void 0 ? void 0 : _b[displayCol.getId()];
      }
      if (node.group && column.getColDef().showRowGroup) {
        return void 0;
      }
      return this.valueService.getValue(column, node, false, false);
    };
    __decorate147([
      Autowired("gridOptionsService")
    ], RowNodeSorter2.prototype, "gridOptionsService", void 0);
    __decorate147([
      Autowired("valueService")
    ], RowNodeSorter2.prototype, "valueService", void 0);
    __decorate147([
      Autowired("columnModel")
    ], RowNodeSorter2.prototype, "columnModel", void 0);
    RowNodeSorter2 = __decorate147([
      Bean("rowNodeSorter")
    ], RowNodeSorter2);
    return RowNodeSorter2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/ctrlsService.js
var __extends162 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate148 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var CtrlsService = (
  /** @class */
  function(_super) {
    __extends162(CtrlsService2, _super);
    function CtrlsService2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.ready = false;
      _this.readyCallbacks = [];
      return _this;
    }
    CtrlsService_1 = CtrlsService2;
    CtrlsService2.prototype.checkReady = function() {
      this.ready = this.gridCtrl != null && this.gridBodyCtrl != null && this.centerRowContainerCtrl != null && this.leftRowContainerCtrl != null && this.rightRowContainerCtrl != null && this.bottomCenterRowContainerCtrl != null && this.bottomLeftRowContainerCtrl != null && this.bottomRightRowContainerCtrl != null && this.topCenterRowContainerCtrl != null && this.topLeftRowContainerCtrl != null && this.topRightRowContainerCtrl != null && this.stickyTopCenterRowContainerCtrl != null && this.stickyTopLeftRowContainerCtrl != null && this.stickyTopRightRowContainerCtrl != null && this.centerHeaderRowContainerCtrl != null && this.leftHeaderRowContainerCtrl != null && this.rightHeaderRowContainerCtrl != null && this.fakeHScrollComp != null && this.fakeVScrollComp != null && this.gridHeaderCtrl != null;
      if (this.ready) {
        var p_1 = this.createReadyParams();
        this.readyCallbacks.forEach(function(c2) {
          return c2(p_1);
        });
        this.readyCallbacks.length = 0;
      }
    };
    CtrlsService2.prototype.whenReady = function(callback) {
      if (this.ready) {
        callback(this.createReadyParams());
      } else {
        this.readyCallbacks.push(callback);
      }
    };
    CtrlsService2.prototype.createReadyParams = function() {
      return {
        centerRowContainerCtrl: this.centerRowContainerCtrl,
        leftRowContainerCtrl: this.leftRowContainerCtrl,
        rightRowContainerCtrl: this.rightRowContainerCtrl,
        bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,
        bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,
        bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,
        topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,
        topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,
        topRightRowContainerCtrl: this.topRightRowContainerCtrl,
        stickyTopCenterRowContainerCtrl: this.stickyTopCenterRowContainerCtrl,
        stickyTopLeftRowContainerCtrl: this.stickyTopLeftRowContainerCtrl,
        stickyTopRightRowContainerCtrl: this.stickyTopRightRowContainerCtrl,
        centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,
        leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,
        rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,
        fakeHScrollComp: this.fakeHScrollComp,
        fakeVScrollComp: this.fakeVScrollComp,
        gridBodyCtrl: this.gridBodyCtrl,
        gridCtrl: this.gridCtrl,
        gridHeaderCtrl: this.gridHeaderCtrl
      };
    };
    CtrlsService2.prototype.registerFakeHScrollComp = function(comp) {
      this.fakeHScrollComp = comp;
      this.checkReady();
    };
    CtrlsService2.prototype.registerFakeVScrollComp = function(comp) {
      this.fakeVScrollComp = comp;
      this.checkReady();
    };
    CtrlsService2.prototype.registerGridHeaderCtrl = function(gridHeaderCtrl) {
      this.gridHeaderCtrl = gridHeaderCtrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerCenterRowContainerCtrl = function(ctrl) {
      this.centerRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerLeftRowContainerCtrl = function(ctrl) {
      this.leftRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerRightRowContainerCtrl = function(ctrl) {
      this.rightRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerTopCenterRowContainerCtrl = function(ctrl) {
      this.topCenterRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerTopLeftRowContainerCon = function(ctrl) {
      this.topLeftRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerTopRightRowContainerCtrl = function(ctrl) {
      this.topRightRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerStickyTopCenterRowContainerCtrl = function(ctrl) {
      this.stickyTopCenterRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerStickyTopLeftRowContainerCon = function(ctrl) {
      this.stickyTopLeftRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerStickyTopRightRowContainerCtrl = function(ctrl) {
      this.stickyTopRightRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerBottomCenterRowContainerCtrl = function(ctrl) {
      this.bottomCenterRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerBottomLeftRowContainerCtrl = function(ctrl) {
      this.bottomLeftRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerBottomRightRowContainerCtrl = function(ctrl) {
      this.bottomRightRowContainerCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerHeaderContainer = function(ctrl, pinned) {
      switch (pinned) {
        case "left":
          this.leftHeaderRowContainerCtrl = ctrl;
          break;
        case "right":
          this.rightHeaderRowContainerCtrl = ctrl;
          break;
        default:
          this.centerHeaderRowContainerCtrl = ctrl;
          break;
      }
      this.checkReady();
    };
    CtrlsService2.prototype.registerGridBodyCtrl = function(ctrl) {
      this.gridBodyCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.registerGridCtrl = function(ctrl) {
      this.gridCtrl = ctrl;
      this.checkReady();
    };
    CtrlsService2.prototype.getFakeHScrollComp = function() {
      return this.fakeHScrollComp;
    };
    CtrlsService2.prototype.getFakeVScrollComp = function() {
      return this.fakeVScrollComp;
    };
    CtrlsService2.prototype.getGridHeaderCtrl = function() {
      return this.gridHeaderCtrl;
    };
    CtrlsService2.prototype.getGridCtrl = function() {
      return this.gridCtrl;
    };
    CtrlsService2.prototype.getCenterRowContainerCtrl = function() {
      return this.centerRowContainerCtrl;
    };
    CtrlsService2.prototype.getTopCenterRowContainerCtrl = function() {
      return this.topCenterRowContainerCtrl;
    };
    CtrlsService2.prototype.getBottomCenterRowContainerCtrl = function() {
      return this.bottomCenterRowContainerCtrl;
    };
    CtrlsService2.prototype.getStickyTopCenterRowContainerCtrl = function() {
      return this.stickyTopCenterRowContainerCtrl;
    };
    CtrlsService2.prototype.getGridBodyCtrl = function() {
      return this.gridBodyCtrl;
    };
    CtrlsService2.prototype.getHeaderRowContainerCtrls = function() {
      return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];
    };
    CtrlsService2.prototype.getHeaderRowContainerCtrl = function(pinned) {
      switch (pinned) {
        case "left":
          return this.leftHeaderRowContainerCtrl;
        case "right":
          return this.rightHeaderRowContainerCtrl;
        default:
          return this.centerHeaderRowContainerCtrl;
      }
    };
    var CtrlsService_1;
    CtrlsService2.NAME = "ctrlsService";
    CtrlsService2 = CtrlsService_1 = __decorate148([
      Bean(CtrlsService_1.NAME)
    ], CtrlsService2);
    return CtrlsService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/ctrlsFactory.js
var __extends163 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate149 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var CtrlsFactory = (
  /** @class */
  function(_super) {
    __extends163(CtrlsFactory2, _super);
    function CtrlsFactory2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.registry = {};
      return _this;
    }
    CtrlsFactory2.prototype.register = function(meta) {
      this.registry[meta.controllerName] = meta.controllerClass;
    };
    CtrlsFactory2.prototype.getInstance = function(name) {
      var ControllerClass = this.registry[name];
      if (ControllerClass == null) {
        return void 0;
      }
      return new ControllerClass();
    };
    CtrlsFactory2 = __decorate149([
      Bean("ctrlsFactory")
    ], CtrlsFactory2);
    return CtrlsFactory2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/abstractFakeScrollComp.js
var __extends164 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate150 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var AbstractFakeScrollComp = (
  /** @class */
  function(_super) {
    __extends164(AbstractFakeScrollComp2, _super);
    function AbstractFakeScrollComp2(template, direction) {
      var _this = _super.call(this, template) || this;
      _this.direction = direction;
      _this.hideTimeout = null;
      return _this;
    }
    AbstractFakeScrollComp2.prototype.postConstruct = function() {
      this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));
      this.onScrollVisibilityChanged();
      this.addOrRemoveCssClass("ag-apple-scrollbar", isMacOsUserAgent() || isIOSUserAgent());
    };
    AbstractFakeScrollComp2.prototype.initialiseInvisibleScrollbar = function() {
      if (this.invisibleScrollbar !== void 0) {
        return;
      }
      this.invisibleScrollbar = isInvisibleScrollbar();
      if (this.invisibleScrollbar) {
        this.hideAndShowInvisibleScrollAsNeeded();
        this.addActiveListenerToggles();
      }
    };
    AbstractFakeScrollComp2.prototype.addActiveListenerToggles = function() {
      var _this = this;
      var activateEvents = ["mouseenter", "mousedown", "touchstart"];
      var deactivateEvents = ["mouseleave", "touchend"];
      var eGui = this.getGui();
      activateEvents.forEach(function(eventName) {
        return _this.addManagedListener(eGui, eventName, function() {
          return _this.addOrRemoveCssClass("ag-scrollbar-active", true);
        });
      });
      deactivateEvents.forEach(function(eventName) {
        return _this.addManagedListener(eGui, eventName, function() {
          return _this.addOrRemoveCssClass("ag-scrollbar-active", false);
        });
      });
    };
    AbstractFakeScrollComp2.prototype.onScrollVisibilityChanged = function() {
      if (this.invisibleScrollbar === void 0) {
        this.initialiseInvisibleScrollbar();
      }
      this.setScrollVisible();
    };
    AbstractFakeScrollComp2.prototype.hideAndShowInvisibleScrollAsNeeded = function() {
      var _this = this;
      this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, function(params) {
        if (params.direction === _this.direction) {
          if (_this.hideTimeout !== null) {
            window.clearInterval(_this.hideTimeout);
            _this.hideTimeout = null;
          }
          _this.addOrRemoveCssClass("ag-scrollbar-scrolling", true);
        }
      });
      this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL_END, function() {
        _this.hideTimeout = window.setTimeout(function() {
          _this.addOrRemoveCssClass("ag-scrollbar-scrolling", false);
          _this.hideTimeout = null;
        }, 400);
      });
    };
    AbstractFakeScrollComp2.prototype.getViewport = function() {
      return this.eViewport;
    };
    AbstractFakeScrollComp2.prototype.getContainer = function() {
      return this.eContainer;
    };
    __decorate150([
      RefSelector("eViewport")
    ], AbstractFakeScrollComp2.prototype, "eViewport", void 0);
    __decorate150([
      RefSelector("eContainer")
    ], AbstractFakeScrollComp2.prototype, "eContainer", void 0);
    __decorate150([
      Autowired("scrollVisibleService")
    ], AbstractFakeScrollComp2.prototype, "scrollVisibleService", void 0);
    __decorate150([
      Autowired("ctrlsService")
    ], AbstractFakeScrollComp2.prototype, "ctrlsService", void 0);
    return AbstractFakeScrollComp2;
  }(Component2)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/fakeHScrollComp.js
var __extends165 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate151 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var FakeHScrollComp = (
  /** @class */
  function(_super) {
    __extends165(FakeHScrollComp2, _super);
    function FakeHScrollComp2() {
      return _super.call(this, FakeHScrollComp2.TEMPLATE, "horizontal") || this;
    }
    FakeHScrollComp2.prototype.postConstruct = function() {
      var _this = this;
      _super.prototype.postConstruct.call(this);
      var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);
      this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));
      this.addManagedPropertyListener("domLayout", spacerWidthsListener);
      this.ctrlsService.registerFakeHScrollComp(this);
      this.createManagedBean(new CenterWidthFeature(function(width) {
        return _this.eContainer.style.width = width + "px";
      }));
    };
    FakeHScrollComp2.prototype.initialiseInvisibleScrollbar = function() {
      if (this.invisibleScrollbar !== void 0) {
        return;
      }
      this.enableRtl = this.gridOptionsService.is("enableRtl");
      _super.prototype.initialiseInvisibleScrollbar.call(this);
      if (this.invisibleScrollbar) {
        this.refreshCompBottom();
      }
    };
    FakeHScrollComp2.prototype.onPinnedRowDataChanged = function() {
      this.refreshCompBottom();
    };
    FakeHScrollComp2.prototype.refreshCompBottom = function() {
      if (!this.invisibleScrollbar) {
        return;
      }
      var bottomPinnedHeight = this.pinnedRowModel.getPinnedBottomTotalHeight();
      this.getGui().style.bottom = bottomPinnedHeight + "px";
    };
    FakeHScrollComp2.prototype.onScrollVisibilityChanged = function() {
      _super.prototype.onScrollVisibilityChanged.call(this);
      this.setFakeHScrollSpacerWidths();
    };
    FakeHScrollComp2.prototype.setFakeHScrollSpacerWidths = function() {
      var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();
      var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();
      var scrollOnRight = !this.enableRtl && vScrollShowing;
      var scrollbarWidth = this.gridOptionsService.getScrollbarWidth();
      if (scrollOnRight) {
        rightSpacing += scrollbarWidth;
      }
      setFixedWidth(this.eRightSpacer, rightSpacing);
      this.eRightSpacer.classList.toggle("ag-scroller-corner", rightSpacing <= scrollbarWidth);
      var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();
      var scrollOnLeft = this.enableRtl && vScrollShowing;
      if (scrollOnLeft) {
        leftSpacing += scrollbarWidth;
      }
      setFixedWidth(this.eLeftSpacer, leftSpacing);
      this.eLeftSpacer.classList.toggle("ag-scroller-corner", leftSpacing <= scrollbarWidth);
    };
    FakeHScrollComp2.prototype.setScrollVisible = function() {
      var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();
      var invisibleScrollbar2 = this.invisibleScrollbar;
      var isSuppressHorizontalScroll = this.gridOptionsService.is("suppressHorizontalScroll");
      var scrollbarWidth = hScrollShowing ? this.gridOptionsService.getScrollbarWidth() || 0 : 0;
      var adjustedScrollbarWidth = scrollbarWidth === 0 && invisibleScrollbar2 ? 16 : scrollbarWidth;
      var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;
      this.addOrRemoveCssClass("ag-scrollbar-invisible", invisibleScrollbar2);
      setFixedHeight(this.getGui(), scrollContainerSize);
      setFixedHeight(this.eViewport, scrollContainerSize);
      setFixedHeight(this.eContainer, scrollContainerSize);
      this.setDisplayed(hScrollShowing, { skipAriaHidden: true });
    };
    FakeHScrollComp2.TEMPLATE = '<div class="ag-body-horizontal-scroll" aria-hidden="true">\n            <div class="ag-horizontal-left-spacer" ref="eLeftSpacer"></div>\n            <div class="ag-body-horizontal-scroll-viewport" ref="eViewport">\n                <div class="ag-body-horizontal-scroll-container" ref="eContainer"></div>\n            </div>\n            <div class="ag-horizontal-right-spacer" ref="eRightSpacer"></div>\n        </div>';
    __decorate151([
      RefSelector("eLeftSpacer")
    ], FakeHScrollComp2.prototype, "eLeftSpacer", void 0);
    __decorate151([
      RefSelector("eRightSpacer")
    ], FakeHScrollComp2.prototype, "eRightSpacer", void 0);
    __decorate151([
      Autowired("columnModel")
    ], FakeHScrollComp2.prototype, "columnModel", void 0);
    __decorate151([
      Autowired("pinnedRowModel")
    ], FakeHScrollComp2.prototype, "pinnedRowModel", void 0);
    __decorate151([
      PostConstruct
    ], FakeHScrollComp2.prototype, "postConstruct", null);
    return FakeHScrollComp2;
  }(AbstractFakeScrollComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/pinnedWidthService.js
var __extends166 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate152 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var PinnedWidthService = (
  /** @class */
  function(_super) {
    __extends166(PinnedWidthService2, _super);
    function PinnedWidthService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    PinnedWidthService2.prototype.postConstruct = function() {
      var listener = this.checkContainerWidths.bind(this);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
      this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);
      this.addManagedPropertyListener("domLayout", listener);
    };
    PinnedWidthService2.prototype.checkContainerWidths = function() {
      var printLayout = this.gridOptionsService.isDomLayout("print");
      var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();
      var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();
      if (newLeftWidth != this.leftWidth) {
        this.leftWidth = newLeftWidth;
        this.eventService.dispatchEvent({ type: Events.EVENT_LEFT_PINNED_WIDTH_CHANGED });
      }
      if (newRightWidth != this.rightWidth) {
        this.rightWidth = newRightWidth;
        this.eventService.dispatchEvent({ type: Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED });
      }
    };
    PinnedWidthService2.prototype.getPinnedRightWidth = function() {
      return this.rightWidth;
    };
    PinnedWidthService2.prototype.getPinnedLeftWidth = function() {
      return this.leftWidth;
    };
    __decorate152([
      Autowired("columnModel")
    ], PinnedWidthService2.prototype, "columnModel", void 0);
    __decorate152([
      PostConstruct
    ], PinnedWidthService2.prototype, "postConstruct", null);
    PinnedWidthService2 = __decorate152([
      Bean("pinnedWidthService")
    ], PinnedWidthService2);
    return PinnedWidthService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/entities/rowNodeEventThrottle.js
var __extends167 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate153 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var RowNodeEventThrottle = (
  /** @class */
  function(_super) {
    __extends167(RowNodeEventThrottle2, _super);
    function RowNodeEventThrottle2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.events = [];
      return _this;
    }
    RowNodeEventThrottle2.prototype.postConstruct = function() {
      if (this.rowModel.getType() == "clientSide") {
        this.clientSideRowModel = this.rowModel;
      }
    };
    RowNodeEventThrottle2.prototype.dispatchExpanded = function(event) {
      var _this = this;
      if (this.clientSideRowModel == null) {
        this.eventService.dispatchEvent(event);
        return;
      }
      this.events.push(event);
      var func = function() {
        if (_this.clientSideRowModel) {
          _this.clientSideRowModel.onRowGroupOpened();
        }
        _this.events.forEach(function(e2) {
          return _this.eventService.dispatchEvent(e2);
        });
        _this.events = [];
      };
      if (this.dispatchExpandedDebounced == null) {
        this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);
      }
      this.dispatchExpandedDebounced();
    };
    __decorate153([
      Autowired("animationFrameService")
    ], RowNodeEventThrottle2.prototype, "animationFrameService", void 0);
    __decorate153([
      Autowired("rowModel")
    ], RowNodeEventThrottle2.prototype, "rowModel", void 0);
    __decorate153([
      PostConstruct
    ], RowNodeEventThrottle2.prototype, "postConstruct", null);
    RowNodeEventThrottle2 = __decorate153([
      Bean("rowNodeEventThrottle")
    ], RowNodeEventThrottle2);
    return RowNodeEventThrottle2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridOptionsService.js
var __assign20 = function() {
  __assign20 = Object.assign || function(t2) {
    for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign20.apply(this, arguments);
};
var __decorate154 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __param10 = function(paramIndex, decorator) {
  return function(target, key) {
    decorator(target, key, paramIndex);
  };
};
var __read23 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread19 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read23(arguments[i2]));
  return ar;
};
function toNumber(value) {
  if (typeof value == "number") {
    return value;
  }
  if (typeof value == "string") {
    return parseInt(value, 10);
  }
}
function isTrue(value) {
  return value === true || value === "true";
}
var GridOptionsService = (
  /** @class */
  function() {
    function GridOptionsService2() {
      this.destroyed = false;
      this.domDataKey = "__AG_" + Math.random().toString();
      this.propertyEventService = new EventService();
    }
    GridOptionsService2.prototype.agWire = function(gridApi, columnApi) {
      this.gridOptions.api = gridApi;
      this.gridOptions.columnApi = columnApi;
    };
    GridOptionsService2.prototype.init = function() {
      this.gridOptionLookup = new Set(__spread19(ComponentUtil.ALL_PROPERTIES, ComponentUtil.EVENT_CALLBACKS));
      var async = !this.is("suppressAsyncEvents");
      this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);
      this.getScrollbarWidth();
    };
    GridOptionsService2.prototype.destroy = function() {
      this.gridOptions.api = null;
      this.gridOptions.columnApi = null;
      this.destroyed = true;
    };
    GridOptionsService2.prototype.is = function(property) {
      return isTrue(this.gridOptions[property]);
    };
    GridOptionsService2.prototype.get = function(property) {
      return this.gridOptions[property];
    };
    GridOptionsService2.prototype.getNum = function(property) {
      return toNumber(this.gridOptions[property]);
    };
    GridOptionsService2.prototype.getCallback = function(property) {
      return this.mergeGridCommonParams(this.gridOptions[property]);
    };
    GridOptionsService2.prototype.exists = function(property) {
      return exists(this.gridOptions[property]);
    };
    GridOptionsService2.prototype.mergeGridCommonParams = function(callback) {
      var _this = this;
      if (callback) {
        var wrapped = function(callbackParams) {
          var mergedParams = __assign20(__assign20({}, callbackParams), { api: _this.gridOptions.api, columnApi: _this.gridOptions.columnApi, context: _this.gridOptions.context });
          return callback(mergedParams);
        };
        return wrapped;
      }
      return callback;
    };
    GridOptionsService2.prototype.set = function(key, newValue, force, eventParams) {
      if (force === void 0) {
        force = false;
      }
      if (eventParams === void 0) {
        eventParams = {};
      }
      if (this.gridOptionLookup.has(key)) {
        var previousValue = this.gridOptions[key];
        if (force || previousValue !== newValue) {
          this.gridOptions[key] = newValue;
          var event_1 = __assign20({ type: key, currentValue: newValue, previousValue }, eventParams);
          this.propertyEventService.dispatchEvent(event_1);
        }
      }
    };
    GridOptionsService2.prototype.addEventListener = function(key, listener) {
      this.propertyEventService.addEventListener(key, listener);
    };
    GridOptionsService2.prototype.removeEventListener = function(key, listener) {
      this.propertyEventService.removeEventListener(key, listener);
    };
    GridOptionsService2.prototype.globalEventHandler = function(eventName, event) {
      if (this.destroyed) {
        return;
      }
      var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);
      if (typeof this.gridOptions[callbackMethodName] === "function") {
        this.gridOptions[callbackMethodName](event);
      }
    };
    GridOptionsService2.prototype.getScrollbarWidth = function() {
      if (this.scrollbarWidth == null) {
        var useGridOptions = typeof this.gridOptions.scrollbarWidth === "number" && this.gridOptions.scrollbarWidth >= 0;
        var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : getScrollbarWidth();
        if (scrollbarWidth != null) {
          this.scrollbarWidth = scrollbarWidth;
          this.eventService.dispatchEvent({
            type: Events.EVENT_SCROLLBAR_WIDTH_CHANGED
          });
        }
      }
      return this.scrollbarWidth;
    };
    GridOptionsService2.prototype.isRowModelType = function(rowModelType) {
      return this.gridOptions.rowModelType === rowModelType || rowModelType === "clientSide" && missing(this.gridOptions.rowModelType);
    };
    GridOptionsService2.prototype.isDomLayout = function(domLayout) {
      var _a47;
      var gridLayout = (_a47 = this.get("domLayout")) !== null && _a47 !== void 0 ? _a47 : "normal";
      return gridLayout === domLayout;
    };
    GridOptionsService2.prototype.isRowSelection = function() {
      return this.gridOptions.rowSelection === "single" || this.gridOptions.rowSelection === "multiple";
    };
    GridOptionsService2.prototype.useAsyncEvents = function() {
      return !this.is("suppressAsyncEvents");
    };
    GridOptionsService2.prototype.isGetRowHeightFunction = function() {
      return typeof this.gridOptions.getRowHeight === "function";
    };
    GridOptionsService2.prototype.getRowHeightForNode = function(rowNode, allowEstimate, defaultRowHeight) {
      if (allowEstimate === void 0) {
        allowEstimate = false;
      }
      if (defaultRowHeight == null) {
        defaultRowHeight = this.environment.getDefaultRowHeight();
      }
      if (this.isGetRowHeightFunction()) {
        if (allowEstimate) {
          return { height: defaultRowHeight, estimated: true };
        }
        var params = {
          node: rowNode,
          data: rowNode.data
        };
        var height = this.getCallback("getRowHeight")(params);
        if (this.isNumeric(height)) {
          if (height === 0) {
            doOnce(function() {
              return console.warn("AG Grid: The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.");
            }, "invalidRowHeight");
          }
          return { height: Math.max(1, height), estimated: false };
        }
      }
      if (rowNode.detail && this.is("masterDetail")) {
        if (this.is("detailRowAutoHeight")) {
          return { height: 1, estimated: false };
        }
        if (this.isNumeric(this.gridOptions.detailRowHeight)) {
          return { height: this.gridOptions.detailRowHeight, estimated: false };
        }
        return { height: 300, estimated: false };
      }
      var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;
      return { height: rowHeight, estimated: false };
    };
    GridOptionsService2.prototype.getRowHeightAsNumber = function() {
      if (!this.gridOptions.rowHeight || missing(this.gridOptions.rowHeight)) {
        return this.environment.getDefaultRowHeight();
      }
      var rowHeight = this.gridOptions.rowHeight;
      if (rowHeight && this.isNumeric(rowHeight)) {
        this.environment.setRowHeightVariable(rowHeight);
        return rowHeight;
      }
      console.warn("AG Grid row height must be a number if not using standard row model");
      return this.environment.getDefaultRowHeight();
    };
    GridOptionsService2.prototype.isNumeric = function(value) {
      return !isNaN(value) && typeof value === "number" && isFinite(value);
    };
    GridOptionsService2.prototype.getDomDataKey = function() {
      return this.domDataKey;
    };
    GridOptionsService2.prototype.getDomData = function(element, key) {
      var domData = element[this.getDomDataKey()];
      return domData ? domData[key] : void 0;
    };
    GridOptionsService2.prototype.setDomData = function(element, key, value) {
      var domDataKey = this.getDomDataKey();
      var domData = element[domDataKey];
      if (missing(domData)) {
        domData = {};
        element[domDataKey] = domData;
      }
      domData[key] = value;
    };
    GridOptionsService2.prototype.getDocument = function() {
      var result = null;
      if (this.gridOptions.getDocument && exists(this.gridOptions.getDocument)) {
        result = this.gridOptions.getDocument();
      } else if (this.eGridDiv) {
        result = this.eGridDiv.ownerDocument;
      }
      if (result && exists(result)) {
        return result;
      }
      return document;
    };
    GridOptionsService2.prototype.getRootNode = function() {
      return this.eGridDiv.getRootNode();
    };
    GridOptionsService2.prototype.getRowIdFunc = function() {
      var getRowId = this.getCallback("getRowId");
      if (getRowId) {
        return getRowId;
      }
      var getRowNodeId = this.get("getRowNodeId");
      if (getRowNodeId) {
        return function(params) {
          return getRowNodeId(params.data);
        };
      }
    };
    GridOptionsService2.prototype.getAsyncTransactionWaitMillis = function() {
      return exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : 50;
    };
    GridOptionsService2.prototype.isAnimateRows = function() {
      if (this.is("ensureDomOrder")) {
        return false;
      }
      return this.is("animateRows");
    };
    GridOptionsService2.prototype.isTreeData = function() {
      return this.is("treeData") && ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, "Tree Data");
    };
    GridOptionsService2.prototype.isMasterDetail = function() {
      return this.is("masterDetail") && ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, "masterDetail");
    };
    GridOptionsService2.prototype.isEnableRangeSelection = function() {
      return this.is("enableRangeSelection") && ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule);
    };
    GridOptionsService2.prototype.isColumnsSortingCoupledToGroup = function() {
      var autoGroupColumnDef = this.get("autoGroupColumnDef");
      var isClientSideRowModel = this.isRowModelType("clientSide");
      return isClientSideRowModel && !(autoGroupColumnDef === null || autoGroupColumnDef === void 0 ? void 0 : autoGroupColumnDef.comparator);
    };
    GridOptionsService2.prototype.getGroupAggFiltering = function() {
      var userValue = this.gridOptions.groupAggFiltering;
      if (typeof userValue === "function") {
        return this.getCallback("groupAggFiltering");
      }
      if (isTrue(userValue)) {
        return function() {
          return true;
        };
      }
      return void 0;
    };
    GridOptionsService2.prototype.isGroupMultiAutoColumn = function() {
      if (this.gridOptions.groupDisplayType) {
        return matchesGroupDisplayType("multipleColumns", this.gridOptions.groupDisplayType);
      }
      return this.is("groupHideOpenParents");
    };
    GridOptionsService2.prototype.isGroupUseEntireRow = function(pivotMode) {
      if (pivotMode) {
        return false;
      }
      return this.gridOptions.groupDisplayType ? matchesGroupDisplayType("groupRows", this.gridOptions.groupDisplayType) : false;
    };
    __decorate154([
      Autowired("gridOptions")
    ], GridOptionsService2.prototype, "gridOptions", void 0);
    __decorate154([
      Autowired("eventService")
    ], GridOptionsService2.prototype, "eventService", void 0);
    __decorate154([
      Autowired("environment")
    ], GridOptionsService2.prototype, "environment", void 0);
    __decorate154([
      Autowired("eGridDiv")
    ], GridOptionsService2.prototype, "eGridDiv", void 0);
    __decorate154([
      __param10(0, Qualifier("gridApi")),
      __param10(1, Qualifier("columnApi"))
    ], GridOptionsService2.prototype, "agWire", null);
    __decorate154([
      PostConstruct
    ], GridOptionsService2.prototype, "init", null);
    __decorate154([
      PreDestroy
    ], GridOptionsService2.prototype, "destroy", null);
    GridOptionsService2 = __decorate154([
      Bean("gridOptionsService")
    ], GridOptionsService2);
    return GridOptionsService2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/localeService.js
var __extends168 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate155 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var LocaleService = (
  /** @class */
  function(_super) {
    __extends168(LocaleService2, _super);
    function LocaleService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    LocaleService2.prototype.getLocaleTextFunc = function() {
      var getLocaleText = this.gridOptionsService.getCallback("getLocaleText");
      if (getLocaleText) {
        return function(key, defaultValue, variableValues) {
          var params = {
            key,
            defaultValue,
            variableValues
          };
          return getLocaleText(params);
        };
      }
      var localeTextFunc = this.gridOptionsService.get("localeTextFunc");
      if (localeTextFunc) {
        return localeTextFunc;
      }
      var localeText = this.gridOptionsService.get("localeText");
      return function(key, defaultValue, variableValues) {
        var localisedText = localeText && localeText[key];
        if (localisedText && variableValues && variableValues.length) {
          var found = 0;
          while (true) {
            if (found >= variableValues.length) {
              break;
            }
            var idx = localisedText.indexOf("${variable}");
            if (idx === -1) {
              break;
            }
            localisedText = localisedText.replace("${variable}", variableValues[found++]);
          }
        }
        return localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue;
      };
    };
    LocaleService2 = __decorate155([
      Bean("localeService")
    ], LocaleService2);
    return LocaleService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/fakeVScrollComp.js
var __extends169 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate156 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var FakeVScrollComp = (
  /** @class */
  function(_super) {
    __extends169(FakeVScrollComp2, _super);
    function FakeVScrollComp2() {
      return _super.call(this, FakeVScrollComp2.TEMPLATE, "vertical") || this;
    }
    FakeVScrollComp2.prototype.postConstruct = function() {
      _super.prototype.postConstruct.call(this);
      this.createManagedBean(new SetHeightFeature(this.eContainer));
      this.ctrlsService.registerFakeVScrollComp(this);
    };
    FakeVScrollComp2.prototype.setScrollVisible = function() {
      var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();
      var invisibleScrollbar2 = this.invisibleScrollbar;
      var scrollbarWidth = vScrollShowing ? this.gridOptionsService.getScrollbarWidth() || 0 : 0;
      var adjustedScrollbarWidth = scrollbarWidth === 0 && invisibleScrollbar2 ? 16 : scrollbarWidth;
      this.addOrRemoveCssClass("ag-scrollbar-invisible", invisibleScrollbar2);
      setFixedWidth(this.getGui(), adjustedScrollbarWidth);
      setFixedWidth(this.eViewport, adjustedScrollbarWidth);
      setFixedWidth(this.eContainer, adjustedScrollbarWidth);
      this.setDisplayed(vScrollShowing, { skipAriaHidden: true });
    };
    FakeVScrollComp2.TEMPLATE = '<div class="ag-body-vertical-scroll" aria-hidden="true">\n            <div class="ag-body-vertical-scroll-viewport" ref="eViewport">\n                <div class="ag-body-vertical-scroll-container" ref="eContainer"></div>\n            </div>\n        </div>';
    __decorate156([
      PostConstruct
    ], FakeVScrollComp2.prototype, "postConstruct", null);
    return FakeVScrollComp2;
  }(AbstractFakeScrollComp)
);

// node_modules/@ag-grid-community/core/dist/esm/es5/grid.js
var __read24 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread20 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read24(arguments[i2]));
  return ar;
};
var Grid = (
  /** @class */
  function() {
    function Grid2(eGridDiv, gridOptions, params) {
      if (!gridOptions) {
        console.error("AG Grid: no gridOptions provided to the grid");
        return;
      }
      this.gridOptions = gridOptions;
      new GridCoreCreator().create(eGridDiv, gridOptions, function(context) {
        var gridComp = new GridComp(eGridDiv);
        context.createBean(gridComp);
      }, void 0, params);
    }
    Grid2.prototype.destroy = function() {
      if (this.gridOptions && this.gridOptions.api) {
        this.gridOptions.api.destroy();
      }
    };
    return Grid2;
  }()
);
var GridCoreCreator = (
  /** @class */
  function() {
    function GridCoreCreator2() {
    }
    GridCoreCreator2.prototype.create = function(eGridDiv, gridOptions, createUi, acceptChanges, params) {
      var _this = this;
      var debug = !!gridOptions.debug;
      var registeredModules = this.getRegisteredModules(params);
      var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);
      var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);
      if (!beanClasses) {
        return;
      }
      var contextParams = {
        providedBeanInstances,
        beanClasses,
        debug
      };
      var logger = new Logger("AG Grid", function() {
        return gridOptions.debug;
      });
      var contextLogger = new Logger("Context", function() {
        return contextParams.debug;
      });
      var context = new Context(contextParams, contextLogger);
      var beans = context.getBean("beans");
      this.registerModuleUserComponents(beans, registeredModules);
      this.registerStackComponents(beans, registeredModules);
      this.registerControllers(beans, registeredModules);
      createUi(context);
      beans.ctrlsService.whenReady(function() {
        _this.setColumnsAndData(beans);
        _this.dispatchGridReadyEvent(beans);
        var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);
        logger.log("initialised successfully, enterprise = " + isEnterprise);
      });
      if (acceptChanges) {
        acceptChanges(context);
      }
    };
    GridCoreCreator2.prototype.registerControllers = function(beans, registeredModules) {
      registeredModules.forEach(function(module) {
        if (module.controllers) {
          module.controllers.forEach(function(meta) {
            return beans.ctrlsFactory.register(meta);
          });
        }
      });
    };
    GridCoreCreator2.prototype.registerStackComponents = function(beans, registeredModules) {
      var agStackComponents = this.createAgStackComponentsList(registeredModules);
      beans.agStackComponentsRegistry.setupComponents(agStackComponents);
    };
    GridCoreCreator2.prototype.getRegisteredModules = function(params) {
      var passedViaConstructor = params ? params.modules : null;
      var registered = ModuleRegistry.getRegisteredModules();
      var allModules = [];
      var mapNames = {};
      function addModule(moduleBased, mod) {
        function addIndividualModule(currentModule) {
          if (!mapNames[currentModule.moduleName]) {
            mapNames[currentModule.moduleName] = true;
            allModules.push(currentModule);
            ModuleRegistry.register(currentModule, moduleBased);
          }
        }
        addIndividualModule(mod);
        if (mod.dependantModules) {
          mod.dependantModules.forEach(addModule.bind(null, moduleBased));
        }
      }
      if (passedViaConstructor) {
        passedViaConstructor.forEach(addModule.bind(null, true));
      }
      if (registered) {
        registered.forEach(addModule.bind(null, !ModuleRegistry.isPackageBased()));
      }
      return allModules;
    };
    GridCoreCreator2.prototype.registerModuleUserComponents = function(beans, registeredModules) {
      var moduleUserComps = this.extractModuleEntity(registeredModules, function(module) {
        return module.userComponents ? module.userComponents : [];
      });
      moduleUserComps.forEach(function(compMeta) {
        beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);
      });
    };
    GridCoreCreator2.prototype.createProvidedBeans = function(eGridDiv, gridOptions, params) {
      var frameworkOverrides = params ? params.frameworkOverrides : null;
      if (missing(frameworkOverrides)) {
        frameworkOverrides = new VanillaFrameworkOverrides();
      }
      var seed = {
        gridOptions,
        eGridDiv,
        globalEventListener: params ? params.globalEventListener : null,
        frameworkOverrides
      };
      if (params && params.providedBeanInstances) {
        Object.assign(seed, params.providedBeanInstances);
      }
      return seed;
    };
    GridCoreCreator2.prototype.createAgStackComponentsList = function(registeredModules) {
      var components = [
        { componentName: "AgCheckbox", componentClass: AgCheckbox },
        { componentName: "AgRadioButton", componentClass: AgRadioButton },
        { componentName: "AgToggleButton", componentClass: AgToggleButton },
        { componentName: "AgInputTextField", componentClass: AgInputTextField },
        { componentName: "AgInputTextArea", componentClass: AgInputTextArea },
        { componentName: "AgInputNumberField", componentClass: AgInputNumberField },
        { componentName: "AgInputRange", componentClass: AgInputRange },
        { componentName: "AgSelect", componentClass: AgSelect },
        { componentName: "AgSlider", componentClass: AgSlider },
        { componentName: "AgGridBody", componentClass: GridBodyComp },
        { componentName: "AgHeaderRoot", componentClass: GridHeaderComp },
        { componentName: "AgSortIndicator", componentClass: SortIndicatorComp },
        { componentName: "AgPagination", componentClass: PaginationComp },
        { componentName: "AgOverlayWrapper", componentClass: OverlayWrapperComponent },
        { componentName: "AgGroupComponent", componentClass: AgGroupComponent },
        { componentName: "AgPanel", componentClass: AgPanel },
        { componentName: "AgDialog", componentClass: AgDialog },
        { componentName: "AgRowContainer", componentClass: RowContainerComp },
        { componentName: "AgFakeHorizontalScroll", componentClass: FakeHScrollComp },
        { componentName: "AgFakeVerticalScroll", componentClass: FakeVScrollComp }
      ];
      var moduleAgStackComps = this.extractModuleEntity(registeredModules, function(module) {
        return module.agStackComponents ? module.agStackComponents : [];
      });
      components = components.concat(moduleAgStackComps);
      return components;
    };
    GridCoreCreator2.prototype.createBeansList = function(rowModelType, registeredModules) {
      var rowModelClass = this.getRowModelClass(rowModelType, registeredModules);
      if (!rowModelClass) {
        return;
      }
      var beans = [
        rowModelClass,
        Beans,
        RowPositionUtils,
        CellPositionUtils,
        HeaderPositionUtils,
        PaginationAutoPageSizeService,
        GridApi,
        UserComponentRegistry,
        AgComponentUtils,
        ComponentMetadataProvider,
        ResizeObserverService,
        UserComponentFactory,
        RowContainerHeightService,
        HorizontalResizeService,
        LocaleService,
        GridOptionsValidator,
        PinnedRowModel,
        DragService,
        DisplayedGroupCreator,
        EventService,
        GridOptionsService,
        PopupService,
        SelectionService,
        FilterManager,
        ColumnModel,
        HeaderNavigationService,
        PaginationProxy,
        RowRenderer,
        ExpressionService,
        ColumnFactory,
        TemplateService,
        AlignedGridsService,
        NavigationService,
        ValueCache,
        ValueService,
        LoggerFactory,
        ColumnUtils,
        AutoWidthCalculator,
        StandardMenuFactory,
        DragAndDropService,
        ColumnApi,
        FocusService,
        MouseEventService,
        Environment,
        CellNavigationService,
        ValueFormatterService,
        StylingService,
        ScrollVisibleService,
        SortController,
        ColumnHoverService,
        ColumnAnimationService,
        SelectableService,
        AutoGroupColService,
        ChangeDetectionService,
        AnimationFrameService,
        UndoRedoService,
        AgStackComponentsRegistry,
        ColumnDefFactory,
        RowCssClassCalculator,
        RowNodeBlockLoader,
        RowNodeSorter,
        CtrlsService,
        PinnedWidthService,
        RowNodeEventThrottle,
        CtrlsFactory
      ];
      var moduleBeans = this.extractModuleEntity(registeredModules, function(module) {
        return module.beans ? module.beans : [];
      });
      beans.push.apply(beans, __spread20(moduleBeans));
      var beansNoDuplicates = [];
      beans.forEach(function(bean) {
        if (beansNoDuplicates.indexOf(bean) < 0) {
          beansNoDuplicates.push(bean);
        }
      });
      return beansNoDuplicates;
    };
    GridCoreCreator2.prototype.extractModuleEntity = function(moduleEntities, extractor) {
      return [].concat.apply([], __spread20(moduleEntities.map(extractor)));
    };
    GridCoreCreator2.prototype.setColumnsAndData = function(beans) {
      var columnDefs = beans.gridOptionsService.get("columnDefs");
      beans.columnModel.setColumnDefs(columnDefs || [], "gridInitializing");
      beans.rowModel.start();
    };
    GridCoreCreator2.prototype.dispatchGridReadyEvent = function(beans) {
      var readyEvent = {
        type: Events.EVENT_GRID_READY
      };
      beans.eventService.dispatchEvent(readyEvent);
    };
    GridCoreCreator2.prototype.getRowModelClass = function(rowModelType, registeredModules) {
      if (!rowModelType) {
        rowModelType = "clientSide";
      }
      var rowModelClasses = {};
      registeredModules.forEach(function(module) {
        iterateObject(module.rowModels, function(key, value) {
          rowModelClasses[key] = value;
        });
      });
      var rowModelClass = rowModelClasses[rowModelType];
      if (exists(rowModelClass)) {
        return rowModelClass;
      }
      var missingModules = {
        clientSide: ModuleNames.ClientSideRowModelModule,
        infinite: ModuleNames.InfiniteRowModelModule,
        serverSide: ModuleNames.ServerSideRowModelModule,
        viewport: ModuleNames.ViewportRowModelModule
      };
      if (missingModules[rowModelType]) {
        ModuleRegistry.assertRegistered(missingModules[rowModelType], "rowModelType = '" + rowModelType + "'");
      } else {
        console.error("AG Grid: could not find row model for rowModelType = " + rowModelType);
      }
    };
    return GridCoreCreator2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/frameworkComponentWrapper.js
var BaseComponentWrapper = (
  /** @class */
  function() {
    function BaseComponentWrapper2() {
    }
    BaseComponentWrapper2.prototype.wrap = function(OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {
      var _this = this;
      if (optionalMethodList === void 0) {
        optionalMethodList = [];
      }
      var wrapper = this.createWrapper(OriginalConstructor, componentType);
      mandatoryMethodList.forEach(function(methodName) {
        _this.createMethod(wrapper, methodName, true);
      });
      optionalMethodList.forEach(function(methodName) {
        _this.createMethod(wrapper, methodName, false);
      });
      return wrapper;
    };
    BaseComponentWrapper2.prototype.unwrap = function(comp) {
      return comp;
    };
    BaseComponentWrapper2.prototype.createMethod = function(wrapper, methodName, mandatory) {
      wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));
    };
    BaseComponentWrapper2.prototype.createMethodProxy = function(wrapper, methodName, mandatory) {
      return function() {
        if (wrapper.hasMethod(methodName)) {
          return wrapper.callMethod(methodName, arguments);
        }
        if (mandatory) {
          console.warn("AG Grid: Framework component is missing the method " + methodName + "()");
        }
        return null;
      };
    };
    return BaseComponentWrapper2;
  }()
);

// node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/iSparklineCellRendererParams.js
var BarColumnLabelPlacement;
(function(BarColumnLabelPlacement2) {
  BarColumnLabelPlacement2["InsideBase"] = "insideBase";
  BarColumnLabelPlacement2["InsideEnd"] = "insideEnd";
  BarColumnLabelPlacement2["Center"] = "center";
  BarColumnLabelPlacement2["OutsideEnd"] = "outsideEnd";
})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));

// node_modules/@ag-grid-community/core/dist/esm/es5/main.js
var globalObj = typeof global === "undefined" ? {} : global;
globalObj.HTMLElement = typeof HTMLElement === "undefined" ? {} : HTMLElement;
globalObj.HTMLButtonElement = typeof HTMLButtonElement === "undefined" ? {} : HTMLButtonElement;
globalObj.HTMLSelectElement = typeof HTMLSelectElement === "undefined" ? {} : HTMLSelectElement;
globalObj.HTMLInputElement = typeof HTMLInputElement === "undefined" ? {} : HTMLInputElement;
globalObj.Node = typeof Node === "undefined" ? {} : Node;
globalObj.MouseEvent = typeof MouseEvent === "undefined" ? {} : MouseEvent;

// node_modules/@ag-grid-community/angular/fesm2015/ag-grid-community-angular.js
var AngularFrameworkOverrides = class extends VanillaFrameworkOverrides {
  constructor(_ngZone) {
    super();
    this._ngZone = _ngZone;
  }
  setEmitterUsedCallback(isEmitterUsed) {
    this.isEmitterUsed = isEmitterUsed;
  }
  setTimeout(action, timeout) {
    if (this._ngZone) {
      this._ngZone.runOutsideAngular(() => {
        window.setTimeout(() => {
          action();
        }, timeout);
      });
    } else {
      window.setTimeout(() => {
        action();
      }, timeout);
    }
  }
  setInterval(action, interval) {
    return new AgPromise((resolve) => {
      if (this._ngZone) {
        this._ngZone.runOutsideAngular(() => {
          resolve(window.setInterval(() => {
            action();
          }, interval));
        });
      } else {
        resolve(window.setInterval(() => {
          action();
        }, interval));
      }
    });
  }
  addEventListener(element, eventType, listener, useCapture) {
    if (this.isOutsideAngular(eventType) && this._ngZone) {
      this._ngZone.runOutsideAngular(() => {
        element.addEventListener(eventType, listener, useCapture);
      });
    } else {
      element.addEventListener(eventType, listener, useCapture);
    }
  }
  dispatchEvent(eventType, listener, global2 = false) {
    if (this.isOutsideAngular(eventType)) {
      if (this._ngZone) {
        this._ngZone.runOutsideAngular(listener);
      } else {
        listener();
      }
    } else if (this.isEmitterUsed(eventType) || global2) {
      if (!NgZone.isInAngularZone() && this._ngZone) {
        this._ngZone.run(listener);
      } else {
        listener();
      }
    }
  }
  isFrameworkComponent(comp) {
    if (!comp) {
      return false;
    }
    const prototype = comp.prototype;
    const isAngularComp = prototype && "agInit" in prototype;
    return isAngularComp;
  }
};
AngularFrameworkOverrides.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AngularFrameworkOverrides, deps: [{ token: NgZone }], target: FactoryTarget.Injectable });
AngularFrameworkOverrides.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AngularFrameworkOverrides });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AngularFrameworkOverrides, decorators: [{
  type: Injectable
}], ctorParameters: function() {
  return [{ type: NgZone }];
} });
var AngularFrameworkComponentWrapper = class extends BaseComponentWrapper {
  setViewContainerRef(viewContainerRef) {
    this.viewContainerRef = viewContainerRef;
  }
  setComponentFactoryResolver(componentFactoryResolver) {
    this.componentFactoryResolver = componentFactoryResolver;
  }
  createWrapper(OriginalConstructor) {
    let that = this;
    class DynamicAgNg2Component extends BaseGuiComponent {
      init(params) {
        super.init(params);
        this._componentRef.changeDetectorRef.detectChanges();
      }
      createComponent() {
        return that.createComponent(OriginalConstructor);
      }
      hasMethod(name) {
        return wrapper.getFrameworkComponentInstance()[name] != null;
      }
      callMethod(name, args) {
        const componentRef = this.getFrameworkComponentInstance();
        return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);
      }
      addMethod(name, callback) {
        wrapper[name] = callback;
      }
    }
    let wrapper = new DynamicAgNg2Component();
    return wrapper;
  }
  createComponent(componentType) {
    let factory = this.componentFactoryResolver.resolveComponentFactory(componentType);
    return this.viewContainerRef.createComponent(factory);
  }
};
AngularFrameworkComponentWrapper.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AngularFrameworkComponentWrapper, deps: null, target: FactoryTarget.Injectable });
AngularFrameworkComponentWrapper.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AngularFrameworkComponentWrapper });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AngularFrameworkComponentWrapper, decorators: [{
  type: Injectable
}] });
var BaseGuiComponent = class {
  init(params) {
    this._params = params;
    this._componentRef = this.createComponent();
    this._agAwareComponent = this._componentRef.instance;
    this._frameworkComponentInstance = this._componentRef.instance;
    this._eGui = this._componentRef.location.nativeElement;
    this._agAwareComponent.agInit(this._params);
  }
  getGui() {
    return this._eGui;
  }
  destroy() {
    if (this._frameworkComponentInstance && typeof this._frameworkComponentInstance.destroy === "function") {
      this._frameworkComponentInstance.destroy();
    }
    if (this._componentRef) {
      this._componentRef.destroy();
    }
  }
  getFrameworkComponentInstance() {
    return this._frameworkComponentInstance;
  }
};
var AgGridAngular = class {
  constructor(elementDef, viewContainerRef, angularFrameworkOverrides, frameworkComponentWrapper, componentFactoryResolver) {
    this.viewContainerRef = viewContainerRef;
    this.angularFrameworkOverrides = angularFrameworkOverrides;
    this.frameworkComponentWrapper = frameworkComponentWrapper;
    this.componentFactoryResolver = componentFactoryResolver;
    this._initialised = false;
    this._destroyed = false;
    this._fullyReady = AgPromise.resolve(true);
    this.statusBar = void 0;
    this.sideBar = void 0;
    this.suppressContextMenu = void 0;
    this.preventDefaultOnContextMenu = void 0;
    this.allowContextMenuWithControlKey = void 0;
    this.suppressMenuHide = void 0;
    this.enableBrowserTooltips = void 0;
    this.tooltipShowDelay = void 0;
    this.tooltipHideDelay = void 0;
    this.tooltipMouseTrack = void 0;
    this.popupParent = void 0;
    this.copyHeadersToClipboard = void 0;
    this.copyGroupHeadersToClipboard = void 0;
    this.clipboardDelimiter = void 0;
    this.suppressCopyRowsToClipboard = void 0;
    this.suppressCopySingleCellRanges = void 0;
    this.suppressLastEmptyLineOnPaste = void 0;
    this.suppressClipboardPaste = void 0;
    this.suppressClipboardApi = void 0;
    this.columnDefs = void 0;
    this.defaultColDef = void 0;
    this.defaultColGroupDef = void 0;
    this.columnTypes = void 0;
    this.maintainColumnOrder = void 0;
    this.suppressFieldDotNotation = void 0;
    this.headerHeight = void 0;
    this.groupHeaderHeight = void 0;
    this.floatingFiltersHeight = void 0;
    this.pivotHeaderHeight = void 0;
    this.pivotGroupHeaderHeight = void 0;
    this.allowDragFromColumnsToolPanel = void 0;
    this.suppressMovableColumns = void 0;
    this.suppressColumnMoveAnimation = void 0;
    this.suppressDragLeaveHidesColumns = void 0;
    this.suppressRowGroupHidesColumns = void 0;
    this.colResizeDefault = void 0;
    this.suppressAutoSize = void 0;
    this.autoSizePadding = void 0;
    this.skipHeaderOnAutoSize = void 0;
    this.components = void 0;
    this.frameworkComponents = void 0;
    this.editType = void 0;
    this.singleClickEdit = void 0;
    this.suppressClickEdit = void 0;
    this.readOnlyEdit = void 0;
    this.stopEditingWhenCellsLoseFocus = void 0;
    this.enterMovesDown = void 0;
    this.enterMovesDownAfterEdit = void 0;
    this.enableCellEditingOnBackspace = void 0;
    this.undoRedoCellEditing = void 0;
    this.undoRedoCellEditingLimit = void 0;
    this.defaultCsvExportParams = void 0;
    this.suppressCsvExport = void 0;
    this.defaultExcelExportParams = void 0;
    this.suppressExcelExport = void 0;
    this.excelStyles = void 0;
    this.quickFilterText = void 0;
    this.cacheQuickFilter = void 0;
    this.excludeChildrenWhenTreeDataFiltering = void 0;
    this.enableCharts = void 0;
    this.chartThemes = void 0;
    this.customChartThemes = void 0;
    this.chartThemeOverrides = void 0;
    this.enableChartToolPanelsButton = void 0;
    this.suppressChartToolPanelsButton = void 0;
    this.chartToolPanelsDef = void 0;
    this.loadingCellRenderer = void 0;
    this.loadingCellRendererFramework = void 0;
    this.loadingCellRendererParams = void 0;
    this.loadingCellRendererSelector = void 0;
    this.localeText = void 0;
    this.masterDetail = void 0;
    this.keepDetailRows = void 0;
    this.keepDetailRowsCount = void 0;
    this.detailCellRenderer = void 0;
    this.detailCellRendererFramework = void 0;
    this.detailCellRendererParams = void 0;
    this.detailRowHeight = void 0;
    this.detailRowAutoHeight = void 0;
    this.context = void 0;
    this.alignedGrids = void 0;
    this.tabIndex = void 0;
    this.rowBuffer = void 0;
    this.valueCache = void 0;
    this.valueCacheNeverExpires = void 0;
    this.enableCellExpressions = void 0;
    this.suppressParentsInRowNodes = void 0;
    this.suppressTouch = void 0;
    this.suppressFocusAfterRefresh = void 0;
    this.suppressAsyncEvents = void 0;
    this.suppressBrowserResizeObserver = void 0;
    this.suppressPropertyNamesCheck = void 0;
    this.suppressChangeDetection = void 0;
    this.debug = void 0;
    this.overlayLoadingTemplate = void 0;
    this.loadingOverlayComponent = void 0;
    this.loadingOverlayComponentFramework = void 0;
    this.loadingOverlayComponentParams = void 0;
    this.suppressLoadingOverlay = void 0;
    this.overlayNoRowsTemplate = void 0;
    this.noRowsOverlayComponent = void 0;
    this.noRowsOverlayComponentFramework = void 0;
    this.noRowsOverlayComponentParams = void 0;
    this.suppressNoRowsOverlay = void 0;
    this.pagination = void 0;
    this.paginationPageSize = void 0;
    this.paginationAutoPageSize = void 0;
    this.paginateChildRows = void 0;
    this.suppressPaginationPanel = void 0;
    this.pivotMode = void 0;
    this.pivotPanelShow = void 0;
    this.pivotColumnGroupTotals = void 0;
    this.pivotRowTotals = void 0;
    this.pivotSuppressAutoColumn = void 0;
    this.suppressExpandablePivotGroups = void 0;
    this.functionsReadOnly = void 0;
    this.aggFuncs = void 0;
    this.suppressAggFuncInHeader = void 0;
    this.suppressAggAtRootLevel = void 0;
    this.aggregateOnlyChangedColumns = void 0;
    this.suppressAggFilteredOnly = void 0;
    this.removePivotHeaderRowWhenSingleValueColumn = void 0;
    this.animateRows = void 0;
    this.enableCellChangeFlash = void 0;
    this.cellFlashDelay = void 0;
    this.cellFadeDelay = void 0;
    this.allowShowChangeAfterFilter = void 0;
    this.domLayout = void 0;
    this.ensureDomOrder = void 0;
    this.enableRtl = void 0;
    this.suppressColumnVirtualisation = void 0;
    this.suppressMaxRenderedRowRestriction = void 0;
    this.suppressRowVirtualisation = void 0;
    this.rowDragManaged = void 0;
    this.suppressRowDrag = void 0;
    this.suppressMoveWhenRowDragging = void 0;
    this.rowDragEntireRow = void 0;
    this.rowDragMultiRow = void 0;
    this.rowDragText = void 0;
    this.fullWidthCellRenderer = void 0;
    this.fullWidthCellRendererFramework = void 0;
    this.fullWidthCellRendererParams = void 0;
    this.embedFullWidthRows = void 0;
    this.groupDisplayType = void 0;
    this.groupDefaultExpanded = void 0;
    this.autoGroupColumnDef = void 0;
    this.groupMaintainOrder = void 0;
    this.groupSelectsChildren = void 0;
    this.groupAggFiltering = void 0;
    this.groupIncludeFooter = void 0;
    this.groupIncludeTotalFooter = void 0;
    this.groupSuppressBlankHeader = void 0;
    this.groupSelectsFiltered = void 0;
    this.showOpenedGroup = void 0;
    this.groupRemoveSingleChildren = void 0;
    this.groupRemoveLowestSingleChildren = void 0;
    this.groupHideOpenParents = void 0;
    this.groupAllowUnbalanced = void 0;
    this.rowGroupPanelShow = void 0;
    this.groupRowRenderer = void 0;
    this.groupRowRendererFramework = void 0;
    this.groupRowRendererParams = void 0;
    this.suppressMakeColumnVisibleAfterUnGroup = void 0;
    this.treeData = void 0;
    this.rowGroupPanelSuppressSort = void 0;
    this.groupRowsSticky = void 0;
    this.rememberGroupStateWhenNewData = void 0;
    this.pinnedTopRowData = void 0;
    this.pinnedBottomRowData = void 0;
    this.rowModelType = void 0;
    this.rowData = void 0;
    this.immutableData = void 0;
    this.asyncTransactionWaitMillis = void 0;
    this.suppressModelUpdateAfterUpdateTransaction = void 0;
    this.datasource = void 0;
    this.cacheOverflowSize = void 0;
    this.infiniteInitialRowCount = void 0;
    this.serverSideInitialRowCount = void 0;
    this.serverSideStoreType = void 0;
    this.suppressServerSideInfiniteScroll = void 0;
    this.cacheBlockSize = void 0;
    this.maxBlocksInCache = void 0;
    this.maxConcurrentDatasourceRequests = void 0;
    this.blockLoadDebounceMillis = void 0;
    this.purgeClosedRowNodes = void 0;
    this.serverSideDatasource = void 0;
    this.serverSideSortAllLevels = void 0;
    this.serverSideFilterAllLevels = void 0;
    this.serverSideSortOnServer = void 0;
    this.serverSideFilterOnServer = void 0;
    this.serverSideSortingAlwaysResets = void 0;
    this.serverSideFilteringAlwaysResets = void 0;
    this.viewportDatasource = void 0;
    this.viewportRowModelPageSize = void 0;
    this.viewportRowModelBufferSize = void 0;
    this.alwaysShowHorizontalScroll = void 0;
    this.alwaysShowVerticalScroll = void 0;
    this.debounceVerticalScrollbar = void 0;
    this.suppressHorizontalScroll = void 0;
    this.suppressScrollOnNewData = void 0;
    this.suppressScrollWhenPopupsAreOpen = void 0;
    this.suppressAnimationFrame = void 0;
    this.suppressMiddleClickScrolls = void 0;
    this.suppressPreventDefaultOnMouseWheel = void 0;
    this.scrollbarWidth = void 0;
    this.rowSelection = void 0;
    this.rowMultiSelectWithClick = void 0;
    this.suppressRowDeselection = void 0;
    this.suppressRowClickSelection = void 0;
    this.suppressCellSelection = void 0;
    this.suppressCellFocus = void 0;
    this.suppressMultiRangeSelection = void 0;
    this.enableCellTextSelection = void 0;
    this.enableRangeSelection = void 0;
    this.enableRangeHandle = void 0;
    this.enableFillHandle = void 0;
    this.fillHandleDirection = void 0;
    this.suppressClearOnFillReduction = void 0;
    this.sortingOrder = void 0;
    this.accentedSort = void 0;
    this.unSortIcon = void 0;
    this.suppressMultiSort = void 0;
    this.alwaysMultiSort = void 0;
    this.multiSortKey = void 0;
    this.suppressMaintainUnsortedOrder = void 0;
    this.icons = void 0;
    this.rowHeight = void 0;
    this.rowStyle = void 0;
    this.rowClass = void 0;
    this.rowClassRules = void 0;
    this.suppressRowHoverHighlight = void 0;
    this.suppressRowTransform = void 0;
    this.columnHoverHighlight = void 0;
    this.deltaSort = void 0;
    this.treeDataDisplayType = void 0;
    this.functionsPassive = void 0;
    this.enableGroupEdit = void 0;
    this.getContextMenuItems = void 0;
    this.getMainMenuItems = void 0;
    this.postProcessPopup = void 0;
    this.processCellForClipboard = void 0;
    this.processHeaderForClipboard = void 0;
    this.processGroupHeaderForClipboard = void 0;
    this.processCellFromClipboard = void 0;
    this.sendToClipboard = void 0;
    this.processDataFromClipboard = void 0;
    this.isExternalFilterPresent = void 0;
    this.doesExternalFilterPass = void 0;
    this.getChartToolbarItems = void 0;
    this.createChartContainer = void 0;
    this.navigateToNextHeader = void 0;
    this.tabToNextHeader = void 0;
    this.navigateToNextCell = void 0;
    this.tabToNextCell = void 0;
    this.localeTextFunc = void 0;
    this.getLocaleText = void 0;
    this.getDocument = void 0;
    this.paginationNumberFormatter = void 0;
    this.groupRowAggNodes = void 0;
    this.getGroupRowAgg = void 0;
    this.isGroupOpenByDefault = void 0;
    this.initialGroupOrderComparator = void 0;
    this.defaultGroupOrderComparator = void 0;
    this.processSecondaryColDef = void 0;
    this.processSecondaryColGroupDef = void 0;
    this.processPivotResultColDef = void 0;
    this.processPivotResultColGroupDef = void 0;
    this.getDataPath = void 0;
    this.getChildCount = void 0;
    this.getServerSideGroupLevelParams = void 0;
    this.getServerSideStoreParams = void 0;
    this.isServerSideGroupOpenByDefault = void 0;
    this.isApplyServerSideTransaction = void 0;
    this.isServerSideGroup = void 0;
    this.getServerSideGroupKey = void 0;
    this.getBusinessKeyForNode = void 0;
    this.getRowNodeId = void 0;
    this.getRowId = void 0;
    this.resetRowDataOnUpdate = void 0;
    this.processRowPostCreate = void 0;
    this.isRowSelectable = void 0;
    this.isRowMaster = void 0;
    this.fillOperation = void 0;
    this.postSort = void 0;
    this.postSortRows = void 0;
    this.getRowStyle = void 0;
    this.getRowClass = void 0;
    this.getRowHeight = void 0;
    this.isFullWidthCell = void 0;
    this.isFullWidthRow = void 0;
    this.toolPanelVisibleChanged = new EventEmitter();
    this.toolPanelSizeChanged = new EventEmitter();
    this.pasteStart = new EventEmitter();
    this.pasteEnd = new EventEmitter();
    this.columnVisible = new EventEmitter();
    this.columnPinned = new EventEmitter();
    this.columnResized = new EventEmitter();
    this.columnMoved = new EventEmitter();
    this.columnValueChanged = new EventEmitter();
    this.columnPivotModeChanged = new EventEmitter();
    this.columnPivotChanged = new EventEmitter();
    this.columnGroupOpened = new EventEmitter();
    this.newColumnsLoaded = new EventEmitter();
    this.gridColumnsChanged = new EventEmitter();
    this.displayedColumnsChanged = new EventEmitter();
    this.virtualColumnsChanged = new EventEmitter();
    this.columnEverythingChanged = new EventEmitter();
    this.componentStateChanged = new EventEmitter();
    this.cellValueChanged = new EventEmitter();
    this.cellEditRequest = new EventEmitter();
    this.rowValueChanged = new EventEmitter();
    this.cellEditingStarted = new EventEmitter();
    this.cellEditingStopped = new EventEmitter();
    this.rowEditingStarted = new EventEmitter();
    this.rowEditingStopped = new EventEmitter();
    this.filterOpened = new EventEmitter();
    this.filterChanged = new EventEmitter();
    this.filterModified = new EventEmitter();
    this.chartCreated = new EventEmitter();
    this.chartRangeSelectionChanged = new EventEmitter();
    this.chartOptionsChanged = new EventEmitter();
    this.chartDestroyed = new EventEmitter();
    this.cellKeyDown = new EventEmitter();
    this.cellKeyPress = new EventEmitter();
    this.gridReady = new EventEmitter();
    this.firstDataRendered = new EventEmitter();
    this.gridSizeChanged = new EventEmitter();
    this.modelUpdated = new EventEmitter();
    this.virtualRowRemoved = new EventEmitter();
    this.viewportChanged = new EventEmitter();
    this.bodyScroll = new EventEmitter();
    this.bodyScrollEnd = new EventEmitter();
    this.dragStarted = new EventEmitter();
    this.dragStopped = new EventEmitter();
    this.paginationChanged = new EventEmitter();
    this.rowDragEnter = new EventEmitter();
    this.rowDragMove = new EventEmitter();
    this.rowDragLeave = new EventEmitter();
    this.rowDragEnd = new EventEmitter();
    this.columnRowGroupChanged = new EventEmitter();
    this.rowGroupOpened = new EventEmitter();
    this.expandOrCollapseAll = new EventEmitter();
    this.pinnedRowDataChanged = new EventEmitter();
    this.rowDataChanged = new EventEmitter();
    this.rowDataUpdated = new EventEmitter();
    this.asyncTransactionsFlushed = new EventEmitter();
    this.cellClicked = new EventEmitter();
    this.cellDoubleClicked = new EventEmitter();
    this.cellFocused = new EventEmitter();
    this.cellMouseOver = new EventEmitter();
    this.cellMouseOut = new EventEmitter();
    this.cellMouseDown = new EventEmitter();
    this.rowClicked = new EventEmitter();
    this.rowDoubleClicked = new EventEmitter();
    this.rowSelected = new EventEmitter();
    this.selectionChanged = new EventEmitter();
    this.cellContextMenu = new EventEmitter();
    this.rangeSelectionChanged = new EventEmitter();
    this.sortChanged = new EventEmitter();
    this.columnRowGroupChangeRequest = new EventEmitter();
    this.columnPivotChangeRequest = new EventEmitter();
    this.columnValueChangeRequest = new EventEmitter();
    this.columnAggFuncChangeRequest = new EventEmitter();
    this._nativeElement = elementDef.nativeElement;
  }
  ngAfterViewInit() {
    this.frameworkComponentWrapper.setViewContainerRef(this.viewContainerRef);
    this.frameworkComponentWrapper.setComponentFactoryResolver(this.componentFactoryResolver);
    this.angularFrameworkOverrides.setEmitterUsedCallback(this.isEmitterUsed.bind(this));
    this.gridOptions = ComponentUtil.copyAttributesToGridOptions(this.gridOptions, this);
    this.gridParams = {
      globalEventListener: this.globalEventListener.bind(this),
      frameworkOverrides: this.angularFrameworkOverrides,
      providedBeanInstances: {
        frameworkComponentWrapper: this.frameworkComponentWrapper
      },
      modules: this.modules || []
    };
    new Grid(this._nativeElement, this.gridOptions, this.gridParams);
    if (this.gridOptions.api) {
      this.api = this.gridOptions.api;
    }
    if (this.gridOptions.columnApi) {
      this.columnApi = this.gridOptions.columnApi;
    }
    this._initialised = true;
    this._fullyReady.resolveNow(null, (resolve) => resolve);
  }
  ngOnChanges(changes) {
    if (this._initialised) {
      ComponentUtil.processOnChange(changes, this.api);
    }
  }
  ngOnDestroy() {
    if (this._initialised) {
      this._destroyed = true;
      if (this.api) {
        this.api.destroy();
      }
    }
  }
  // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding
  // or via gridOptions
  isEmitterUsed(eventType) {
    const emitter = this[eventType];
    const hasEmitter = !!emitter && emitter.observers && emitter.observers.length > 0;
    const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;
    const hasGridOptionListener = !!this.gridOptions && !!this.gridOptions[asEventName];
    return hasEmitter || hasGridOptionListener;
  }
  globalEventListener(eventType, event) {
    if (this._destroyed) {
      return;
    }
    const emitter = this[eventType];
    if (emitter && this.isEmitterUsed(eventType)) {
      if (eventType === "gridReady") {
        this._fullyReady.then((result) => {
          emitter.emit(event);
        });
      } else {
        emitter.emit(event);
      }
    }
  }
};
AgGridAngular.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AgGridAngular, deps: [{ token: ElementRef }, { token: ViewContainerRef }, { token: AngularFrameworkOverrides }, { token: AngularFrameworkComponentWrapper }, { token: ComponentFactoryResolver$1 }], target: FactoryTarget.Component });
AgGridAngular.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: AgGridAngular, selector: "ag-grid-angular", inputs: { gridOptions: "gridOptions", modules: "modules", statusBar: "statusBar", sideBar: "sideBar", suppressContextMenu: "suppressContextMenu", preventDefaultOnContextMenu: "preventDefaultOnContextMenu", allowContextMenuWithControlKey: "allowContextMenuWithControlKey", suppressMenuHide: "suppressMenuHide", enableBrowserTooltips: "enableBrowserTooltips", tooltipShowDelay: "tooltipShowDelay", tooltipHideDelay: "tooltipHideDelay", tooltipMouseTrack: "tooltipMouseTrack", popupParent: "popupParent", copyHeadersToClipboard: "copyHeadersToClipboard", copyGroupHeadersToClipboard: "copyGroupHeadersToClipboard", clipboardDelimiter: "clipboardDelimiter", suppressCopyRowsToClipboard: "suppressCopyRowsToClipboard", suppressCopySingleCellRanges: "suppressCopySingleCellRanges", suppressLastEmptyLineOnPaste: "suppressLastEmptyLineOnPaste", suppressClipboardPaste: "suppressClipboardPaste", suppressClipboardApi: "suppressClipboardApi", columnDefs: "columnDefs", defaultColDef: "defaultColDef", defaultColGroupDef: "defaultColGroupDef", columnTypes: "columnTypes", maintainColumnOrder: "maintainColumnOrder", suppressFieldDotNotation: "suppressFieldDotNotation", headerHeight: "headerHeight", groupHeaderHeight: "groupHeaderHeight", floatingFiltersHeight: "floatingFiltersHeight", pivotHeaderHeight: "pivotHeaderHeight", pivotGroupHeaderHeight: "pivotGroupHeaderHeight", allowDragFromColumnsToolPanel: "allowDragFromColumnsToolPanel", suppressMovableColumns: "suppressMovableColumns", suppressColumnMoveAnimation: "suppressColumnMoveAnimation", suppressDragLeaveHidesColumns: "suppressDragLeaveHidesColumns", suppressRowGroupHidesColumns: "suppressRowGroupHidesColumns", colResizeDefault: "colResizeDefault", suppressAutoSize: "suppressAutoSize", autoSizePadding: "autoSizePadding", skipHeaderOnAutoSize: "skipHeaderOnAutoSize", components: "components", frameworkComponents: "frameworkComponents", editType: "editType", singleClickEdit: "singleClickEdit", suppressClickEdit: "suppressClickEdit", readOnlyEdit: "readOnlyEdit", stopEditingWhenCellsLoseFocus: "stopEditingWhenCellsLoseFocus", enterMovesDown: "enterMovesDown", enterMovesDownAfterEdit: "enterMovesDownAfterEdit", enableCellEditingOnBackspace: "enableCellEditingOnBackspace", undoRedoCellEditing: "undoRedoCellEditing", undoRedoCellEditingLimit: "undoRedoCellEditingLimit", defaultCsvExportParams: "defaultCsvExportParams", suppressCsvExport: "suppressCsvExport", defaultExcelExportParams: "defaultExcelExportParams", suppressExcelExport: "suppressExcelExport", excelStyles: "excelStyles", quickFilterText: "quickFilterText", cacheQuickFilter: "cacheQuickFilter", excludeChildrenWhenTreeDataFiltering: "excludeChildrenWhenTreeDataFiltering", enableCharts: "enableCharts", chartThemes: "chartThemes", customChartThemes: "customChartThemes", chartThemeOverrides: "chartThemeOverrides", enableChartToolPanelsButton: "enableChartToolPanelsButton", suppressChartToolPanelsButton: "suppressChartToolPanelsButton", chartToolPanelsDef: "chartToolPanelsDef", loadingCellRenderer: "loadingCellRenderer", loadingCellRendererFramework: "loadingCellRendererFramework", loadingCellRendererParams: "loadingCellRendererParams", loadingCellRendererSelector: "loadingCellRendererSelector", localeText: "localeText", masterDetail: "masterDetail", keepDetailRows: "keepDetailRows", keepDetailRowsCount: "keepDetailRowsCount", detailCellRenderer: "detailCellRenderer", detailCellRendererFramework: "detailCellRendererFramework", detailCellRendererParams: "detailCellRendererParams", detailRowHeight: "detailRowHeight", detailRowAutoHeight: "detailRowAutoHeight", context: "context", alignedGrids: "alignedGrids", tabIndex: "tabIndex", rowBuffer: "rowBuffer", valueCache: "valueCache", valueCacheNeverExpires: "valueCacheNeverExpires", enableCellExpressions: "enableCellExpressions", suppressParentsInRowNodes: "suppressParentsInRowNodes", suppressTouch: "suppressTouch", suppressFocusAfterRefresh: "suppressFocusAfterRefresh", suppressAsyncEvents: "suppressAsyncEvents", suppressBrowserResizeObserver: "suppressBrowserResizeObserver", suppressPropertyNamesCheck: "suppressPropertyNamesCheck", suppressChangeDetection: "suppressChangeDetection", debug: "debug", overlayLoadingTemplate: "overlayLoadingTemplate", loadingOverlayComponent: "loadingOverlayComponent", loadingOverlayComponentFramework: "loadingOverlayComponentFramework", loadingOverlayComponentParams: "loadingOverlayComponentParams", suppressLoadingOverlay: "suppressLoadingOverlay", overlayNoRowsTemplate: "overlayNoRowsTemplate", noRowsOverlayComponent: "noRowsOverlayComponent", noRowsOverlayComponentFramework: "noRowsOverlayComponentFramework", noRowsOverlayComponentParams: "noRowsOverlayComponentParams", suppressNoRowsOverlay: "suppressNoRowsOverlay", pagination: "pagination", paginationPageSize: "paginationPageSize", paginationAutoPageSize: "paginationAutoPageSize", paginateChildRows: "paginateChildRows", suppressPaginationPanel: "suppressPaginationPanel", pivotMode: "pivotMode", pivotPanelShow: "pivotPanelShow", pivotColumnGroupTotals: "pivotColumnGroupTotals", pivotRowTotals: "pivotRowTotals", pivotSuppressAutoColumn: "pivotSuppressAutoColumn", suppressExpandablePivotGroups: "suppressExpandablePivotGroups", functionsReadOnly: "functionsReadOnly", aggFuncs: "aggFuncs", suppressAggFuncInHeader: "suppressAggFuncInHeader", suppressAggAtRootLevel: "suppressAggAtRootLevel", aggregateOnlyChangedColumns: "aggregateOnlyChangedColumns", suppressAggFilteredOnly: "suppressAggFilteredOnly", removePivotHeaderRowWhenSingleValueColumn: "removePivotHeaderRowWhenSingleValueColumn", animateRows: "animateRows", enableCellChangeFlash: "enableCellChangeFlash", cellFlashDelay: "cellFlashDelay", cellFadeDelay: "cellFadeDelay", allowShowChangeAfterFilter: "allowShowChangeAfterFilter", domLayout: "domLayout", ensureDomOrder: "ensureDomOrder", enableRtl: "enableRtl", suppressColumnVirtualisation: "suppressColumnVirtualisation", suppressMaxRenderedRowRestriction: "suppressMaxRenderedRowRestriction", suppressRowVirtualisation: "suppressRowVirtualisation", rowDragManaged: "rowDragManaged", suppressRowDrag: "suppressRowDrag", suppressMoveWhenRowDragging: "suppressMoveWhenRowDragging", rowDragEntireRow: "rowDragEntireRow", rowDragMultiRow: "rowDragMultiRow", rowDragText: "rowDragText", fullWidthCellRenderer: "fullWidthCellRenderer", fullWidthCellRendererFramework: "fullWidthCellRendererFramework", fullWidthCellRendererParams: "fullWidthCellRendererParams", embedFullWidthRows: "embedFullWidthRows", groupDisplayType: "groupDisplayType", groupDefaultExpanded: "groupDefaultExpanded", autoGroupColumnDef: "autoGroupColumnDef", groupMaintainOrder: "groupMaintainOrder", groupSelectsChildren: "groupSelectsChildren", groupAggFiltering: "groupAggFiltering", groupIncludeFooter: "groupIncludeFooter", groupIncludeTotalFooter: "groupIncludeTotalFooter", groupSuppressBlankHeader: "groupSuppressBlankHeader", groupSelectsFiltered: "groupSelectsFiltered", showOpenedGroup: "showOpenedGroup", groupRemoveSingleChildren: "groupRemoveSingleChildren", groupRemoveLowestSingleChildren: "groupRemoveLowestSingleChildren", groupHideOpenParents: "groupHideOpenParents", groupAllowUnbalanced: "groupAllowUnbalanced", rowGroupPanelShow: "rowGroupPanelShow", groupRowRenderer: "groupRowRenderer", groupRowRendererFramework: "groupRowRendererFramework", groupRowRendererParams: "groupRowRendererParams", suppressMakeColumnVisibleAfterUnGroup: "suppressMakeColumnVisibleAfterUnGroup", treeData: "treeData", rowGroupPanelSuppressSort: "rowGroupPanelSuppressSort", groupRowsSticky: "groupRowsSticky", rememberGroupStateWhenNewData: "rememberGroupStateWhenNewData", pinnedTopRowData: "pinnedTopRowData", pinnedBottomRowData: "pinnedBottomRowData", rowModelType: "rowModelType", rowData: "rowData", immutableData: "immutableData", asyncTransactionWaitMillis: "asyncTransactionWaitMillis", suppressModelUpdateAfterUpdateTransaction: "suppressModelUpdateAfterUpdateTransaction", datasource: "datasource", cacheOverflowSize: "cacheOverflowSize", infiniteInitialRowCount: "infiniteInitialRowCount", serverSideInitialRowCount: "serverSideInitialRowCount", serverSideStoreType: "serverSideStoreType", suppressServerSideInfiniteScroll: "suppressServerSideInfiniteScroll", cacheBlockSize: "cacheBlockSize", maxBlocksInCache: "maxBlocksInCache", maxConcurrentDatasourceRequests: "maxConcurrentDatasourceRequests", blockLoadDebounceMillis: "blockLoadDebounceMillis", purgeClosedRowNodes: "purgeClosedRowNodes", serverSideDatasource: "serverSideDatasource", serverSideSortAllLevels: "serverSideSortAllLevels", serverSideFilterAllLevels: "serverSideFilterAllLevels", serverSideSortOnServer: "serverSideSortOnServer", serverSideFilterOnServer: "serverSideFilterOnServer", serverSideSortingAlwaysResets: "serverSideSortingAlwaysResets", serverSideFilteringAlwaysResets: "serverSideFilteringAlwaysResets", viewportDatasource: "viewportDatasource", viewportRowModelPageSize: "viewportRowModelPageSize", viewportRowModelBufferSize: "viewportRowModelBufferSize", alwaysShowHorizontalScroll: "alwaysShowHorizontalScroll", alwaysShowVerticalScroll: "alwaysShowVerticalScroll", debounceVerticalScrollbar: "debounceVerticalScrollbar", suppressHorizontalScroll: "suppressHorizontalScroll", suppressScrollOnNewData: "suppressScrollOnNewData", suppressScrollWhenPopupsAreOpen: "suppressScrollWhenPopupsAreOpen", suppressAnimationFrame: "suppressAnimationFrame", suppressMiddleClickScrolls: "suppressMiddleClickScrolls", suppressPreventDefaultOnMouseWheel: "suppressPreventDefaultOnMouseWheel", scrollbarWidth: "scrollbarWidth", rowSelection: "rowSelection", rowMultiSelectWithClick: "rowMultiSelectWithClick", suppressRowDeselection: "suppressRowDeselection", suppressRowClickSelection: "suppressRowClickSelection", suppressCellSelection: "suppressCellSelection", suppressCellFocus: "suppressCellFocus", suppressMultiRangeSelection: "suppressMultiRangeSelection", enableCellTextSelection: "enableCellTextSelection", enableRangeSelection: "enableRangeSelection", enableRangeHandle: "enableRangeHandle", enableFillHandle: "enableFillHandle", fillHandleDirection: "fillHandleDirection", suppressClearOnFillReduction: "suppressClearOnFillReduction", sortingOrder: "sortingOrder", accentedSort: "accentedSort", unSortIcon: "unSortIcon", suppressMultiSort: "suppressMultiSort", alwaysMultiSort: "alwaysMultiSort", multiSortKey: "multiSortKey", suppressMaintainUnsortedOrder: "suppressMaintainUnsortedOrder", icons: "icons", rowHeight: "rowHeight", rowStyle: "rowStyle", rowClass: "rowClass", rowClassRules: "rowClassRules", suppressRowHoverHighlight: "suppressRowHoverHighlight", suppressRowTransform: "suppressRowTransform", columnHoverHighlight: "columnHoverHighlight", deltaSort: "deltaSort", treeDataDisplayType: "treeDataDisplayType", functionsPassive: "functionsPassive", enableGroupEdit: "enableGroupEdit", getContextMenuItems: "getContextMenuItems", getMainMenuItems: "getMainMenuItems", postProcessPopup: "postProcessPopup", processCellForClipboard: "processCellForClipboard", processHeaderForClipboard: "processHeaderForClipboard", processGroupHeaderForClipboard: "processGroupHeaderForClipboard", processCellFromClipboard: "processCellFromClipboard", sendToClipboard: "sendToClipboard", processDataFromClipboard: "processDataFromClipboard", isExternalFilterPresent: "isExternalFilterPresent", doesExternalFilterPass: "doesExternalFilterPass", getChartToolbarItems: "getChartToolbarItems", createChartContainer: "createChartContainer", navigateToNextHeader: "navigateToNextHeader", tabToNextHeader: "tabToNextHeader", navigateToNextCell: "navigateToNextCell", tabToNextCell: "tabToNextCell", localeTextFunc: "localeTextFunc", getLocaleText: "getLocaleText", getDocument: "getDocument", paginationNumberFormatter: "paginationNumberFormatter", groupRowAggNodes: "groupRowAggNodes", getGroupRowAgg: "getGroupRowAgg", isGroupOpenByDefault: "isGroupOpenByDefault", initialGroupOrderComparator: "initialGroupOrderComparator", defaultGroupOrderComparator: "defaultGroupOrderComparator", processSecondaryColDef: "processSecondaryColDef", processSecondaryColGroupDef: "processSecondaryColGroupDef", processPivotResultColDef: "processPivotResultColDef", processPivotResultColGroupDef: "processPivotResultColGroupDef", getDataPath: "getDataPath", getChildCount: "getChildCount", getServerSideGroupLevelParams: "getServerSideGroupLevelParams", getServerSideStoreParams: "getServerSideStoreParams", isServerSideGroupOpenByDefault: "isServerSideGroupOpenByDefault", isApplyServerSideTransaction: "isApplyServerSideTransaction", isServerSideGroup: "isServerSideGroup", getServerSideGroupKey: "getServerSideGroupKey", getBusinessKeyForNode: "getBusinessKeyForNode", getRowNodeId: "getRowNodeId", getRowId: "getRowId", resetRowDataOnUpdate: "resetRowDataOnUpdate", processRowPostCreate: "processRowPostCreate", isRowSelectable: "isRowSelectable", isRowMaster: "isRowMaster", fillOperation: "fillOperation", postSort: "postSort", postSortRows: "postSortRows", getRowStyle: "getRowStyle", getRowClass: "getRowClass", getRowHeight: "getRowHeight", isFullWidthCell: "isFullWidthCell", isFullWidthRow: "isFullWidthRow" }, outputs: { toolPanelVisibleChanged: "toolPanelVisibleChanged", toolPanelSizeChanged: "toolPanelSizeChanged", pasteStart: "pasteStart", pasteEnd: "pasteEnd", columnVisible: "columnVisible", columnPinned: "columnPinned", columnResized: "columnResized", columnMoved: "columnMoved", columnValueChanged: "columnValueChanged", columnPivotModeChanged: "columnPivotModeChanged", columnPivotChanged: "columnPivotChanged", columnGroupOpened: "columnGroupOpened", newColumnsLoaded: "newColumnsLoaded", gridColumnsChanged: "gridColumnsChanged", displayedColumnsChanged: "displayedColumnsChanged", virtualColumnsChanged: "virtualColumnsChanged", columnEverythingChanged: "columnEverythingChanged", componentStateChanged: "componentStateChanged", cellValueChanged: "cellValueChanged", cellEditRequest: "cellEditRequest", rowValueChanged: "rowValueChanged", cellEditingStarted: "cellEditingStarted", cellEditingStopped: "cellEditingStopped", rowEditingStarted: "rowEditingStarted", rowEditingStopped: "rowEditingStopped", filterOpened: "filterOpened", filterChanged: "filterChanged", filterModified: "filterModified", chartCreated: "chartCreated", chartRangeSelectionChanged: "chartRangeSelectionChanged", chartOptionsChanged: "chartOptionsChanged", chartDestroyed: "chartDestroyed", cellKeyDown: "cellKeyDown", cellKeyPress: "cellKeyPress", gridReady: "gridReady", firstDataRendered: "firstDataRendered", gridSizeChanged: "gridSizeChanged", modelUpdated: "modelUpdated", virtualRowRemoved: "virtualRowRemoved", viewportChanged: "viewportChanged", bodyScroll: "bodyScroll", bodyScrollEnd: "bodyScrollEnd", dragStarted: "dragStarted", dragStopped: "dragStopped", paginationChanged: "paginationChanged", rowDragEnter: "rowDragEnter", rowDragMove: "rowDragMove", rowDragLeave: "rowDragLeave", rowDragEnd: "rowDragEnd", columnRowGroupChanged: "columnRowGroupChanged", rowGroupOpened: "rowGroupOpened", expandOrCollapseAll: "expandOrCollapseAll", pinnedRowDataChanged: "pinnedRowDataChanged", rowDataChanged: "rowDataChanged", rowDataUpdated: "rowDataUpdated", asyncTransactionsFlushed: "asyncTransactionsFlushed", cellClicked: "cellClicked", cellDoubleClicked: "cellDoubleClicked", cellFocused: "cellFocused", cellMouseOver: "cellMouseOver", cellMouseOut: "cellMouseOut", cellMouseDown: "cellMouseDown", rowClicked: "rowClicked", rowDoubleClicked: "rowDoubleClicked", rowSelected: "rowSelected", selectionChanged: "selectionChanged", cellContextMenu: "cellContextMenu", rangeSelectionChanged: "rangeSelectionChanged", sortChanged: "sortChanged", columnRowGroupChangeRequest: "columnRowGroupChangeRequest", columnPivotChangeRequest: "columnPivotChangeRequest", columnValueChangeRequest: "columnValueChangeRequest", columnAggFuncChangeRequest: "columnAggFuncChangeRequest" }, providers: [
  AngularFrameworkOverrides,
  AngularFrameworkComponentWrapper
], usesOnChanges: true, ngImport: core_exports, template: "", isInline: true, encapsulation: ViewEncapsulation$1.None });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AgGridAngular, decorators: [{
  type: Component,
  args: [{
    selector: "ag-grid-angular",
    template: "",
    providers: [
      AngularFrameworkOverrides,
      AngularFrameworkComponentWrapper
    ],
    // tell angular we don't want view encapsulation, we don't want a shadow root
    encapsulation: ViewEncapsulation$1.None
  }]
}], ctorParameters: function() {
  return [{ type: ElementRef }, { type: ViewContainerRef }, { type: AngularFrameworkOverrides }, { type: AngularFrameworkComponentWrapper }, { type: ComponentFactoryResolver$1 }];
}, propDecorators: { gridOptions: [{
  type: Input
}], modules: [{
  type: Input
}], statusBar: [{
  type: Input
}], sideBar: [{
  type: Input
}], suppressContextMenu: [{
  type: Input
}], preventDefaultOnContextMenu: [{
  type: Input
}], allowContextMenuWithControlKey: [{
  type: Input
}], suppressMenuHide: [{
  type: Input
}], enableBrowserTooltips: [{
  type: Input
}], tooltipShowDelay: [{
  type: Input
}], tooltipHideDelay: [{
  type: Input
}], tooltipMouseTrack: [{
  type: Input
}], popupParent: [{
  type: Input
}], copyHeadersToClipboard: [{
  type: Input
}], copyGroupHeadersToClipboard: [{
  type: Input
}], clipboardDelimiter: [{
  type: Input
}], suppressCopyRowsToClipboard: [{
  type: Input
}], suppressCopySingleCellRanges: [{
  type: Input
}], suppressLastEmptyLineOnPaste: [{
  type: Input
}], suppressClipboardPaste: [{
  type: Input
}], suppressClipboardApi: [{
  type: Input
}], columnDefs: [{
  type: Input
}], defaultColDef: [{
  type: Input
}], defaultColGroupDef: [{
  type: Input
}], columnTypes: [{
  type: Input
}], maintainColumnOrder: [{
  type: Input
}], suppressFieldDotNotation: [{
  type: Input
}], headerHeight: [{
  type: Input
}], groupHeaderHeight: [{
  type: Input
}], floatingFiltersHeight: [{
  type: Input
}], pivotHeaderHeight: [{
  type: Input
}], pivotGroupHeaderHeight: [{
  type: Input
}], allowDragFromColumnsToolPanel: [{
  type: Input
}], suppressMovableColumns: [{
  type: Input
}], suppressColumnMoveAnimation: [{
  type: Input
}], suppressDragLeaveHidesColumns: [{
  type: Input
}], suppressRowGroupHidesColumns: [{
  type: Input
}], colResizeDefault: [{
  type: Input
}], suppressAutoSize: [{
  type: Input
}], autoSizePadding: [{
  type: Input
}], skipHeaderOnAutoSize: [{
  type: Input
}], components: [{
  type: Input
}], frameworkComponents: [{
  type: Input
}], editType: [{
  type: Input
}], singleClickEdit: [{
  type: Input
}], suppressClickEdit: [{
  type: Input
}], readOnlyEdit: [{
  type: Input
}], stopEditingWhenCellsLoseFocus: [{
  type: Input
}], enterMovesDown: [{
  type: Input
}], enterMovesDownAfterEdit: [{
  type: Input
}], enableCellEditingOnBackspace: [{
  type: Input
}], undoRedoCellEditing: [{
  type: Input
}], undoRedoCellEditingLimit: [{
  type: Input
}], defaultCsvExportParams: [{
  type: Input
}], suppressCsvExport: [{
  type: Input
}], defaultExcelExportParams: [{
  type: Input
}], suppressExcelExport: [{
  type: Input
}], excelStyles: [{
  type: Input
}], quickFilterText: [{
  type: Input
}], cacheQuickFilter: [{
  type: Input
}], excludeChildrenWhenTreeDataFiltering: [{
  type: Input
}], enableCharts: [{
  type: Input
}], chartThemes: [{
  type: Input
}], customChartThemes: [{
  type: Input
}], chartThemeOverrides: [{
  type: Input
}], enableChartToolPanelsButton: [{
  type: Input
}], suppressChartToolPanelsButton: [{
  type: Input
}], chartToolPanelsDef: [{
  type: Input
}], loadingCellRenderer: [{
  type: Input
}], loadingCellRendererFramework: [{
  type: Input
}], loadingCellRendererParams: [{
  type: Input
}], loadingCellRendererSelector: [{
  type: Input
}], localeText: [{
  type: Input
}], masterDetail: [{
  type: Input
}], keepDetailRows: [{
  type: Input
}], keepDetailRowsCount: [{
  type: Input
}], detailCellRenderer: [{
  type: Input
}], detailCellRendererFramework: [{
  type: Input
}], detailCellRendererParams: [{
  type: Input
}], detailRowHeight: [{
  type: Input
}], detailRowAutoHeight: [{
  type: Input
}], context: [{
  type: Input
}], alignedGrids: [{
  type: Input
}], tabIndex: [{
  type: Input
}], rowBuffer: [{
  type: Input
}], valueCache: [{
  type: Input
}], valueCacheNeverExpires: [{
  type: Input
}], enableCellExpressions: [{
  type: Input
}], suppressParentsInRowNodes: [{
  type: Input
}], suppressTouch: [{
  type: Input
}], suppressFocusAfterRefresh: [{
  type: Input
}], suppressAsyncEvents: [{
  type: Input
}], suppressBrowserResizeObserver: [{
  type: Input
}], suppressPropertyNamesCheck: [{
  type: Input
}], suppressChangeDetection: [{
  type: Input
}], debug: [{
  type: Input
}], overlayLoadingTemplate: [{
  type: Input
}], loadingOverlayComponent: [{
  type: Input
}], loadingOverlayComponentFramework: [{
  type: Input
}], loadingOverlayComponentParams: [{
  type: Input
}], suppressLoadingOverlay: [{
  type: Input
}], overlayNoRowsTemplate: [{
  type: Input
}], noRowsOverlayComponent: [{
  type: Input
}], noRowsOverlayComponentFramework: [{
  type: Input
}], noRowsOverlayComponentParams: [{
  type: Input
}], suppressNoRowsOverlay: [{
  type: Input
}], pagination: [{
  type: Input
}], paginationPageSize: [{
  type: Input
}], paginationAutoPageSize: [{
  type: Input
}], paginateChildRows: [{
  type: Input
}], suppressPaginationPanel: [{
  type: Input
}], pivotMode: [{
  type: Input
}], pivotPanelShow: [{
  type: Input
}], pivotColumnGroupTotals: [{
  type: Input
}], pivotRowTotals: [{
  type: Input
}], pivotSuppressAutoColumn: [{
  type: Input
}], suppressExpandablePivotGroups: [{
  type: Input
}], functionsReadOnly: [{
  type: Input
}], aggFuncs: [{
  type: Input
}], suppressAggFuncInHeader: [{
  type: Input
}], suppressAggAtRootLevel: [{
  type: Input
}], aggregateOnlyChangedColumns: [{
  type: Input
}], suppressAggFilteredOnly: [{
  type: Input
}], removePivotHeaderRowWhenSingleValueColumn: [{
  type: Input
}], animateRows: [{
  type: Input
}], enableCellChangeFlash: [{
  type: Input
}], cellFlashDelay: [{
  type: Input
}], cellFadeDelay: [{
  type: Input
}], allowShowChangeAfterFilter: [{
  type: Input
}], domLayout: [{
  type: Input
}], ensureDomOrder: [{
  type: Input
}], enableRtl: [{
  type: Input
}], suppressColumnVirtualisation: [{
  type: Input
}], suppressMaxRenderedRowRestriction: [{
  type: Input
}], suppressRowVirtualisation: [{
  type: Input
}], rowDragManaged: [{
  type: Input
}], suppressRowDrag: [{
  type: Input
}], suppressMoveWhenRowDragging: [{
  type: Input
}], rowDragEntireRow: [{
  type: Input
}], rowDragMultiRow: [{
  type: Input
}], rowDragText: [{
  type: Input
}], fullWidthCellRenderer: [{
  type: Input
}], fullWidthCellRendererFramework: [{
  type: Input
}], fullWidthCellRendererParams: [{
  type: Input
}], embedFullWidthRows: [{
  type: Input
}], groupDisplayType: [{
  type: Input
}], groupDefaultExpanded: [{
  type: Input
}], autoGroupColumnDef: [{
  type: Input
}], groupMaintainOrder: [{
  type: Input
}], groupSelectsChildren: [{
  type: Input
}], groupAggFiltering: [{
  type: Input
}], groupIncludeFooter: [{
  type: Input
}], groupIncludeTotalFooter: [{
  type: Input
}], groupSuppressBlankHeader: [{
  type: Input
}], groupSelectsFiltered: [{
  type: Input
}], showOpenedGroup: [{
  type: Input
}], groupRemoveSingleChildren: [{
  type: Input
}], groupRemoveLowestSingleChildren: [{
  type: Input
}], groupHideOpenParents: [{
  type: Input
}], groupAllowUnbalanced: [{
  type: Input
}], rowGroupPanelShow: [{
  type: Input
}], groupRowRenderer: [{
  type: Input
}], groupRowRendererFramework: [{
  type: Input
}], groupRowRendererParams: [{
  type: Input
}], suppressMakeColumnVisibleAfterUnGroup: [{
  type: Input
}], treeData: [{
  type: Input
}], rowGroupPanelSuppressSort: [{
  type: Input
}], groupRowsSticky: [{
  type: Input
}], rememberGroupStateWhenNewData: [{
  type: Input
}], pinnedTopRowData: [{
  type: Input
}], pinnedBottomRowData: [{
  type: Input
}], rowModelType: [{
  type: Input
}], rowData: [{
  type: Input
}], immutableData: [{
  type: Input
}], asyncTransactionWaitMillis: [{
  type: Input
}], suppressModelUpdateAfterUpdateTransaction: [{
  type: Input
}], datasource: [{
  type: Input
}], cacheOverflowSize: [{
  type: Input
}], infiniteInitialRowCount: [{
  type: Input
}], serverSideInitialRowCount: [{
  type: Input
}], serverSideStoreType: [{
  type: Input
}], suppressServerSideInfiniteScroll: [{
  type: Input
}], cacheBlockSize: [{
  type: Input
}], maxBlocksInCache: [{
  type: Input
}], maxConcurrentDatasourceRequests: [{
  type: Input
}], blockLoadDebounceMillis: [{
  type: Input
}], purgeClosedRowNodes: [{
  type: Input
}], serverSideDatasource: [{
  type: Input
}], serverSideSortAllLevels: [{
  type: Input
}], serverSideFilterAllLevels: [{
  type: Input
}], serverSideSortOnServer: [{
  type: Input
}], serverSideFilterOnServer: [{
  type: Input
}], serverSideSortingAlwaysResets: [{
  type: Input
}], serverSideFilteringAlwaysResets: [{
  type: Input
}], viewportDatasource: [{
  type: Input
}], viewportRowModelPageSize: [{
  type: Input
}], viewportRowModelBufferSize: [{
  type: Input
}], alwaysShowHorizontalScroll: [{
  type: Input
}], alwaysShowVerticalScroll: [{
  type: Input
}], debounceVerticalScrollbar: [{
  type: Input
}], suppressHorizontalScroll: [{
  type: Input
}], suppressScrollOnNewData: [{
  type: Input
}], suppressScrollWhenPopupsAreOpen: [{
  type: Input
}], suppressAnimationFrame: [{
  type: Input
}], suppressMiddleClickScrolls: [{
  type: Input
}], suppressPreventDefaultOnMouseWheel: [{
  type: Input
}], scrollbarWidth: [{
  type: Input
}], rowSelection: [{
  type: Input
}], rowMultiSelectWithClick: [{
  type: Input
}], suppressRowDeselection: [{
  type: Input
}], suppressRowClickSelection: [{
  type: Input
}], suppressCellSelection: [{
  type: Input
}], suppressCellFocus: [{
  type: Input
}], suppressMultiRangeSelection: [{
  type: Input
}], enableCellTextSelection: [{
  type: Input
}], enableRangeSelection: [{
  type: Input
}], enableRangeHandle: [{
  type: Input
}], enableFillHandle: [{
  type: Input
}], fillHandleDirection: [{
  type: Input
}], suppressClearOnFillReduction: [{
  type: Input
}], sortingOrder: [{
  type: Input
}], accentedSort: [{
  type: Input
}], unSortIcon: [{
  type: Input
}], suppressMultiSort: [{
  type: Input
}], alwaysMultiSort: [{
  type: Input
}], multiSortKey: [{
  type: Input
}], suppressMaintainUnsortedOrder: [{
  type: Input
}], icons: [{
  type: Input
}], rowHeight: [{
  type: Input
}], rowStyle: [{
  type: Input
}], rowClass: [{
  type: Input
}], rowClassRules: [{
  type: Input
}], suppressRowHoverHighlight: [{
  type: Input
}], suppressRowTransform: [{
  type: Input
}], columnHoverHighlight: [{
  type: Input
}], deltaSort: [{
  type: Input
}], treeDataDisplayType: [{
  type: Input
}], functionsPassive: [{
  type: Input
}], enableGroupEdit: [{
  type: Input
}], getContextMenuItems: [{
  type: Input
}], getMainMenuItems: [{
  type: Input
}], postProcessPopup: [{
  type: Input
}], processCellForClipboard: [{
  type: Input
}], processHeaderForClipboard: [{
  type: Input
}], processGroupHeaderForClipboard: [{
  type: Input
}], processCellFromClipboard: [{
  type: Input
}], sendToClipboard: [{
  type: Input
}], processDataFromClipboard: [{
  type: Input
}], isExternalFilterPresent: [{
  type: Input
}], doesExternalFilterPass: [{
  type: Input
}], getChartToolbarItems: [{
  type: Input
}], createChartContainer: [{
  type: Input
}], navigateToNextHeader: [{
  type: Input
}], tabToNextHeader: [{
  type: Input
}], navigateToNextCell: [{
  type: Input
}], tabToNextCell: [{
  type: Input
}], localeTextFunc: [{
  type: Input
}], getLocaleText: [{
  type: Input
}], getDocument: [{
  type: Input
}], paginationNumberFormatter: [{
  type: Input
}], groupRowAggNodes: [{
  type: Input
}], getGroupRowAgg: [{
  type: Input
}], isGroupOpenByDefault: [{
  type: Input
}], initialGroupOrderComparator: [{
  type: Input
}], defaultGroupOrderComparator: [{
  type: Input
}], processSecondaryColDef: [{
  type: Input
}], processSecondaryColGroupDef: [{
  type: Input
}], processPivotResultColDef: [{
  type: Input
}], processPivotResultColGroupDef: [{
  type: Input
}], getDataPath: [{
  type: Input
}], getChildCount: [{
  type: Input
}], getServerSideGroupLevelParams: [{
  type: Input
}], getServerSideStoreParams: [{
  type: Input
}], isServerSideGroupOpenByDefault: [{
  type: Input
}], isApplyServerSideTransaction: [{
  type: Input
}], isServerSideGroup: [{
  type: Input
}], getServerSideGroupKey: [{
  type: Input
}], getBusinessKeyForNode: [{
  type: Input
}], getRowNodeId: [{
  type: Input
}], getRowId: [{
  type: Input
}], resetRowDataOnUpdate: [{
  type: Input
}], processRowPostCreate: [{
  type: Input
}], isRowSelectable: [{
  type: Input
}], isRowMaster: [{
  type: Input
}], fillOperation: [{
  type: Input
}], postSort: [{
  type: Input
}], postSortRows: [{
  type: Input
}], getRowStyle: [{
  type: Input
}], getRowClass: [{
  type: Input
}], getRowHeight: [{
  type: Input
}], isFullWidthCell: [{
  type: Input
}], isFullWidthRow: [{
  type: Input
}], toolPanelVisibleChanged: [{
  type: Output
}], toolPanelSizeChanged: [{
  type: Output
}], pasteStart: [{
  type: Output
}], pasteEnd: [{
  type: Output
}], columnVisible: [{
  type: Output
}], columnPinned: [{
  type: Output
}], columnResized: [{
  type: Output
}], columnMoved: [{
  type: Output
}], columnValueChanged: [{
  type: Output
}], columnPivotModeChanged: [{
  type: Output
}], columnPivotChanged: [{
  type: Output
}], columnGroupOpened: [{
  type: Output
}], newColumnsLoaded: [{
  type: Output
}], gridColumnsChanged: [{
  type: Output
}], displayedColumnsChanged: [{
  type: Output
}], virtualColumnsChanged: [{
  type: Output
}], columnEverythingChanged: [{
  type: Output
}], componentStateChanged: [{
  type: Output
}], cellValueChanged: [{
  type: Output
}], cellEditRequest: [{
  type: Output
}], rowValueChanged: [{
  type: Output
}], cellEditingStarted: [{
  type: Output
}], cellEditingStopped: [{
  type: Output
}], rowEditingStarted: [{
  type: Output
}], rowEditingStopped: [{
  type: Output
}], filterOpened: [{
  type: Output
}], filterChanged: [{
  type: Output
}], filterModified: [{
  type: Output
}], chartCreated: [{
  type: Output
}], chartRangeSelectionChanged: [{
  type: Output
}], chartOptionsChanged: [{
  type: Output
}], chartDestroyed: [{
  type: Output
}], cellKeyDown: [{
  type: Output
}], cellKeyPress: [{
  type: Output
}], gridReady: [{
  type: Output
}], firstDataRendered: [{
  type: Output
}], gridSizeChanged: [{
  type: Output
}], modelUpdated: [{
  type: Output
}], virtualRowRemoved: [{
  type: Output
}], viewportChanged: [{
  type: Output
}], bodyScroll: [{
  type: Output
}], bodyScrollEnd: [{
  type: Output
}], dragStarted: [{
  type: Output
}], dragStopped: [{
  type: Output
}], paginationChanged: [{
  type: Output
}], rowDragEnter: [{
  type: Output
}], rowDragMove: [{
  type: Output
}], rowDragLeave: [{
  type: Output
}], rowDragEnd: [{
  type: Output
}], columnRowGroupChanged: [{
  type: Output
}], rowGroupOpened: [{
  type: Output
}], expandOrCollapseAll: [{
  type: Output
}], pinnedRowDataChanged: [{
  type: Output
}], rowDataChanged: [{
  type: Output
}], rowDataUpdated: [{
  type: Output
}], asyncTransactionsFlushed: [{
  type: Output
}], cellClicked: [{
  type: Output
}], cellDoubleClicked: [{
  type: Output
}], cellFocused: [{
  type: Output
}], cellMouseOver: [{
  type: Output
}], cellMouseOut: [{
  type: Output
}], cellMouseDown: [{
  type: Output
}], rowClicked: [{
  type: Output
}], rowDoubleClicked: [{
  type: Output
}], rowSelected: [{
  type: Output
}], selectionChanged: [{
  type: Output
}], cellContextMenu: [{
  type: Output
}], rangeSelectionChanged: [{
  type: Output
}], sortChanged: [{
  type: Output
}], columnRowGroupChangeRequest: [{
  type: Output
}], columnPivotChangeRequest: [{
  type: Output
}], columnValueChangeRequest: [{
  type: Output
}], columnAggFuncChangeRequest: [{
  type: Output
}] } });
var AgGridModule = class {
};
AgGridModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AgGridModule, deps: [], target: FactoryTarget.NgModule });
AgGridModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AgGridModule, declarations: [AgGridAngular], exports: [AgGridAngular] });
AgGridModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AgGridModule });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: core_exports, type: AgGridModule, decorators: [{
  type: NgModule,
  args: [{
    declarations: [AgGridAngular],
    exports: [AgGridAngular]
  }]
}] });

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/clientSideNodeManager.js
var __read25 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread21 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read25(arguments[i2]));
  return ar;
};
var ClientSideNodeManager = (
  /** @class */
  function() {
    function ClientSideNodeManager2(rootNode, gridOptionsService, eventService, columnModel, selectionService, beans) {
      this.nextId = 0;
      this.allNodesMap = {};
      this.rootNode = rootNode;
      this.gridOptionsService = gridOptionsService;
      this.eventService = eventService;
      this.columnModel = columnModel;
      this.beans = beans;
      this.selectionService = selectionService;
      this.rootNode.group = true;
      this.rootNode.level = -1;
      this.rootNode.id = ClientSideNodeManager2.ROOT_NODE_ID;
      this.rootNode.allLeafChildren = [];
      this.rootNode.childrenAfterGroup = [];
      this.rootNode.childrenAfterSort = [];
      this.rootNode.childrenAfterAggFilter = [];
      this.rootNode.childrenAfterFilter = [];
      this.postConstruct();
    }
    ClientSideNodeManager2.prototype.postConstruct = function() {
      this.suppressParentsInRowNodes = this.gridOptionsService.is("suppressParentsInRowNodes");
      this.isRowMasterFunc = this.gridOptionsService.get("isRowMaster");
      this.doingTreeData = this.gridOptionsService.isTreeData();
      this.doingMasterDetail = this.gridOptionsService.isMasterDetail();
    };
    ClientSideNodeManager2.prototype.getCopyOfNodesMap = function() {
      return _2.cloneObject(this.allNodesMap);
    };
    ClientSideNodeManager2.prototype.getRowNode = function(id) {
      return this.allNodesMap[id];
    };
    ClientSideNodeManager2.prototype.setRowData = function(rowData) {
      var _this = this;
      if (typeof rowData === "string") {
        console.warn("AG Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first");
        return;
      }
      var rootNode = this.rootNode;
      var sibling = this.rootNode.sibling;
      rootNode.childrenAfterFilter = null;
      rootNode.childrenAfterGroup = null;
      rootNode.childrenAfterAggFilter = null;
      rootNode.childrenAfterSort = null;
      rootNode.childrenMapped = null;
      rootNode.updateHasChildren();
      this.nextId = 0;
      this.allNodesMap = {};
      if (rowData) {
        rootNode.allLeafChildren = rowData.map(function(dataItem) {
          return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager2.TOP_LEVEL);
        });
      } else {
        rootNode.allLeafChildren = [];
        rootNode.childrenAfterGroup = [];
      }
      if (sibling) {
        sibling.childrenAfterFilter = rootNode.childrenAfterFilter;
        sibling.childrenAfterGroup = rootNode.childrenAfterGroup;
        sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;
        sibling.childrenAfterSort = rootNode.childrenAfterSort;
        sibling.childrenMapped = rootNode.childrenMapped;
        sibling.allLeafChildren = rootNode.allLeafChildren;
      }
    };
    ClientSideNodeManager2.prototype.updateRowData = function(rowDataTran, rowNodeOrder) {
      var rowNodeTransaction = {
        remove: [],
        update: [],
        add: []
      };
      var nodesToUnselect = [];
      this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);
      this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);
      this.executeAdd(rowDataTran, rowNodeTransaction);
      this.updateSelection(nodesToUnselect, "rowDataChanged");
      if (rowNodeOrder) {
        _2.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);
      }
      return rowNodeTransaction;
    };
    ClientSideNodeManager2.prototype.updateSelection = function(nodesToUnselect, source) {
      var selectionChanged = nodesToUnselect.length > 0;
      if (selectionChanged) {
        nodesToUnselect.forEach(function(rowNode) {
          rowNode.setSelected(false, false, true, source);
        });
      }
      this.selectionService.updateGroupsFromChildrenSelections(source);
      if (selectionChanged) {
        var event_1 = {
          type: Events.EVENT_SELECTION_CHANGED,
          source
        };
        this.eventService.dispatchEvent(event_1);
      }
    };
    ClientSideNodeManager2.prototype.executeAdd = function(rowDataTran, rowNodeTransaction) {
      var _this = this;
      var add = rowDataTran.add, addIndex = rowDataTran.addIndex;
      if (_2.missingOrEmpty(add)) {
        return;
      }
      var newNodes = add.map(function(item) {
        return _this.createNode(item, _this.rootNode, ClientSideNodeManager2.TOP_LEVEL);
      });
      var useIndex = typeof addIndex === "number" && addIndex >= 0;
      var nodesBeforeIndex;
      var nodesAfterIndex;
      if (useIndex) {
        var allLeafChildren_1 = this.rootNode.allLeafChildren;
        var normalizedAddIndex = addIndex === 0 ? 0 : allLeafChildren_1.reduce(function(prevIdx, currNode, currIdx) {
          var _a47;
          var rowIndex = currNode.rowIndex;
          var prevValueAtIndex = (_a47 = allLeafChildren_1[prevIdx]) === null || _a47 === void 0 ? void 0 : _a47.rowIndex;
          var shouldUpdateIndex = rowIndex != null && prevValueAtIndex != null && rowIndex < addIndex && rowIndex > prevValueAtIndex;
          return shouldUpdateIndex ? currIdx : prevIdx;
        }, 0) + 1;
        nodesBeforeIndex = allLeafChildren_1.slice(0, normalizedAddIndex);
        nodesAfterIndex = allLeafChildren_1.slice(normalizedAddIndex, allLeafChildren_1.length);
      } else {
        nodesBeforeIndex = this.rootNode.allLeafChildren;
        nodesAfterIndex = [];
      }
      this.rootNode.allLeafChildren = __spread21(nodesBeforeIndex, newNodes, nodesAfterIndex);
      if (this.rootNode.sibling) {
        this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;
      }
      rowNodeTransaction.add = newNodes;
    };
    ClientSideNodeManager2.prototype.executeRemove = function(rowDataTran, rowNodeTransaction, nodesToUnselect) {
      var _this = this;
      var remove = rowDataTran.remove;
      if (_2.missingOrEmpty(remove)) {
        return;
      }
      var rowIdsRemoved = {};
      remove.forEach(function(item) {
        var rowNode = _this.lookupRowNode(item);
        if (!rowNode) {
          return;
        }
        if (rowNode.isSelected()) {
          nodesToUnselect.push(rowNode);
        }
        rowNode.clearRowTopAndRowIndex();
        rowIdsRemoved[rowNode.id] = true;
        delete _this.allNodesMap[rowNode.id];
        rowNodeTransaction.remove.push(rowNode);
      });
      this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function(rowNode) {
        return !rowIdsRemoved[rowNode.id];
      });
      if (this.rootNode.sibling) {
        this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;
      }
    };
    ClientSideNodeManager2.prototype.executeUpdate = function(rowDataTran, rowNodeTransaction, nodesToUnselect) {
      var _this = this;
      var update = rowDataTran.update;
      if (_2.missingOrEmpty(update)) {
        return;
      }
      update.forEach(function(item) {
        var rowNode = _this.lookupRowNode(item);
        if (!rowNode) {
          return;
        }
        rowNode.updateData(item);
        if (!rowNode.selectable && rowNode.isSelected()) {
          nodesToUnselect.push(rowNode);
        }
        _this.setMasterForRow(rowNode, item, ClientSideNodeManager2.TOP_LEVEL, false);
        rowNodeTransaction.update.push(rowNode);
      });
    };
    ClientSideNodeManager2.prototype.lookupRowNode = function(data) {
      var getRowIdFunc = this.gridOptionsService.getRowIdFunc();
      var rowNode;
      if (getRowIdFunc) {
        var id = getRowIdFunc({ data, level: 0 });
        rowNode = this.allNodesMap[id];
        if (!rowNode) {
          console.error("AG Grid: could not find row id=" + id + ", data item was not found for this id");
          return null;
        }
      } else {
        rowNode = this.rootNode.allLeafChildren.find(function(node) {
          return node.data === data;
        });
        if (!rowNode) {
          console.error("AG Grid: could not find data item as object was not found", data);
          console.error("Consider using getRowId to help the Grid find matching row data");
          return null;
        }
      }
      return rowNode || null;
    };
    ClientSideNodeManager2.prototype.createNode = function(dataItem, parent2, level) {
      var node = new RowNode(this.beans);
      node.group = false;
      this.setMasterForRow(node, dataItem, level, true);
      if (parent2 && !this.suppressParentsInRowNodes) {
        node.parent = parent2;
      }
      node.level = level;
      node.setDataAndId(dataItem, this.nextId.toString());
      if (this.allNodesMap[node.id]) {
        console.warn("AG Grid: duplicate node id '" + node.id + "' detected from getRowId callback, this could cause issues in your grid.");
      }
      this.allNodesMap[node.id] = node;
      this.nextId++;
      return node;
    };
    ClientSideNodeManager2.prototype.setMasterForRow = function(rowNode, data, level, setExpanded) {
      if (this.doingTreeData) {
        rowNode.setMaster(false);
        if (setExpanded) {
          rowNode.expanded = false;
        }
      } else {
        if (this.doingMasterDetail) {
          if (this.isRowMasterFunc) {
            rowNode.setMaster(this.isRowMasterFunc(data));
          } else {
            rowNode.setMaster(true);
          }
        } else {
          rowNode.setMaster(false);
        }
        if (setExpanded) {
          var rowGroupColumns = this.columnModel.getRowGroupColumns();
          var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;
          var masterRowLevel = level + numRowGroupColumns;
          rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;
        }
      }
    };
    ClientSideNodeManager2.prototype.isExpanded = function(level) {
      var expandByDefault = this.gridOptionsService.getNum("groupDefaultExpanded");
      if (expandByDefault === -1) {
        return true;
      }
      return level < expandByDefault;
    };
    ClientSideNodeManager2.TOP_LEVEL = 0;
    ClientSideNodeManager2.ROOT_NODE_ID = "ROOT_NODE_ID";
    return ClientSideNodeManager2;
  }()
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/clientSideRowModel.js
var __extends170 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate157 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read26 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var __spread22 = function() {
  for (var ar = [], i2 = 0; i2 < arguments.length; i2++)
    ar = ar.concat(__read26(arguments[i2]));
  return ar;
};
var RecursionType;
(function(RecursionType2) {
  RecursionType2[RecursionType2["Normal"] = 0] = "Normal";
  RecursionType2[RecursionType2["AfterFilter"] = 1] = "AfterFilter";
  RecursionType2[RecursionType2["AfterFilterAndSort"] = 2] = "AfterFilterAndSort";
  RecursionType2[RecursionType2["PivotNodes"] = 3] = "PivotNodes";
})(RecursionType || (RecursionType = {}));
var ClientSideRowModel = (
  /** @class */
  function(_super) {
    __extends170(ClientSideRowModel2, _super);
    function ClientSideRowModel2() {
      var _this = _super !== null && _super.apply(this, arguments) || this;
      _this.onRowHeightChanged_debounced = _2.debounce(_this.onRowHeightChanged.bind(_this), 100);
      _this.rowsToDisplay = [];
      return _this;
    }
    ClientSideRowModel2.prototype.init = function() {
      var refreshEverythingFunc = this.refreshModel.bind(this, { step: ClientSideRowModelSteps.EVERYTHING });
      var animate2 = !this.gridOptionsService.is("suppressAnimationFrame");
      var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {
        step: ClientSideRowModelSteps.EVERYTHING,
        afterColumnsChanged: true,
        keepRenderedRows: true,
        animate: animate2
      });
      this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: ClientSideRowModelSteps.PIVOT }));
      this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
      this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);
      var refreshMapListener = this.refreshModel.bind(this, {
        step: ClientSideRowModelSteps.MAP,
        keepRenderedRows: true,
        animate: animate2
      });
      this.addManagedPropertyListener("groupRemoveSingleChildren", refreshMapListener);
      this.addManagedPropertyListener("groupRemoveLowestSingleChildren", refreshMapListener);
      this.rootNode = new RowNode(this.beans);
      this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsService, this.eventService, this.columnModel, this.selectionService, this.beans);
    };
    ClientSideRowModel2.prototype.start = function() {
      var rowData = this.gridOptionsService.get("rowData");
      if (rowData) {
        this.setRowData(rowData);
      }
    };
    ClientSideRowModel2.prototype.ensureRowHeightsValid = function(startPixel, endPixel, startLimitIndex, endLimitIndex) {
      var atLeastOneChange;
      var res = false;
      do {
        atLeastOneChange = false;
        var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);
        var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);
        var firstRow = Math.max(rowAtStartPixel, startLimitIndex);
        var lastRow = Math.min(rowAtEndPixel, endLimitIndex);
        for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {
          var rowNode = this.getRow(rowIndex);
          if (rowNode.rowHeightEstimated) {
            var rowHeight = this.gridOptionsService.getRowHeightForNode(rowNode);
            rowNode.setRowHeight(rowHeight.height);
            atLeastOneChange = true;
            res = true;
          }
        }
        if (atLeastOneChange) {
          this.setRowTopAndRowIndex();
        }
      } while (atLeastOneChange);
      return res;
    };
    ClientSideRowModel2.prototype.setRowTopAndRowIndex = function() {
      var defaultRowHeight = this.environment.getDefaultRowHeight();
      var nextRowTop = 0;
      var displayedRowsMapped = /* @__PURE__ */ new Set();
      var allowEstimate = this.gridOptionsService.isDomLayout("normal");
      for (var i2 = 0; i2 < this.rowsToDisplay.length; i2++) {
        var rowNode = this.rowsToDisplay[i2];
        if (rowNode.id != null) {
          displayedRowsMapped.add(rowNode.id);
        }
        if (rowNode.rowHeight == null) {
          var rowHeight = this.gridOptionsService.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);
          rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);
        }
        rowNode.setRowTop(nextRowTop);
        rowNode.setRowIndex(i2);
        nextRowTop += rowNode.rowHeight;
      }
      return displayedRowsMapped;
    };
    ClientSideRowModel2.prototype.clearRowTopAndRowIndex = function(changedPath, displayedRowsMapped) {
      var changedPathActive = changedPath.isActive();
      var clearIfNotDisplayed = function(rowNode) {
        if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {
          rowNode.clearRowTopAndRowIndex();
        }
      };
      var recurse = function(rowNode) {
        clearIfNotDisplayed(rowNode);
        clearIfNotDisplayed(rowNode.detailNode);
        clearIfNotDisplayed(rowNode.sibling);
        if (rowNode.hasChildren()) {
          if (rowNode.childrenAfterGroup) {
            var isRootNode = rowNode.level == -1;
            var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;
            if (!skipChildren) {
              rowNode.childrenAfterGroup.forEach(recurse);
            }
          }
        }
      };
      recurse(this.rootNode);
    };
    ClientSideRowModel2.prototype.ensureRowsAtPixel = function(rowNodes, pixel, increment) {
      var _this = this;
      if (increment === void 0) {
        increment = 0;
      }
      var indexAtPixelNow = this.getRowIndexAtPixel(pixel);
      var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);
      var animate2 = !this.gridOptionsService.is("suppressAnimationFrame");
      if (rowNodeAtPixelNow === rowNodes[0]) {
        return false;
      }
      rowNodes.forEach(function(rowNode) {
        _2.removeFromArray(_this.rootNode.allLeafChildren, rowNode);
      });
      rowNodes.forEach(function(rowNode, idx) {
        _2.insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);
      });
      this.refreshModel({
        step: ClientSideRowModelSteps.EVERYTHING,
        keepRenderedRows: true,
        keepEditingRows: true,
        animate: animate2
      });
      return true;
    };
    ClientSideRowModel2.prototype.highlightRowAtPixel = function(rowNode, pixel) {
      var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;
      var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;
      if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {
        if (this.lastHighlightedRow) {
          this.lastHighlightedRow.setHighlighted(null);
          this.lastHighlightedRow = null;
        }
        return;
      }
      var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);
      if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {
        this.lastHighlightedRow.setHighlighted(null);
        this.lastHighlightedRow = null;
      }
      rowNodeAtPixelNow.setHighlighted(highlight);
      this.lastHighlightedRow = rowNodeAtPixelNow;
    };
    ClientSideRowModel2.prototype.getHighlightPosition = function(pixel, rowNode) {
      if (!rowNode) {
        var index = this.getRowIndexAtPixel(pixel);
        rowNode = this.getRow(index || 0);
        if (!rowNode) {
          return RowHighlightPosition.Below;
        }
      }
      var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;
      return pixel - rowTop < rowHeight / 2 ? RowHighlightPosition.Above : RowHighlightPosition.Below;
    };
    ClientSideRowModel2.prototype.getLastHighlightedRowNode = function() {
      return this.lastHighlightedRow;
    };
    ClientSideRowModel2.prototype.isLastRowIndexKnown = function() {
      return true;
    };
    ClientSideRowModel2.prototype.getRowCount = function() {
      if (this.rowsToDisplay) {
        return this.rowsToDisplay.length;
      }
      return 0;
    };
    ClientSideRowModel2.prototype.getTopLevelRowCount = function() {
      var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;
      if (showingRootNode) {
        return 1;
      }
      var filteredChildren = this.rootNode.childrenAfterAggFilter;
      return filteredChildren ? filteredChildren.length : 0;
    };
    ClientSideRowModel2.prototype.getTopLevelRowDisplayedIndex = function(topLevelIndex) {
      var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;
      if (showingRootNode) {
        return topLevelIndex;
      }
      var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];
      if (this.gridOptionsService.is("groupHideOpenParents")) {
        while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {
          rowNode = rowNode.childrenAfterSort[0];
        }
      }
      return rowNode.rowIndex;
    };
    ClientSideRowModel2.prototype.getRowBounds = function(index) {
      if (_2.missing(this.rowsToDisplay)) {
        return null;
      }
      var rowNode = this.rowsToDisplay[index];
      if (rowNode) {
        return {
          rowTop: rowNode.rowTop,
          rowHeight: rowNode.rowHeight
        };
      }
      return null;
    };
    ClientSideRowModel2.prototype.onRowGroupOpened = function() {
      var animate2 = this.gridOptionsService.isAnimateRows();
      this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, animate: animate2 });
    };
    ClientSideRowModel2.prototype.onFilterChanged = function(event) {
      if (event.afterDataChange) {
        return;
      }
      var animate2 = this.gridOptionsService.isAnimateRows();
      var primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(function(col) {
        return col.isPrimary();
      });
      var step = primaryOrQuickFilterChanged ? ClientSideRowModelSteps.FILTER : ClientSideRowModelSteps.FILTER_AGGREGATES;
      this.refreshModel({ step, keepRenderedRows: true, animate: animate2 });
    };
    ClientSideRowModel2.prototype.onSortChanged = function() {
      var animate2 = this.gridOptionsService.isAnimateRows();
      this.refreshModel({ step: ClientSideRowModelSteps.SORT, keepRenderedRows: true, animate: animate2, keepEditingRows: true });
    };
    ClientSideRowModel2.prototype.getType = function() {
      return "clientSide";
    };
    ClientSideRowModel2.prototype.onValueChanged = function() {
      if (this.columnModel.isPivotActive()) {
        this.refreshModel({ step: ClientSideRowModelSteps.PIVOT });
      } else {
        this.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });
      }
    };
    ClientSideRowModel2.prototype.createChangePath = function(rowNodeTransactions) {
      var noTransactions = _2.missingOrEmpty(rowNodeTransactions);
      var changedPath = new ChangedPath(false, this.rootNode);
      if (noTransactions || this.gridOptionsService.isTreeData()) {
        changedPath.setInactive();
      }
      return changedPath;
    };
    ClientSideRowModel2.prototype.isSuppressModelUpdateAfterUpdateTransaction = function(params) {
      if (!this.gridOptionsService.is("suppressModelUpdateAfterUpdateTransaction")) {
        return false;
      }
      if (params.rowNodeTransactions == null) {
        return false;
      }
      var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function(tx) {
        return tx.add != null && tx.add.length > 0 || tx.remove != null && tx.remove.length > 0;
      });
      var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;
      return transactionsContainUpdatesOnly;
    };
    ClientSideRowModel2.prototype.buildRefreshModelParams = function(step) {
      var paramsStep = ClientSideRowModelSteps.EVERYTHING;
      var stepsMapped = {
        everything: ClientSideRowModelSteps.EVERYTHING,
        group: ClientSideRowModelSteps.EVERYTHING,
        filter: ClientSideRowModelSteps.FILTER,
        map: ClientSideRowModelSteps.MAP,
        aggregate: ClientSideRowModelSteps.AGGREGATE,
        sort: ClientSideRowModelSteps.SORT,
        pivot: ClientSideRowModelSteps.PIVOT
      };
      if (_2.exists(step)) {
        paramsStep = stepsMapped[step];
      }
      if (_2.missing(paramsStep)) {
        console.error("AG Grid: invalid step " + step + ", available steps are " + Object.keys(stepsMapped).join(", "));
        return void 0;
      }
      var animate2 = !this.gridOptionsService.is("suppressAnimationFrame");
      var modelParams = {
        step: paramsStep,
        keepRenderedRows: true,
        keepEditingRows: true,
        animate: animate2
      };
      return modelParams;
    };
    ClientSideRowModel2.prototype.refreshModel = function(paramsOrStep) {
      var params = typeof paramsOrStep === "object" && "step" in paramsOrStep ? paramsOrStep : this.buildRefreshModelParams(paramsOrStep);
      if (!params) {
        return;
      }
      if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {
        return;
      }
      var changedPath = this.createChangePath(params.rowNodeTransactions);
      switch (params.step) {
        case ClientSideRowModelSteps.EVERYTHING:
          this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);
        case ClientSideRowModelSteps.FILTER:
          this.doFilter(changedPath);
        case ClientSideRowModelSteps.PIVOT:
          this.doPivot(changedPath);
        case ClientSideRowModelSteps.AGGREGATE:
          this.doAggregate(changedPath);
        case ClientSideRowModelSteps.FILTER_AGGREGATES:
          this.doFilterAggregates(changedPath);
        case ClientSideRowModelSteps.SORT:
          this.doSort(params.rowNodeTransactions, changedPath);
        case ClientSideRowModelSteps.MAP:
          this.doRowsToDisplay();
      }
      var displayedNodesMapped = this.setRowTopAndRowIndex();
      this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);
      var event = {
        type: Events.EVENT_MODEL_UPDATED,
        animate: params.animate,
        keepRenderedRows: params.keepRenderedRows,
        newData: params.newData,
        newPage: false,
        keepUndoRedoStack: params.keepUndoRedoStack
      };
      this.eventService.dispatchEvent(event);
    };
    ClientSideRowModel2.prototype.isEmpty = function() {
      var rowsMissing = _2.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;
      return _2.missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();
    };
    ClientSideRowModel2.prototype.isRowsToRender = function() {
      return _2.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;
    };
    ClientSideRowModel2.prototype.getNodesInRangeForSelection = function(firstInRange, lastInRange) {
      var firstRowHit = !lastInRange;
      var lastRowHit = false;
      var lastRow;
      var result = [];
      var groupsSelectChildren = this.gridOptionsService.is("groupSelectsChildren");
      this.forEachNodeAfterFilterAndSort(function(rowNode) {
        var lookingForLastRow = firstRowHit && !lastRowHit;
        if (!firstRowHit) {
          if (rowNode === lastInRange || rowNode === firstInRange) {
            firstRowHit = true;
          }
        }
        var skipThisGroupNode = rowNode.group && groupsSelectChildren;
        if (!skipThisGroupNode) {
          var inRange = firstRowHit && !lastRowHit;
          var childOfLastRow = rowNode.isParentOfNode(lastRow);
          if (inRange || childOfLastRow) {
            result.push(rowNode);
          }
        }
        if (lookingForLastRow) {
          if (rowNode === lastInRange || rowNode === firstInRange) {
            lastRowHit = true;
            if (rowNode === lastInRange) {
              lastRow = lastInRange;
            } else {
              lastRow = firstInRange;
            }
          }
        }
      });
      return result;
    };
    ClientSideRowModel2.prototype.setDatasource = function(datasource) {
      console.error("AG Grid: should never call setDatasource on clientSideRowController");
    };
    ClientSideRowModel2.prototype.getTopLevelNodes = function() {
      return this.rootNode ? this.rootNode.childrenAfterGroup : null;
    };
    ClientSideRowModel2.prototype.getRootNode = function() {
      return this.rootNode;
    };
    ClientSideRowModel2.prototype.getRow = function(index) {
      return this.rowsToDisplay[index];
    };
    ClientSideRowModel2.prototype.isRowPresent = function(rowNode) {
      return this.rowsToDisplay.indexOf(rowNode) >= 0;
    };
    ClientSideRowModel2.prototype.getRowIndexAtPixel = function(pixelToMatch) {
      if (this.isEmpty() || this.rowsToDisplay.length === 0) {
        return -1;
      }
      var bottomPointer = 0;
      var topPointer = this.rowsToDisplay.length - 1;
      if (pixelToMatch <= 0) {
        return 0;
      }
      var lastNode = _2.last(this.rowsToDisplay);
      if (lastNode.rowTop <= pixelToMatch) {
        return this.rowsToDisplay.length - 1;
      }
      var oldBottomPointer = -1;
      var oldTopPointer = -1;
      while (true) {
        var midPointer = Math.floor((bottomPointer + topPointer) / 2);
        var currentRowNode = this.rowsToDisplay[midPointer];
        if (this.isRowInPixel(currentRowNode, pixelToMatch)) {
          return midPointer;
        }
        if (currentRowNode.rowTop < pixelToMatch) {
          bottomPointer = midPointer + 1;
        } else if (currentRowNode.rowTop > pixelToMatch) {
          topPointer = midPointer - 1;
        }
        var caughtInInfiniteLoop = oldBottomPointer === bottomPointer && oldTopPointer === topPointer;
        if (caughtInInfiniteLoop) {
          return midPointer;
        }
        oldBottomPointer = bottomPointer;
        oldTopPointer = topPointer;
      }
    };
    ClientSideRowModel2.prototype.isRowInPixel = function(rowNode, pixelToMatch) {
      var topPixel = rowNode.rowTop;
      var bottomPixel = rowNode.rowTop + rowNode.rowHeight;
      var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;
      return pixelInRow;
    };
    ClientSideRowModel2.prototype.forEachLeafNode = function(callback) {
      if (this.rootNode.allLeafChildren) {
        this.rootNode.allLeafChildren.forEach(function(rowNode, index) {
          return callback(rowNode, index);
        });
      }
    };
    ClientSideRowModel2.prototype.forEachNode = function(callback, includeFooterNodes) {
      if (includeFooterNodes === void 0) {
        includeFooterNodes = false;
      }
      this.recursivelyWalkNodesAndCallback({
        nodes: __spread22(this.rootNode.childrenAfterGroup || []),
        callback,
        recursionType: RecursionType.Normal,
        index: 0,
        includeFooterNodes
      });
    };
    ClientSideRowModel2.prototype.forEachNodeAfterFilter = function(callback, includeFooterNodes) {
      if (includeFooterNodes === void 0) {
        includeFooterNodes = false;
      }
      this.recursivelyWalkNodesAndCallback({
        nodes: __spread22(this.rootNode.childrenAfterAggFilter || []),
        callback,
        recursionType: RecursionType.AfterFilter,
        index: 0,
        includeFooterNodes
      });
    };
    ClientSideRowModel2.prototype.forEachNodeAfterFilterAndSort = function(callback, includeFooterNodes) {
      if (includeFooterNodes === void 0) {
        includeFooterNodes = false;
      }
      this.recursivelyWalkNodesAndCallback({
        nodes: __spread22(this.rootNode.childrenAfterSort || []),
        callback,
        recursionType: RecursionType.AfterFilterAndSort,
        index: 0,
        includeFooterNodes
      });
    };
    ClientSideRowModel2.prototype.forEachPivotNode = function(callback, includeFooterNodes) {
      if (includeFooterNodes === void 0) {
        includeFooterNodes = false;
      }
      this.recursivelyWalkNodesAndCallback({
        nodes: [this.rootNode],
        callback,
        recursionType: RecursionType.PivotNodes,
        index: 0,
        includeFooterNodes
      });
    };
    ClientSideRowModel2.prototype.recursivelyWalkNodesAndCallback = function(params) {
      var _a47;
      var nodes = params.nodes, callback = params.callback, recursionType = params.recursionType, includeFooterNodes = params.includeFooterNodes;
      var index = params.index;
      var firstNode = nodes[0];
      if (includeFooterNodes && ((_a47 = firstNode === null || firstNode === void 0 ? void 0 : firstNode.parent) === null || _a47 === void 0 ? void 0 : _a47.sibling)) {
        nodes.push(firstNode.parent.sibling);
      }
      for (var i2 = 0; i2 < nodes.length; i2++) {
        var node = nodes[i2];
        callback(node, index++);
        if (node.hasChildren() && !node.footer) {
          var nodeChildren = null;
          switch (recursionType) {
            case RecursionType.Normal:
              nodeChildren = node.childrenAfterGroup;
              break;
            case RecursionType.AfterFilter:
              nodeChildren = node.childrenAfterAggFilter;
              break;
            case RecursionType.AfterFilterAndSort:
              nodeChildren = node.childrenAfterSort;
              break;
            case RecursionType.PivotNodes:
              nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;
              break;
          }
          if (nodeChildren) {
            index = this.recursivelyWalkNodesAndCallback({
              nodes: __spread22(nodeChildren),
              callback,
              recursionType,
              index,
              includeFooterNodes
            });
          }
        }
      }
      return index;
    };
    ClientSideRowModel2.prototype.doAggregate = function(changedPath) {
      if (this.aggregationStage) {
        this.aggregationStage.execute({ rowNode: this.rootNode, changedPath });
      }
    };
    ClientSideRowModel2.prototype.doFilterAggregates = function(changedPath) {
      if (this.filterAggregatesStage) {
        this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath });
      } else {
        this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;
      }
    };
    ClientSideRowModel2.prototype.expandOrCollapseAll = function(expand) {
      var usingTreeData = this.gridOptionsService.isTreeData();
      var usingPivotMode = this.columnModel.isPivotActive();
      var recursiveExpandOrCollapse = function(rowNodes) {
        if (!rowNodes) {
          return;
        }
        rowNodes.forEach(function(rowNode) {
          var actionRow = function() {
            rowNode.expanded = expand;
            recursiveExpandOrCollapse(rowNode.childrenAfterGroup);
          };
          if (usingTreeData) {
            var hasChildren = _2.exists(rowNode.childrenAfterGroup);
            if (hasChildren) {
              actionRow();
            }
            return;
          }
          if (usingPivotMode) {
            var notLeafGroup = !rowNode.leafGroup;
            if (notLeafGroup) {
              actionRow();
            }
            return;
          }
          var isRowGroup = rowNode.group;
          if (isRowGroup) {
            actionRow();
          }
        });
      };
      if (this.rootNode) {
        recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);
      }
      this.refreshModel({ step: ClientSideRowModelSteps.MAP });
      var eventSource = expand ? "expandAll" : "collapseAll";
      var event = {
        type: Events.EVENT_EXPAND_COLLAPSE_ALL,
        source: eventSource
      };
      this.eventService.dispatchEvent(event);
    };
    ClientSideRowModel2.prototype.doSort = function(rowNodeTransactions, changedPath) {
      this.sortStage.execute({
        rowNode: this.rootNode,
        rowNodeTransactions,
        changedPath
      });
    };
    ClientSideRowModel2.prototype.doRowGrouping = function(groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {
      if (this.groupStage) {
        if (rowNodeTransactions) {
          this.groupStage.execute({
            rowNode: this.rootNode,
            rowNodeTransactions,
            rowNodeOrder,
            changedPath
          });
        } else {
          this.groupStage.execute({
            rowNode: this.rootNode,
            changedPath,
            afterColumnsChanged
          });
          this.restoreGroupState(groupState);
        }
        if (this.gridOptionsService.is("groupSelectsChildren")) {
          var selectionChanged = this.selectionService.updateGroupsFromChildrenSelections("rowGroupChanged", changedPath);
          if (selectionChanged) {
            var event_1 = {
              type: Events.EVENT_SELECTION_CHANGED,
              source: "rowGroupChanged"
            };
            this.eventService.dispatchEvent(event_1);
          }
        }
      } else {
        this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;
        if (this.rootNode.sibling) {
          this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;
        }
        this.rootNode.updateHasChildren();
      }
    };
    ClientSideRowModel2.prototype.restoreGroupState = function(groupState) {
      if (!groupState) {
        return;
      }
      _2.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function(node, key) {
        if (typeof groupState[key] === "boolean") {
          node.expanded = groupState[key];
        }
      });
    };
    ClientSideRowModel2.prototype.doFilter = function(changedPath) {
      this.filterStage.execute({ rowNode: this.rootNode, changedPath });
    };
    ClientSideRowModel2.prototype.doPivot = function(changedPath) {
      if (this.pivotStage) {
        this.pivotStage.execute({ rowNode: this.rootNode, changedPath });
      }
    };
    ClientSideRowModel2.prototype.getGroupState = function() {
      if (!this.rootNode.childrenAfterGroup || !this.gridOptionsService.is("rememberGroupStateWhenNewData")) {
        return null;
      }
      var result = {};
      _2.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function(node, key) {
        return result[key] = node.expanded;
      });
      return result;
    };
    ClientSideRowModel2.prototype.getCopyOfNodesMap = function() {
      return this.nodeManager.getCopyOfNodesMap();
    };
    ClientSideRowModel2.prototype.getRowNode = function(id) {
      var idIsGroup = typeof id == "string" && id.indexOf(RowNode.ID_PREFIX_ROW_GROUP) == 0;
      if (idIsGroup) {
        var res_1 = void 0;
        this.forEachNode(function(node) {
          if (node.id === id) {
            res_1 = node;
          }
        });
        return res_1;
      }
      return this.nodeManager.getRowNode(id);
    };
    ClientSideRowModel2.prototype.setRowData = function(rowData) {
      var groupState = this.getGroupState();
      this.nodeManager.setRowData(rowData);
      this.selectionService.reset();
      this.filterManager.onNewRowsLoaded("rowDataUpdated");
      var rowDataUpdatedEvent = {
        type: Events.EVENT_ROW_DATA_UPDATED
      };
      this.eventService.dispatchEvent(rowDataUpdatedEvent);
      this.refreshModel({
        step: ClientSideRowModelSteps.EVERYTHING,
        groupState,
        newData: true
      });
    };
    ClientSideRowModel2.prototype.batchUpdateRowData = function(rowDataTransaction, callback) {
      var _this = this;
      if (this.applyAsyncTransactionsTimeout == null) {
        this.rowDataTransactionBatch = [];
        var waitMillis = this.gridOptionsService.getAsyncTransactionWaitMillis();
        this.applyAsyncTransactionsTimeout = window.setTimeout(function() {
          _this.executeBatchUpdateRowData();
        }, waitMillis);
      }
      this.rowDataTransactionBatch.push({ rowDataTransaction, callback });
    };
    ClientSideRowModel2.prototype.flushAsyncTransactions = function() {
      if (this.applyAsyncTransactionsTimeout != null) {
        clearTimeout(this.applyAsyncTransactionsTimeout);
        this.executeBatchUpdateRowData();
      }
    };
    ClientSideRowModel2.prototype.executeBatchUpdateRowData = function() {
      var _this = this;
      this.valueCache.onDataChanged();
      var callbackFuncsBound = [];
      var rowNodeTrans = [];
      var forceRowNodeOrder = false;
      if (this.rowDataTransactionBatch) {
        this.rowDataTransactionBatch.forEach(function(tranItem) {
          var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, void 0);
          rowNodeTrans.push(rowNodeTran);
          if (tranItem.callback) {
            callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));
          }
          if (typeof tranItem.rowDataTransaction.addIndex === "number") {
            forceRowNodeOrder = true;
          }
        });
      }
      this.commonUpdateRowData(rowNodeTrans, void 0, forceRowNodeOrder);
      if (callbackFuncsBound.length > 0) {
        window.setTimeout(function() {
          callbackFuncsBound.forEach(function(func) {
            return func();
          });
        }, 0);
      }
      if (rowNodeTrans.length > 0) {
        var event_2 = {
          type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,
          results: rowNodeTrans
        };
        this.eventService.dispatchEvent(event_2);
      }
      this.rowDataTransactionBatch = null;
      this.applyAsyncTransactionsTimeout = void 0;
    };
    ClientSideRowModel2.prototype.updateRowData = function(rowDataTran, rowNodeOrder) {
      this.valueCache.onDataChanged();
      var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);
      var forceRowNodeOrder = typeof rowDataTran.addIndex === "number";
      this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);
      return rowNodeTran;
    };
    ClientSideRowModel2.prototype.createRowNodeOrder = function() {
      var suppressSortOrder = this.gridOptionsService.is("suppressMaintainUnsortedOrder");
      if (suppressSortOrder) {
        return;
      }
      var orderMap = {};
      if (this.rootNode && this.rootNode.allLeafChildren) {
        for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {
          var node = this.rootNode.allLeafChildren[index];
          orderMap[node.id] = index;
        }
      }
      return orderMap;
    };
    ClientSideRowModel2.prototype.commonUpdateRowData = function(rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {
      var animate2 = !this.gridOptionsService.is("suppressAnimationFrame");
      if (forceRowNodeOrder) {
        rowNodeOrder = this.createRowNodeOrder();
      }
      this.refreshModel({
        step: ClientSideRowModelSteps.EVERYTHING,
        rowNodeTransactions: rowNodeTrans,
        rowNodeOrder,
        keepRenderedRows: true,
        keepEditingRows: true,
        animate: animate2
      });
      this.filterManager.onNewRowsLoaded("rowDataUpdated");
      var event = {
        type: Events.EVENT_ROW_DATA_UPDATED
      };
      this.eventService.dispatchEvent(event);
    };
    ClientSideRowModel2.prototype.doRowsToDisplay = function() {
      this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });
    };
    ClientSideRowModel2.prototype.onRowHeightChanged = function() {
      this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, keepEditingRows: true, keepUndoRedoStack: true });
    };
    ClientSideRowModel2.prototype.onRowHeightChangedDebounced = function() {
      this.onRowHeightChanged_debounced();
    };
    ClientSideRowModel2.prototype.resetRowHeights = function() {
      var atLeastOne = false;
      this.forEachNode(function(rowNode) {
        rowNode.setRowHeight(rowNode.rowHeight, true);
        var detailNode = rowNode.detailNode;
        if (detailNode) {
          detailNode.setRowHeight(detailNode.rowHeight, true);
        }
        atLeastOne = true;
      });
      if (atLeastOne) {
        this.onRowHeightChanged();
      }
    };
    __decorate157([
      Autowired("columnModel")
    ], ClientSideRowModel2.prototype, "columnModel", void 0);
    __decorate157([
      Autowired("selectionService")
    ], ClientSideRowModel2.prototype, "selectionService", void 0);
    __decorate157([
      Autowired("filterManager")
    ], ClientSideRowModel2.prototype, "filterManager", void 0);
    __decorate157([
      Autowired("valueCache")
    ], ClientSideRowModel2.prototype, "valueCache", void 0);
    __decorate157([
      Autowired("beans")
    ], ClientSideRowModel2.prototype, "beans", void 0);
    __decorate157([
      Autowired("filterStage")
    ], ClientSideRowModel2.prototype, "filterStage", void 0);
    __decorate157([
      Autowired("sortStage")
    ], ClientSideRowModel2.prototype, "sortStage", void 0);
    __decorate157([
      Autowired("flattenStage")
    ], ClientSideRowModel2.prototype, "flattenStage", void 0);
    __decorate157([
      Optional2("groupStage")
    ], ClientSideRowModel2.prototype, "groupStage", void 0);
    __decorate157([
      Optional2("aggregationStage")
    ], ClientSideRowModel2.prototype, "aggregationStage", void 0);
    __decorate157([
      Optional2("pivotStage")
    ], ClientSideRowModel2.prototype, "pivotStage", void 0);
    __decorate157([
      Optional2("filterAggregatesStage")
    ], ClientSideRowModel2.prototype, "filterAggregatesStage", void 0);
    __decorate157([
      PostConstruct
    ], ClientSideRowModel2.prototype, "init", null);
    ClientSideRowModel2 = __decorate157([
      Bean("rowModel")
    ], ClientSideRowModel2);
    return ClientSideRowModel2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/filterStage.js
var __extends171 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate158 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var FilterStage = (
  /** @class */
  function(_super) {
    __extends171(FilterStage2, _super);
    function FilterStage2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    FilterStage2.prototype.execute = function(params) {
      var changedPath = params.changedPath;
      this.filterService.filter(changedPath);
    };
    __decorate158([
      Autowired("filterService")
    ], FilterStage2.prototype, "filterService", void 0);
    FilterStage2 = __decorate158([
      Bean("filterStage")
    ], FilterStage2);
    return FilterStage2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/sortStage.js
var __extends172 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate159 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SortStage = (
  /** @class */
  function(_super) {
    __extends172(SortStage2, _super);
    function SortStage2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SortStage2.prototype.execute = function(params) {
      var _this = this;
      var sortOptions = this.sortController.getSortOptions();
      var sortActive = _2.exists(sortOptions) && sortOptions.length > 0;
      var deltaSort = sortActive && _2.exists(params.rowNodeTransactions) && this.gridOptionsService.is("deltaSort");
      var sortContainsGroupColumns = sortOptions.some(function(opt) {
        return !!_this.columnModel.getGroupDisplayColumnForGroup(opt.column.getId());
      });
      this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);
    };
    __decorate159([
      Autowired("sortService")
    ], SortStage2.prototype, "sortService", void 0);
    __decorate159([
      Autowired("sortController")
    ], SortStage2.prototype, "sortController", void 0);
    __decorate159([
      Autowired("columnModel")
    ], SortStage2.prototype, "columnModel", void 0);
    SortStage2 = __decorate159([
      Bean("sortStage")
    ], SortStage2);
    return SortStage2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/flattenStage.js
var __extends173 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate160 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var FlattenStage = (
  /** @class */
  function(_super) {
    __extends173(FlattenStage2, _super);
    function FlattenStage2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    FlattenStage2.prototype.execute = function(params) {
      var rootNode = params.rowNode;
      var result = [];
      var nextRowTop = { value: 0 };
      var skipLeafNodes = this.columnModel.isPivotMode();
      var showRootNode = skipLeafNodes && rootNode.leafGroup;
      var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;
      this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);
      var atLeastOneRowPresent = result.length > 0;
      var includeGroupTotalFooter = !showRootNode && atLeastOneRowPresent && this.gridOptionsService.is("groupIncludeTotalFooter");
      if (includeGroupTotalFooter) {
        rootNode.createFooter();
        this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);
      }
      return result;
    };
    FlattenStage2.prototype.recursivelyAddToRowsToDisplay = function(rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {
      if (_2.missingOrEmpty(rowsToFlatten)) {
        return;
      }
      var hideOpenParents = this.gridOptionsService.is("groupHideOpenParents");
      var groupRemoveSingleChildren = this.gridOptionsService.is("groupRemoveSingleChildren");
      var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsService.is("groupRemoveLowestSingleChildren");
      for (var i2 = 0; i2 < rowsToFlatten.length; i2++) {
        var rowNode = rowsToFlatten[i2];
        var isParent = rowNode.hasChildren();
        var isSkippedLeafNode = skipLeafNodes && !isParent;
        var isRemovedSingleChildrenGroup = groupRemoveSingleChildren && isParent && rowNode.childrenAfterGroup.length === 1;
        var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren && isParent && rowNode.leafGroup && rowNode.childrenAfterGroup.length === 1;
        var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;
        var isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && !neverAllowToExpand;
        var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent && !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;
        if (thisRowShouldBeRendered) {
          this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);
        }
        if (skipLeafNodes && rowNode.leafGroup) {
          continue;
        }
        if (isParent) {
          var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;
          if (rowNode.expanded || excludedParent) {
            var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;
            this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);
            if (this.gridOptionsService.is("groupIncludeFooter")) {
              this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);
            }
          }
        } else if (rowNode.master && rowNode.expanded) {
          var detailNode = this.createDetailNode(rowNode);
          this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);
        }
      }
    };
    FlattenStage2.prototype.addRowNodeToRowsToDisplay = function(rowNode, result, nextRowTop, uiLevel) {
      var isGroupMultiAutoColumn = this.gridOptionsService.isGroupMultiAutoColumn();
      result.push(rowNode);
      rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);
    };
    FlattenStage2.prototype.createDetailNode = function(masterNode) {
      if (_2.exists(masterNode.detailNode)) {
        return masterNode.detailNode;
      }
      var detailNode = new RowNode(this.beans);
      detailNode.detail = true;
      detailNode.selectable = false;
      detailNode.parent = masterNode;
      if (_2.exists(masterNode.id)) {
        detailNode.id = "detail_" + masterNode.id;
      }
      detailNode.data = masterNode.data;
      detailNode.level = masterNode.level + 1;
      masterNode.detailNode = detailNode;
      return detailNode;
    };
    __decorate160([
      Autowired("columnModel")
    ], FlattenStage2.prototype, "columnModel", void 0);
    __decorate160([
      Autowired("beans")
    ], FlattenStage2.prototype, "beans", void 0);
    FlattenStage2 = __decorate160([
      Bean("flattenStage")
    ], FlattenStage2);
    return FlattenStage2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/sortService.js
var __extends174 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate161 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var SortService = (
  /** @class */
  function(_super) {
    __extends174(SortService2, _super);
    function SortService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    SortService2.prototype.init = function() {
      this.postSortFunc = this.getPostSortFunc();
    };
    SortService2.prototype.sort = function(sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {
      var _this = this;
      var groupMaintainOrder = this.gridOptionsService.is("groupMaintainOrder");
      var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function(c2) {
        return c2.isRowGroupActive();
      });
      var allDirtyNodes = {};
      if (useDeltaSort && rowNodeTransactions) {
        allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);
      }
      var isPivotMode = this.columnModel.isPivotMode();
      var callback = function(rowNode) {
        _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);
        var skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;
        var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;
        if (!sortActive || skipSortingGroups || skipSortingPivotLeafs) {
          var childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);
          if (groupMaintainOrder && rowNode.childrenAfterSort) {
            var indexedOrders_1 = rowNode.childrenAfterSort.reduce(function(acc, row, idx) {
              acc[row.id] = idx;
              return acc;
            }, {});
            childrenToBeSorted.sort(function(row1, row2) {
              return (indexedOrders_1[row1.id] || 0) - (indexedOrders_1[row2.id] || 0);
            });
          }
          rowNode.childrenAfterSort = childrenToBeSorted;
        } else if (useDeltaSort) {
          rowNode.childrenAfterSort = _this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);
        } else {
          rowNode.childrenAfterSort = _this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);
        }
        if (rowNode.sibling) {
          rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;
        }
        _this.updateChildIndexes(rowNode);
        if (_this.postSortFunc) {
          var params = { nodes: rowNode.childrenAfterSort };
          _this.postSortFunc(params);
        }
      };
      if (changedPath) {
        changedPath.forEachChangedNodeDepthFirst(callback);
      }
      this.updateGroupDataForHideOpenParents(changedPath);
    };
    SortService2.prototype.getPostSortFunc = function() {
      var postSortRows = this.gridOptionsService.getCallback("postSortRows");
      if (postSortRows) {
        return postSortRows;
      }
      var postSort = this.gridOptionsService.get("postSort");
      if (postSort) {
        return function(params) {
          return postSort(params.nodes);
        };
      }
    };
    SortService2.prototype.calculateDirtyNodes = function(rowNodeTransactions) {
      var dirtyNodes = {};
      var addNodesFunc = function(rowNodes) {
        if (rowNodes) {
          rowNodes.forEach(function(rowNode) {
            return dirtyNodes[rowNode.id] = true;
          });
        }
      };
      if (rowNodeTransactions) {
        rowNodeTransactions.forEach(function(tran) {
          addNodesFunc(tran.add);
          addNodesFunc(tran.update);
          addNodesFunc(tran.remove);
        });
      }
      return dirtyNodes;
    };
    SortService2.prototype.doDeltaSort = function(rowNode, allTouchedNodes, changedPath, sortOptions) {
      var _this = this;
      var unsortedRows = rowNode.childrenAfterAggFilter;
      var oldSortedRows = rowNode.childrenAfterSort;
      if (!oldSortedRows) {
        return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);
      }
      var untouchedRowsMap = {};
      var touchedRows = [];
      unsortedRows.forEach(function(row) {
        if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {
          touchedRows.push(row);
        } else {
          untouchedRowsMap[row.id] = true;
        }
      });
      var sortedUntouchedRows = oldSortedRows.filter(function(child) {
        return untouchedRowsMap[child.id];
      });
      var mapNodeToSortedNode = function(rowNode2, pos) {
        return { currentPos: pos, rowNode: rowNode2 };
      };
      var sortedChangedRows = touchedRows.map(mapNodeToSortedNode).sort(function(a2, b2) {
        return _this.rowNodeSorter.compareRowNodes(sortOptions, a2, b2);
      });
      return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(function(_a47) {
        var rowNode2 = _a47.rowNode;
        return rowNode2;
      });
    };
    SortService2.prototype.mergeSortedArrays = function(sortOptions, arr1, arr2) {
      var res = [];
      var i2 = 0;
      var j2 = 0;
      while (i2 < arr1.length && j2 < arr2.length) {
        var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i2], arr2[j2]);
        if (compareResult < 0) {
          res.push(arr1[i2++]);
        } else {
          res.push(arr2[j2++]);
        }
      }
      while (i2 < arr1.length) {
        res.push(arr1[i2++]);
      }
      while (j2 < arr2.length) {
        res.push(arr2[j2++]);
      }
      return res;
    };
    SortService2.prototype.updateChildIndexes = function(rowNode) {
      if (_2.missing(rowNode.childrenAfterSort)) {
        return;
      }
      var listToSort = rowNode.childrenAfterSort;
      for (var i2 = 0; i2 < listToSort.length; i2++) {
        var child = listToSort[i2];
        var firstChild = i2 === 0;
        var lastChild = i2 === rowNode.childrenAfterSort.length - 1;
        child.setFirstChild(firstChild);
        child.setLastChild(lastChild);
        child.setChildIndex(i2);
      }
    };
    SortService2.prototype.updateGroupDataForHideOpenParents = function(changedPath) {
      var _this = this;
      if (!this.gridOptionsService.is("groupHideOpenParents")) {
        return;
      }
      if (this.gridOptionsService.isTreeData()) {
        var msg_1 = "AG Grid: The property hideOpenParents dose not work with Tree Data. This is because Tree Data has values at the group level, it doesn't make sense to hide them (as opposed to Row Grouping, which only has Aggregated Values at the group level).";
        _2.doOnce(function() {
          return console.warn(msg_1);
        }, "sortService.hideOpenParentsWithTreeData");
        return false;
      }
      var callback = function(rowNode) {
        _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);
        rowNode.childrenAfterSort.forEach(function(child) {
          if (child.hasChildren()) {
            callback(child);
          }
        });
      };
      if (changedPath) {
        changedPath.executeFromRootNode(function(rowNode) {
          return callback(rowNode);
        });
      }
    };
    SortService2.prototype.pullDownGroupDataForHideOpenParents = function(rowNodes, clearOperation) {
      var _this = this;
      if (!this.gridOptionsService.is("groupHideOpenParents") || _2.missing(rowNodes)) {
        return;
      }
      rowNodes.forEach(function(childRowNode) {
        var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();
        groupDisplayCols.forEach(function(groupDisplayCol) {
          var showRowGroup = groupDisplayCol.getColDef().showRowGroup;
          if (typeof showRowGroup !== "string") {
            console.error("AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup");
            return;
          }
          var displayingGroupKey = showRowGroup;
          var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);
          var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;
          if (thisRowNodeMatches) {
            return;
          }
          if (clearOperation) {
            childRowNode.setGroupValue(groupDisplayCol.getId(), void 0);
          } else {
            var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);
            if (parentToStealFrom) {
              childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);
            }
          }
        });
      });
    };
    __decorate161([
      Autowired("columnModel")
    ], SortService2.prototype, "columnModel", void 0);
    __decorate161([
      Autowired("rowNodeSorter")
    ], SortService2.prototype, "rowNodeSorter", void 0);
    __decorate161([
      PostConstruct
    ], SortService2.prototype, "init", null);
    SortService2 = __decorate161([
      Bean("sortService")
    ], SortService2);
    return SortService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/filterService.js
var __extends175 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate162 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var FilterService = (
  /** @class */
  function(_super) {
    __extends175(FilterService2, _super);
    function FilterService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    FilterService2.prototype.filter = function(changedPath) {
      var filterActive = this.filterManager.isColumnFilterPresent() || this.filterManager.isQuickFilterPresent() || this.filterManager.isExternalFilterPresent();
      this.filterNodes(filterActive, changedPath);
    };
    FilterService2.prototype.filterNodes = function(filterActive, changedPath) {
      var _this = this;
      var filterCallback = function(rowNode, includeChildNodes) {
        if (rowNode.hasChildren()) {
          if (filterActive && !includeChildNodes) {
            rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function(childNode) {
              var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;
              var passBecauseDataPasses = childNode.data && _this.filterManager.doesRowPassFilter({ rowNode: childNode });
              return passBecauseChildren || passBecauseDataPasses;
            });
          } else {
            rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
          }
        } else {
          rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
        }
        if (rowNode.sibling) {
          rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;
        }
      };
      if (this.doingTreeDataFiltering()) {
        var treeDataDepthFirstFilter_1 = function(rowNode, alreadyFoundInParent) {
          if (rowNode.childrenAfterGroup) {
            for (var i2 = 0; i2 < rowNode.childrenAfterGroup.length; i2++) {
              var childNode = rowNode.childrenAfterGroup[i2];
              var foundInParent = alreadyFoundInParent || _this.filterManager.doesRowPassFilter({ rowNode: childNode });
              if (childNode.childrenAfterGroup) {
                treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i2], foundInParent);
              } else {
                filterCallback(childNode, foundInParent);
              }
            }
          }
          filterCallback(rowNode, alreadyFoundInParent);
        };
        var treeDataFilterCallback = function(rowNode) {
          return treeDataDepthFirstFilter_1(rowNode, false);
        };
        changedPath.executeFromRootNode(treeDataFilterCallback);
      } else {
        var defaultFilterCallback = function(rowNode) {
          return filterCallback(rowNode, false);
        };
        changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);
      }
    };
    FilterService2.prototype.doingTreeDataFiltering = function() {
      return this.gridOptionsService.isTreeData() && !this.gridOptionsService.is("excludeChildrenWhenTreeDataFiltering");
    };
    __decorate162([
      Autowired("filterManager")
    ], FilterService2.prototype, "filterManager", void 0);
    FilterService2 = __decorate162([
      Bean("filterService")
    ], FilterService2);
    return FilterService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/immutableService.js
var __extends176 = /* @__PURE__ */ function() {
  var extendStatics = function(d2, b2) {
    extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
      d3.__proto__ = b3;
    } || function(d3, b3) {
      for (var p2 in b3)
        if (Object.prototype.hasOwnProperty.call(b3, p2))
          d3[p2] = b3[p2];
    };
    return extendStatics(d2, b2);
  };
  return function(d2, b2) {
    extendStatics(d2, b2);
    function __() {
      this.constructor = d2;
    }
    d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
  };
}();
var __decorate163 = function(decorators, target, key, desc) {
  var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2;
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
    r2 = Reflect.decorate(decorators, target, key, desc);
  else
    for (var i2 = decorators.length - 1; i2 >= 0; i2--)
      if (d2 = decorators[i2])
        r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2;
  return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2;
};
var __read27 = function(o2, n2) {
  var m2 = typeof Symbol === "function" && o2[Symbol.iterator];
  if (!m2)
    return o2;
  var i2 = m2.call(o2), r2, ar = [], e2;
  try {
    while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done)
      ar.push(r2.value);
  } catch (error) {
    e2 = { error };
  } finally {
    try {
      if (r2 && !r2.done && (m2 = i2["return"]))
        m2.call(i2);
    } finally {
      if (e2)
        throw e2.error;
    }
  }
  return ar;
};
var ImmutableService = (
  /** @class */
  function(_super) {
    __extends176(ImmutableService2, _super);
    function ImmutableService2() {
      return _super !== null && _super.apply(this, arguments) || this;
    }
    ImmutableService2.prototype.postConstruct = function() {
      if (this.rowModel.getType() === "clientSide") {
        this.clientSideRowModel = this.rowModel;
      }
    };
    ImmutableService2.prototype.isActive = function() {
      var getRowIdProvided = this.gridOptionsService.exists("getRowId");
      var immutableData = this.gridOptionsService.is("immutableData");
      var resetRowDataOnUpdate = this.gridOptionsService.is("resetRowDataOnUpdate");
      if (resetRowDataOnUpdate) {
        return false;
      }
      return getRowIdProvided || immutableData;
    };
    ImmutableService2.prototype.setRowData = function(rowData) {
      var transactionAndMap = this.createTransactionForRowData(rowData);
      if (!transactionAndMap) {
        return;
      }
      var _a47 = __read27(transactionAndMap, 2), transaction = _a47[0], orderIdMap = _a47[1];
      var nodeTransaction = this.clientSideRowModel.updateRowData(transaction, orderIdMap);
      if (nodeTransaction) {
        this.rowRenderer.refreshFullWidthRows(nodeTransaction.update);
      }
    };
    ImmutableService2.prototype.createTransactionForRowData = function(rowData) {
      if (_2.missing(this.clientSideRowModel)) {
        console.error("AG Grid: ImmutableService only works with ClientSideRowModel");
        return;
      }
      var getRowIdFunc = this.gridOptionsService.getRowIdFunc();
      if (getRowIdFunc == null) {
        console.error("AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!");
        return;
      }
      var transaction = {
        remove: [],
        update: [],
        add: []
      };
      var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();
      var suppressSortOrder = this.gridOptionsService.is("suppressMaintainUnsortedOrder");
      var orderMap = suppressSortOrder ? void 0 : {};
      if (_2.exists(rowData)) {
        rowData.forEach(function(data, index) {
          var id = getRowIdFunc({ data, level: 0 });
          var existingNode = existingNodesMap[id];
          if (orderMap) {
            orderMap[id] = index;
          }
          if (existingNode) {
            var dataHasChanged = existingNode.data !== data;
            if (dataHasChanged) {
              transaction.update.push(data);
            }
            existingNodesMap[id] = void 0;
          } else {
            transaction.add.push(data);
          }
        });
      }
      _2.iterateObject(existingNodesMap, function(id, rowNode) {
        if (rowNode) {
          transaction.remove.push(rowNode.data);
        }
      });
      return [transaction, orderMap];
    };
    __decorate163([
      Autowired("rowModel")
    ], ImmutableService2.prototype, "rowModel", void 0);
    __decorate163([
      Autowired("rowRenderer")
    ], ImmutableService2.prototype, "rowRenderer", void 0);
    __decorate163([
      PostConstruct
    ], ImmutableService2.prototype, "postConstruct", null);
    ImmutableService2 = __decorate163([
      Bean("immutableService")
    ], ImmutableService2);
    return ImmutableService2;
  }(BeanStub)
);

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/version.js
var VERSION = "29.0.0";

// node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModelModule.js
var ClientSideRowModelModule = {
  version: VERSION,
  moduleName: ModuleNames.ClientSideRowModelModule,
  beans: [FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],
  rowModels: { clientSide: ClientSideRowModel }
};

// projects/falcon-common/keyboardjs-helper/src/keyboard-manager-helper.ts
var import_keyboardjs = __toESM(require_keyboard());

// angular:jit:template:file:projects/falcon-common/intercept-focus/src/intercept-focus.component.html
var intercept_focus_component_default = '<input type="text" [class]="INTERCEPT_CLASS_NAME" #interceptFocusEl>\n';

// angular:jit:style:file:projects/falcon-common/intercept-focus/src/intercept-focus.component.scss
var intercept_focus_component_default2 = "/* projects/falcon-common/intercept-focus/src/intercept-focus.component.scss */\n:host {\n  position: absolute;\n  left: -10000px;\n  top: -10000px;\n}\n";

// projects/falcon-common/intercept-focus/src/intercept-focus.model.ts
var INTERCEPT_CLASS_NAME = "intercept-focus";

// projects/falcon-common/intercept-focus/src/intercept-focus.service.ts
var InterceptFocusService = class InterceptFocusService2 {
  constructor() {
    this.focusSource = new Subject();
  }
  get focusObservable$() {
    return this.focusSource.asObservable();
  }
  interceptFocus() {
    this.focusSource.next();
  }
};
InterceptFocusService = __decorate([
  Injectable({ providedIn: "root" })
], InterceptFocusService);

// projects/falcon-common/intercept-focus/src/intercept-focus.component.ts
var _a19;
var InterceptFocusComponent = (_a19 = class {
  constructor(interceptFocusService) {
    this.interceptFocusService = interceptFocusService;
    this.INTERCEPT_CLASS_NAME = INTERCEPT_CLASS_NAME;
    this.destroyRef = inject(DestroyRef);
  }
  ngOnInit() {
    this.interceptFocusService.focusObservable$.pipe(switchMap(() => this.focusAction()), takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  focusAction() {
    return defer(() => {
      this.interceptFocusEl.nativeElement.focus();
      return timer(0);
    }).pipe(map(() => null), finalize(() => this.interceptFocusEl.nativeElement.blur()));
  }
}, _a19.ctorParameters = () => [
  { type: InterceptFocusService }
], _a19.propDecorators = {
  interceptFocusEl: [{ type: ViewChild, args: ["interceptFocusEl", { static: true }] }]
}, _a19);
__decorate([
  GlobalCatchError
], InterceptFocusComponent.prototype, "focusAction", null);
InterceptFocusComponent = __decorate([
  Component({
    selector: "app-intercept-focus",
    template: intercept_focus_component_default,
    standalone: true,
    styles: [intercept_focus_component_default2]
  })
], InterceptFocusComponent);

// projects/falcon-common/keyboardjs-helper/src/keyboard-decorators.ts
var DEFAULT_IGNORED_TAGS = [
  { tagName: "a" },
  { tagName: "input" },
  { tagName: "button" },
  { tagName: "textarea" },
  { tagName: "mat-select" },
  { tagName: "mat-checkbox" },
  { tagName: "aim-icon" },
  { tagName: "aim-select" },
  { tagName: "aim-checkbox" }
];
function KeyEventFilter(...ignoredTags) {
  return (target, propertyKey, descriptor) => {
    if (descriptor === void 0) {
      descriptor = Object.getOwnPropertyDescriptor(target, propertyKey);
    }
    const originalMethod = descriptor.value;
    const isDefaultIgnore = isEmpty_default(ignoredTags);
    const ignoredTagInfos = isDefaultIgnore ? DEFAULT_IGNORED_TAGS : ignoredTags.map((tagInfo) => typeof tagInfo === "string" ? { tagName: tagInfo.toLowerCase() } : {
      tagName: tagInfo.tagName?.toLowerCase(),
      type: tagInfo.type?.toLowerCase(),
      classNames: tagInfo.classNames
    });
    descriptor.value = function(event, ...args) {
      const evt = !!event.keyCombo ? event.evt : event;
      const targetEl = evt?.target;
      if (targetEl?.tagName) {
        if (isIgnoredTarget(targetEl, ignoredTagInfos) && !targetEl.classList.contains(INTERCEPT_CLASS_NAME)) {
          return;
        }
      }
      return originalMethod.apply(this, [event, ...args]);
    };
  };
}
function isIgnoredTarget({ tagName, type: type2, classList }, ignoredTagInfos) {
  const targetTagName = tagName.toLowerCase();
  const targetType = type2?.toLowerCase();
  return ignoredTagInfos.some(({ tagName: ignoreTagName, classNames: ignoreClassNames, type: ignoreType }) => {
    if (ignoreTagName && ignoreTagName !== targetTagName) {
      return false;
    }
    if (ignoreType && ignoreType !== targetType) {
      return false;
    }
    if (ignoreClassNames && !ignoreClassNames.some((ignoreClassName) => classList.contains(ignoreClassName))) {
      return false;
    }
    return true;
  });
}

// projects/eimmo-common/dialogs/src/class-items-dialog/class-items-dialog.model.ts
var DeleteButtonStatus;
(function(DeleteButtonStatus2) {
  DeleteButtonStatus2[DeleteButtonStatus2["show"] = 0] = "show";
  DeleteButtonStatus2[DeleteButtonStatus2["hidden"] = 1] = "hidden";
  DeleteButtonStatus2[DeleteButtonStatus2["deleted"] = 2] = "deleted";
})(DeleteButtonStatus || (DeleteButtonStatus = {}));

// projects/eimmo-common/dialogs/src/class-items-dialog/class-items-dialog.service.ts
var ClassItemsDialogService = class ClassItemsDialogService2 {
  constructor() {
    this.isEdited = signal(false);
  }
};
ClassItemsDialogService = __decorate([
  Injectable()
], ClassItemsDialogService);

// projects/eimmo-common/assets/json-models/keypoint-default-format.json
var keypoint_default_format_default = {
  additionalOptions: {
    edges: [
      {
        color: "#000000",
        keyPointIds: ["0", "1"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["0", "2"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["1", "3"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["2", "4"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["3", "5"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["4", "6"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["5", "7"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["7", "9"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["6", "8"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["8", "10"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["11", "13"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["13", "15"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["12", "14"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["14", "16"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["11", "12"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["5", "6"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["5", "11"],
        opacity: 0.9,
        strokeWidth: 1
      },
      {
        color: "#000000",
        keyPointIds: ["6", "12"],
        opacity: 0.9,
        strokeWidth: 1
      }
    ]
  },
  guideImageUrl: "https://cocodataset.org/images/keypoints-splash.png",
  minBoxHeight: {
    type: "pixel",
    value: 1
  },
  minBoxWidth: {
    type: "pixel",
    value: 1
  },
  pointLabels: [
    {
      color: null,
      id: "0",
      name: "nose",
      optional: false
    },
    {
      color: null,
      id: "1",
      name: "left_eye",
      optional: false
    },
    {
      color: null,
      id: "2",
      name: "right_eye",
      optional: false
    },
    {
      color: null,
      id: "3",
      name: "left_ear",
      optional: false
    },
    {
      color: null,
      id: "4",
      name: "right_ear",
      optional: false
    },
    {
      color: null,
      id: "5",
      name: "left_shoulder",
      optional: false
    },
    {
      color: null,
      id: "6",
      name: "right_shoulder",
      optional: false
    },
    {
      color: null,
      id: "7",
      name: "left_elbow",
      optional: false
    },
    {
      color: null,
      id: "8",
      name: "right_elbow",
      optional: false
    },
    {
      color: null,
      id: "9",
      name: "left_wrist",
      optional: false
    },
    {
      color: null,
      id: "10",
      name: "right_wrist",
      optional: false
    },
    {
      color: null,
      id: "11",
      name: "left_hip",
      optional: false
    },
    {
      color: null,
      id: "12",
      name: "right_hip",
      optional: false
    },
    {
      color: null,
      id: "13",
      name: "left_knee",
      optional: false
    },
    {
      color: null,
      id: "14",
      name: "right_knee",
      optional: false
    },
    {
      color: null,
      id: "15",
      name: "left_ankle",
      optional: false
    },
    {
      color: null,
      id: "16",
      name: "right_ankle",
      optional: false
    }
  ],
  pointValidationEnabled: false,
  validationRuleType: "all_pass_needed"
};

// projects/eimmo-common/dialogs/src/class-items-dialog/class-items.util.ts
function xor(a2, b2) {
  return Number(a2) + Number(b2) === 1;
}
function validateHex(hex) {
  const hexRegex = /^#([a-f0-9]{3}|([a-f0-9]{2}){3})$/i;
  return !isNil_default(hex) && hexRegex.test(hex);
}
function checkDuplicateValues(valueArray) {
  const filledValues = valueArray.filter((value) => !!value);
  return !isEqual_default(filledValues.length, uniq_default(filledValues).length);
}
function getNewClassItemId() {
  return `id-${Date.now()}-${uniqueId_default()}`;
}
function makeEmptyClassItemRowData() {
  return {
    id: "",
    semantic: true,
    color: "",
    groupName: "",
    value: "",
    name: "",
    spec: {}
  };
}
function isKeypointType(annotationType) {
  return [AnnotationType.keypoint, AnnotationType.keypointOD].includes(annotationType);
}
function getKeypointDefaultSpec() {
  return keypoint_default_format_default;
}

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/color-picker-renderer/color-picker-renderer.component.html
var color_picker_renderer_component_default = `<div matRipple cdkOverlayOrigin
     #colorButton="cdkOverlayOrigin"
     class="color-picker"
     [class.color-picker--disabled]="!editable"
     [matRippleDisabled]="!editable"
     (click)="onClickColorPicker()">
  <div class="color-picker__color" [style.background]="pickedColor"></div>
</div>
<ng-template cdkConnectedOverlay
             [cdkConnectedOverlayPositions]="positions"
             [cdkConnectedOverlayOrigin]="colorButton"
             [cdkConnectedOverlayOpen]="isColorPickerOpened"
             (overlayOutsideClick)="onCloseColorPicker()"
             (detach)="onCloseColorPicker()">
  <aimmo-color-picker [color]="pickedColor"
                      [confirmLabel]="'@\uD655\uC778_L@' | translate"
                      [closeTooltip]="'@\uB2EB\uAE30_T@' | translate"
                      (closed)="onSelectColor($event)"/>
</ng-template>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/color-picker-renderer/color-picker-renderer.component.scss
var color_picker_renderer_component_default2 = "/* projects/eimmo-common/dialogs/src/class-items-dialog/color-picker-renderer/color-picker-renderer.component.scss */\n:host {\n  height: 100%;\n}\n.color-picker {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: center;\n  align-content: stretch;\n  align-items: stretch;\n  max-height: 100%;\n  margin: 15px 0;\n}\n.color-picker:hover {\n  cursor: pointer;\n}\n.color-picker--disabled:hover {\n  cursor: default;\n}\n.color-picker__color {\n  width: 8px;\n  height: 8px;\n}\n.color-picker__input {\n  border: none;\n  width: 100%;\n  height: 100%;\n  background: transparent;\n}\n.color-picker__input:hover,\n.color-picker__input:focus,\n.color-picker__input:active {\n  border: none;\n  outline: none;\n}\n.color-picker__input:focus:read-write {\n  background-color: #ffffff;\n}\n";

// angular:jit:template:file:projects/aimmo-components/color-picker/src/aimmo-color-picker.component.html
var aimmo_color_picker_component_default = '<saturation-component class="aimmo-color-picker__saturation" [hue]="control.hue"\n                      [(color)]="control.value"></saturation-component>\n<hue-component class="aimmo-color-picker__hue" [style.background-color]="control.hue.toHexString()"\n               [(hue)]="control.hue" [(color)]="control.value"></hue-component>\n<div class="aimmo-color-picker__hex-container">\n  <span class="aimmo-color-picker__label">Hex</span>\n  <hex-input-component class="aimmo-color-picker__hex" [(color)]="control.value"\n                       [(hue)]="control.hue"></hex-input-component>\n</div>\n<div class="aimmo-color-picker__label-wrapper">\n  <span class="aimmo-color-picker__label">R</span>\n  <span class="aimmo-color-picker__label">G</span>\n  <span class="aimmo-color-picker__label">B</span>\n  <rgba-input-component class="aimmo-color-picker__rgb" [alpha]="false" [(color)]="control.value"\n                        [(hue)]="control.hue"></rgba-input-component>\n</div>\n<button aim-button buttonTheme="outline" class="aimmo-color-picker__confirm"\n        (click)="onConfirm()">{{confirmLabel}}</button>\n';

// angular:jit:style:file:projects/aimmo-components/color-picker/src/aimmo-color-picker.component.scss
var aimmo_color_picker_component_default2 = '/* projects/aimmo-components/color-picker/src/aimmo-color-picker.component.scss */\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  justify-content: center;\n  align-content: stretch;\n  align-items: stretch;\n  max-width: 100%;\n  width: 292px;\n  background-color: #222222;\n  box-sizing: border-box;\n  border-radius: 4px;\n  pointer-events: auto;\n  border: 1px solid rgba(0, 0, 0, 0.35);\n  padding: 16px;\n}\n:host > *:not(:last-child) {\n  margin-bottom: 16px;\n}\n.aimmo-color-picker__saturation {\n  flex-basis: 160px;\n  border-radius: 4px;\n}\n.aimmo-color-picker__saturation ::ng-deep .pointer {\n  border: 2px solid #ffffff;\n  width: 16px;\n  height: 16px;\n  margin: -8px 0 0 -8px;\n}\n.aimmo-color-picker__hue {\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-sizing: border-box;\n  border-radius: 4px;\n  background-color: transparent;\n  height: 6px;\n}\n.aimmo-color-picker__hue ::ng-deep .pointer {\n  width: 8px;\n  height: 8px;\n  top: -2px;\n  margin-left: -2px;\n  border: 1px solid #ffffff;\n  background-color: inherit;\n}\n.aimmo-color-picker__label {\n  display: inline-block;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n  color: #999999;\n  min-width: 40px;\n}\n.aimmo-color-picker__label-wrapper {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  flex-wrap: wrap;\n}\n.aimmo-color-picker__label-wrapper > *:not(:last-child) {\n  margin-right: 16px;\n}\n.aimmo-color-picker__hex {\n  flex-grow: 1;\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 14px;\n  line-height: 18px;\n}\n.aimmo-color-picker__hex-container {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  justify-content: center;\n  align-content: stretch;\n  align-items: stretch;\n  max-width: 100%;\n}\n.aimmo-color-picker__hex-container > *:not(:last-child) {\n  margin-bottom: 8px;\n}\n.aimmo-color-picker__hex ::ng-deep .column {\n  padding: 0;\n  position: relative;\n}\n.aimmo-color-picker__hex ::ng-deep .column input {\n  height: 32px;\n  margin: 0;\n  border: none;\n  box-sizing: border-box;\n  border-radius: 4px;\n  text-align: left;\n  padding-left: 26px;\n  background-color: #333333;\n  color: #dfdfdf;\n}\n.aimmo-color-picker__hex ::ng-deep .column:after {\n  content: "#";\n  position: absolute;\n  top: 7px;\n  left: 16px;\n  color: #dfdfdf;\n}\n.aimmo-color-picker__rgb {\n  min-width: 168px;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  margin-top: 8px;\n}\n.aimmo-color-picker__rgb ::ng-deep .column {\n  margin-right: 16px;\n  padding: 0;\n}\n.aimmo-color-picker__rgb ::ng-deep .column input {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 12px;\n  line-height: 14px;\n  background-color: #333333;\n  width: 40px;\n  height: 20px;\n  margin: 0;\n  border: none;\n  box-sizing: border-box;\n  border-radius: 4px;\n  color: #dfdfdf;\n}\n.aimmo-color-picker__input-wrapper {\n  display: flex;\n  margin: 6px 15px 0;\n}\n.aimmo-color-picker__confirm {\n  align-self: flex-end;\n}\n';

// node_modules/@iplab/ngx-color-picker/fesm2020/iplab-ngx-color-picker.mjs
var BaseColor = class {
};
var Cmyk = class extends BaseColor {
  constructor(cyan, magenta, yellow, black) {
    super();
    this.cyan = cyan;
    this.magenta = magenta;
    this.yellow = yellow;
    this.black = black;
  }
  toString() {
    return `cmyk(${this.getCyan()}%, ${this.getMagenta()}%, ${this.getYellow()}%, ${this.getBlack()}%)`;
  }
  getCyan() {
    return Math.round(this.cyan);
  }
  getMagenta() {
    return Math.round(this.magenta);
  }
  getYellow() {
    return Math.round(this.yellow);
  }
  getBlack() {
    return Math.round(this.black);
  }
};
var Hsla = class extends BaseColor {
  constructor(hue, saturation, lightness, alpha) {
    super();
    this.hue = hue;
    this.saturation = saturation;
    this.lightness = lightness;
    this.alpha = alpha;
  }
  toString(showAlphaChannel = true) {
    return showAlphaChannel ? `hsla(${this.getHue()}, ${this.getSaturation()}%, ${this.getLightness()}%, ${this.getAlpha()})` : `hsl(${this.getHue()}, ${this.getSaturation()}%, ${this.getLightness()}%)`;
  }
  getHue() {
    return Math.round(this.hue);
  }
  getSaturation() {
    return Math.round(this.saturation);
  }
  getLightness() {
    return Math.round(this.lightness);
  }
  getAlpha() {
    return Math.round(this.alpha * 100) / 100;
  }
};
var Hsva = class extends BaseColor {
  constructor(hue, saturation, value, alpha) {
    super();
    this.hue = hue;
    this.saturation = saturation;
    this.value = value;
    this.alpha = alpha;
  }
  toString(showAlphaChannel = true) {
    return showAlphaChannel ? `hsva(${this.getHue()}, ${this.getSaturation()}%, ${this.getValue()}%, ${this.getAlpha()})` : `hsv(${this.getHue()}, ${this.getSaturation()}%, ${this.getValue()}%)`;
  }
  getHue() {
    return Math.round(this.hue);
  }
  getSaturation() {
    return Math.round(this.saturation);
  }
  getValue() {
    return Math.round(this.value);
  }
  getAlpha() {
    return Math.round(this.alpha * 100) / 100;
  }
};
var Rgba = class extends BaseColor {
  constructor(red, green, blue, alpha) {
    super();
    this.red = red;
    this.green = green;
    this.blue = blue;
    this.alpha = alpha;
  }
  toString(showAlphaChannel = true) {
    return showAlphaChannel ? `rgba(${this.getRed()}, ${this.getGreen()}, ${this.getBlue()}, ${this.getAlpha()})` : `rgb(${this.getRed()}, ${this.getGreen()}, ${this.getBlue()})`;
  }
  getRed() {
    return Math.round(this.red);
  }
  getGreen() {
    return Math.round(this.green);
  }
  getBlue() {
    return Math.round(this.blue);
  }
  getAlpha() {
    return Math.round(this.alpha * 100) / 100;
  }
};
var ColorsTable = class {
};
ColorsTable.transparent = new Rgba(0, 0, 0, 0);
ColorsTable.aliceblue = new Rgba(240, 248, 255, 1);
ColorsTable.antiquewhite = new Rgba(250, 235, 215, 1);
ColorsTable.aqua = new Rgba(0, 255, 255, 1);
ColorsTable.aquamarine = new Rgba(127, 255, 212, 1);
ColorsTable.azure = new Rgba(240, 255, 255, 1);
ColorsTable.beige = new Rgba(245, 245, 220, 1);
ColorsTable.bisque = new Rgba(255, 228, 196, 1);
ColorsTable.black = new Rgba(0, 0, 0, 1);
ColorsTable.blanchedalmond = new Rgba(255, 235, 205, 1);
ColorsTable.blue = new Rgba(0, 0, 255, 1);
ColorsTable.blueviolet = new Rgba(138, 43, 226, 1);
ColorsTable.brown = new Rgba(165, 42, 42, 1);
ColorsTable.burlywood = new Rgba(222, 184, 135, 1);
ColorsTable.cadetblue = new Rgba(95, 158, 160, 1);
ColorsTable.chartreuse = new Rgba(127, 255, 0, 1);
ColorsTable.chocolate = new Rgba(210, 105, 30, 1);
ColorsTable.coral = new Rgba(255, 127, 80, 1);
ColorsTable.cornflowerblue = new Rgba(100, 149, 237, 1);
ColorsTable.cornsilk = new Rgba(255, 248, 220, 1);
ColorsTable.crimson = new Rgba(220, 20, 60, 1);
ColorsTable.cyan = new Rgba(0, 255, 255, 1);
ColorsTable.darkblue = new Rgba(0, 0, 139, 1);
ColorsTable.darkcyan = new Rgba(0, 139, 139, 1);
ColorsTable.darkgoldenrod = new Rgba(184, 134, 11, 1);
ColorsTable.darkgray = new Rgba(169, 169, 169, 1);
ColorsTable.darkgreen = new Rgba(0, 100, 0, 1);
ColorsTable.darkgrey = ColorsTable.darkgray;
ColorsTable.darkkhaki = new Rgba(189, 183, 107, 1);
ColorsTable.darkmagenta = new Rgba(139, 0, 139, 1);
ColorsTable.darkolivegreen = new Rgba(85, 107, 47, 1);
ColorsTable.darkorange = new Rgba(255, 140, 0, 1);
ColorsTable.darkorchid = new Rgba(153, 50, 204, 1);
ColorsTable.darkred = new Rgba(139, 0, 0, 1);
ColorsTable.darksalmon = new Rgba(233, 150, 122, 1);
ColorsTable.darkseagreen = new Rgba(143, 188, 143, 1);
ColorsTable.darkslateblue = new Rgba(72, 61, 139, 1);
ColorsTable.darkslategray = new Rgba(47, 79, 79, 1);
ColorsTable.darkslategrey = ColorsTable.darkslategray;
ColorsTable.darkturquoise = new Rgba(0, 206, 209, 1);
ColorsTable.darkviolet = new Rgba(148, 0, 211, 1);
ColorsTable.deeppink = new Rgba(255, 20, 147, 1);
ColorsTable.deepskyblue = new Rgba(0, 191, 255, 1);
ColorsTable.dimgray = new Rgba(105, 105, 105, 1);
ColorsTable.dimgrey = ColorsTable.dimgray;
ColorsTable.dodgerblue = new Rgba(30, 144, 255, 1);
ColorsTable.firebrick = new Rgba(178, 34, 34, 1);
ColorsTable.floralwhite = new Rgba(255, 250, 240, 1);
ColorsTable.forestgreen = new Rgba(34, 139, 34, 1);
ColorsTable.fuchsia = new Rgba(255, 0, 255, 1);
ColorsTable.gainsboro = new Rgba(220, 220, 220, 1);
ColorsTable.ghostwhite = new Rgba(248, 248, 255, 1);
ColorsTable.gold = new Rgba(255, 215, 0, 1);
ColorsTable.goldenrod = new Rgba(218, 165, 32, 1);
ColorsTable.gray = new Rgba(128, 128, 128, 1);
ColorsTable.grey = ColorsTable.gray;
ColorsTable.green = new Rgba(0, 128, 0, 1);
ColorsTable.greenyellow = new Rgba(173, 255, 47, 1);
ColorsTable.honeydew = new Rgba(240, 255, 240, 1);
ColorsTable.hotpink = new Rgba(255, 105, 180, 1);
ColorsTable.indianred = new Rgba(205, 92, 92, 1);
ColorsTable.indigo = new Rgba(75, 0, 130, 1);
ColorsTable.ivory = new Rgba(255, 255, 240, 1);
ColorsTable.khaki = new Rgba(240, 230, 140, 1);
ColorsTable.lavender = new Rgba(230, 230, 250, 1);
ColorsTable.lavenderblush = new Rgba(255, 240, 245, 1);
ColorsTable.lawngreen = new Rgba(124, 252, 0, 1);
ColorsTable.lemonchiffon = new Rgba(255, 250, 205, 1);
ColorsTable.lightblue = new Rgba(173, 216, 230, 1);
ColorsTable.lightcoral = new Rgba(240, 128, 128, 1);
ColorsTable.lightcyan = new Rgba(224, 255, 255, 1);
ColorsTable.lightgoldenrodyellow = new Rgba(250, 250, 210, 1);
ColorsTable.lightgray = new Rgba(211, 211, 211, 1);
ColorsTable.lightgreen = new Rgba(144, 238, 144, 1);
ColorsTable.lightgrey = ColorsTable.lightgray;
ColorsTable.lightpink = new Rgba(255, 182, 193, 1);
ColorsTable.lightsalmon = new Rgba(255, 160, 122, 1);
ColorsTable.lightseagreen = new Rgba(32, 178, 170, 1);
ColorsTable.lightskyblue = new Rgba(135, 206, 250, 1);
ColorsTable.lightslategray = new Rgba(119, 136, 153, 1);
ColorsTable.lightslategrey = ColorsTable.lightslategray;
ColorsTable.lightsteelblue = new Rgba(176, 196, 222, 1);
ColorsTable.lightyellow = new Rgba(255, 255, 224, 1);
ColorsTable.lime = new Rgba(0, 255, 0, 1);
ColorsTable.limegreen = new Rgba(50, 205, 50, 1);
ColorsTable.linen = new Rgba(250, 240, 230, 1);
ColorsTable.magenta = new Rgba(255, 0, 255, 1);
ColorsTable.maroon = new Rgba(128, 0, 0, 1);
ColorsTable.mediumaquamarine = new Rgba(102, 205, 170, 1);
ColorsTable.mediumblue = new Rgba(0, 0, 205, 1);
ColorsTable.mediumorchid = new Rgba(186, 85, 211, 1);
ColorsTable.mediumpurple = new Rgba(147, 112, 219, 1);
ColorsTable.mediumseagreen = new Rgba(60, 179, 113, 1);
ColorsTable.mediumslateblue = new Rgba(123, 104, 238, 1);
ColorsTable.mediumspringgreen = new Rgba(0, 250, 154, 1);
ColorsTable.mediumturquoise = new Rgba(72, 209, 204, 1);
ColorsTable.mediumvioletred = new Rgba(199, 21, 133, 1);
ColorsTable.midnightblue = new Rgba(25, 25, 112, 1);
ColorsTable.mintcream = new Rgba(245, 255, 250, 1);
ColorsTable.mistyrose = new Rgba(255, 228, 225, 1);
ColorsTable.moccasin = new Rgba(255, 228, 181, 1);
ColorsTable.navajowhite = new Rgba(255, 222, 173, 1);
ColorsTable.navy = new Rgba(0, 0, 128, 1);
ColorsTable.oldlace = new Rgba(253, 245, 230, 1);
ColorsTable.olive = new Rgba(128, 128, 0, 1);
ColorsTable.olivedrab = new Rgba(107, 142, 35, 1);
ColorsTable.orange = new Rgba(255, 165, 0, 1);
ColorsTable.orangered = new Rgba(255, 69, 0, 1);
ColorsTable.orchid = new Rgba(218, 112, 214, 1);
ColorsTable.palegoldenrod = new Rgba(238, 232, 170, 1);
ColorsTable.palegreen = new Rgba(152, 251, 152, 1);
ColorsTable.paleturquoise = new Rgba(175, 238, 238, 1);
ColorsTable.palevioletred = new Rgba(219, 112, 147, 1);
ColorsTable.papayawhip = new Rgba(255, 239, 213, 1);
ColorsTable.peachpuff = new Rgba(255, 218, 185, 1);
ColorsTable.peru = new Rgba(205, 133, 63, 1);
ColorsTable.pink = new Rgba(255, 192, 203, 1);
ColorsTable.plum = new Rgba(221, 160, 221, 1);
ColorsTable.powderblue = new Rgba(176, 224, 230, 1);
ColorsTable.purple = new Rgba(128, 0, 128, 1);
ColorsTable.red = new Rgba(255, 0, 0, 1);
ColorsTable.rosybrown = new Rgba(188, 143, 143, 1);
ColorsTable.royalblue = new Rgba(65, 105, 225, 1);
ColorsTable.saddlebrown = new Rgba(139, 69, 19, 1);
ColorsTable.salmon = new Rgba(250, 128, 114, 1);
ColorsTable.sandybrown = new Rgba(244, 164, 96, 1);
ColorsTable.seagreen = new Rgba(46, 139, 87, 1);
ColorsTable.seashell = new Rgba(255, 245, 238, 1);
ColorsTable.sienna = new Rgba(160, 82, 45, 1);
ColorsTable.silver = new Rgba(192, 192, 192, 1);
ColorsTable.skyblue = new Rgba(135, 206, 235, 1);
ColorsTable.slateblue = new Rgba(106, 90, 205, 1);
ColorsTable.slategray = new Rgba(112, 128, 144, 1);
ColorsTable.slategrey = ColorsTable.slategray;
ColorsTable.snow = new Rgba(255, 250, 250, 1);
ColorsTable.springgreen = new Rgba(0, 255, 127, 1);
ColorsTable.steelblue = new Rgba(70, 130, 180, 1);
ColorsTable.tan = new Rgba(210, 180, 140, 1);
ColorsTable.teal = new Rgba(0, 128, 128, 1);
ColorsTable.thistle = new Rgba(216, 191, 216, 1);
ColorsTable.tomato = new Rgba(255, 99, 71, 1);
ColorsTable.turquoise = new Rgba(64, 224, 208, 1);
ColorsTable.violet = new Rgba(238, 130, 238, 1);
ColorsTable.wheat = new Rgba(245, 222, 179, 1);
ColorsTable.white = new Rgba(255, 255, 255, 1);
ColorsTable.whitesmoke = new Rgba(245, 245, 245, 1);
ColorsTable.yellow = new Rgba(255, 255, 0, 1);
ColorsTable.yellowgreen = new Rgba(154, 205, 50, 1);
var Color = class _Color {
  constructor(colorString) {
    this.hsva = new Hsva(0, 1, 1, 1);
    this.rgba = new Rgba(255, 0, 0, 1);
    if (colorString) {
      this.stringToColor(colorString);
    }
  }
  static from(color) {
    if (typeof color === "string") {
      return new _Color(color);
    } else if (color instanceof _Color) {
      return color.clone();
    } else if (color instanceof Rgba) {
      return new _Color().setRgba(color.red, color.green, color.blue, color.alpha);
    } else if (color instanceof Hsva) {
      return new _Color().setHsva(color.hue, color.saturation, color.value, color.alpha);
    } else if (color instanceof Hsla) {
      return new _Color().setHsla(color.hue, color.saturation, color.lightness, color.alpha);
    }
    return null;
  }
  /**
   * make from existing color new color object
   */
  clone() {
    return _Color.from(this.getRgba());
  }
  /**
   * define Color from hex, rgb, rgba, hsl, hsla or cmyk string
   */
  setFromString(color) {
    return this.stringToColor(color);
  }
  /**
   * define Color from HSV values
   */
  setHsva(hue = null, saturation = 100, brightness = 100, alpha = 1) {
    if (hue != null) {
      this.hsva.hue = hue;
    }
    if (saturation != null) {
      this.hsva.saturation = saturation;
    }
    if (brightness != null) {
      this.hsva.value = brightness;
    }
    if (alpha != null) {
      alpha = alpha > 1 ? 1 : alpha < 0 ? 0 : alpha;
      this.hsva.alpha = alpha;
    }
    this.rgba = this.hsvaToRgba(this.hsva);
    return this;
  }
  /**
   * define Color from RGBa
   */
  setRgba(red = null, green = null, blue = null, alpha = 1) {
    if (red != null) {
      this.rgba.red = red;
    }
    if (green != null) {
      this.rgba.green = green;
    }
    if (blue != null) {
      this.rgba.blue = blue;
    }
    if (alpha != null) {
      alpha = alpha > 1 ? 1 : alpha < 0 ? 0 : alpha;
      this.rgba.alpha = alpha;
    }
    this.hsva = this.rgbaToHsva(this.rgba);
    return this;
  }
  /**
   * define Color from HSLa
   */
  setHsla(hue, saturation, lightness, alpha = 1) {
    if (alpha != null) {
      alpha = alpha > 1 ? 1 : alpha < 0 ? 0 : alpha;
      this.rgba.alpha = alpha;
    }
    const hsla = new Hsla(hue, saturation, lightness, alpha);
    this.rgba = this.hslaToRgba(hsla);
    this.hsva = this.rgbaToHsva(this.rgba);
    return this;
  }
  /**
   * return hexadecimal value formatted as '#341d2a' or '#341d2aFF' if alhpa channel is enabled
   */
  toHexString(alpha = false) {
    let hex = "#" + (1 << 24 | this.rgba.getRed() << 16 | this.rgba.getGreen() << 8 | this.rgba.getBlue()).toString(16).substr(1);
    if (alpha) {
      hex += (1 << 8 | Math.round(this.rgba.alpha * 255)).toString(16).substr(1);
    }
    return hex.toUpperCase();
  }
  /**
   * return rgba string formatted as rgba(52, 29, 42, 1)
   */
  toRgbaString() {
    return this.rgba.toString();
  }
  /**
   * return rgb string formatted as rgb(52, 29, 42)
   */
  toRgbString() {
    return this.rgba.toString(false);
  }
  /**
   * return hsla string formatted as hsla(327, 29%, 16%, 1)
   */
  toHslaString() {
    return this.getHsla().toString();
  }
  /**
   * return hsl string formatted as hsl(327, 29%, 16%)
   */
  toHslString() {
    return this.getHsla().toString(false);
  }
  /**
   * return hsva string formatted as hsva(327, 29%, 16%, 100%)
   */
  toHsvaString() {
    return this.hsva.toString();
  }
  /**
   * return hsv string formatted as hsv(327, 29%, 16%)
   */
  toHsvString() {
    return this.hsva.toString(false);
  }
  /**
   * return Cmyk string formatted as cmyk(100%, 100%, 100%, 100%)
   */
  toCmykString() {
    return this.getCmyk().toString();
  }
  getHsva() {
    return new Hsva(this.hsva.hue, this.hsva.saturation, this.hsva.value, this.hsva.alpha);
  }
  getRgba() {
    return new Rgba(this.rgba.red, this.rgba.green, this.rgba.blue, this.rgba.alpha);
  }
  getHsla() {
    return this.rgbaToHsla(this.rgba);
  }
  getCmyk() {
    return this.rgbaToCmyk(this.rgba);
  }
  hsvaToHsla(color) {
    const hue = color.hue;
    const s2 = color.saturation / 100;
    const v2 = color.value / 100;
    const lightness = (2 - s2) * color.value / 2;
    const saturation = s2 * v2 / (lightness <= 1 ? lightness : 2 - lightness) || 0;
    return new Hsla(hue, lightness * 100, saturation * 100, color.alpha);
  }
  hslaToHsva(color) {
    const hue = color.hue;
    const l2 = color.lightness / 100 * 2;
    const s2 = color.saturation / 100 * (l2 <= 1 ? l2 : 2 - l2);
    const value = (l2 + s2) / 2;
    const saturation = 2 * s2 / (l2 + s2) || 0;
    return new Hsva(hue, saturation, value, color.alpha);
  }
  rgbaToHsva(color) {
    const red = color.red / 255;
    const green = color.green / 255;
    const blue = color.blue / 255;
    const alpha = color.alpha;
    const Cmax = Math.max(red, green, blue);
    const Cmin = Math.min(red, green, blue);
    const delta = Cmax - Cmin;
    let hue = 0;
    let saturation = Cmax === 0 ? 0 : delta / Cmax;
    let brightness = Cmax;
    if (Cmax !== Cmin) {
      switch (Cmax) {
        case red:
          hue = (green - blue) / delta + (green < blue ? 6 : 0);
          break;
        case green:
          hue = 2 + (blue - red) / delta;
          break;
        case blue:
          hue = 4 + (red - green) / delta;
          break;
      }
      hue /= 6;
    }
    hue = hue * 360;
    saturation = saturation * 100;
    brightness = brightness * 100;
    return new Hsva(hue, saturation, brightness, alpha);
  }
  hsvaToRgba(color) {
    let red = 1;
    let green = 0;
    let blue = 0;
    const saturation = color.saturation / 100;
    const brightness = color.value / 100;
    const alpha = color.alpha;
    const hex = color.hue / 60;
    const primary = Math.floor(hex);
    const secoundary = hex - primary;
    const a2 = (1 - saturation) * brightness;
    const b2 = (1 - saturation * secoundary) * brightness;
    const c2 = (1 - saturation * (1 - secoundary)) * brightness;
    switch (primary) {
      case 6:
      case 0:
        red = brightness;
        green = c2;
        blue = a2;
        break;
      case 1:
        red = b2;
        green = brightness;
        blue = a2;
        break;
      case 2:
        red = a2;
        green = brightness;
        blue = c2;
        break;
      case 3:
        red = a2;
        green = b2;
        blue = brightness;
        break;
      case 4:
        red = c2;
        green = a2;
        blue = brightness;
        break;
      case 5:
        red = brightness;
        green = a2;
        blue = b2;
        break;
    }
    red = red * 255;
    green = green * 255;
    blue = blue * 255;
    return new Rgba(red, green, blue, alpha);
  }
  rgbaToHsla(color) {
    const red = color.red / 255;
    const green = color.green / 255;
    const blue = color.blue / 255;
    const alpha = color.alpha;
    const max = Math.max(red, green, blue);
    const min = Math.min(red, green, blue);
    let hue = 0;
    let saturation = 0;
    let luminance = (max + min) / 2;
    const delta = max - min;
    if (max !== min) {
      saturation = luminance > 0.5 ? delta / (2 - max - min) : delta / (max + min);
      switch (max) {
        case red:
          hue = (green - blue) / delta + (green < blue ? 6 : 0);
          break;
        case green:
          hue = (blue - red) / delta + 2;
          break;
        case blue:
          hue = (red - green) / delta + 4;
          break;
      }
      hue /= 6;
    }
    hue = hue * 360;
    saturation = saturation * 100;
    luminance = luminance * 100;
    return new Hsla(hue, saturation, luminance, alpha);
  }
  /**
   * convert rgb color from HSLa
   *
   * hue = 0 => 360
   * saturation = 0 => 1
   * lightness = 0 => 1
   */
  hslaToRgba(color) {
    const hue = color.hue / 360;
    const saturation = color.saturation / 100;
    const lightness = color.lightness / 100;
    const alpha = color.alpha;
    let red = lightness;
    let green = lightness;
    let blue = lightness;
    if (saturation !== 0) {
      const q2 = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;
      const p2 = 2 * lightness - q2;
      red = this.hueToRgb(p2, q2, hue + 1 / 3);
      green = this.hueToRgb(p2, q2, hue);
      blue = this.hueToRgb(p2, q2, hue - 1 / 3);
    }
    red = red * 255;
    green = green * 255;
    blue = blue * 255;
    return new Rgba(red, green, blue, alpha);
  }
  hueToRgb(p2, q2, t2) {
    if (t2 < 0) {
      t2 += 1;
    }
    if (t2 > 1) {
      t2 -= 1;
    }
    if (t2 < 1 / 6) {
      return p2 + (q2 - p2) * 6 * t2;
    }
    if (t2 < 1 / 2) {
      return q2;
    }
    if (t2 < 2 / 3) {
      return p2 + (q2 - p2) * (2 / 3 - t2) * 6;
    }
    return p2;
  }
  /**
   * The Red, Green, Blue values are given in the range of 0..255,
   *
   * the red color(R) is calculated from the cyan(C) and black(K) colors,
   * the green color(G) is calculated from the magenta(M) and black(K) colors,
   * The blue color(B) is calculated from the yellow(Y) and black(K) colors.
   *
   * Below is the formula of CMYK to RGB convertion
   *
   * Red = 255 × 1 - min( (1 - Cyan ÷ 100) × (1 - Black) )
   * Green = 255 × 1 - min(1 - Magenta ÷ 100) × (1 - Black)
   * Blue = 255 × 1 - min(1 - Yellow ÷ 100) × (1 - Black)
   */
  cmykToRgba(color) {
    const black = color.black / 100;
    const cyan = color.cyan / 100;
    const magenta = color.magenta / 100;
    const yellow = color.yellow / 100;
    let red = Math.min(1, (1 - cyan) * (1 - black));
    let green = Math.min(1, (1 - magenta) * (1 - black));
    let blue = Math.min(1, (1 - yellow) * (1 - black));
    red = red * 255;
    green = green * 255;
    blue = blue * 255;
    return new Rgba(red, green, blue, 1);
  }
  /**
   * The max number of R, G, B values are 255, first of all, we divided them by 255 to become the number
   * of 0~1, this ratio will be used in the calculation.
   * Rc = R ÷ 255
   * Gc = G ÷ 255
   * Bc = B ÷ 255
   * The black key(K) color could be many result, when we assume a black key value,
   * the other three colors(cyan, magenta, yellow) can be calculated.
   * we can calculate it from the red, green and blue colors, the max number of black key should be :
   * K = 1 - min(Rc, Gc, Bc);
   *
   * or we can assume we run out of the black ink, need use the remaining other three color inks to finish the printing job.
   * K = 0;
   *
   * The cyan color(C) is calculated from the red and black colors:
   * C = (1 - Rc - K) ÷ (1 - K)
   *
   * The magenta color (M) is calculated from the green and black colors:
   * M = (1 - Gr - K) ÷ (1 - K)
   *
   * The yellow color(Y) is calculated from the blue and black colors:
   * Y = (1 - Bc - K) ÷ ( 1 - K)
   */
  rgbaToCmyk(color) {
    const red = color.red / 255;
    const green = color.green / 255;
    const blue = color.blue / 255;
    let cyan = 1 - red;
    let magenta = 1 - green;
    let yellow = 1 - blue;
    let black = Math.min(cyan, magenta, yellow);
    if (black === 1) {
      return new Cmyk(0, 0, 0, 1);
    }
    cyan = (cyan - black) / (1 - black);
    magenta = (magenta - black) / (1 - black);
    yellow = (yellow - black) / (1 - black);
    black = black * 100;
    cyan = cyan * 100;
    magenta = magenta * 100;
    yellow = yellow * 100;
    return new Cmyk(cyan, magenta, yellow, black);
  }
  roundNumber(n2) {
    return Math.round(n2 * 100) / 100;
  }
  stringToColor(colorString) {
    const str = colorString.replace(/ /g, "").toLowerCase();
    let rgba = ColorsTable[str] || null;
    if (str[0] === "#") {
      let hex = str.substr(1);
      const length = hex.length;
      let a2 = 1;
      let hexArray = [];
      if (length === 3) {
        hexArray = hex.split("").map((value) => value + value);
      } else if (length === 6) {
        hexArray = hex.match(/.{2}/g);
      } else if (length === 8) {
        const alpha = hex.substr(-2);
        hex = hex.substr(0, length - 2);
        a2 = this.roundNumber(parseInt(alpha || "FF", 16) / 255);
        hexArray = hex.match(/.{2}/g);
      }
      if (hexArray.length === 3) {
        rgba = new Rgba(parseInt(hexArray[0], 16), parseInt(hexArray[1], 16), parseInt(hexArray[2], 16), a2);
      }
    }
    const OpenParenthesis = str.indexOf("(");
    const CloseParenthesis = str.indexOf(")");
    if (OpenParenthesis !== -1 && CloseParenthesis + 1 === str.length) {
      const colorTypeName = str.substr(0, OpenParenthesis);
      const params = str.substr(OpenParenthesis + 1, CloseParenthesis - (OpenParenthesis + 1)).split(",");
      let alpha = 1;
      switch (colorTypeName) {
        case "rgba":
          alpha = parseFloat(params.pop());
        case "rgb":
          rgba = new Rgba(parseInt(params[0], 10), parseInt(params[1], 10), parseInt(params[2], 10), alpha);
          break;
        case "hsla":
          alpha = parseFloat(params.pop());
        case "hsl":
          const hsla = new Hsla(parseInt(params[0], 10), parseInt(params[1], 10), parseInt(params[2], 10), alpha);
          rgba = this.hslaToRgba(hsla);
          break;
        case "cmyk":
          const cmyk = new Cmyk(parseInt(params[0], 10), parseInt(params[1], 10), parseInt(params[2], 10), parseInt(params[3], 10));
          rgba = this.cmykToRgba(cmyk);
          break;
      }
    }
    if (rgba) {
      this.rgba = rgba;
      this.hsva = this.rgbaToHsva(rgba);
    }
    return this;
  }
};
var BaseComponent = class {
  constructor() {
    this.subscriptions = [];
    this.window = { pageXOffset: 0, pageYOffset: 0 };
    this.mouseup = new Subject();
    this.document = inject(DOCUMENT);
    this.elementRef = inject(ElementRef);
    this.window = document.defaultView;
    this.requestAnimationFrame = this.getRequestAnimationFrame();
    this.addEventListeners();
  }
  addEventListeners() {
    this.subscriptions.push(merge(fromEvent(this.elementRef.nativeElement, "touchstart", { passive: true }), fromEvent(this.elementRef.nativeElement, "mousedown")).subscribe((e2) => this.onEventChange(e2)));
  }
  onEventChange(event) {
    this.calculate(event);
    merge(fromEvent(this.document, "mouseup"), fromEvent(this.document, "touchend")).subscribe(() => this.mouseup.next());
    merge(fromEvent(this.document, "mousemove"), fromEvent(this.document, "touchmove", { passive: true })).pipe(takeUntil(this.mouseup)).subscribe((e2) => this.calculate(e2));
  }
  calculateCoordinates(event) {
    const { width: elWidth, height: elHeight, top: elTop, left: elLeft } = this.elementRef.nativeElement.getBoundingClientRect();
    const pageX = typeof event.pageX === "number" ? event.pageX : event.touches[0].pageX;
    const pageY = typeof event.pageY === "number" ? event.pageY : event.touches[0].pageY;
    const x2 = Math.max(0, Math.min(pageX - (elLeft + this.window.pageXOffset), elWidth));
    const y2 = Math.max(0, Math.min(pageY - (elTop + this.window.pageYOffset), elHeight));
    this.movePointer({ x: x2, y: y2, height: elHeight, width: elWidth });
  }
  calculate(event) {
    if (!event.type.includes("touch")) {
      event.preventDefault();
    }
    if (!this.requestAnimationFrame) {
      return this.calculateCoordinates(event);
    }
    this.requestAnimationFrame(() => this.calculateCoordinates(event));
  }
  getRequestAnimationFrame() {
    return this.window.requestAnimationFrame || this.window.webkitRequestAnimationFrame || this.window.mozRequestAnimationFrame || this.window.oRequestAnimationFrame || this.window.msRequestAnimationFrame;
  }
  ngOnDestroy() {
    this.mouseup.next();
    this.mouseup.complete();
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
};
BaseComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: BaseComponent, deps: [], target: FactoryTarget.Directive });
BaseComponent.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: BaseComponent, ngImport: core_exports });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: BaseComponent, decorators: [{
  type: Directive
}], ctorParameters: function() {
  return [];
} });
var SaturationComponent = class extends BaseComponent {
  constructor(renderer) {
    super();
    this.renderer = renderer;
    this.colorChange = new EventEmitter(false);
  }
  get backgroundColor() {
    return this.hue ? this.hue.toRgbaString() : "";
  }
  ngOnInit() {
    if (!this.hue) {
      this.hue = Color.from(this.color.getHsva());
    }
    this.renderer.setStyle(this.elementRef.nativeElement, "backgroundColor", this.backgroundColor);
  }
  /**
   * color can be changed through inputs
   * and then we need to move pointer
   */
  ngOnChanges(changes) {
    if (changes.color && changes.color.previousValue !== changes.color.currentValue) {
      const hsva = this.color.getHsva();
      this.changePointerPosition(hsva.saturation, hsva.value);
    }
  }
  movePointer({ x: x2, y: y2, height, width }) {
    const saturation = x2 * 100 / width;
    const bright = -(y2 * 100 / height) + 100;
    this.changePointerPosition(saturation, bright);
    const hsva = this.hue.getHsva();
    const color = this.color.getHsva();
    const newColor = new Color().setHsva(hsva.hue, saturation, bright, color.alpha);
    this.colorChange.emit(newColor);
  }
  changePointerPosition(x2, y2) {
    this.renderer.setStyle(this.pointer.nativeElement, "top", `${100 - y2}%`);
    this.renderer.setStyle(this.pointer.nativeElement, "left", `${x2}%`);
  }
};
SaturationComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: SaturationComponent, deps: [{ token: Renderer2 }], target: FactoryTarget.Component });
SaturationComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: SaturationComponent, selector: "saturation-component", inputs: { hue: "hue", color: "color" }, outputs: { colorChange: "colorChange" }, host: { properties: { "style.backgroundColor": "this.backgroundColor" } }, viewQueries: [{ propertyName: "pointer", first: true, predicate: ["pointer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: core_exports, template: '<div #pointer class="pointer"></div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;position:relative;overflow:hidden;height:50px;background-size:100% 100%;background-image:url(data:image/png;base64, )}.pointer{position:absolute;top:15%;left:90%;width:12px;height:12px;border-radius:50%;border:1px solid #fff;margin:-6px 0 0 -6px}\n"], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: SaturationComponent, decorators: [{
  type: Component,
  args: [{ selector: `saturation-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<div #pointer class="pointer"></div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;position:relative;overflow:hidden;height:50px;background-size:100% 100%;background-image:url(data:image/png;base64, )}.pointer{position:absolute;top:15%;left:90%;width:12px;height:12px;border-radius:50%;border:1px solid #fff;margin:-6px 0 0 -6px}\n"] }]
}], ctorParameters: function() {
  return [{ type: Renderer2 }];
}, propDecorators: { hue: [{
  type: Input
}], color: [{
  type: Input
}], colorChange: [{
  type: Output
}], pointer: [{
  type: ViewChild,
  args: ["pointer", { static: true }]
}], backgroundColor: [{
  type: HostBinding,
  args: ["style.backgroundColor"]
}] } });
var ColorPickerConfig = class {
  constructor() {
    this.indicatorTitle = "Copy color to clipboard";
    this.presetsTitle = "{0}. Long-click to show alternate shades.";
  }
};
ColorPickerConfig.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerConfig, deps: [], target: FactoryTarget.Injectable });
ColorPickerConfig.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerConfig });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerConfig, decorators: [{
  type: Injectable
}] });
var IndicatorComponent = class {
  constructor(pickerConfig, renderer, elementRef, document2) {
    this.pickerConfig = pickerConfig;
    this.renderer = renderer;
    this.elementRef = elementRef;
    this.document = document2;
    this.colorType = "rgba";
    this.subscriptions = [];
    this.subscriptions.push(fromEvent(this.elementRef.nativeElement, "click").subscribe(() => this.onClick()));
  }
  get title() {
    return this.pickerConfig ? this.pickerConfig.indicatorTitle : "";
  }
  get backgroundColor() {
    return this.color.toRgbaString();
  }
  onClick() {
    const input = this.renderer.createElement("input");
    this.renderer.setStyle(input, "position", "absolute");
    this.renderer.setStyle(input, "top", "-100%");
    this.renderer.setStyle(input, "left", "-100%");
    switch (this.colorType) {
      case "hsla":
        input.value = this.color.toHslaString();
        break;
      case "hex":
        input.value = this.color.toHexString(this.color.getRgba().alpha < 1);
        break;
      default:
        input.value = this.backgroundColor;
    }
    this.renderer.appendChild(this.elementRef.nativeElement, input);
    input.select();
    this.document.execCommand("copy");
    this.renderer.removeChild(this.elementRef.nativeElement, input);
  }
};
IndicatorComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: IndicatorComponent, deps: [{ token: ColorPickerConfig }, { token: Renderer2 }, { token: ElementRef }, { token: DOCUMENT }], target: FactoryTarget.Component });
IndicatorComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: IndicatorComponent, selector: "indicator-component", inputs: { color: "color", colorType: "colorType" }, host: { properties: { "attr.title": "this.title" } }, ngImport: core_exports, template: '<div [style.backgroundColor]="backgroundColor">\r\n    <svg viewBox="0 0 48 48">\r\n        <path d="M0 0h48v48h-48z" fill="none"/>\r\n        <path d="M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z"/>\r\n    </svg>\r\n</div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;cursor:pointer;text-align:center;border:1px solid #e3e3e3;overflow:hidden;position:relative;height:20px;width:20px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC) repeat}:host>div{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1}:host:hover:after{display:block;content:"\\a0";position:absolute;top:0;left:0;height:100%;width:100%;background:#000;opacity:.2;z-index:2}:host svg{transition:background-color 2s ease-in-out;opacity:0;fill:#fff;height:46%;vertical-align:-20%}:host:hover svg{opacity:1}\n'], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: IndicatorComponent, decorators: [{
  type: Component,
  args: [{ selector: `indicator-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<div [style.backgroundColor]="backgroundColor">\r\n    <svg viewBox="0 0 48 48">\r\n        <path d="M0 0h48v48h-48z" fill="none"/>\r\n        <path d="M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z"/>\r\n    </svg>\r\n</div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;cursor:pointer;text-align:center;border:1px solid #e3e3e3;overflow:hidden;position:relative;height:20px;width:20px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC) repeat}:host>div{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1}:host:hover:after{display:block;content:"\\a0";position:absolute;top:0;left:0;height:100%;width:100%;background:#000;opacity:.2;z-index:2}:host svg{transition:background-color 2s ease-in-out;opacity:0;fill:#fff;height:46%;vertical-align:-20%}:host:hover svg{opacity:1}\n'] }]
}], ctorParameters: function() {
  return [{ type: ColorPickerConfig }, { type: Renderer2 }, { type: ElementRef }, { type: void 0, decorators: [{
    type: Inject,
    args: [DOCUMENT]
  }] }];
}, propDecorators: { color: [{
  type: Input
}], colorType: [{
  type: Input
}], title: [{
  type: HostBinding,
  args: ["attr.title"]
}] } });
var HueComponent = class extends BaseComponent {
  constructor(renderer) {
    super();
    this.renderer = renderer;
    this.hueChange = new EventEmitter(false);
    this.colorChange = new EventEmitter(false);
    this.isVertical = false;
  }
  set vertical(value) {
    this.isVertical = true;
  }
  /**
   * color can be changed through inputs
   * and then we need to move pointer
   */
  ngOnChanges(changes) {
    if (changes.hue && changes.hue.previousValue !== changes.hue.currentValue) {
      const hsva = this.hue.getHsva();
      this.changePointerPosition(hsva.hue);
    }
  }
  movePointer({ x: x2, y: y2, height, width }) {
    const hue = this.isVertical ? y2 / height * 360 : x2 / width * 360;
    this.changePointerPosition(hue);
    const color = this.color.getHsva();
    const newColor = new Color().setHsva(hue, color.saturation, color.value, color.alpha);
    const newHueColor = new Color().setHsva(hue, 100, 100, color.alpha);
    this.hueChange.emit(newHueColor);
    this.colorChange.emit(newColor);
  }
  /**
   * hue value is in range from 0 to 360°
   */
  changePointerPosition(hue) {
    const x2 = hue / 360 * 100;
    const orientation = this.isVertical ? "top" : "left";
    this.renderer.setStyle(this.pointer.nativeElement, orientation, `${x2}%`);
  }
};
HueComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: HueComponent, deps: [{ token: Renderer2 }], target: FactoryTarget.Component });
HueComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: HueComponent, selector: "hue-component", inputs: { hue: "hue", color: "color", vertical: "vertical" }, outputs: { hueChange: "hueChange", colorChange: "colorChange" }, viewQueries: [{ propertyName: "pointer", first: true, predicate: ["pointer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: core_exports, template: '<div #pointer class="pointer"></div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC);background-size:100% 100%;height:12px;border-radius:2px;position:relative}:host([vertical]){background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAACWCAYAAADXGgikAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAJtJREFUeNrs2MEJBDEMQ1EZ5rTpv9TM1VuEBGbMTwFCfhdBqqWW8R79pOGAM95gQQCIIIIIYqhBdZvD8so8wQ644w0WBIAIIoggphqU3GGRuW2JgKPPnwAiiCCCuAWx1G0Oi7ltgYA73mBBAIgggghiqEFJ5rCYf3GBgDPeYEEAiCCCCGKqQbU7LDK3LRFw9fkTQAQRRBC3IP4HAGiDWTj81TDkAAAAAElFTkSuQmCC);width:12px;height:100px}.pointer{background:#fff;height:14px;width:14px;top:-1px;left:0;position:absolute;border-radius:50%;cursor:pointer;margin:0 0 0 -7px}:host([vertical]) .pointer{left:-1px;margin:-7px 0 0}\n"], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: HueComponent, decorators: [{
  type: Component,
  args: [{ selector: `hue-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<div #pointer class="pointer"></div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC);background-size:100% 100%;height:12px;border-radius:2px;position:relative}:host([vertical]){background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAACWCAYAAADXGgikAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAJtJREFUeNrs2MEJBDEMQ1EZ5rTpv9TM1VuEBGbMTwFCfhdBqqWW8R79pOGAM95gQQCIIIIIYqhBdZvD8so8wQ644w0WBIAIIoggphqU3GGRuW2JgKPPnwAiiCCCuAWx1G0Oi7ltgYA73mBBAIgggghiqEFJ5rCYf3GBgDPeYEEAiCCCCGKqQbU7LDK3LRFw9fkTQAQRRBC3IP4HAGiDWTj81TDkAAAAAElFTkSuQmCC);width:12px;height:100px}.pointer{background:#fff;height:14px;width:14px;top:-1px;left:0;position:absolute;border-radius:50%;cursor:pointer;margin:0 0 0 -7px}:host([vertical]) .pointer{left:-1px;margin:-7px 0 0}\n"] }]
}], ctorParameters: function() {
  return [{ type: Renderer2 }];
}, propDecorators: { hue: [{
  type: Input
}], hueChange: [{
  type: Output
}], color: [{
  type: Input
}], colorChange: [{
  type: Output
}], pointer: [{
  type: ViewChild,
  args: ["pointer", { static: true }]
}], vertical: [{
  type: Input
}] } });
var AlphaComponent = class extends BaseComponent {
  constructor(renderer) {
    super();
    this.renderer = renderer;
    this.colorChange = new EventEmitter(false);
    this.isVertical = false;
  }
  set vertical(value) {
    this.isVertical = true;
  }
  /**
   * color can be changed through inputs
   * and then we need to move pointer
   */
  ngOnChanges(changes) {
    if (changes.color && changes.color.previousValue !== changes.color.currentValue) {
      const hsva = this.color.getHsva();
      this.changePointerPosition(hsva.alpha);
    }
  }
  movePointer({ x: x2, y: y2, height, width }) {
    const alpha = this.isVertical ? y2 / height : x2 / width;
    this.changePointerPosition(alpha);
    const hsva = this.color.getHsva();
    const newColor = new Color().setHsva(hsva.hue, hsva.saturation, hsva.value, alpha);
    this.colorChange.emit(newColor);
  }
  /**
   * hue value is in range from 0 to 360°
   */
  changePointerPosition(alpha) {
    const x2 = alpha * 100;
    const orientation = this.isVertical ? "top" : "left";
    this.renderer.setStyle(this.pointer.nativeElement, orientation, `${x2}%`);
  }
  get gradient() {
    const rgba = this.color.getRgba();
    const orientation = this.isVertical ? "bottom" : "right";
    return `linear-gradient(to ${orientation}, rgba(${rgba.red}, ${rgba.green}, ${rgba.blue}, 0) 0%, rgb(${rgba.red}, ${rgba.green}, ${rgba.blue}) 100%)`;
  }
};
AlphaComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: AlphaComponent, deps: [{ token: Renderer2 }], target: FactoryTarget.Component });
AlphaComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: AlphaComponent, selector: "alpha-component", inputs: { color: "color", vertical: "vertical" }, outputs: { colorChange: "colorChange" }, viewQueries: [{ propertyName: "pointer", first: true, predicate: ["pointer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: core_exports, template: `<div #pointer class="pointer"></div>\r
<div class="gradient-color" [ngStyle]="{ 'background': gradient }"></div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==);background-position:left center;height:12px;border-radius:2px;position:relative}:host([vertical]){width:12px;height:100px;background-position:center 0}.gradient-color{position:absolute;left:0;right:0;top:0;height:100%;z-index:1}.pointer{background:#fff;height:14px;width:14px;top:-1px;left:0;position:absolute;border-radius:50%;cursor:pointer;margin:0 0 0 -7px;z-index:2}:host([vertical]) .pointer{left:-1px;margin:-7px 0 0}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: AlphaComponent, decorators: [{
  type: Component,
  args: [{ selector: `alpha-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: `<div #pointer class="pointer"></div>\r
<div class="gradient-color" [ngStyle]="{ 'background': gradient }"></div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==);background-position:left center;height:12px;border-radius:2px;position:relative}:host([vertical]){width:12px;height:100px;background-position:center 0}.gradient-color{position:absolute;left:0;right:0;top:0;height:100%;z-index:1}.pointer{background:#fff;height:14px;width:14px;top:-1px;left:0;position:absolute;border-radius:50%;cursor:pointer;margin:0 0 0 -7px;z-index:2}:host([vertical]) .pointer{left:-1px;margin:-7px 0 0}\n"] }]
}], ctorParameters: function() {
  return [{ type: Renderer2 }];
}, propDecorators: { color: [{
  type: Input
}], colorChange: [{
  type: Output
}], pointer: [{
  type: ViewChild,
  args: ["pointer", { static: true }]
}], vertical: [{
  type: Input
}] } });
var ColorPickerInputDirective = class {
  constructor() {
    this.inputChange = new EventEmitter();
  }
  inputChanges(event) {
    const element = event.target || event.srcElement;
    const value = element.value;
    const numeric = parseFloat(value);
    if (!isNaN(numeric) && numeric >= parseInt(this.min, 10) && numeric <= parseInt(this.max, 10)) {
      this.inputChange.emit(numeric);
    }
  }
};
ColorPickerInputDirective.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerInputDirective, deps: [], target: FactoryTarget.Directive });
ColorPickerInputDirective.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: ColorPickerInputDirective, selector: "[inputChange]", inputs: { min: "min", max: "max" }, outputs: { inputChange: "inputChange" }, host: { listeners: { "input": "inputChanges($event)" } }, ngImport: core_exports });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerInputDirective, decorators: [{
  type: Directive,
  args: [{
    selector: "[inputChange]"
  }]
}], propDecorators: { min: [{
  type: Input
}], max: [{
  type: Input
}], inputChange: [{
  type: Output
}], inputChanges: [{
  type: HostListener,
  args: ["input", ["$event"]]
}] } });
var RgbaComponent = class {
  constructor() {
    this.hueChange = new EventEmitter(false);
    this.colorChange = new EventEmitter(false);
    this.isAlphaVisible = true;
  }
  set label(value) {
    this.labelVisible = true;
  }
  set alpha(isVisible2) {
    this.isAlphaVisible = isVisible2;
  }
  get value() {
    return this.color ? this.color.getRgba() : null;
  }
  onInputChange(newValue, color) {
    const value = this.value;
    const red = color === "R" ? newValue : value.red;
    const green = color === "G" ? newValue : value.green;
    const blue = color === "B" ? newValue : value.blue;
    const alpha = color === "A" ? newValue : value.alpha;
    const newColor = new Color().setRgba(red, green, blue, alpha);
    const hue = new Color().setHsva(newColor.getHsva().hue);
    this.hueChange.emit(hue);
    this.colorChange.emit(newColor);
  }
};
RgbaComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: RgbaComponent, deps: [], target: FactoryTarget.Component });
RgbaComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: RgbaComponent, selector: "rgba-input-component", inputs: { hue: "hue", color: "color", label: "label", alpha: "alpha" }, outputs: { hueChange: "hueChange", colorChange: "colorChange" }, ngImport: core_exports, template: `<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="255" [value]="value?.getRed().toString()" (inputChange)="onInputChange($event, 'R')" />\r
    <span *ngIf="labelVisible">R</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="255" [value]="value?.getGreen().toString()" (inputChange)="onInputChange($event, 'G')" />\r
    <span *ngIf="labelVisible">G</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="255" [value]="value?.getBlue().toString()" (inputChange)="onInputChange($event, 'B')" />\r
    <span *ngIf="labelVisible">B</span>\r
</div>\r
<div class="column" *ngIf="isAlphaVisible">\r
    <input type="text" pattern="[0-9]+([\\.,][0-9]{1,2})?" min="0" max="1" [value]="value?.getAlpha().toString()" (inputChange)="onInputChange($event, 'A')" />\r
    <span *ngIf="labelVisible">A</span>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:table;width:100%;text-align:center;color:#b4b4b4;font-size:11px}.column{display:table-cell;padding:0 2px}input{width:100%;border:1px solid rgb(218,218,218);color:#272727;text-align:center;font-size:12px;-webkit-appearance:none;border-radius:0;margin:0 0 6px;height:26px;outline:none}\n", ""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ColorPickerInputDirective, selector: "[inputChange]", inputs: ["min", "max"], outputs: ["inputChange"] }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: RgbaComponent, decorators: [{
  type: Component,
  args: [{ selector: `rgba-input-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: `<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="255" [value]="value?.getRed().toString()" (inputChange)="onInputChange($event, 'R')" />\r
    <span *ngIf="labelVisible">R</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="255" [value]="value?.getGreen().toString()" (inputChange)="onInputChange($event, 'G')" />\r
    <span *ngIf="labelVisible">G</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="255" [value]="value?.getBlue().toString()" (inputChange)="onInputChange($event, 'B')" />\r
    <span *ngIf="labelVisible">B</span>\r
</div>\r
<div class="column" *ngIf="isAlphaVisible">\r
    <input type="text" pattern="[0-9]+([\\.,][0-9]{1,2})?" min="0" max="1" [value]="value?.getAlpha().toString()" (inputChange)="onInputChange($event, 'A')" />\r
    <span *ngIf="labelVisible">A</span>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:table;width:100%;text-align:center;color:#b4b4b4;font-size:11px}.column{display:table-cell;padding:0 2px}input{width:100%;border:1px solid rgb(218,218,218);color:#272727;text-align:center;font-size:12px;-webkit-appearance:none;border-radius:0;margin:0 0 6px;height:26px;outline:none}\n"] }]
}], propDecorators: { hue: [{
  type: Input
}], hueChange: [{
  type: Output
}], color: [{
  type: Input
}], colorChange: [{
  type: Output
}], label: [{
  type: Input
}], alpha: [{
  type: Input
}] } });
var HslaComponent = class {
  constructor() {
    this.hueChange = new EventEmitter(false);
    this.colorChange = new EventEmitter(false);
    this.isAlphaVisible = true;
  }
  set label(value) {
    this.labelVisible = true;
  }
  set alpha(isVisible2) {
    this.isAlphaVisible = isVisible2;
  }
  get value() {
    return this.color ? this.color.getHsla() : null;
  }
  onInputChange(newValue, color) {
    const value = this.value;
    const hue = color === "H" ? newValue : value.hue;
    const saturation = color === "S" ? newValue : value.saturation;
    const lightness = color === "L" ? newValue : value.lightness;
    const alpha = color === "A" ? newValue : value.alpha;
    const newColor = new Color().setHsla(hue, saturation, lightness, alpha);
    const hueColor = new Color().setHsva(newColor.getHsva().hue);
    this.hueChange.emit(hueColor);
    this.colorChange.emit(newColor);
  }
};
HslaComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: HslaComponent, deps: [], target: FactoryTarget.Component });
HslaComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: HslaComponent, selector: "hsla-input-component", inputs: { hue: "hue", color: "color", label: "label", alpha: "alpha" }, outputs: { hueChange: "hueChange", colorChange: "colorChange" }, ngImport: core_exports, template: `<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="360" [value]="value?.getHue().toString()" (inputChange)="onInputChange($event, 'H')" />\r
    <span *ngIf="labelVisible">H</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="100" [value]="value?.getSaturation() + '%'" (inputChange)="onInputChange($event, 'S')" />\r
    <span *ngIf="labelVisible">S</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="100" [value]="value?.getLightness() + '%'" (inputChange)="onInputChange($event, 'L')" />\r
    <span *ngIf="labelVisible">L</span>\r
</div>\r
<div class="column" *ngIf="isAlphaVisible">\r
    <input type="text" pattern="[0-9]+([\\.,][0-9]{1,2})?" min="0" max="1" [value]="value?.getAlpha().toString()" (inputChange)="onInputChange($event, 'A')" />\r
    <span *ngIf="labelVisible">A</span>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:table;width:100%;text-align:center;color:#b4b4b4;font-size:11px}.column{display:table-cell;padding:0 2px}input{width:100%;border:1px solid rgb(218,218,218);color:#272727;text-align:center;font-size:12px;-webkit-appearance:none;border-radius:0;margin:0 0 6px;height:26px;outline:none}\n", ""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ColorPickerInputDirective, selector: "[inputChange]", inputs: ["min", "max"], outputs: ["inputChange"] }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: HslaComponent, decorators: [{
  type: Component,
  args: [{ selector: `hsla-input-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: `<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="360" [value]="value?.getHue().toString()" (inputChange)="onInputChange($event, 'H')" />\r
    <span *ngIf="labelVisible">H</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="100" [value]="value?.getSaturation() + '%'" (inputChange)="onInputChange($event, 'S')" />\r
    <span *ngIf="labelVisible">S</span>\r
</div>\r
<div class="column">\r
    <input type="text" pattern="[0-9]*" min="0" max="100" [value]="value?.getLightness() + '%'" (inputChange)="onInputChange($event, 'L')" />\r
    <span *ngIf="labelVisible">L</span>\r
</div>\r
<div class="column" *ngIf="isAlphaVisible">\r
    <input type="text" pattern="[0-9]+([\\.,][0-9]{1,2})?" min="0" max="1" [value]="value?.getAlpha().toString()" (inputChange)="onInputChange($event, 'A')" />\r
    <span *ngIf="labelVisible">A</span>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:table;width:100%;text-align:center;color:#b4b4b4;font-size:11px}.column{display:table-cell;padding:0 2px}input{width:100%;border:1px solid rgb(218,218,218);color:#272727;text-align:center;font-size:12px;-webkit-appearance:none;border-radius:0;margin:0 0 6px;height:26px;outline:none}\n"] }]
}], propDecorators: { hue: [{
  type: Input
}], hueChange: [{
  type: Output
}], color: [{
  type: Input
}], colorChange: [{
  type: Output
}], label: [{
  type: Input
}], alpha: [{
  type: Input
}] } });
var HexComponent = class {
  constructor() {
    this.hueChange = new EventEmitter(false);
    this.colorChange = new EventEmitter(false);
    this.prefixValue = "";
  }
  set label(value) {
    this.labelVisible = true;
  }
  set prefix(value) {
    this.prefixValue = value;
  }
  get value() {
    return this.prefixValue + (this.color ? this.color.toHexString(this.color.getRgba().alpha < 1).replace("#", "") : "");
  }
  onInputChange(event, inputValue) {
    const value = inputValue.toLowerCase().replace("#", "");
    if ((event.keyCode === 13 || event.key.toLowerCase() === "enter") && value.length === 3 || value.length === 6 || value.length === 8) {
      const hex = parseInt(value, 16);
      const hexStr = hex.toString(16);
      if (hexStr.padStart(value.length, "0") === value && this.value !== value) {
        const newColor = new Color(`#${value}`);
        const hue = new Color().setHsva(newColor.getHsva().hue);
        this.hueChange.emit(hue);
        this.colorChange.emit(newColor);
      }
    }
  }
};
HexComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: HexComponent, deps: [], target: FactoryTarget.Component });
HexComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: HexComponent, selector: "hex-input-component", inputs: { hue: "hue", color: "color", label: "label", prefix: "prefix" }, outputs: { hueChange: "hueChange", colorChange: "colorChange" }, ngImport: core_exports, template: '<div class="column">\r\n    <input #elRef type="text" [value]="value" (keyup)="onInputChange($event, elRef.value)" />\r\n    <span *ngIf="labelVisible">HEX</span>\r\n</div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:table;width:100%;text-align:center;color:#b4b4b4;font-size:11px}.column{display:table-cell;padding:0 2px}input{width:100%;border:1px solid rgb(218,218,218);color:#272727;text-align:center;font-size:12px;-webkit-appearance:none;border-radius:0;margin:0 0 6px;height:26px;outline:none}\n", ""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: HexComponent, decorators: [{
  type: Component,
  args: [{ selector: `hex-input-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<div class="column">\r\n    <input #elRef type="text" [value]="value" (keyup)="onInputChange($event, elRef.value)" />\r\n    <span *ngIf="labelVisible">HEX</span>\r\n</div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:table;width:100%;text-align:center;color:#b4b4b4;font-size:11px}.column{display:table-cell;padding:0 2px}input{width:100%;border:1px solid rgb(218,218,218);color:#272727;text-align:center;font-size:12px;-webkit-appearance:none;border-radius:0;margin:0 0 6px;height:26px;outline:none}\n"] }]
}], propDecorators: { hue: [{
  type: Input
}], hueChange: [{
  type: Output
}], color: [{
  type: Input
}], colorChange: [{
  type: Output
}], label: [{
  type: Input
}], prefix: [{
  type: Input
}] } });
var ColorPresetComponent = class {
  constructor(pickerConfig, elementRef) {
    this.pickerConfig = pickerConfig;
    this.elementRef = elementRef;
    this.selectionChange = new EventEmitter(false);
    this.longPress = new EventEmitter(false);
    this.mouseup = new Subject();
    this.showDepthText = false;
    this.subscriptions = [];
    this.addEventListeners();
  }
  set depth(showDepthText) {
    this.showDepthText = !!showDepthText;
  }
  ngOnDestroy() {
    this.mouseup.next();
    this.mouseup.complete();
    this.removeEventListeners();
  }
  get bgColor() {
    return this.color.toRgbaString();
  }
  get title() {
    const color = this.color ? this.color.toHexString() : "";
    if (this.showDepthText) {
      return this.pickerConfig.presetsTitle.replace(/\{\s*(.+?)\s*\}/g, (match, firstMatch) => color);
    }
    return color;
  }
  get className() {
    return this.activeColor ? this.color.toRgbaString() === this.activeColor.toRgbaString() : false;
  }
  addEventListeners() {
    this.subscriptions.push(merge(fromEvent(this.elementRef.nativeElement, "mouseup"), fromEvent(this.elementRef.nativeElement, "touchend")).subscribe(() => this.onTouchEnd()));
    this.subscriptions.push(merge(fromEvent(this.elementRef.nativeElement, "mousedown"), fromEvent(this.elementRef.nativeElement, "touchstart", { passive: true })).subscribe((e2) => this.onTouch(e2)));
  }
  removeEventListeners() {
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  onTouch(event) {
    of(event).pipe(map((e2) => e2.timeStamp || (/* @__PURE__ */ new Date()).getTime()), delay(350), takeUntil(this.mouseup)).subscribe(() => this.longPress.next(true));
    this.selectionChange.emit(this.color);
  }
  onTouchEnd() {
    this.mouseup.next();
  }
};
ColorPresetComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPresetComponent, deps: [{ token: ColorPickerConfig }, { token: ElementRef }], target: FactoryTarget.Component });
ColorPresetComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: ColorPresetComponent, selector: "color-preset", inputs: { activeColor: "activeColor", color: "color", depth: ["show-depth-title", "depth"] }, outputs: { selectionChange: "selectionChange", longPress: "longPress" }, host: { properties: { "style.backgroundColor": "this.bgColor", "attr.title": "this.title", "class.selected": "this.className" } }, ngImport: core_exports, template: ``, isInline: true, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:inline-block;height:12px;width:12px;position:relative;cursor:pointer;transition:all .2s}\n"], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPresetComponent, decorators: [{
  type: Component,
  args: [{ selector: `color-preset`, template: ``, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:inline-block;height:12px;width:12px;position:relative;cursor:pointer;transition:all .2s}\n"] }]
}], ctorParameters: function() {
  return [{ type: ColorPickerConfig }, { type: ElementRef }];
}, propDecorators: { activeColor: [{
  type: Input
}], color: [{
  type: Input
}], depth: [{
  type: Input,
  args: ["show-depth-title"]
}], selectionChange: [{
  type: Output
}], longPress: [{
  type: Output
}], bgColor: [{
  type: HostBinding,
  args: ["style.backgroundColor"]
}], title: [{
  type: HostBinding,
  args: ["attr.title"]
}], className: [{
  type: HostBinding,
  args: ["class.selected"]
}] } });
var OpacityAnimation = trigger("opacityAnimation", [
  state("true", style({ opacity: 1 })),
  transition("void => *", [
    style({ opacity: 0 }),
    animate(".08s ease-in")
  ])
]);
var ListAnimation = trigger("listAnimation", [
  transition("* => up", [
    query(":enter", [
      style({ opacity: 0, height: 0 }),
      stagger(-10, [
        animate(".08s", style({ opacity: 1, height: "*" }))
      ])
    ], { optional: true })
  ]),
  transition("* => right", [
    query(":enter", [
      style({ opacity: 0, height: 0 }),
      stagger(-10, [
        animate(".08s", style({ opacity: 1, height: "*" }))
      ])
    ], { optional: true })
  ]),
  transition("* => down", [
    query(":enter", [
      style({ opacity: 0, height: 0 }),
      stagger(10, [
        animate(".08s", style({ opacity: 1, height: "*" }))
      ])
    ], { optional: true })
  ]),
  transition("* => left", [
    query(":enter", [
      style({ opacity: 0, height: 0 }),
      stagger(10, [
        animate(".08s", style({ opacity: 1, height: "*" }))
      ])
    ], { optional: true })
  ])
]);
var ReversePipe = class {
  transform(arr, isReversed = true) {
    if (isReversed) {
      return arr.slice().reverse();
    }
    return arr;
  }
};
ReversePipe.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ReversePipe, deps: [], target: FactoryTarget.Pipe });
ReversePipe.\u0275pipe = \u0275\u0275ngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0", ngImport: core_exports, type: ReversePipe, name: "reverse" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ReversePipe, decorators: [{
  type: Pipe,
  args: [{ name: "reverse" }]
}] });
var ColorPresetSublist = class {
  constructor(document2, cdr) {
    this.document = document2;
    this.cdr = cdr;
    this.selectionChange = new EventEmitter(false);
    this.direction = "up";
    this.showChildren = false;
    this.subscriptions = [];
  }
  ngOnDestroy() {
    this.removeListeners();
    this.cdr.detach();
  }
  removeListeners() {
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  /**
   * emit color change
   */
  onSelectionChange(color) {
    this.selectionChange.next(color);
  }
  onLongPress() {
    this.showChildren = true;
    this.listenDocumentEvents();
  }
  listenDocumentEvents() {
    this.subscriptions.push(merge(fromEvent(this.document, "mousedown"), fromEvent(this.document, "touchstart", { passive: true })).subscribe(() => this.closeList()));
  }
  closeList() {
    if (this.showChildren) {
      this.showChildren = false;
      this.cdr.markForCheck();
      this.removeListeners();
    }
  }
  get className() {
    return `direction-${this.direction}`;
  }
};
ColorPresetSublist.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPresetSublist, deps: [{ token: DOCUMENT }, { token: ChangeDetectorRef }], target: FactoryTarget.Component });
ColorPresetSublist.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: ColorPresetSublist, selector: "color-preset-sublist", inputs: { list: "list", direction: "direction", activeColor: "activeColor" }, outputs: { selectionChange: "selectionChange" }, host: { properties: { "className": "this.className" } }, ngImport: core_exports, template: `<color-preset [show-depth-title]="list.length > 1" [color]="list[0]" [activeColor]="activeColor" (longPress)="onLongPress()" (selectionChange)="onSelectionChange($event)"></color-preset>\r
<div class="reflection" [style.backgroundColor]="list[0].toRgbaString()"></div>\r
<div class="reflection" [style.backgroundColor]="list[0].toRgbaString()"></div>\r
\r
<div class="sublist" *ngIf="showChildren" [@opacityAnimation]="showChildren" [@listAnimation]="direction">\r
    <color-preset \r
        *ngFor="let preset of list | reverse : (direction == 'up' || direction == 'right')"\r
        [color]="preset"\r
        [activeColor]="activeColor"\r
        (selectionChange)="onSelectionChange($event)"></color-preset>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{position:relative;display:inline-block}color-preset{position:relative;z-index:3}.reflection{display:none;position:absolute;height:100%;width:100%;z-index:2;right:-2px;top:-2px;opacity:.5}.reflection+.reflection{opacity:.2;right:-4px;top:-4px;z-index:1}color-preset:hover+.reflection,color-preset:hover+.reflection+.reflection{display:block}.sublist{position:absolute;bottom:-8px;left:-8px;right:-8px;background:#fff;border-radius:2px;box-shadow:#0000004d 0 0 2px,#0000004d 0 2px 4px;padding:8px 5px;text-align:center;z-index:1000}.sublist color-preset{margin:8px 0 0}.sublist color-preset:first-child{margin:0}:host(.direction-down) .sublist{bottom:auto;top:-8px}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColorPresetComponent, selector: "color-preset", inputs: ["activeColor", "color", "show-depth-title"], outputs: ["selectionChange", "longPress"] }, { kind: "pipe", type: ReversePipe, name: "reverse" }], animations: [OpacityAnimation, ListAnimation], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPresetSublist, decorators: [{
  type: Component,
  args: [{ selector: `color-preset-sublist`, changeDetection: ChangeDetectionStrategy.OnPush, animations: [OpacityAnimation, ListAnimation], template: `<color-preset [show-depth-title]="list.length > 1" [color]="list[0]" [activeColor]="activeColor" (longPress)="onLongPress()" (selectionChange)="onSelectionChange($event)"></color-preset>\r
<div class="reflection" [style.backgroundColor]="list[0].toRgbaString()"></div>\r
<div class="reflection" [style.backgroundColor]="list[0].toRgbaString()"></div>\r
\r
<div class="sublist" *ngIf="showChildren" [@opacityAnimation]="showChildren" [@listAnimation]="direction">\r
    <color-preset \r
        *ngFor="let preset of list | reverse : (direction == 'up' || direction == 'right')"\r
        [color]="preset"\r
        [activeColor]="activeColor"\r
        (selectionChange)="onSelectionChange($event)"></color-preset>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{position:relative;display:inline-block}color-preset{position:relative;z-index:3}.reflection{display:none;position:absolute;height:100%;width:100%;z-index:2;right:-2px;top:-2px;opacity:.5}.reflection+.reflection{opacity:.2;right:-4px;top:-4px;z-index:1}color-preset:hover+.reflection,color-preset:hover+.reflection+.reflection{display:block}.sublist{position:absolute;bottom:-8px;left:-8px;right:-8px;background:#fff;border-radius:2px;box-shadow:#0000004d 0 0 2px,#0000004d 0 2px 4px;padding:8px 5px;text-align:center;z-index:1000}.sublist color-preset{margin:8px 0 0}.sublist color-preset:first-child{margin:0}:host(.direction-down) .sublist{bottom:auto;top:-8px}\n"] }]
}], ctorParameters: function() {
  return [{ type: void 0, decorators: [{
    type: Inject,
    args: [DOCUMENT]
  }] }, { type: ChangeDetectorRef }];
}, propDecorators: { list: [{
  type: Input
}], selectionChange: [{
  type: Output
}], direction: [{
  type: Input
}], activeColor: [{
  type: Input
}], className: [{
  type: HostBinding,
  args: ["className"]
}] } });
var ChunksPipe = class {
  transform(arr, chunkSize) {
    return arr.reduce((prev, cur, i2) => i2 % chunkSize ? prev : prev.concat([arr.slice(i2, i2 + chunkSize)]), []);
  }
};
ChunksPipe.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ChunksPipe, deps: [], target: FactoryTarget.Pipe });
ChunksPipe.\u0275pipe = \u0275\u0275ngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0", ngImport: core_exports, type: ChunksPipe, name: "chunks" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ChunksPipe, decorators: [{
  type: Pipe,
  args: [{ name: "chunks" }]
}] });
var ColorPresetsComponent = class {
  constructor() {
    this.columns = 8;
    this.hueChange = new EventEmitter(false);
    this.colorChange = new EventEmitter(false);
    this.direction = "up";
  }
  onSelectionChange(color) {
    const selectedRgbaColor = color.getRgba();
    const selectedHsvaColor = color.getHsva();
    const newColor = new Color().setRgba(selectedRgbaColor.red, selectedRgbaColor.green, selectedRgbaColor.blue, selectedRgbaColor.alpha);
    const hueColor = new Color().setHsva(selectedHsvaColor.hue);
    this.hueChange.emit(hueColor);
    this.colorChange.emit(newColor);
  }
  isList(colorPreset) {
    return Array.isArray(colorPreset);
  }
};
ColorPresetsComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPresetsComponent, deps: [], target: FactoryTarget.Component });
ColorPresetsComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: ColorPresetsComponent, selector: "color-presets-component", inputs: { columns: "columns", colorPresets: "colorPresets", hue: "hue", color: "color", direction: "direction" }, outputs: { hueChange: "hueChange", colorChange: "colorChange" }, ngImport: core_exports, template: `<div class="presets-row" *ngFor="let chunk of colorPresets | chunks: columns; let first = first; let last = last;" [ngClass]="{ 'first': first, 'last': last }">\r
    <ng-template ngFor let-preset let-first="first" let-last="last" [ngForOf]="chunk">\r
        <color-preset-sublist \r
            [list]="preset" \r
            *ngIf="isList(preset); else colorPreset" \r
            [direction]="direction"\r
            [activeColor]="color"\r
            [ngClass]="{ 'first': first, 'last': last }"\r
            (selectionChange)="onSelectionChange($event)"></color-preset-sublist>\r
\r
        <ng-template #colorPreset>\r
            <color-preset \r
                [ngClass]="{ 'first': first, 'last': last }"\r
                [color]="preset" \r
                [activeColor]="color" \r
                (selectionChange)="onSelectionChange($event)"></color-preset>\r
        </ng-template>\r
    </ng-template>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;font-size:0}:host .presets-row{display:flex}:host .presets-row:first-child{padding:0}color-preset-sublist:first-child,color-preset:first-child{margin:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColorPresetComponent, selector: "color-preset", inputs: ["activeColor", "color", "show-depth-title"], outputs: ["selectionChange", "longPress"] }, { kind: "component", type: ColorPresetSublist, selector: "color-preset-sublist", inputs: ["list", "direction", "activeColor"], outputs: ["selectionChange"] }, { kind: "pipe", type: ChunksPipe, name: "chunks" }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPresetsComponent, decorators: [{
  type: Component,
  args: [{ selector: `color-presets-component`, changeDetection: ChangeDetectionStrategy.OnPush, template: `<div class="presets-row" *ngFor="let chunk of colorPresets | chunks: columns; let first = first; let last = last;" [ngClass]="{ 'first': first, 'last': last }">\r
    <ng-template ngFor let-preset let-first="first" let-last="last" [ngForOf]="chunk">\r
        <color-preset-sublist \r
            [list]="preset" \r
            *ngIf="isList(preset); else colorPreset" \r
            [direction]="direction"\r
            [activeColor]="color"\r
            [ngClass]="{ 'first': first, 'last': last }"\r
            (selectionChange)="onSelectionChange($event)"></color-preset-sublist>\r
\r
        <ng-template #colorPreset>\r
            <color-preset \r
                [ngClass]="{ 'first': first, 'last': last }"\r
                [color]="preset" \r
                [activeColor]="color" \r
                (selectionChange)="onSelectionChange($event)"></color-preset>\r
        </ng-template>\r
    </ng-template>\r
</div>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;font-size:0}:host .presets-row{display:flex}:host .presets-row:first-child{padding:0}color-preset-sublist:first-child,color-preset:first-child{margin:0}\n"] }]
}], propDecorators: { columns: [{
  type: Input
}], colorPresets: [{
  type: Input
}], hue: [{
  type: Input
}], hueChange: [{
  type: Output
}], color: [{
  type: Input
}], colorChange: [{
  type: Output
}], direction: [{
  type: Input
}] } });
var ColorType;
(function(ColorType2) {
  ColorType2["hex"] = "hex";
  ColorType2["hexa"] = "hexa";
  ColorType2["rgba"] = "rgba";
  ColorType2["rgb"] = "rgb";
  ColorType2["hsla"] = "hsla";
  ColorType2["hsl"] = "hsl";
  ColorType2["cmyk"] = "cmyk";
})(ColorType || (ColorType = {}));
var ColorPickerControl = class {
  constructor() {
    this.modelValue = null;
    this.hueValue = null;
    this.initValue = null;
    this.valueChanged = new Subject();
    this.presetsVisibilityChanges = new BehaviorSubject(true);
    this.initType = null;
    this.alphaChannelVisibilityChanges = new BehaviorSubject(true);
    this.valueChanges = this.valueChanged.asObservable().pipe(distinctUntilChanged((x2, y2) => x2.toRgbaString() == y2.toRgbaString()));
    this.colorPresets = [];
    const color = Color.from(new Rgba(255, 0, 0, 1));
    this.setValue(color);
    this.setHueColor(color);
  }
  setValueFrom(color) {
    const newColor = Color.from(color);
    if (!this.initValue) {
      this.initValue = Color.from(color);
    }
    if (typeof color === "string") {
      this.finOutInputType(color);
    }
    this.setHueColor(newColor);
    this.setValue(newColor);
    return this;
  }
  setHueColor(color) {
    if (this.hueValue && color.getHsva().hue > 0 || !this.hueValue) {
      this.hueValue = new Color().setHsva(color.getHsva().hue);
    }
  }
  get hue() {
    return this.hueValue;
  }
  /**
   * @internal
   * used for two-way data binding
   */
  set hue(hueColor) {
    this.hueValue = hueColor;
  }
  setValue(value) {
    this.modelValue = value;
    this.valueChanged.next(value);
    return this;
  }
  get value() {
    return this.modelValue;
  }
  /**
   * @internal
   * used for two-way data binding
   */
  set value(value) {
    this.setValue(value);
  }
  /**
   * reset color to initial
   */
  reset() {
    let color;
    if (!this.initValue) {
      color = Color.from(new Rgba(255, 0, 0, 1));
      this.hueValue = new Color().setHsva(color.getHsva().hue);
    } else {
      color = this.initValue.clone();
      this.setHueColor(color);
    }
    this.setValue(color);
    return this;
  }
  isAlphaChannelEnabled() {
    return this.alphaChannelVisibilityChanges.value;
  }
  showAlphaChannel() {
    this.alphaChannelVisibilityChanges.next(true);
    return this;
  }
  hideAlphaChannel() {
    this.alphaChannelVisibilityChanges.next(false);
    return this;
  }
  finOutInputType(colorString) {
    const str = colorString.replace(/ /g, "").toLowerCase();
    if (str[0] === "#") {
      this.initType = ColorType.hex;
      if (str.length > 7) {
        this.initType = ColorType.hexa;
      }
    }
    const OpenParenthesis = str.indexOf("(");
    const colorTypeName = str.substr(0, OpenParenthesis);
    switch (colorTypeName) {
      case ColorType.rgba:
        this.initType = ColorType.rgba;
        break;
      case ColorType.rgb:
        this.initType = ColorType.rgb;
        break;
      case ColorType.hsla:
        this.initType = ColorType.hsla;
        break;
      case ColorType.hsl:
        this.initType = ColorType.hsl;
        break;
      case ColorType.cmyk:
        this.initType = ColorType.cmyk;
        break;
    }
  }
  setColorPresets(colorPresets) {
    this.colorPresets = this.setPresets(colorPresets);
    return this;
  }
  setPresets(colorPresets) {
    const presets = [];
    for (const color of colorPresets) {
      if (Array.isArray(color)) {
        presets.push(this.setPresets(color));
      } else {
        presets.push(new Color(color));
      }
    }
    return presets;
  }
  get presets() {
    return this.colorPresets;
  }
  hasPresets() {
    return this.colorPresets.length > 0;
  }
  isPresetVisible() {
    return this.presetsVisibilityChanges.value;
  }
  showPresets() {
    this.presetsVisibilityChanges.next(true);
    return this;
  }
  hidePresets() {
    this.presetsVisibilityChanges.next(false);
    return this;
  }
};
function getValueByType(color, type2) {
  switch (type2) {
    case ColorType.hex:
      return color.toHexString();
    case ColorType.hexa:
      return color.toHexString(true);
    case ColorType.rgb:
      return color.toRgbString();
    case ColorType.rgba:
      return color.toRgbaString();
    case ColorType.hsl:
      return color.toHslString();
    case ColorType.hsla:
      return color.toHslaString();
    default:
      return color.toRgbaString();
  }
}
var ChromePickerComponent = class {
  constructor(cdr) {
    this.cdr = cdr;
    this.selectedPresentation = 0;
    this.presentations = ["rgba", "hsla", "hex"];
    this.colorChange = new EventEmitter(false);
    this.subscriptions = [];
  }
  ngOnInit() {
    if (!this.control) {
      this.control = new ColorPickerControl();
    }
    if (this.color) {
      this.control.setValueFrom(this.color);
    }
    if (!this.control.hasPresets()) {
      this.control.setColorPresets([
        ["#f44336", "#ffebee", "#ffcdd2", "#EF9A9A", "#E57373", "#EF5350", "#F44336", "#E53935", "#D32F2F", "#C62828", "#B71C1C"],
        ["#E91E63", "#fce4ec", "#f8bbd0", "#f48fb1", "#f06292", "#ec407a", "#e91e63", "#d81b60", "#c2185b", "#ad1457", "#880e4f"],
        ["#9C27B0", "#F3e5f5", "#e1bee7", "#ce93d8", "#ba68c8", "#ab47bc", "#9c27b0", "#8e24aa", "#7b1fa2", "#6a1b9a", "#4a148c"],
        ["#673AB7", "#ede7f6", "#d1c4e9", "#b39ddb", "#9575cd", "#7e57c2", "#673ab7", "#5e35b1", "#512da8", "#4527a0", "#311b92"],
        ["#3F51B5", "#e8eaf6", "#c5cae9", "#9fa8da", "#7986cb", "#5c6bc0", "#3f51b5", "#3949ab", "#303f9f", "#283593", "#1a237e"],
        ["#2196F3", "#e3f2fd", "#bbdefb", "#90caf9", "#64b5f6", "#42a5f5", "#2196f3", "#1e88e5", "#1976d2", "#1565c0", "#0D47a1"],
        ["#03A9F4", "#e1f5fe", "#b3e5fc", "#81d4fa", "#4fc3f7", "#29b6f6", "#03a9f4", "#039be5", "#0288d1", "#0277bd", "#01579b"],
        ["#00BCD4", "#e0f7fa", "#b2ebf2", "#80deea", "#4dd0e1", "#26c6da", "#00bcd4", "#00acc1", "#0097a7", "#00838f", "#006064"],
        ["#009688", "#E0F2f1", "#b2dfdb", "#80cbc4", "#4db6ac", "#26a69a", "#009688", "#00897b", "#00796b", "#00695c", "#004d40"],
        ["#4CAF50", "#e8f5e9", "#c8e6c9", "#a5d6a7", "#81c784", "#66bb6a", "#4caf50", "#43a047", "#388e3c", "#2e7d32", "#1b5e20"],
        ["#8BC34A", "#f1f8e9", "#dcedc8", "#c5e1a5", "#aed581", "#9ccc65", "#8bc34a", "#7cb342", "#689f38", "#558b2f", "#33691e"],
        ["#cddc39", "#f9fbe7", "#f0f4c3", "#e6ee9c", "#dce775", "#d4e157", "#c0dc39", "#c0ca33", "#afb42b", "#9e9d24", "#827717"],
        ["#ffeb3b", "#fffde7", "#fff9c4", "#fff59d", "#fff176", "#ffee58", "#ffeb3b", "#fdd835", "#fbc02d", "#f9a825", "#f57f17"],
        ["#ffc107", "#fff8e1", "#ffecb3", "#ffe082", "#ffd54f", "#ffca28", "#ffc107", "#ffb300", "#ffa000", "#ff8f00", "#ff6f00"],
        ["#ff9800", "#fff3e0", "#ffe0b2", "#ffcc80", "#ffb74d", "#ffa726", "#ff9800", "#fb8c00", "#f57c00", "#ef6c00", "#e65100"],
        ["#ff5722", "#fbe9e7", "#ffccbc", "#ffab91", "#ff8a65", "#ff7043", "#ff5722", "#f4511e", "#e64a19", "#d84315", "#bf360c"],
        ["#795548", "#efebe9", "#d7ccc8", "#bcaaa4", "#a1887f", "#8d6e63", "#795548", "#6d4c41", "#5d4037", "#4e342e", "#3e2723"],
        ["#9e9e9e", "#fafafa", "#f5f5f5", "#eee", "#e0e0e0", "#bdbdbd", "#9e9e9e", "#757575", "#616161", "#424242", "#212121"],
        ["#607d8b", "#eceff1", "#cfd8dc", "#b0bec5", "#90a4ae", "#78909c", "#60708b", "#546e7a", "#455a64", "#37474f", "#263238"]
      ]);
    }
    this.subscriptions.push(this.control.valueChanges.subscribe((value) => {
      this.cdr.markForCheck();
      this.colorChange.emit(getValueByType(value, this.control.initType));
    }));
  }
  ngOnDestroy() {
    this.cdr.detach();
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  ngOnChanges(changes) {
    if (this.color && this.control && getValueByType(this.control.value, this.control.initType) !== this.color) {
      this.control.setValueFrom(this.color);
    }
  }
  changePresentation() {
    this.selectedPresentation = this.selectedPresentation === this.presentations.length - 1 ? 0 : this.selectedPresentation + 1;
  }
};
ChromePickerComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ChromePickerComponent, deps: [{ token: ChangeDetectorRef }], target: FactoryTarget.Component });
ChromePickerComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: ChromePickerComponent, selector: "chrome-picker", inputs: { color: "color", control: "control" }, outputs: { colorChange: "colorChange" }, usesOnChanges: true, ngImport: core_exports, template: `<saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r
\r
<div class="controls">\r
    <div class="controls-row hue-alpha">\r
        <div class="column">\r
            <indicator-component [colorType]="presentations[selectedPresentation]" [color]="control.value"></indicator-component>\r
        </div>\r
        <div class="column">\r
            <hue-component [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r
            <alpha-component *ngIf="control.alphaChannelVisibilityChanges | async" [(color)]="control.value"></alpha-component>\r
        </div>\r
    </div>\r
    <div class="controls-row presentation">\r
        <div class="column" [ngSwitch]="presentations[selectedPresentation]">\r
            <rgba-input-component *ngSwitchCase="'rgba'" [alpha]="control.alphaChannelVisibilityChanges | async" label [(color)]="control.value" [(hue)]="control.hue"></rgba-input-component>\r
            <hsla-input-component *ngSwitchCase="'hsla'" [alpha]="control.alphaChannelVisibilityChanges | async" label [(color)]="control.value" [(hue)]="control.hue"></hsla-input-component>\r
            <hex-input-component *ngSwitchCase="'hex'" label prefix="#" [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r
        </div>\r
        <div class="column type-column">\r
            <span class="type-btn" (click)="changePresentation()"></span>\r
        </div>\r
    </div>\r
</div>\r
\r
<color-presets-component *ngIf="control.presetsVisibilityChanges | async" [(color)]="control.value" [colorPresets]="control.presets" [(hue)]="control.hue"></color-presets-component>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;width:230px;border-radius:2px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 1px 4px}:host ::ng-deep .controls .pointer{box-shadow:#0000004d 0 0 2px,#0000004d 0 1px 4px}:host ::ng-deep .reflection,:host ::ng-deep color-preset{border-radius:2px}:host ::ng-deep color-preset{box-shadow:inset #0000004d 0 0 2px}:host ::ng-deep color-preset,:host ::ng-deep color-preset-sublist{margin:0 0 0 12px}:host ::ng-deep color-preset:first-child,:host ::ng-deep color-preset-sublist:first-child{margin:0}:host ::ng-deep .sublist color-preset:hover,:host ::ng-deep .presets-row>color-preset:hover{transform:scale(1.18)}saturation-component{height:120px}.controls{padding:15px 15px 10px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.hue-alpha .column:first-child{width:42px;padding:0 10px 0 0}indicator-component{height:32px;width:32px;border-radius:50%}alpha-component{margin-top:8px}color-presets-component{border-top:1px solid #d0d0d0;padding:12px}color-presets-component ::ng-deep .presets-row{padding:12px 0 0}.type-btn{display:inline-block;height:20px;width:20px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==) no-repeat center;background-size:6px 12px}.type-btn:hover{background-color:#eee}.type-column{width:25px;text-align:right}.presentation{padding:12px 0 0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SaturationComponent, selector: "saturation-component", inputs: ["hue", "color"], outputs: ["colorChange"] }, { kind: "component", type: IndicatorComponent, selector: "indicator-component", inputs: ["color", "colorType"] }, { kind: "component", type: HueComponent, selector: "hue-component", inputs: ["hue", "color", "vertical"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: AlphaComponent, selector: "alpha-component", inputs: ["color", "vertical"], outputs: ["colorChange"] }, { kind: "component", type: RgbaComponent, selector: "rgba-input-component", inputs: ["hue", "color", "label", "alpha"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: HslaComponent, selector: "hsla-input-component", inputs: ["hue", "color", "label", "alpha"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: HexComponent, selector: "hex-input-component", inputs: ["hue", "color", "label", "prefix"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: ColorPresetsComponent, selector: "color-presets-component", inputs: ["columns", "colorPresets", "hue", "color", "direction"], outputs: ["hueChange", "colorChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ChromePickerComponent, decorators: [{
  type: Component,
  args: [{ selector: `chrome-picker`, changeDetection: ChangeDetectionStrategy.OnPush, template: `<saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r
\r
<div class="controls">\r
    <div class="controls-row hue-alpha">\r
        <div class="column">\r
            <indicator-component [colorType]="presentations[selectedPresentation]" [color]="control.value"></indicator-component>\r
        </div>\r
        <div class="column">\r
            <hue-component [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r
            <alpha-component *ngIf="control.alphaChannelVisibilityChanges | async" [(color)]="control.value"></alpha-component>\r
        </div>\r
    </div>\r
    <div class="controls-row presentation">\r
        <div class="column" [ngSwitch]="presentations[selectedPresentation]">\r
            <rgba-input-component *ngSwitchCase="'rgba'" [alpha]="control.alphaChannelVisibilityChanges | async" label [(color)]="control.value" [(hue)]="control.hue"></rgba-input-component>\r
            <hsla-input-component *ngSwitchCase="'hsla'" [alpha]="control.alphaChannelVisibilityChanges | async" label [(color)]="control.value" [(hue)]="control.hue"></hsla-input-component>\r
            <hex-input-component *ngSwitchCase="'hex'" label prefix="#" [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r
        </div>\r
        <div class="column type-column">\r
            <span class="type-btn" (click)="changePresentation()"></span>\r
        </div>\r
    </div>\r
</div>\r
\r
<color-presets-component *ngIf="control.presetsVisibilityChanges | async" [(color)]="control.value" [colorPresets]="control.presets" [(hue)]="control.hue"></color-presets-component>`, styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;width:230px;border-radius:2px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 1px 4px}:host ::ng-deep .controls .pointer{box-shadow:#0000004d 0 0 2px,#0000004d 0 1px 4px}:host ::ng-deep .reflection,:host ::ng-deep color-preset{border-radius:2px}:host ::ng-deep color-preset{box-shadow:inset #0000004d 0 0 2px}:host ::ng-deep color-preset,:host ::ng-deep color-preset-sublist{margin:0 0 0 12px}:host ::ng-deep color-preset:first-child,:host ::ng-deep color-preset-sublist:first-child{margin:0}:host ::ng-deep .sublist color-preset:hover,:host ::ng-deep .presets-row>color-preset:hover{transform:scale(1.18)}saturation-component{height:120px}.controls{padding:15px 15px 10px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.hue-alpha .column:first-child{width:42px;padding:0 10px 0 0}indicator-component{height:32px;width:32px;border-radius:50%}alpha-component{margin-top:8px}color-presets-component{border-top:1px solid #d0d0d0;padding:12px}color-presets-component ::ng-deep .presets-row{padding:12px 0 0}.type-btn{display:inline-block;height:20px;width:20px;background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==) no-repeat center;background-size:6px 12px}.type-btn:hover{background-color:#eee}.type-column{width:25px;text-align:right}.presentation{padding:12px 0 0}\n"] }]
}], ctorParameters: function() {
  return [{ type: ChangeDetectorRef }];
}, propDecorators: { color: [{
  type: Input
}], control: [{
  type: Input
}], colorChange: [{
  type: Output
}] } });
var SketchPickerComponent = class {
  constructor(cdr) {
    this.cdr = cdr;
    this.colorChange = new EventEmitter(false);
    this.subscriptions = [];
  }
  ngOnInit() {
    if (!this.control) {
      this.control = new ColorPickerControl();
    }
    if (this.color) {
      this.control.setValueFrom(this.color);
    }
    if (!this.control.hasPresets()) {
      this.control.setColorPresets([
        "#d0041b",
        "#8b572a",
        "#f5a623",
        "#f8e71c",
        "#7ed321",
        "#417506",
        "#bd10e0",
        "#9013fe",
        "#4a90e2",
        "#50e3c2",
        "#b8e986",
        "#030303",
        "#4a4a4a",
        "#9b9b9b",
        "#fff"
      ]);
    }
    this.subscriptions.push(this.control.valueChanges.subscribe((value) => {
      this.cdr.markForCheck();
      this.colorChange.emit(getValueByType(value, this.control.initType));
    }));
  }
  ngOnDestroy() {
    this.cdr.detach();
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  ngOnChanges(changes) {
    if (this.color && this.control && getValueByType(this.control.value, this.control.initType) !== this.color) {
      this.control.setValueFrom(this.color);
    }
  }
};
SketchPickerComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: SketchPickerComponent, deps: [{ token: ChangeDetectorRef }], target: FactoryTarget.Component });
SketchPickerComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: SketchPickerComponent, selector: "sketch-picker", inputs: { color: "color", control: "control" }, outputs: { colorChange: "colorChange" }, usesOnChanges: true, ngImport: core_exports, template: '<saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r\n\r\n<div class="controls">\r\n    <div class="controls-row hue-alpha">\r\n        <div class="column">\r\n            <hue-component [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r\n            <alpha-component *ngIf="control.alphaChannelVisibilityChanges | async" [(color)]="control.value"></alpha-component>\r\n        </div>\r\n        <div class="column indicator-column">\r\n            <indicator-component colorType="rgba" [color]="control.value"></indicator-component>\r\n        </div>\r\n    </div>\r\n    <div class="controls-row presentation">\r\n        <div class="column">\r\n            <hex-input-component label [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r\n        </div>\r\n        <div class="column">\r\n            <rgba-input-component [alpha]="control.alphaChannelVisibilityChanges | async" label [(color)]="control.value" [(hue)]="control.hue"></rgba-input-component>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<color-presets-component *ngIf="control.presetsVisibilityChanges | async" [(color)]="control.value" [colorPresets]="control.presets" [(hue)]="control.hue"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;padding:9px;width:220px;border-radius:4px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 1px 4px}saturation-component{height:146px;border-radius:2px;box-shadow:inset #0009 0 0 2px}saturation-component ::ng-deep .pointer{border-width:2px;box-shadow:#0009 0 0 2px;width:10px;height:10px}.controls{padding:4px 0 0}hue-component,alpha-component{height:10px;border-radius:2px;box-shadow:inset #0009 0 0 2px}hue-component{margin-bottom:4px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.indicator-column{width:25px}indicator-component{height:24px;width:100%;box-shadow:inset #0009 0 0 2px;border-radius:2px}color-presets-component{border-top:1px solid #e0e0e0;padding:10px 9px 0;margin:8px -9px 0}color-presets-component ::ng-deep .presets-row{padding:10px 0 0}:host indicator-component ::ng-deep svg{vertical-align:5%}.controls-row.hue-alpha{padding-bottom:9px}.controls-row.hue-alpha .column:first-child{padding-right:5px}.hue-alpha ::ng-deep .pointer{width:6px;margin:0 0 0 -3px;height:100%;top:0;border-radius:2px;border:1px solid #898989}.presentation .column:first-child{width:56px}.presentation ::ng-deep input{height:20px;font-size:11px}:host ::ng-deep .reflection,:host ::ng-deep color-preset{height:16px;width:16px;border-radius:2px}:host ::ng-deep color-preset{box-shadow:inset #0006 0 0 2px}:host ::ng-deep color-preset.selected{box-shadow:inset #0006 0 1px 4px}:host ::ng-deep .presets-row>color-preset,:host ::ng-deep .presets-row>color-preset-sublist{margin:0 0 0 10px}:host ::ng-deep .presets-row>color-preset:first-child,:host ::ng-deep .presets-row>color-preset-sublist:first-child{margin:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SaturationComponent, selector: "saturation-component", inputs: ["hue", "color"], outputs: ["colorChange"] }, { kind: "component", type: IndicatorComponent, selector: "indicator-component", inputs: ["color", "colorType"] }, { kind: "component", type: HueComponent, selector: "hue-component", inputs: ["hue", "color", "vertical"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: AlphaComponent, selector: "alpha-component", inputs: ["color", "vertical"], outputs: ["colorChange"] }, { kind: "component", type: RgbaComponent, selector: "rgba-input-component", inputs: ["hue", "color", "label", "alpha"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: HexComponent, selector: "hex-input-component", inputs: ["hue", "color", "label", "prefix"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: ColorPresetsComponent, selector: "color-presets-component", inputs: ["columns", "colorPresets", "hue", "color", "direction"], outputs: ["hueChange", "colorChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: SketchPickerComponent, decorators: [{
  type: Component,
  args: [{ selector: `sketch-picker`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r\n\r\n<div class="controls">\r\n    <div class="controls-row hue-alpha">\r\n        <div class="column">\r\n            <hue-component [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r\n            <alpha-component *ngIf="control.alphaChannelVisibilityChanges | async" [(color)]="control.value"></alpha-component>\r\n        </div>\r\n        <div class="column indicator-column">\r\n            <indicator-component colorType="rgba" [color]="control.value"></indicator-component>\r\n        </div>\r\n    </div>\r\n    <div class="controls-row presentation">\r\n        <div class="column">\r\n            <hex-input-component label [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r\n        </div>\r\n        <div class="column">\r\n            <rgba-input-component [alpha]="control.alphaChannelVisibilityChanges | async" label [(color)]="control.value" [(hue)]="control.hue"></rgba-input-component>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<color-presets-component *ngIf="control.presetsVisibilityChanges | async" [(color)]="control.value" [colorPresets]="control.presets" [(hue)]="control.hue"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;padding:9px;width:220px;border-radius:4px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 1px 4px}saturation-component{height:146px;border-radius:2px;box-shadow:inset #0009 0 0 2px}saturation-component ::ng-deep .pointer{border-width:2px;box-shadow:#0009 0 0 2px;width:10px;height:10px}.controls{padding:4px 0 0}hue-component,alpha-component{height:10px;border-radius:2px;box-shadow:inset #0009 0 0 2px}hue-component{margin-bottom:4px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.indicator-column{width:25px}indicator-component{height:24px;width:100%;box-shadow:inset #0009 0 0 2px;border-radius:2px}color-presets-component{border-top:1px solid #e0e0e0;padding:10px 9px 0;margin:8px -9px 0}color-presets-component ::ng-deep .presets-row{padding:10px 0 0}:host indicator-component ::ng-deep svg{vertical-align:5%}.controls-row.hue-alpha{padding-bottom:9px}.controls-row.hue-alpha .column:first-child{padding-right:5px}.hue-alpha ::ng-deep .pointer{width:6px;margin:0 0 0 -3px;height:100%;top:0;border-radius:2px;border:1px solid #898989}.presentation .column:first-child{width:56px}.presentation ::ng-deep input{height:20px;font-size:11px}:host ::ng-deep .reflection,:host ::ng-deep color-preset{height:16px;width:16px;border-radius:2px}:host ::ng-deep color-preset{box-shadow:inset #0006 0 0 2px}:host ::ng-deep color-preset.selected{box-shadow:inset #0006 0 1px 4px}:host ::ng-deep .presets-row>color-preset,:host ::ng-deep .presets-row>color-preset-sublist{margin:0 0 0 10px}:host ::ng-deep .presets-row>color-preset:first-child,:host ::ng-deep .presets-row>color-preset-sublist:first-child{margin:0}\n"] }]
}], ctorParameters: function() {
  return [{ type: ChangeDetectorRef }];
}, propDecorators: { color: [{
  type: Input
}], control: [{
  type: Input
}], colorChange: [{
  type: Output
}] } });
var CompactPickerComponent = class {
  constructor(cdr) {
    this.cdr = cdr;
    this.colorChange = new EventEmitter(false);
    this.subscriptions = [];
  }
  ngOnInit() {
    if (!this.control) {
      this.control = new ColorPickerControl();
    }
    if (this.color) {
      this.control.setValueFrom(this.color);
    }
    if (!this.control.hasPresets()) {
      this.control.setColorPresets([
        "#6da6e8",
        "#74c283",
        "#f9d948",
        "#f5943f",
        "#f66c6c",
        "#ef8ab8",
        "#696cd4",
        "#6c6c6c",
        "#f6f5f5"
      ]);
    }
    this.subscriptions.push(this.control.valueChanges.subscribe((value) => {
      this.cdr.markForCheck();
      this.colorChange.emit(getValueByType(value, this.control.initType));
    }));
  }
  ngOnDestroy() {
    this.cdr.detach();
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  ngOnChanges(changes) {
    if (this.color && this.control && getValueByType(this.control.value, this.control.initType) !== this.color) {
      this.control.setValueFrom(this.color);
    }
  }
};
CompactPickerComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: CompactPickerComponent, deps: [{ token: ChangeDetectorRef }], target: FactoryTarget.Component });
CompactPickerComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: CompactPickerComponent, selector: "compact-picker", inputs: { color: "color", control: "control" }, outputs: { colorChange: "colorChange" }, usesOnChanges: true, ngImport: core_exports, template: '<color-presets-component \r\n    *ngIf="control.presetsVisibilityChanges | async" \r\n    direction="down"\r\n    [columns]="9" \r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets" \r\n    [(hue)]="control.hue"></color-presets-component>\r\n\r\n<div class="controls">\r\n    <div class="controls-row saturation-hue">\r\n        <div class="column">\r\n            <saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r\n        </div>\r\n        <div class="column hue-column">\r\n            <hue-component vertical [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r\n        </div>\r\n    </div>\r\n    <div class="controls-row presentation">\r\n        <div class="column">\r\n            <svg class="pencil" viewBox="0 0 1024 1024">\r\n                <path d="M639.77,121.045l-48.598,84.2l112.215,64.8l48.6-84.205L639.77,121.045z M558.773,261.354\r\n                    L315.78,682.206l112.215,64.795L670.99,326.15L558.773,261.354z M690.816,75.691l74.922,43.286\r\n                    c41.682,24.045,55.52,76.564,31.725,117.784l-37.967,65.68l-32.398,56.11L451.706,835.594L282.452,947.303\r\n                    c-40.961,27.004-70.24,9.027-67.329-38.894l12.149-202.411l275.395-477.041l32.398-56.11l37.883-65.686\r\n                    C596.824,65.946,649.473,51.857,690.816,75.691z M274.689,883.015l120.908-79.818l-112.218-64.8L274.689,883.015z"/>\r\n            </svg>\r\n            <hex-input-component prefix="#" [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r\n        </div>\r\n        <div class="column">\r\n            <indicator-component colorType="hex" [color]="control.value"></indicator-component>\r\n        </div>\r\n    </div>\r\n</div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;width:240px;border-radius:3px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 0 4px}:host ::ng-deep .reflection{display:none}:host ::ng-deep color-preset{height:18px;width:18px;border-radius:50%;box-shadow:inset #0009 0 1px 1px}:host ::ng-deep .presets-row>color-preset,:host ::ng-deep .presets-row>color-preset-sublist{margin:0 0 0 6px}:host ::ng-deep .presets-row>color-preset:first-child,:host ::ng-deep .presets-row>color-preset-sublist:first-child{margin:0}:host ::ng-deep color-preset.selected,:host ::ng-deep .sublist color-preset:hover,:host ::ng-deep .presets-row>color-preset:hover{box-shadow:inset #0009 0 1px 6px}:host hue-component{width:100%;height:178px;box-shadow:inset #0009 0 0 2px}:host hue-component[vertical] ::ng-deep .pointer{width:auto;height:9px;left:-3px;right:-3px;margin:-4.5px 0 0;background:transparent;border:3px solid #fff;border-radius:5px;box-shadow:#0009 0 0 2px}:host indicator-component ::ng-deep svg{vertical-align:25%}color-presets-component{border-bottom:1px solid #e4e4e6;padding:9px 12px}color-presets-component ::ng-deep .presets-row{padding:10px 0 0}.controls{padding:10px 12px 12px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.controls-row.saturation-hue{padding-bottom:9px}.controls-row.saturation-hue .column:first-child{width:178px}saturation-component{height:178px;box-shadow:inset #0009 0 0 2px}saturation-component ::ng-deep .pointer{border-width:2px;box-shadow:#0009 0 0 2px}.hue-column{padding-left:14px}.controls-row.presentation{border:1px solid #e4e4e6;border-radius:3px;padding:6px 6px 6px 26px;position:relative}indicator-component{height:18px;width:18px;box-shadow:inset #0009 0 0 2px;border-radius:50%}hex-input-component ::ng-deep input{border:0;color:#817e81;margin:0;text-align:left;height:18px}.pencil{position:absolute;height:14px;width:14px;left:6px;top:50%;margin:-7px 0 0}.pencil svg{fill:#000}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SaturationComponent, selector: "saturation-component", inputs: ["hue", "color"], outputs: ["colorChange"] }, { kind: "component", type: IndicatorComponent, selector: "indicator-component", inputs: ["color", "colorType"] }, { kind: "component", type: HueComponent, selector: "hue-component", inputs: ["hue", "color", "vertical"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: HexComponent, selector: "hex-input-component", inputs: ["hue", "color", "label", "prefix"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: ColorPresetsComponent, selector: "color-presets-component", inputs: ["columns", "colorPresets", "hue", "color", "direction"], outputs: ["hueChange", "colorChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: CompactPickerComponent, decorators: [{
  type: Component,
  args: [{ selector: `compact-picker`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<color-presets-component \r\n    *ngIf="control.presetsVisibilityChanges | async" \r\n    direction="down"\r\n    [columns]="9" \r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets" \r\n    [(hue)]="control.hue"></color-presets-component>\r\n\r\n<div class="controls">\r\n    <div class="controls-row saturation-hue">\r\n        <div class="column">\r\n            <saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r\n        </div>\r\n        <div class="column hue-column">\r\n            <hue-component vertical [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r\n        </div>\r\n    </div>\r\n    <div class="controls-row presentation">\r\n        <div class="column">\r\n            <svg class="pencil" viewBox="0 0 1024 1024">\r\n                <path d="M639.77,121.045l-48.598,84.2l112.215,64.8l48.6-84.205L639.77,121.045z M558.773,261.354\r\n                    L315.78,682.206l112.215,64.795L670.99,326.15L558.773,261.354z M690.816,75.691l74.922,43.286\r\n                    c41.682,24.045,55.52,76.564,31.725,117.784l-37.967,65.68l-32.398,56.11L451.706,835.594L282.452,947.303\r\n                    c-40.961,27.004-70.24,9.027-67.329-38.894l12.149-202.411l275.395-477.041l32.398-56.11l37.883-65.686\r\n                    C596.824,65.946,649.473,51.857,690.816,75.691z M274.689,883.015l120.908-79.818l-112.218-64.8L274.689,883.015z"/>\r\n            </svg>\r\n            <hex-input-component prefix="#" [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r\n        </div>\r\n        <div class="column">\r\n            <indicator-component colorType="hex" [color]="control.value"></indicator-component>\r\n        </div>\r\n    </div>\r\n</div>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", ":host{display:block;width:240px;border-radius:3px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 0 4px}:host ::ng-deep .reflection{display:none}:host ::ng-deep color-preset{height:18px;width:18px;border-radius:50%;box-shadow:inset #0009 0 1px 1px}:host ::ng-deep .presets-row>color-preset,:host ::ng-deep .presets-row>color-preset-sublist{margin:0 0 0 6px}:host ::ng-deep .presets-row>color-preset:first-child,:host ::ng-deep .presets-row>color-preset-sublist:first-child{margin:0}:host ::ng-deep color-preset.selected,:host ::ng-deep .sublist color-preset:hover,:host ::ng-deep .presets-row>color-preset:hover{box-shadow:inset #0009 0 1px 6px}:host hue-component{width:100%;height:178px;box-shadow:inset #0009 0 0 2px}:host hue-component[vertical] ::ng-deep .pointer{width:auto;height:9px;left:-3px;right:-3px;margin:-4.5px 0 0;background:transparent;border:3px solid #fff;border-radius:5px;box-shadow:#0009 0 0 2px}:host indicator-component ::ng-deep svg{vertical-align:25%}color-presets-component{border-bottom:1px solid #e4e4e6;padding:9px 12px}color-presets-component ::ng-deep .presets-row{padding:10px 0 0}.controls{padding:10px 12px 12px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.controls-row.saturation-hue{padding-bottom:9px}.controls-row.saturation-hue .column:first-child{width:178px}saturation-component{height:178px;box-shadow:inset #0009 0 0 2px}saturation-component ::ng-deep .pointer{border-width:2px;box-shadow:#0009 0 0 2px}.hue-column{padding-left:14px}.controls-row.presentation{border:1px solid #e4e4e6;border-radius:3px;padding:6px 6px 6px 26px;position:relative}indicator-component{height:18px;width:18px;box-shadow:inset #0009 0 0 2px;border-radius:50%}hex-input-component ::ng-deep input{border:0;color:#817e81;margin:0;text-align:left;height:18px}.pencil{position:absolute;height:14px;width:14px;left:6px;top:50%;margin:-7px 0 0}.pencil svg{fill:#000}\n"] }]
}], ctorParameters: function() {
  return [{ type: ChangeDetectorRef }];
}, propDecorators: { color: [{
  type: Input
}], control: [{
  type: Input
}], colorChange: [{
  type: Output
}] } });
var GithubPickerComponent = class {
  constructor(cdr) {
    this.cdr = cdr;
    this.colorChange = new EventEmitter(false);
    this.columnsValue = 8;
    this.subscriptions = [];
  }
  get columns() {
    return this.columnsValue;
  }
  set columns(value) {
    this.columnsValue = !isNaN(parseFloat(value)) && !isNaN(Number(value)) ? Number(value) : "auto";
  }
  get width() {
    return this.columnsValue === "auto" ? `auto` : `${25 * this.columnsValue + 12}px`;
  }
  get columnsCount() {
    return this.columnsValue === "auto" ? this.control.presets.length : this.columnsValue;
  }
  ngOnInit() {
    if (!this.control) {
      this.control = new ColorPickerControl();
    }
    if (this.color) {
      this.control.setValueFrom(this.color);
    }
    if (!this.control.hasPresets()) {
      this.control.setColorPresets([
        "#b80000",
        "#db3e00",
        "#fccb00",
        "#008b02",
        "#006b76",
        "#1273de",
        "#004dcf",
        "#5300eb",
        "#eb9694",
        "#fad0c3",
        "#fef3bd",
        "#c1e1c5",
        "#bedadc",
        "#c4def6",
        "#bed3f3",
        "#d4c4fb"
      ]);
    }
    this.subscriptions.push(this.control.valueChanges.subscribe((value) => {
      this.cdr.markForCheck();
      this.colorChange.emit(getValueByType(value, this.control.initType));
    }));
  }
  ngOnDestroy() {
    this.cdr.detach();
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  ngOnChanges(changes) {
    if (this.color && this.control && getValueByType(this.control.value, this.control.initType) !== this.color) {
      this.control.setValueFrom(this.color);
    }
  }
};
GithubPickerComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: GithubPickerComponent, deps: [{ token: ChangeDetectorRef }], target: FactoryTarget.Component });
GithubPickerComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: GithubPickerComponent, selector: "github-picker", inputs: { color: "color", control: "control", columns: "columns" }, outputs: { colorChange: "colorChange" }, host: { properties: { "style.width": "this.width" } }, usesOnChanges: true, ngImport: core_exports, template: '<color-presets-component \r\n    direction="down"\r\n    [columns]="columnsCount"\r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;background:#fff;border:1px solid rgba(0,0,0,.2);box-shadow:#00000026 0 3px 12px;border-radius:4px;padding:5px}:host ::ng-deep color-preset,:host ::ng-deep color-preset-sublist{width:25px;height:25px}:host ::ng-deep color-preset:hover:after,:host ::ng-deep color-preset.selected:after{display:block;content:"\\a0";position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;z-index:10;border:2px solid #fff;box-shadow:#0003 0 0 5px 2px}\n'], dependencies: [{ kind: "component", type: ColorPresetsComponent, selector: "color-presets-component", inputs: ["columns", "colorPresets", "hue", "color", "direction"], outputs: ["hueChange", "colorChange"] }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: GithubPickerComponent, decorators: [{
  type: Component,
  args: [{ selector: `github-picker`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<color-presets-component \r\n    direction="down"\r\n    [columns]="columnsCount"\r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;background:#fff;border:1px solid rgba(0,0,0,.2);box-shadow:#00000026 0 3px 12px;border-radius:4px;padding:5px}:host ::ng-deep color-preset,:host ::ng-deep color-preset-sublist{width:25px;height:25px}:host ::ng-deep color-preset:hover:after,:host ::ng-deep color-preset.selected:after{display:block;content:"\\a0";position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;z-index:10;border:2px solid #fff;box-shadow:#0003 0 0 5px 2px}\n'] }]
}], ctorParameters: function() {
  return [{ type: ChangeDetectorRef }];
}, propDecorators: { color: [{
  type: Input
}], control: [{
  type: Input
}], columns: [{
  type: Input
}], colorChange: [{
  type: Output
}], width: [{
  type: HostBinding,
  args: ["style.width"]
}] } });
var SwatchesPickerComponent = class {
  constructor(cdr) {
    this.cdr = cdr;
    this.colorChange = new EventEmitter(false);
    this.control = new ColorPickerControl();
    this.childControl = new ColorPickerControl();
    this.subscriptions = [];
    this.mapColors = {
      "#E6315B": [
        "#fc8da7",
        "#fa7d9a",
        "#f56484",
        "#f04a71",
        "#e82c58",
        "#e31746",
        "#de0235",
        "#d60234",
        "#d10232",
        "#c70230",
        "#b8022c",
        "#ab0229",
        "#9c0225",
        "#8f0122",
        "#8c0122",
        "#82011f",
        "#78011b",
        "#690117",
        "#5c0012",
        "#4f0010",
        "#42000c"
      ],
      "#793183": [
        "#ef8dfc",
        "#eb7dfa",
        "#e664f5",
        "#dc4af0",
        "#d22ce8",
        "#cb17e3",
        "#c402de",
        "#c002d9",
        "#bb02d4",
        "#b002c7",
        "#a202b8",
        "#9702ab",
        "#8a029c",
        "#7e018f",
        "#7a018a",
        "#730182",
        "#6c0178",
        "#5e0169",
        "#54015c",
        "#49014f",
        "#3d0142"
      ],
      "#009DE7": [
        "#8dd9fc",
        "#7dd2fa",
        "#64c7f5",
        "#4abbf0",
        "#2cade8",
        "#17a2e3",
        "#0298de",
        "#0295d9",
        "#0291d4",
        "#0289c7",
        "#027eb8",
        "#0275ab",
        "#026b9c",
        "#01628f",
        "#015f8a",
        "#015982",
        "#015278",
        "#014869",
        "#013f5c",
        "#01364f",
        "#012e42"
      ],
      "#00B59C": [
        "#8dfeea",
        "#7dfbe4",
        "#63f4db",
        "#4befd2",
        "#2de7c6",
        "#16e2be",
        "#03deb7",
        "#01ddb6",
        "#01d4ae",
        "#01c7a4",
        "#01b897",
        "#01aa8b",
        "#019b80",
        "#019076",
        "#018c73",
        "#01836c",
        "#017763",
        "#016857",
        "#005c4e",
        "#005044",
        "#004239"
      ],
      "#FFCE00": [
        "#fce68d",
        "#fae17d",
        "#f5da64",
        "#f0cf4a",
        "#e8c22c",
        "#e5bc17",
        "#deb202",
        "#deb100",
        "#d4aa02",
        "#c7a002",
        "#b89302",
        "#ab8902",
        "#9c7d02",
        "#8f7301",
        "#8c7001",
        "#826801",
        "#786201",
        "#695601",
        "#5c4b00",
        "#4f4100",
        "#423700"
      ],
      "#FF4A21": [
        "#fca28d",
        "#fa947d",
        "#f57f64",
        "#f0694a",
        "#e84f2c",
        "#e33c17",
        "#de2a02",
        "#d92a02",
        "#d42902",
        "#c72602",
        "#b82302",
        "#ab2102",
        "#9c1e02",
        "#8f1b01",
        "#8a1a01",
        "#821901",
        "#781701",
        "#691300",
        "#5c1100",
        "#4f0e00",
        "#420c00"
      ],
      "#D6D5D6": [
        "#fff",
        "#f2f2f2",
        "#e5e5e5",
        "#d9d9d9",
        "#cccccc",
        "#bfbfbf",
        "#b3b3b3",
        "#a6a6a6",
        "#999999",
        "#8c8c8c",
        "#808080",
        "#737373",
        "#666666",
        "#595959",
        "#4d4d4d",
        "#424242",
        "#363636",
        "#262626",
        "#1a1a1a",
        "#0f0f0f",
        "#000"
      ]
    };
  }
  ngOnInit() {
    if (this.color) {
      this.childControl.setValueFrom(this.color);
    } else {
      this.control.setValueFrom("#E6315B");
    }
    this.control.setColorPresets([
      "#e6315b",
      "#793183",
      "#009de7",
      "#00b59c",
      "#ffce00",
      "#ff4a21",
      "#d6d5d6"
    ]);
    this.childControl.setColorPresets(this.mapColors["#E6315B"]);
    this.subscriptions.push(this.childControl.valueChanges.subscribe((value) => {
      this.colorChange.emit(getValueByType(value, this.childControl.initType));
    }));
    this.subscriptions.push(this.control.valueChanges.subscribe((value) => {
      this.cdr.markForCheck();
      const presets = this.mapColors[value.toHexString()];
      if (presets) {
        this.childControl.setColorPresets(presets);
      }
      this.colorChange.emit(getValueByType(this.childControl.value, this.childControl.initType));
    }));
  }
  ngOnDestroy() {
    this.cdr.detach();
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  ngOnChanges(changes) {
    if (this.color && this.control && getValueByType(this.control.value, this.control.initType) !== this.color) {
      this.childControl.setValueFrom(this.color);
    }
  }
};
SwatchesPickerComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: SwatchesPickerComponent, deps: [{ token: ChangeDetectorRef }], target: FactoryTarget.Component });
SwatchesPickerComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: SwatchesPickerComponent, selector: "swatches-picker", inputs: { color: "color" }, outputs: { colorChange: "colorChange" }, usesOnChanges: true, ngImport: core_exports, template: '<color-presets-component \r\n    [columns]="7"\r\n    direction="down"\r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets"></color-presets-component>\r\n<color-presets-component\r\n    class="child-list"\r\n    *ngIf="childControl.presets.length"\r\n    [columns]="7"\r\n    direction="down"\r\n    [(color)]="childControl.value" \r\n    [colorPresets]="childControl.presets"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;background:#fff;width:224px;border:1px solid rgba(0,0,0,.2);box-shadow:#0000004d 0 0 2px;border-radius:4px;padding:6px}:host ::ng-deep color-preset,:host ::ng-deep color-preset-sublist{width:30px;height:30px}:host ::ng-deep color-preset:hover:after,:host ::ng-deep color-preset.selected:after{display:block;content:"\\a0";position:absolute;left:3px;top:3px;bottom:3px;right:3px;z-index:10;border:3px solid #fff;box-shadow:#0003 0 0 5px 2px}:host ::ng-deep .presets-row:first-child color-preset:first-child,:host ::ng-deep .presets-row:first-child color-preset-sublist:first-child{border-radius:4px 0 0 4px}:host ::ng-deep .presets-row.last color-preset.last,:host ::ng-deep .presets-row.last color-preset-sublist.last{border-radius:0 4px 4px 0}:host ::ng-deep .child-list .presets-row.first color-preset.first,:host ::ng-deep .child-list .presets-row.first color-preset-sublist.first{border-radius:4px 0 0}:host ::ng-deep .child-list .presets-row.first color-preset.last,:host ::ng-deep .child-list .presets-row.first color-preset-sublist.last{border-radius:0 4px 0 0}:host ::ng-deep .child-list .presets-row.last color-preset.first,:host ::ng-deep .child-list .presets-row.last color-preset-sublist.first{border-radius:0 0 0 4px}:host ::ng-deep .child-list .presets-row.last color-preset.last,:host ::ng-deep .child-list .presets-row.last color-preset-sublist.last{border-radius:0 0 4px}:host ::ng-deep .child-list{margin-top:6px;border-top:1px solid #e5e5e5;padding:6px 0 0}:host ::ng-deep .child-list color-preset:hover:after,:host ::ng-deep .child-list color-preset.selected:after{content:"\\2714";font-size:18px;color:#fff;border:0;left:0;top:0;bottom:0;right:0;line-height:30px;box-shadow:none;text-align:center}\n'], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ColorPresetsComponent, selector: "color-presets-component", inputs: ["columns", "colorPresets", "hue", "color", "direction"], outputs: ["hueChange", "colorChange"] }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: SwatchesPickerComponent, decorators: [{
  type: Component,
  args: [{ selector: `swatches-picker`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<color-presets-component \r\n    [columns]="7"\r\n    direction="down"\r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets"></color-presets-component>\r\n<color-presets-component\r\n    class="child-list"\r\n    *ngIf="childControl.presets.length"\r\n    [columns]="7"\r\n    direction="down"\r\n    [(color)]="childControl.value" \r\n    [colorPresets]="childControl.presets"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;background:#fff;width:224px;border:1px solid rgba(0,0,0,.2);box-shadow:#0000004d 0 0 2px;border-radius:4px;padding:6px}:host ::ng-deep color-preset,:host ::ng-deep color-preset-sublist{width:30px;height:30px}:host ::ng-deep color-preset:hover:after,:host ::ng-deep color-preset.selected:after{display:block;content:"\\a0";position:absolute;left:3px;top:3px;bottom:3px;right:3px;z-index:10;border:3px solid #fff;box-shadow:#0003 0 0 5px 2px}:host ::ng-deep .presets-row:first-child color-preset:first-child,:host ::ng-deep .presets-row:first-child color-preset-sublist:first-child{border-radius:4px 0 0 4px}:host ::ng-deep .presets-row.last color-preset.last,:host ::ng-deep .presets-row.last color-preset-sublist.last{border-radius:0 4px 4px 0}:host ::ng-deep .child-list .presets-row.first color-preset.first,:host ::ng-deep .child-list .presets-row.first color-preset-sublist.first{border-radius:4px 0 0}:host ::ng-deep .child-list .presets-row.first color-preset.last,:host ::ng-deep .child-list .presets-row.first color-preset-sublist.last{border-radius:0 4px 0 0}:host ::ng-deep .child-list .presets-row.last color-preset.first,:host ::ng-deep .child-list .presets-row.last color-preset-sublist.first{border-radius:0 0 0 4px}:host ::ng-deep .child-list .presets-row.last color-preset.last,:host ::ng-deep .child-list .presets-row.last color-preset-sublist.last{border-radius:0 0 4px}:host ::ng-deep .child-list{margin-top:6px;border-top:1px solid #e5e5e5;padding:6px 0 0}:host ::ng-deep .child-list color-preset:hover:after,:host ::ng-deep .child-list color-preset.selected:after{content:"\\2714";font-size:18px;color:#fff;border:0;left:0;top:0;bottom:0;right:0;line-height:30px;box-shadow:none;text-align:center}\n'] }]
}], ctorParameters: function() {
  return [{ type: ChangeDetectorRef }];
}, propDecorators: { color: [{
  type: Input
}], colorChange: [{
  type: Output
}] } });
var IpPickerComponent = class {
  constructor() {
    this.colorChange = new EventEmitter(false);
    this.subscriptions = [];
  }
  ngOnInit() {
    if (!this.control) {
      this.control = new ColorPickerControl();
    }
    if (!this.control.hasPresets()) {
      this.control.setColorPresets([
        ["#f44336", "#ffebee", "#ffcdd2", "#EF9A9A", "#E57373", "#EF5350", "#F44336", "#E53935", "#D32F2F", "#C62828", "#B71C1C"],
        ["#E91E63", "#fce4ec", "#f8bbd0", "#f48fb1", "#f06292", "#ec407a", "#e91e63", "#d81b60", "#c2185b", "#ad1457", "#880e4f"],
        ["#9C27B0", "#F3e5f5", "#e1bee7", "#ce93d8", "#ba68c8", "#ab47bc", "#9c27b0", "#8e24aa", "#7b1fa2", "#6a1b9a", "#4a148c"],
        ["#673AB7", "#ede7f6", "#d1c4e9", "#b39ddb", "#9575cd", "#7e57c2", "#673ab7", "#5e35b1", "#512da8", "#4527a0", "#311b92"],
        ["#3F51B5", "#e8eaf6", "#c5cae9", "#9fa8da", "#7986cb", "#5c6bc0", "#3f51b5", "#3949ab", "#303f9f", "#283593", "#1a237e"],
        ["#2196F3", "#e3f2fd", "#bbdefb", "#90caf9", "#64b5f6", "#42a5f5", "#2196f3", "#1e88e5", "#1976d2", "#1565c0", "#0D47a1"],
        ["#03A9F4", "#e1f5fe", "#b3e5fc", "#81d4fa", "#4fc3f7", "#29b6f6", "#03a9f4", "#039be5", "#0288d1", "#0277bd", "#01579b"],
        ["#00BCD4", "#e0f7fa", "#b2ebf2", "#80deea", "#4dd0e1", "#26c6da", "#00bcd4", "#00acc1", "#0097a7", "#00838f", "#006064"],
        ["#009688", "#E0F2f1", "#b2dfdb", "#80cbc4", "#4db6ac", "#26a69a", "#009688", "#00897b", "#00796b", "#00695c", "#004d40"],
        ["#4CAF50", "#e8f5e9", "#c8e6c9", "#a5d6a7", "#81c784", "#66bb6a", "#4caf50", "#43a047", "#388e3c", "#2e7d32", "#1b5e20"],
        ["#8BC34A", "#f1f8e9", "#dcedc8", "#c5e1a5", "#aed581", "#9ccc65", "#8bc34a", "#7cb342", "#689f38", "#558b2f", "#33691e"],
        ["#cddc39", "#f9fbe7", "#f0f4c3", "#e6ee9c", "#dce775", "#d4e157", "#c0dc39", "#c0ca33", "#afb42b", "#9e9d24", "#827717"],
        ["#ffeb3b", "#fffde7", "#fff9c4", "#fff59d", "#fff176", "#ffee58", "#ffeb3b", "#fdd835", "#fbc02d", "#f9a825", "#f57f17"],
        ["#ffc107", "#fff8e1", "#ffecb3", "#ffe082", "#ffd54f", "#ffca28", "#ffc107", "#ffb300", "#ffa000", "#ff8f00", "#ff6f00"],
        ["#ff9800", "#fff3e0", "#ffe0b2", "#ffcc80", "#ffb74d", "#ffa726", "#ff9800", "#fb8c00", "#f57c00", "#ef6c00", "#e65100"],
        ["#ff5722", "#fbe9e7", "#ffccbc", "#ffab91", "#ff8a65", "#ff7043", "#ff5722", "#f4511e", "#e64a19", "#d84315", "#bf360c"],
        ["#795548", "#efebe9", "#d7ccc8", "#bcaaa4", "#a1887f", "#8d6e63", "#795548", "#6d4c41", "#5d4037", "#4e342e", "#3e2723"],
        ["#9e9e9e", "#fafafa", "#f5f5f5", "#eee", "#e0e0e0", "#bdbdbd", "#9e9e9e", "#757575", "#616161", "#424242", "#212121"],
        ["#607d8b", "#eceff1", "#cfd8dc", "#b0bec5", "#90a4ae", "#78909c", "#60708b", "#546e7a", "#455a64", "#37474f", "#263238"]
      ]);
    }
    if (this.color) {
      this.control.setValueFrom(this.color);
    }
    this.subscriptions.push(this.control.valueChanges.subscribe((value) => {
      this.colorChange.emit(getValueByType(value, this.control.initType));
    }));
  }
  ngOnDestroy() {
    this.subscriptions.forEach((subscription) => subscription.unsubscribe());
    this.subscriptions.length = 0;
  }
  ngOnChanges(changes) {
    if (this.color && this.control && getValueByType(this.control.value, this.control.initType) !== this.color) {
      this.control.setValueFrom(this.color);
    }
  }
};
IpPickerComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: IpPickerComponent, deps: [], target: FactoryTarget.Component });
IpPickerComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: IpPickerComponent, selector: "ip-picker", inputs: { color: "color", control: "control" }, outputs: { colorChange: "colorChange" }, usesOnChanges: true, ngImport: core_exports, template: '<div class="controls">\r\n    <div class="controls-row presentation">\r\n        <indicator-component colorType="hex" [color]="control.value"></indicator-component>\r\n        <hex-input-component [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r\n    </div>\r\n\r\n    <div class="controls-row saturation-hue-alpha">\r\n        <div class="column">\r\n            <saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r\n            <alpha-component [(color)]="control.value"></alpha-component>\r\n        </div>\r\n        <div class="column hue-column">\r\n            <hue-component vertical [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r\n        </div>\r\n    </div>\r\n</div>\r\n<color-presets-component \r\n    *ngIf="control.presetsVisibilityChanges | async" \r\n    [columns]="8" \r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets" \r\n    [(hue)]="control.hue"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;width:240px;border-radius:3px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 0 4px}.controls{padding:6px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.controls-row.saturation-hue-alpha .column:first-child{width:178px}saturation-component{height:178px;box-shadow:inset #0009 0 0 2px;margin-bottom:16px}.controls-row.presentation{border:1px solid #e4e4e6;border-radius:3px;padding:6px 6px 6px 36px;position:relative;margin:0 0 6px}.controls-row.saturation-hue-alpha{padding:0 0 6px}indicator-component{height:22px;width:22px;box-shadow:inset #0009 0 0 2px;position:absolute;left:4px;top:50%;border-radius:50%;margin-top:-11px}:host indicator-component ::ng-deep svg{vertical-align:15%}hex-input-component ::ng-deep input{border:0;color:#817e81;margin:0;text-align:left;height:18px}.hue-column{vertical-align:top;padding:0 10px 0 16px}:host hue-component{width:100%;height:178px;box-shadow:inset #0009 0 0 2px}:host hue-component[vertical] ::ng-deep .pointer{width:auto;height:0;left:0;right:0;margin:0;background:transparent}:host alpha-component ::ng-deep .pointer{width:0;height:auto;top:0;bottom:0;margin:0;background:transparent}:host hue-component[vertical] ::ng-deep .pointer:after,:host hue-component[vertical] ::ng-deep .pointer:before{top:-5.5px;display:block;content:"\\a0";position:absolute;height:0;width:0;border-top:5px solid transparent;border-bottom:5px solid transparent}:host hue-component[vertical] ::ng-deep .pointer:after{border-left:8px solid #666;left:-8px}:host hue-component[vertical] ::ng-deep .pointer:before{border-right:8px solid #666;right:-8px}:host alpha-component{height:24px}:host alpha-component ::ng-deep .pointer:after,:host alpha-component ::ng-deep .pointer:before{left:-5.5px;display:block;content:"\\a0";position:absolute;height:0;width:0;border-left:5px solid transparent;border-right:5px solid transparent}:host alpha-component ::ng-deep .pointer:after{border-top:8px solid #666;top:-8px}:host alpha-component ::ng-deep .pointer:before{border-bottom:8px solid #666;bottom:-8px}\n'], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SaturationComponent, selector: "saturation-component", inputs: ["hue", "color"], outputs: ["colorChange"] }, { kind: "component", type: IndicatorComponent, selector: "indicator-component", inputs: ["color", "colorType"] }, { kind: "component", type: HueComponent, selector: "hue-component", inputs: ["hue", "color", "vertical"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: AlphaComponent, selector: "alpha-component", inputs: ["color", "vertical"], outputs: ["colorChange"] }, { kind: "component", type: HexComponent, selector: "hex-input-component", inputs: ["hue", "color", "label", "prefix"], outputs: ["hueChange", "colorChange"] }, { kind: "component", type: ColorPresetsComponent, selector: "color-presets-component", inputs: ["columns", "colorPresets", "hue", "color", "direction"], outputs: ["hueChange", "colorChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: IpPickerComponent, decorators: [{
  type: Component,
  args: [{ selector: `ip-picker`, changeDetection: ChangeDetectionStrategy.OnPush, template: '<div class="controls">\r\n    <div class="controls-row presentation">\r\n        <indicator-component colorType="hex" [color]="control.value"></indicator-component>\r\n        <hex-input-component [(color)]="control.value" [(hue)]="control.hue"></hex-input-component>\r\n    </div>\r\n\r\n    <div class="controls-row saturation-hue-alpha">\r\n        <div class="column">\r\n            <saturation-component [hue]="control.hue" [(color)]="control.value"></saturation-component>\r\n            <alpha-component [(color)]="control.value"></alpha-component>\r\n        </div>\r\n        <div class="column hue-column">\r\n            <hue-component vertical [(hue)]="control.hue" [(color)]="control.value"></hue-component>\r\n        </div>\r\n    </div>\r\n</div>\r\n<color-presets-component \r\n    *ngIf="control.presetsVisibilityChanges | async" \r\n    [columns]="8" \r\n    [(color)]="control.value" \r\n    [colorPresets]="control.presets" \r\n    [(hue)]="control.hue"></color-presets-component>', styles: [":host,:host ::ng-deep *{padding:0;margin:0;box-sizing:border-box}\n", '@charset "UTF-8";:host{display:block;width:240px;border-radius:3px;background:#fff;box-shadow:#0000004d 0 0 2px,#0000004d 0 0 4px}.controls{padding:6px}.controls-row{display:table;width:100%}.column{display:table-cell;vertical-align:middle}.controls-row.saturation-hue-alpha .column:first-child{width:178px}saturation-component{height:178px;box-shadow:inset #0009 0 0 2px;margin-bottom:16px}.controls-row.presentation{border:1px solid #e4e4e6;border-radius:3px;padding:6px 6px 6px 36px;position:relative;margin:0 0 6px}.controls-row.saturation-hue-alpha{padding:0 0 6px}indicator-component{height:22px;width:22px;box-shadow:inset #0009 0 0 2px;position:absolute;left:4px;top:50%;border-radius:50%;margin-top:-11px}:host indicator-component ::ng-deep svg{vertical-align:15%}hex-input-component ::ng-deep input{border:0;color:#817e81;margin:0;text-align:left;height:18px}.hue-column{vertical-align:top;padding:0 10px 0 16px}:host hue-component{width:100%;height:178px;box-shadow:inset #0009 0 0 2px}:host hue-component[vertical] ::ng-deep .pointer{width:auto;height:0;left:0;right:0;margin:0;background:transparent}:host alpha-component ::ng-deep .pointer{width:0;height:auto;top:0;bottom:0;margin:0;background:transparent}:host hue-component[vertical] ::ng-deep .pointer:after,:host hue-component[vertical] ::ng-deep .pointer:before{top:-5.5px;display:block;content:"\\a0";position:absolute;height:0;width:0;border-top:5px solid transparent;border-bottom:5px solid transparent}:host hue-component[vertical] ::ng-deep .pointer:after{border-left:8px solid #666;left:-8px}:host hue-component[vertical] ::ng-deep .pointer:before{border-right:8px solid #666;right:-8px}:host alpha-component{height:24px}:host alpha-component ::ng-deep .pointer:after,:host alpha-component ::ng-deep .pointer:before{left:-5.5px;display:block;content:"\\a0";position:absolute;height:0;width:0;border-left:5px solid transparent;border-right:5px solid transparent}:host alpha-component ::ng-deep .pointer:after{border-top:8px solid #666;top:-8px}:host alpha-component ::ng-deep .pointer:before{border-bottom:8px solid #666;bottom:-8px}\n'] }]
}], ctorParameters: function() {
  return [];
}, propDecorators: { color: [{
  type: Input
}], control: [{
  type: Input
}], colorChange: [{
  type: Output
}] } });
var ColorPickerModule = class _ColorPickerModule {
  static forRoot(configuration) {
    return {
      ngModule: _ColorPickerModule,
      providers: [
        { provide: ColorPickerConfig, useValue: configuration || new ColorPickerConfig() }
      ]
    };
  }
};
ColorPickerModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerModule, deps: [], target: FactoryTarget.NgModule });
ColorPickerModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerModule, declarations: [
  SaturationComponent,
  IndicatorComponent,
  HueComponent,
  AlphaComponent,
  RgbaComponent,
  HslaComponent,
  HexComponent,
  ColorPresetsComponent,
  ColorPresetComponent,
  ColorPresetSublist,
  ColorPickerInputDirective,
  ChunksPipe,
  ReversePipe,
  /**
   * prepared components
   */
  ChromePickerComponent,
  SketchPickerComponent,
  SwatchesPickerComponent,
  GithubPickerComponent,
  CompactPickerComponent,
  IpPickerComponent
], imports: [CommonModule], exports: [
  SaturationComponent,
  IndicatorComponent,
  HueComponent,
  AlphaComponent,
  RgbaComponent,
  HslaComponent,
  HexComponent,
  ColorPresetsComponent,
  ChromePickerComponent,
  SketchPickerComponent,
  SwatchesPickerComponent,
  GithubPickerComponent,
  CompactPickerComponent,
  IpPickerComponent
] });
ColorPickerModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerModule, providers: [
  ColorPickerConfig
], imports: [CommonModule] });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: core_exports, type: ColorPickerModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [
      CommonModule
    ],
    providers: [
      ColorPickerConfig
    ],
    declarations: [
      SaturationComponent,
      IndicatorComponent,
      HueComponent,
      AlphaComponent,
      RgbaComponent,
      HslaComponent,
      HexComponent,
      ColorPresetsComponent,
      ColorPresetComponent,
      ColorPresetSublist,
      ColorPickerInputDirective,
      ChunksPipe,
      ReversePipe,
      /**
       * prepared components
       */
      ChromePickerComponent,
      SketchPickerComponent,
      SwatchesPickerComponent,
      GithubPickerComponent,
      CompactPickerComponent,
      IpPickerComponent
    ],
    exports: [
      SaturationComponent,
      IndicatorComponent,
      HueComponent,
      AlphaComponent,
      RgbaComponent,
      HslaComponent,
      HexComponent,
      ColorPresetsComponent,
      ChromePickerComponent,
      SketchPickerComponent,
      SwatchesPickerComponent,
      GithubPickerComponent,
      CompactPickerComponent,
      IpPickerComponent
    ]
  }]
}] });

// projects/aimmo-components/color-picker/src/aimmo-color-picker.component.ts
var DEFAULT_COLOR = "#408080";
var _a20;
var AimmoColorPickerComponent = (_a20 = class {
  constructor() {
    this.control = new ColorPickerControl();
    this.closed = new EventEmitter();
  }
  set color(color) {
    this.control.setValueFrom(color ?? DEFAULT_COLOR);
  }
  onConfirm() {
    this.closed.emit(this.control.value.toHexString());
  }
  onClose() {
    this.closed.emit();
  }
}, _a20.propDecorators = {
  confirmLabel: [{ type: Input }],
  closeTooltip: [{ type: Input }],
  closed: [{ type: Output }],
  color: [{ type: Input }]
}, _a20);
AimmoColorPickerComponent = __decorate([
  Component({
    selector: "aimmo-color-picker",
    template: aimmo_color_picker_component_default,
    standalone: true,
    imports: [
      ColorPickerModule,
      AimButtonHostingDirective,
      AimButtonComponent
    ],
    styles: [aimmo_color_picker_component_default2]
  })
], AimmoColorPickerComponent);

// projects/eimmo-common/dialogs/src/class-items-dialog/color-picker-renderer/color-picker-renderer.component.ts
var ColorPickerRendererComponent = class ColorPickerRendererComponent2 {
  constructor() {
    this.positions = [
      new ConnectionPositionPair({ originX: "end", originY: "center" }, { overlayX: "start", overlayY: "top" }, 5),
      new ConnectionPositionPair({ originX: "end", originY: "center" }, { overlayX: "start", overlayY: "bottom" }, 5)
    ];
    this.editable = false;
    this.isColorPickerOpened = false;
  }
  agInit(params) {
    this.pickedColor = validateHex(params.value) ? params.value : "";
    this.editable = params.editable;
    this.params = params;
  }
  onClickColorPicker() {
    if (this.editable) {
      this.isColorPickerOpened = true;
    }
  }
  onCloseColorPicker() {
    this.isColorPickerOpened = false;
  }
  onSelectColor(color) {
    this.isColorPickerOpened = false;
    if (color) {
      this.pickedColor = color;
      this.params.setValue(color);
    }
  }
  refresh(params) {
    this.params = params;
    this.pickedColor = validateHex(params.value) ? params.value : "";
    return true;
  }
};
ColorPickerRendererComponent = __decorate([
  Component({
    selector: "eimmo-common-color-picker-cell-renderer",
    template: color_picker_renderer_component_default,
    standalone: true,
    imports: [
      MatRippleModule,
      CdkOverlayOrigin,
      CdkConnectedOverlay,
      AimmoColorPickerComponent,
      TranslateModule
    ],
    styles: [color_picker_renderer_component_default2]
  })
], ColorPickerRendererComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/delete-button/delete-button.component.html
var delete_button_component_default = '<aim-icon class="delete-icon" icon="close" [class.visible]="deletable" (click)="onClickDelete()">close</aim-icon>\n';

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/delete-button/delete-button.component.scss
var delete_button_component_default2 = "/* projects/eimmo-common/dialogs/src/class-items-dialog/delete-button/delete-button.component.scss */\n:host {\n  height: 100%;\n}\n.delete-icon {\n  visibility: hidden;\n  vertical-align: middle;\n}\n.delete-icon.visible {\n  visibility: visible;\n  cursor: pointer;\n}\n";

// projects/eimmo-common/dialogs/src/class-items-dialog/delete-button/delete-button.component.ts
var DeleteButtonComponent = class DeleteButtonComponent2 {
  constructor() {
    this.deletable = false;
    this.deleteButtonStatus = DeleteButtonStatus.hidden;
  }
  agInit(params) {
    this.params = params;
    this.deleteButtonStatus = params.value;
    this.deletable = this.hasRowData(params.data);
  }
  refresh(params) {
    this.params = params;
    this.deleteButtonStatus = params.value;
    this.deletable = this.hasRowData(params.data);
    return true;
  }
  onClickDelete() {
    if (!this.deletable) {
      return;
    }
    this.params.setValue(DeleteButtonStatus.deleted);
  }
  hasRowData(data) {
    return Boolean(data.color || data.name || data.groupName || data.value);
  }
};
DeleteButtonComponent = __decorate([
  Component({
    selector: "eimmo-common-delete-button",
    template: delete_button_component_default,
    standalone: true,
    imports: [AimIconComponent],
    styles: [delete_button_component_default2]
  })
], DeleteButtonComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/max-length-editor/max-length-cell-editor.component.html
var max_length_cell_editor_component_default = '<input #maxLengthInput class="input-box" type="text" [(ngModel)]="value" [maxLength]="maxLength">\n<span class="length-info">({{value.length}}/{{maxLength}})</span>\n';

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/max-length-editor/max-length-cell-editor.component.scss
var max_length_cell_editor_component_default2 = "/* projects/eimmo-common/dialogs/src/class-items-dialog/max-length-editor/max-length-cell-editor.component.scss */\n:host {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  width: 100%;\n  height: 100%;\n}\n.input-box {\n  flex: 1;\n  border: none;\n  background: none;\n  width: 50px;\n  height: 100%;\n  padding-left: 6px;\n}\n.input-box:focus {\n  outline: none;\n}\n.length-info {\n  color: #737373;\n}\n";

// projects/eimmo-common/dialogs/src/class-items-dialog/max-length-editor/max-length-cell-editor.component.ts
var _a21;
var MaxLengthCellEditorComponent = (_a21 = class {
  constructor() {
    this.maxLength = CLASS_NAME_MAX_LENGTH;
    this.value = "";
  }
  agInit(params) {
    this.value = params.value ?? "";
    setTimeout(() => this.maxLengthInput?.nativeElement?.focus());
  }
  getValue() {
    return this.value;
  }
}, _a21.propDecorators = {
  maxLengthInput: [{ type: ViewChild, args: ["maxLengthInput", { static: false }] }]
}, _a21);
MaxLengthCellEditorComponent = __decorate([
  Component({
    selector: "eimmo-common-max-length-editor",
    template: max_length_cell_editor_component_default,
    standalone: true,
    imports: [FormsModule],
    styles: [max_length_cell_editor_component_default2]
  })
], MaxLengthCellEditorComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/segmentation-type-renderer/segmentation-type-renderer.component.html
var segmentation_type_renderer_component_default = `<aim-tag-chip [class.editable]="editable" (click)="onClick()">{{ isSemantic ? 'Semantic' : 'Instance' }}</aim-tag-chip>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/segmentation-type-renderer/segmentation-type-renderer.component.scss
var segmentation_type_renderer_component_default2 = "/* projects/eimmo-common/dialogs/src/class-items-dialog/segmentation-type-renderer/segmentation-type-renderer.component.scss */\n:host {\n  height: 100%;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.editable {\n  cursor: pointer;\n}\n";

// projects/eimmo-common/dialogs/src/class-items-dialog/segmentation-type-renderer/segmentation-type-renderer.component.ts
var SegmentationTypeRendererComponent = class SegmentationTypeRendererComponent2 {
  constructor() {
    this.isSemantic = true;
    this.editable = false;
  }
  agInit(params) {
    this.params = params;
    this.isSemantic = params.value;
    this.editable = params.editable;
  }
  refresh(params) {
    this.params = params;
    this.isSemantic = params.value;
    return true;
  }
  onClick() {
    if (this.editable) {
      this.isSemantic = !this.isSemantic;
      this.params.setValue(this.isSemantic);
    }
  }
};
SegmentationTypeRendererComponent = __decorate([
  Component({
    selector: "eimmo-common-segmentation-type-renderer",
    template: segmentation_type_renderer_component_default,
    standalone: true,
    imports: [AimTagChipModule],
    styles: [segmentation_type_renderer_component_default2]
  })
], SegmentationTypeRendererComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/spec-editor/spec-editor.component.html
var spec_editor_component_default = `<div class="row-data-area" (click)="onClickRowDataArea()">
  <button class="button-area"></button>
</div>
<ngx-monaco-editor
    (init)="onInit($event)"
    (keydown)="onKeyDown($event)"
    [options]="{ theme: 'vs-dark', language: 'json' }"
    class="monaco-editor"/>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/spec-editor/spec-editor.component.scss
var spec_editor_component_default2 = "/* projects/eimmo-common/dialogs/src/class-items-dialog/spec-editor/spec-editor.component.scss */\n.row-data-area {\n  height: 43px;\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: flex-end;\n  align-content: stretch;\n  align-items: stretch;\n  max-height: 100%;\n}\n.row-data-area .button-area {\n  background: none;\n  border: none;\n  margin: 8px;\n  width: 42px;\n  height: 26px;\n}\n.monaco-editor {\n  display: block;\n  width: 770px;\n  height: 200px;\n  max-width: 100%;\n}\n";

// node_modules/@materia-ui/ngx-monaco-editor/fesm2020/materia-ui-ngx-monaco-editor.mjs
var MONACO_PATH = "MONACO_PATH";
var MonacoEditorLoaderService = class {
  constructor(ngZone, monacoPathConfig) {
    this.ngZone = ngZone;
    this.monacoPathConfig = monacoPathConfig;
    this.isMonacoLoaded$ = new BehaviorSubject(false);
    this._monacoPath = "assets/monaco-editor/min/vs";
    if (window.monacoEditorAlreadyInitialized) {
      ngZone.run(() => this.isMonacoLoaded$.next(true));
      return;
    }
    window.monacoEditorAlreadyInitialized = true;
    if (this.monacoPathConfig) {
      this.monacoPath = this.monacoPathConfig;
    }
    this.loadMonaco();
  }
  set monacoPath(value) {
    if (value) {
      this._monacoPath = value;
    }
  }
  loadMonaco() {
    const onGotAmdLoader = () => {
      let vsPath = this._monacoPath;
      window.amdRequire = window.require;
      const isElectron2 = !!this.nodeRequire;
      const isPathUrl = vsPath.includes("http");
      if (isElectron2) {
        window.require = this.nodeRequire;
        if (!isPathUrl) {
          const path = window.require("path");
          vsPath = path.resolve(window.__dirname, this._monacoPath);
        }
      }
      window.amdRequire.config({ paths: { vs: vsPath } });
      window.amdRequire(["vs/editor/editor.main"], () => {
        this.ngZone.run(() => this.isMonacoLoaded$.next(true));
      }, (error) => console.error("Error loading monaco-editor: ", error));
    };
    const isAmdLoaderAvailable = !!window.amdRequire;
    if (isAmdLoaderAvailable) {
      return onGotAmdLoader();
    }
    const isElectron = !!window.require;
    if (isElectron) {
      this.addElectronFixScripts();
      this.nodeRequire = window.require;
    }
    const loaderScript = document.createElement("script");
    loaderScript.type = "text/javascript";
    loaderScript.src = `${this._monacoPath}/loader.js`;
    loaderScript.addEventListener("load", onGotAmdLoader);
    document.body.appendChild(loaderScript);
  }
  addElectronFixScripts() {
    const electronFixScript = document.createElement("script");
    const inlineScript = document.createTextNode("self.module = undefined;");
    const inlineScript2 = document.createTextNode("self.process.browser = true;");
    electronFixScript.appendChild(inlineScript);
    electronFixScript.appendChild(inlineScript2);
    document.body.appendChild(electronFixScript);
  }
};
MonacoEditorLoaderService.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorLoaderService, deps: [{ token: NgZone }, { token: MONACO_PATH, optional: true }], target: FactoryTarget.Injectable });
MonacoEditorLoaderService.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorLoaderService, providedIn: "root" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorLoaderService, decorators: [{
  type: Injectable,
  args: [{ providedIn: "root" }]
}], ctorParameters: function() {
  return [{ type: NgZone }, { type: void 0, decorators: [{
    type: Optional
  }, {
    type: Inject,
    args: [MONACO_PATH]
  }] }];
} });
var MonacoEditorLoaderDirective = class {
  constructor(templateRef, viewContainer, monacoEditorLoaderService) {
    this.templateRef = templateRef;
    this.viewContainer = viewContainer;
    this.monacoEditorLoaderService = monacoEditorLoaderService;
    this.isMonacoLoaded$ = this.monacoEditorLoaderService.isMonacoLoaded$.asObservable();
    this.destroyed$ = new Subject();
  }
  ngOnInit() {
    this.isMonacoLoaded$.pipe(takeUntil(this.destroyed$)).subscribe((loaded) => {
      if (!loaded) {
        return this.viewContainer.clear();
      }
      this.viewContainer.createEmbeddedView(this.templateRef);
    });
  }
  ngOnDestroy() {
    this.destroyed$.next();
    this.destroyed$.complete();
  }
};
MonacoEditorLoaderDirective.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorLoaderDirective, deps: [{ token: TemplateRef }, { token: ViewContainerRef }, { token: MonacoEditorLoaderService }], target: FactoryTarget.Directive });
MonacoEditorLoaderDirective.\u0275dir = \u0275\u0275ngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: MonacoEditorLoaderDirective, selector: "[ngxLoadMonacoEditor]", ngImport: core_exports });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorLoaderDirective, decorators: [{
  type: Directive,
  args: [{ selector: "[ngxLoadMonacoEditor]" }]
}], ctorParameters: function() {
  return [{ type: TemplateRef }, { type: ViewContainerRef }, { type: MonacoEditorLoaderService }];
} });
var MonacoEditorComponent = class {
  constructor(monacoLoader) {
    this.monacoLoader = monacoLoader;
    this.init = new EventEmitter();
    this.onTouched = () => {
    };
    this.onErrorStatusChange = () => {
    };
    this.propagateChange = () => {
    };
  }
  get model() {
    return this.editor && this.editor.getModel();
  }
  get modelMarkers() {
    return this.model && monaco.editor.getModelMarkers({
      resource: this.model.uri
    });
  }
  ngOnInit() {
    this.monacoLoader.isMonacoLoaded$.pipe(filter((isLoaded) => isLoaded), take(1)).subscribe(() => {
      this.initEditor();
    });
  }
  ngOnChanges(changes) {
    if (this.editor && changes.options && !changes.options.firstChange) {
      const _a47 = changes.options.currentValue, { language: toLanguage, theme: toTheme } = _a47, options = __objRest(_a47, ["language", "theme"]);
      const { language: fromLanguage, theme: fromTheme } = changes.options.previousValue;
      if (fromLanguage !== toLanguage) {
        monaco.editor.setModelLanguage(this.editor.getModel(), this.options && this.options.language ? this.options.language : "text");
      }
      if (fromTheme !== toTheme) {
        monaco.editor.setTheme(toTheme);
      }
      this.editor.updateOptions(options);
    }
    if (this.editor && changes.uri) {
      const toUri = changes.uri.currentValue;
      const fromUri = changes.uri.previousValue;
      if (fromUri && !toUri || !fromUri && toUri || toUri && fromUri && toUri.path !== fromUri.path) {
        const value = this.editor.getValue();
        if (this.modelUriInstance) {
          this.modelUriInstance.dispose();
        }
        let existingModel;
        if (toUri) {
          existingModel = monaco.editor.getModels().find((model) => model.uri.path === toUri.path);
        }
        this.modelUriInstance = existingModel ? existingModel : monaco.editor.createModel(value, this.options.language || "text", this.uri);
        this.editor.setModel(this.modelUriInstance);
      }
    }
  }
  writeValue(value) {
    this.value = value;
    if (this.editor && value) {
      this.editor.setValue(value);
    } else if (this.editor) {
      this.editor.setValue("");
    }
  }
  registerOnChange(fn) {
    this.propagateChange = fn;
  }
  registerOnTouched(fn) {
    this.onTouched = fn;
  }
  validate() {
    return !this.parsedError ? null : {
      monaco: {
        value: this.parsedError.split("|")
      }
    };
  }
  registerOnValidatorChange(fn) {
    this.onErrorStatusChange = fn;
  }
  initEditor() {
    const options = {
      value: [this.value].join("\n"),
      language: "text",
      automaticLayout: true,
      scrollBeyondLastLine: false,
      theme: "vc"
    };
    this.editor = monaco.editor.create(this.editorContent.nativeElement, this.options ? __spreadValues(__spreadValues({}, options), this.options) : options);
    this.registerEditorListeners();
    this.init.emit(this.editor);
  }
  registerEditorListeners() {
    this.editor.onDidChangeModelContent(() => {
      this.propagateChange(this.editor.getValue());
    });
    this.editor.onDidChangeModelDecorations(() => {
      const currentParsedError = this.modelMarkers.map(({ message }) => message).join("|");
      const hasValidationStatusChanged = this.parsedError !== currentParsedError;
      if (hasValidationStatusChanged) {
        this.parsedError = currentParsedError;
        this.onErrorStatusChange();
      }
    });
    this.editor.onDidBlurEditorText(() => {
      this.onTouched();
    });
  }
  ngOnDestroy() {
    if (this.editor) {
      this.editor.dispose();
    }
  }
};
MonacoEditorComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorComponent, deps: [{ token: MonacoEditorLoaderService }], target: FactoryTarget.Component });
MonacoEditorComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: MonacoEditorComponent, selector: "ngx-monaco-editor", inputs: { options: "options", uri: "uri" }, outputs: { init: "init" }, providers: [
  {
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(() => MonacoEditorComponent),
    multi: true
  },
  {
    provide: NG_VALIDATORS,
    useExisting: forwardRef(() => MonacoEditorComponent),
    multi: true
  }
], viewQueries: [{ propertyName: "editorContent", first: true, predicate: ["editor"], descendants: true, static: true }], usesOnChanges: true, ngImport: core_exports, template: `<div #container class="editor-container" fxFlex>
		<div
			#editor
			class="monaco-editor"
		></div>
</div>`, isInline: true, styles: [".monaco-editor{position:absolute;top:0;bottom:0;left:0;right:0}.editor-container{overflow:hidden;position:relative;display:table;width:100%;height:100%;min-width:0}\n"], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorComponent, decorators: [{
  type: Component,
  args: [{
    selector: "ngx-monaco-editor",
    template: `<div #container class="editor-container" fxFlex>
		<div
			#editor
			class="monaco-editor"
		></div>
</div>`,
    styles: [
      `
.monaco-editor {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;

}
.editor-container {
	overflow: hidden;
	position: relative;
	display: table;
	width: 100%;
  height: 100%;
  min-width: 0;
}`
    ],
    changeDetection: ChangeDetectionStrategy.OnPush,
    providers: [
      {
        provide: NG_VALUE_ACCESSOR,
        useExisting: forwardRef(() => MonacoEditorComponent),
        multi: true
      },
      {
        provide: NG_VALIDATORS,
        useExisting: forwardRef(() => MonacoEditorComponent),
        multi: true
      }
    ]
  }]
}], ctorParameters: function() {
  return [{ type: MonacoEditorLoaderService }];
}, propDecorators: { options: [{
  type: Input
}], uri: [{
  type: Input
}], init: [{
  type: Output
}], editorContent: [{
  type: ViewChild,
  args: ["editor", { static: true }]
}] } });
var MonacoDiffEditorComponent = class {
  constructor(monacoLoader) {
    this.monacoLoader = monacoLoader;
    this.init = new EventEmitter();
  }
  ngOnInit() {
    this.container = this.editorContent.nativeElement;
    this.monacoLoader.isMonacoLoaded$.pipe(filter((isLoaded) => isLoaded), take(1)).subscribe(() => {
      this.initMonaco();
    });
  }
  ngOnChanges(changes) {
    if (this.editor && (changes.code && !changes.code.firstChange || changes.modified && !changes.modified.firstChange)) {
      const modified = monaco.editor.createModel(this.modified);
      const original = monaco.editor.createModel(this.original);
      this.editor.setModel({
        original,
        modified
      });
    }
    if (this.editor && changes.options && !changes.options.firstChange) {
      if (changes.options.previousValue.theme !== changes.options.currentValue.theme) {
        monaco.editor.setTheme(changes.options.currentValue.theme);
      }
      this.editor.updateOptions(changes.options.currentValue);
    }
  }
  initMonaco() {
    let opts = {
      readOnly: true,
      automaticLayout: true,
      theme: "vc"
    };
    if (this.options) {
      opts = Object.assign({}, opts, this.options);
    }
    this.editor = monaco.editor.createDiffEditor(this.container, opts);
    const original = monaco.editor.createModel(this.original);
    const modified = monaco.editor.createModel(this.modified);
    this.editor.setModel({
      original,
      modified
    });
    this.editor.layout();
    this.init.emit(this.editor);
  }
  ngOnDestroy() {
    if (this.editor) {
      this.editor.dispose();
    }
  }
};
MonacoDiffEditorComponent.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoDiffEditorComponent, deps: [{ token: MonacoEditorLoaderService }], target: FactoryTarget.Component });
MonacoDiffEditorComponent.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: MonacoDiffEditorComponent, selector: "ngx-monaco-diff-editor", inputs: { original: "original", modified: "modified", options: "options" }, outputs: { init: "init" }, viewQueries: [{ propertyName: "editorContent", first: true, predicate: ["diffEditor"], descendants: true, static: true }], usesOnChanges: true, ngImport: core_exports, template: `<div #container class="editor-container" fxFlex>
		<div
			#diffEditor
			class="monaco-editor"
		></div>
</div>`, isInline: true, styles: [".monaco-editor{position:absolute;top:0;bottom:0;left:0;right:0}.editor-container{overflow:hidden;position:relative;display:table;width:100%;height:100%;min-width:0}\n"], changeDetection: ChangeDetectionStrategy.OnPush });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoDiffEditorComponent, decorators: [{
  type: Component,
  args: [{
    selector: "ngx-monaco-diff-editor",
    template: `<div #container class="editor-container" fxFlex>
		<div
			#diffEditor
			class="monaco-editor"
		></div>
</div>`,
    styles: [
      `
.monaco-editor {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;

}
.editor-container {
	overflow: hidden;
	position: relative;
	display: table;
	width: 100%;
  height: 100%;
  min-width: 0;
}`
    ],
    changeDetection: ChangeDetectionStrategy.OnPush
  }]
}], ctorParameters: function() {
  return [{ type: MonacoEditorLoaderService }];
}, propDecorators: { original: [{
  type: Input
}], modified: [{
  type: Input
}], options: [{
  type: Input
}], init: [{
  type: Output
}], editorContent: [{
  type: ViewChild,
  args: ["diffEditor", { static: true }]
}] } });
var MonacoEditorModule = class {
};
MonacoEditorModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorModule, deps: [], target: FactoryTarget.NgModule });
MonacoEditorModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorModule, declarations: [
  MonacoEditorLoaderDirective,
  MonacoEditorComponent,
  MonacoDiffEditorComponent
], exports: [
  MonacoEditorLoaderDirective,
  MonacoEditorComponent,
  MonacoDiffEditorComponent
] });
MonacoEditorModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorModule, imports: [[]] });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: core_exports, type: MonacoEditorModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [],
    declarations: [
      MonacoEditorLoaderDirective,
      MonacoEditorComponent,
      MonacoDiffEditorComponent
    ],
    exports: [
      MonacoEditorLoaderDirective,
      MonacoEditorComponent,
      MonacoDiffEditorComponent
    ]
  }]
}] });

// projects/eimmo-common/dialogs/src/class-items-dialog/spec-editor/spec-editor.component.ts
var SpecEditorComponent = class SpecEditorComponent2 {
  constructor() {
    this.specJSON = "{}";
    this.spec = {};
    this.isEditorInitialized = signal(false);
    this.classItemsDialogService = inject(ClassItemsDialogService);
    this.monacoLoaderService = inject(MonacoEditorLoaderService);
    this.destroyRef = inject(DestroyRef);
  }
  agInit(params) {
    this.specJSON = JSON.stringify(params.value || {}, null, 2);
    this.spec = params.value;
    this.gridApi = params.api;
    this.node = params.node;
    this.monacoLoaderService.isMonacoLoaded$.pipe(filterTruthy(), take(1), takeUntilDestroyed(this.destroyRef)).subscribe(() => this.modelUri = monaco?.Uri?.parse("a://b/spec.json"));
  }
  ngOnDestroy() {
    if (typeof monaco !== "undefined") {
      monaco?.editor?.getModel(this.modelUri)?.dispose();
    }
    this.editor?.dispose();
  }
  getValue() {
    return this.spec;
  }
  onKeyDown(event) {
    const { keyCode } = event;
    switch (keyCode) {
      case ENTER:
        event.stopPropagation();
        return;
      case ESCAPE:
        event.stopPropagation();
        this.gridApi.stopEditing();
        return;
    }
  }
  onClickRowDataArea() {
    this.gridApi.stopEditing();
  }
  onInit(editor) {
    this.editor = editor;
    const model = monaco?.editor?.getModel(this.modelUri) ?? monaco?.editor?.createModel(this.specJSON, "json", this.modelUri);
    editor.setModel(model);
    editor.onDidChangeModelContent(() => this.onChangeValue(editor.getModel().getValue()));
    editor.onDidBlurEditorText(() => {
      if (this.isEditorInitialized()) {
        this.node?.setDataValue(ClassItemColName.spec, this.spec);
      }
    });
    asapScheduler.schedule(() => {
      this.isEditorInitialized.set(true);
      editor.focus();
    });
  }
  onChangeValue(json) {
    try {
      this.classItemsDialogService.isEdited.set(true);
      const parsedSpec = JSON.parse(json);
      this.spec = parsedSpec;
      console.log(parsedSpec);
    } catch {
      console.log("JSON \uBB38\uBC95\uC5D0 \uC624\uB958\uAC00 \uC788\uC2B5\uB2C8\uB2E4.", json);
    }
  }
};
SpecEditorComponent = __decorate([
  Component({
    selector: "eimmo-common-spec-editor-renderer",
    template: spec_editor_component_default,
    standalone: true,
    imports: [MonacoEditorModule],
    styles: [spec_editor_component_default2]
  })
], SpecEditorComponent);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/class-items-dialog/spec-toggle-renderer/spec-toggle-renderer.component.html
var spec_toggle_renderer_component_default = '<button aim-button class="json-button" buttonSize="small"\n        [buttonTheme]="isEditing ? ButtonTheme.primary : ButtonTheme.secondary"\n        (click)="onClick()">\n  JSON\n</button>\n';

// angular:jit:style:file:projects/eimmo-common/dialogs/src/class-items-dialog/spec-toggle-renderer/spec-toggle-renderer.component.scss
var spec_toggle_renderer_component_default2 = "/* projects/eimmo-common/dialogs/src/class-items-dialog/spec-toggle-renderer/spec-toggle-renderer.component.scss */\n:host {\n  height: 100%;\n}\n:host ::ng-deep .aimmo-button.small:not(.flexible) {\n  width: 55px;\n}\n";

// projects/eimmo-common/dialogs/src/class-items-dialog/spec-toggle-renderer/spec-toggle-renderer.component.ts
var SpecToggleRendererComponent = class SpecToggleRendererComponent2 {
  constructor() {
    this.ButtonTheme = ButtonTheme;
    this.isEditing = false;
  }
  agInit(params) {
    this.params = params;
    this.isEditing = false;
  }
  refresh(params) {
    this.isEditing = false;
    const defaultRowHeight = 43;
    this.params.node.setRowHeight(defaultRowHeight);
    this.params.api.onRowHeightChanged();
    return false;
  }
  onClick() {
    const editingCell = head_default(this.params.api.getEditingCells());
    const { rowIndex, column } = this.params;
    if (editingCell?.rowIndex === rowIndex && editingCell?.column === column) {
      this.params.api.stopEditing();
      this.isEditing = false;
    } else {
      this.isEditing = true;
      const rowWithEditorHeight = 243;
      this.params.node.setRowHeight(rowWithEditorHeight);
      this.params.api.onRowHeightChanged();
      this.params.api.startEditingCell({ rowIndex, colKey: column });
    }
  }
};
SpecToggleRendererComponent = __decorate([
  Component({
    selector: "eimmo-common-spec-toggle-renderer",
    template: spec_toggle_renderer_component_default,
    standalone: true,
    imports: [
      AimButtonHostingDirective,
      AimButtonComponent
    ],
    styles: [spec_toggle_renderer_component_default2]
  })
], SpecToggleRendererComponent);

// projects/eimmo-common/dialogs/src/class-items-dialog/class-items-dialog.component.ts
var ClassItemsDialogComponent = class ClassItemsDialogComponent2 {
  constructor() {
    this.classItemsDialogService = inject(ClassItemsDialogService);
    this.isEdited = this.classItemsDialogService.isEdited;
    this.modules = [ClientSideRowModelModule];
    this.editable = false;
    this.classItemsColDefs = [];
    this.classItemsRowData = [];
    this.defaultColDef = {};
    this.isPointType = false;
    this.isKeypointType = signal(false);
    this.defaultClassRow = 8;
    this.textInputColumns = [
      ClassItemColName.color,
      ClassItemColName.groupName,
      ClassItemColName.value,
      ClassItemColName.name
    ];
    this.errorAlertSource = new Subject();
    this.gridApi = new GridApi();
    this.errMsg = "";
    this.alertTitle = "";
    this.openCloseWithoutSaveDialogSource = new Subject();
    this.openDeleteConfirmDialogSource = new Subject();
    this.openExceedLengthDialogSource = new Subject();
    this.stringValueMaxLength = CLASS_NAME_MAX_LENGTH;
    this.data = inject(MAT_DIALOG_DATA);
    this.aimDialog = inject(AimDialogService);
    this.dialogRef = inject(MatDialogRef);
    this.t = inject(TranslateService);
    this.destroyRef = inject(DestroyRef);
  }
  get onClickBackDrop$() {
    return this.dialogRef.backdropClick().pipe(tap(() => this.close()));
  }
  get onKeydownEscapeAction$() {
    return this.dialogRef.keydownEvents().pipe(filter((event) => event.key === Escape), switchMap((event) => this.onKeydownEscape(event)));
  }
  get errorAlertAction$() {
    return this.errorAlertSource.pipe(exhaustMap((messageObj) => this.showAlertDialog(messageObj)));
  }
  get attachPasteEvent$() {
    return fromEvent(window, "paste").pipe(tap((e2) => this.onPaste(e2)));
  }
  get attachCopyEvent$() {
    return fromEvent(window, "copy").pipe(tap((e2) => this.onCopy(e2)));
  }
  get existRowData() {
    const classItems = [];
    this.gridApi.forEachNode((node) => {
      if (!this.isRowEmpty(node.data)) {
        classItems.push(omit_default(node.data, [ClassItemColName.delete]));
      }
    });
    return classItems;
  }
  get openCloseWithoutSaveDialog$() {
    return this.openCloseWithoutSaveDialogSource.pipe(exhaustMap(() => this.openCloseWithoutSaveDialog()));
  }
  get openDeleteConfirmDialogAction$() {
    return this.openDeleteConfirmDialogSource.pipe(exhaustMap((classItem) => this.openDeleteConfirmDialog(classItem)));
  }
  get openExceedLengthDialog$() {
    return this.openExceedLengthDialogSource.pipe(exhaustMap(() => this.openExceedLengthDialog()));
  }
  onGridReady(event) {
    this.gridApi = event.api;
  }
  onClickSave() {
    const classItems = this.existRowData;
    if (this.isKeypointType()) {
      classItems.forEach((classItem) => {
        if (isEmpty_default(classItem.spec)) {
          classItem.spec = getKeypointDefaultSpec();
        }
      });
    }
    if (this.isInvalidClassItem(classItems) && !isEmpty_default(this.errMsg)) {
      this.errorAlertSource.next({ header: this.alertTitle, content: this.errMsg });
    } else {
      this.dialogRef.close(this.makeSubmitClassItemArray(classItems));
    }
  }
  onCellKeyDown(e2) {
    if (!this.editable) {
      return;
    }
    const { key } = e2.event;
    const focusedCell = this.gridApi.getFocusedCell();
    switch (key) {
      case Enter:
        if (isNil_default(focusedCell)) {
          return;
        }
        const editingCell = this.gridApi.getEditingCells();
        if (isEmpty_default(editingCell)) {
          this.gridApi.startEditingCell({ rowIndex: focusedCell.rowIndex, colKey: focusedCell.column });
        } else {
          this.gridApi.stopEditing();
          this.addLastRow(focusedCell.rowIndex);
          this.gridApi.setFocusedCell(focusedCell.rowIndex + 1, focusedCell.column);
        }
        return;
      case ArrowDown:
        if (isNil_default(focusedCell)) {
          return;
        }
        this.addLastRow(focusedCell.rowIndex);
        this.gridApi.setFocusedCell(focusedCell.rowIndex + 1, focusedCell.column);
        return;
      case Escape:
        this.onKeydownEscape(e2.event);
        return;
    }
  }
  setNextCell(params) {
    const nextCell = params.nextCellPosition;
    if (!isNil_default(nextCell)) {
      return nextCell;
    }
    if (params.backwards) {
      const lastCol = last_default(params.columnApi.getAllDisplayedColumns());
      const lastRowIdx = params.api.getLastDisplayedRow();
      return {
        rowIndex: lastRowIdx,
        column: lastCol,
        rowPinned: null
      };
    } else {
      const firstCol = head_default(params.columnApi.getAllDisplayedColumns());
      return {
        rowIndex: 0,
        column: firstCol,
        rowPinned: null
      };
    }
  }
  onClose() {
    this.close();
  }
  onCellMouseOver(event) {
    if (!this.editable) {
      return;
    }
    if (this.isRowEmpty(event.data)) {
      return;
    }
    event.node.setDataValue(ClassItemColName.delete, DeleteButtonStatus.show);
    if (this.isKeypointType() && isEmpty_default(event.data.spec)) {
      event.node.setDataValue(ClassItemColName.spec, getKeypointDefaultSpec());
    }
  }
  onCellMouseOut(event) {
    if (this.editable) {
      event.node.setDataValue(ClassItemColName.delete, DeleteButtonStatus.hidden);
    }
  }
  ngOnInit() {
    this.beforeHandleAction();
    forkJoin([
      this.onClickBackDrop$,
      this.onKeydownEscapeAction$,
      this.openCloseWithoutSaveDialog$,
      this.openDeleteConfirmDialogAction$,
      this.openExceedLengthDialog$,
      this.attachPasteEvent$,
      this.attachCopyEvent$,
      this.errorAlertAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  beforeHandleAction() {
    this.setClassItemsDialogData(this.data);
    this.setColumnDef(this.data?.editable, this.data?.annotationType);
    const annotationType = this.data?.annotationType;
    this.isPointType = annotationType === AnnotationType.point;
    this.isKeypointType.set(isKeypointType(annotationType));
  }
  isRowEmpty(nodeData) {
    return Object.values(nodeData).every((value) => isEmpty_default(value));
  }
  addLastRow(focusedRow) {
    const lastRow = this.gridApi.getLastDisplayedRow();
    if (focusedRow === lastRow) {
      this.gridApi.applyTransaction({ add: [makeEmptyClassItemRowData()] });
    }
  }
  close() {
    this.classItemsDialogService.isEdited() ? this.openCloseWithoutSaveDialogSource.next() : this.dialogRef.close();
  }
  onKeydownEscape(event) {
    return of(event).pipe(tap(() => {
      const focusedCell = this.gridApi.getFocusedCell();
      if (isEmpty_default(this.gridApi.getEditingCells())) {
        this.close();
      } else if (!isNil_default(focusedCell)) {
        this.gridApi.stopEditing();
        this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column);
      }
    }));
  }
  openCloseWithoutSaveDialog() {
    return this.aimDialog.open(ConfirmDialogComponent, makeConfirmDialogConfig(this.t.instant("@\uD074\uB798\uC2A4_\uC138\uBD80_\uC124\uC815_\uB2EB\uAE30@"), this.t.instant("@\uC218\uC815\uB41C_\uB0B4\uC6A9\uC774_\uC800\uC7A5\uB418\uC9C0_\uC54A\uC2B5\uB2C8\uB2E4_\uCC3D\uC744_\uB2EB\uC73C\uC2DC\uACA0\uC2B5\uB2C8\uAE4C_M@"), this.t.instant("@\uD655\uC778_L@"), this.t.instant("@\uCDE8\uC18C_L@"))).afterClosed().pipe(filter((v2) => !!v2), tap(() => this.dialogRef.close()));
  }
  isInvalidClassItem(classItems) {
    if (checkDuplicateValues(classItems.map(({ value }) => value))) {
      this.alertTitle = this.t.instant("@\uD074\uB798\uC2A4_\uBA85_\uC911\uBCF5@");
      this.errMsg = this.t.instant("@\uC911\uBCF5\uB41C_\uD074\uB798\uC2A4\uBA85\uC774_\uC874\uC7AC\uD569\uB2C8\uB2E4@");
      return true;
    }
    if (checkDuplicateValues(classItems.map(({ name, value }) => isEmpty_default(name) ? value : name))) {
      this.alertTitle = this.t.instant("@\uD45C\uC2DC\uD560_\uD074\uB798\uC2A4\uBA85_\uC911\uBCF5@");
      this.errMsg = this.t.instant("@\uC911\uBCF5\uB41C_\uD45C\uC2DC\uD560_\uD074\uB798\uC2A4_\uBA85\uC774_\uC874\uC7AC\uD569\uB2C8\uB2E4@");
      return true;
    }
    const hasGroupName = !!head_default(classItems)?.groupName;
    return classItems.some((classItem) => {
      const { color, groupName, value } = classItem;
      if (color && !validateHex(color)) {
        this.alertTitle = this.t.instant("@\uC798\uBABB\uB41C_\uCEEC\uB7EC\uAC12@");
        this.errMsg = this.t.instant("@\uC798\uBABB\uB41C_\uCEEC\uB7EC\uAC12\uC774_\uC874\uC7AC\uD569\uB2C8\uB2E4@");
        return true;
      }
      if (xor(hasGroupName, !!groupName)) {
        this.alertTitle = this.t.instant("@\uADF8\uB8F9\uBA85_\uC5D0\uB7EC@");
        this.errMsg = this.t.instant("@\uADF8\uB8F9\uBA85\uC740_\uBAA8\uB450_\uC785\uB825\uB418\uAC70\uB098_\uBAA8\uB450_\uBE44\uC6CC\uC838\uC788\uC5B4\uC57C\uD569\uB2C8\uB2E4@");
        return true;
      }
      if (!value) {
        this.alertTitle = this.t.instant("@\uD074\uB798\uC2A4\uBA85_\uC785\uB825_\uD544\uC694@");
        this.errMsg = this.t.instant("@\uD074\uB798\uC2A4\uBA85\uC744_\uC785\uB825\uD574\uC8FC\uC138\uC694@");
        return true;
      }
      return void 0;
    });
  }
  onCopy(event) {
    event.preventDefault();
    const focusedCell = this.gridApi.getFocusedCell();
    if (!isNil_default(focusedCell)) {
      const { column, rowIndex } = focusedCell;
      const rowNode = this.gridApi.getDisplayedRowAtIndex(rowIndex);
      const targetValue = this.gridApi?.getValue(column, rowNode) ?? "";
      event.clipboardData?.setData("text/plain", targetValue);
    }
  }
  onPaste(event) {
    if (!this.editable) {
      return;
    }
    event.preventDefault();
    const focusedCell = this.gridApi.getFocusedCell();
    if (focusedCell) {
      const dataRows = event.clipboardData?.getData("text/plain").split(/\n/).map((dataRow) => {
        if (last_default(dataRow) === "\r") {
          return dataRow.slice(0, -1);
        }
        return dataRow;
      });
      const colLength = this.textInputColumns.length;
      const startColKey = focusedCell.column?.getColDef().field;
      const startColIndex = this.textInputColumns.findIndex((colKey) => colKey === startColKey);
      if (startColIndex < 0) {
        return;
      }
      const startRowIndex = focusedCell.rowIndex;
      dataRows?.forEach((dataRow, idx) => {
        const targetRow = this.gridApi.getDisplayedRowAtIndex(startRowIndex + idx);
        const updateValue = {};
        const dataCols = dataRow.split(/\t/);
        dataCols.reduce((target, value, index) => {
          const targetColIndex = startColIndex + index;
          if (targetColIndex < colLength) {
            target[this.textInputColumns[startColIndex + index]] = value;
          }
          return target;
        }, updateValue);
        if (isNil_default(targetRow)) {
          this.gridApi.applyTransaction({ add: [updateValue] });
        } else {
          Object.entries(updateValue).forEach(([colKey, value]) => targetRow.setDataValue(colKey, value));
        }
      });
    }
  }
  openExceedLengthDialog() {
    return this.aimDialog.open(ConfirmDialogComponent, makeOnlyTitleAlertDialogConfig(this.t.instant("@maxLength_\uAE00\uC790\uB97C_\uCD08\uACFC_\uC785\uB825_\uD560_\uC218_\uC5C6\uC2B5\uB2C8\uB2E4@", { maxLength: this.stringValueMaxLength }), this.t.instant("@\uD655\uC778_L@"))).afterClosed();
  }
  makeSubmitClassItemArray(classItems) {
    return classItems.map((classItem) => {
      const submitItem = classItem;
      submitItem.id = classItem.id ?? getNewClassItemId();
      submitItem.semantic = classItem.semantic ?? true;
      submitItem.color = classItem.color ? classItem.color : getUniqueRandomColor(this.getClassColors());
      submitItem.name = classItem.name ? classItem.name : classItem.value;
      return submitItem;
    });
  }
  getClassColors() {
    return this.existRowData.map((row) => row.color);
  }
  setRandomColor({ data, oldValue, newValue, node }) {
    if (!data.color && isEmpty_default(oldValue) && !isEmpty_default(newValue)) {
      const randomColor = getUniqueRandomColor(this.getClassColors());
      node?.setDataValue(ClassItemColName.color, randomColor);
    }
  }
  showAlertDialog({ header, content }) {
    return this.aimDialog.open(ConfirmDialogComponent, makeConfirmDialogConfig(header, content, this.t.instant("@\uD655\uC778_L@"))).afterClosed();
  }
  setClassItemsDialogData({ editable, classItems }) {
    this.editable = editable;
    this.classItemsRowData = classItems;
    if (this.classItemsRowData.length >= this.defaultClassRow) {
      this.classItemsRowData.push(makeEmptyClassItemRowData());
      return;
    }
    while (this.classItemsRowData.length < this.defaultClassRow) {
      this.classItemsRowData.push(makeEmptyClassItemRowData());
    }
  }
  onDeleteRow(classItem) {
    this.openDeleteConfirmDialogSource.next(classItem);
  }
  openDeleteConfirmDialog(classItem) {
    return this.aimDialog.open(ConfirmDialogComponent, {
      width: "448px",
      data: {
        title: this.t.instant("@\uD074\uB798\uC2A4_\uC0AD\uC81C@"),
        message: this.t.instant("@\uD074\uB798\uC2A4\uB97C_\uC0AD\uC81C\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C@"),
        subMessage: this.t.instant("@\uD074\uB798\uC2A4_\uC0AD\uC81C\uC2DC_\uC791\uC5C5\uB41C_\uC778\uC2A4\uD134\uC2A4\uB294_\uC720\uC9C0\uB418\uBA70@"),
        positiveButtonText: this.t.instant("@\uD655\uC778_L@"),
        negativeButtonText: this.t.instant("@\uCDE8\uC18C_L@"),
        type: ConfirmDialogType.confirm
      }
    }).afterClosed().pipe(filter((v2) => v2), tap(() => {
      this.gridApi.applyTransaction({ remove: [classItem] });
      this.isEdited.set(true);
    }));
  }
  setTrimmedValue(value, node, column) {
    node?.setDataValue(column, value?.trim());
  }
  correctValue(value, node, column) {
    const trimmedValue = value?.trim() ?? "";
    node?.setDataValue(column, trimmedValue.slice(0, this.stringValueMaxLength));
    if (trimmedValue.length > this.stringValueMaxLength) {
      this.openExceedLengthDialogSource.next();
    }
  }
  setColumnDef(editable, annotationType) {
    const isSegmentationMaskType = annotationType === AnnotationType.segmentationMask;
    if (this.editable) {
      this.defaultColDef = {
        suppressKeyboardEvent: (params) => {
          return [
            Escape,
            Enter,
            ArrowDown
          ].includes(params.event.key);
        },
        suppressHeaderKeyboardEvent: (params) => {
          return [
            Tab,
            ArrowDown,
            ArrowLeft,
            ArrowRight
          ].includes(params.event.key);
        },
        onCellValueChanged: (event) => {
          this.isEdited.set(true);
          this.addLastRow(event.node.rowIndex);
        }
      };
    }
    this.classItemsColDefs = [
      Object.assign({
        headerName: this.t.instant("@\uC720\uD615_L@"),
        field: ClassItemColName.semantic,
        minWidth: 0,
        width: 0,
        maxWidth: 0,
        cellClass: "invisible-cell",
        headerClass: "class-item-v2__header",
        cellRenderer: null,
        cellRendererParams: null
      }, isSegmentationMaskType ? {
        minWidth: 110,
        width: 110,
        maxWidth: 110,
        cellClass: "",
        cellRenderer: SegmentationTypeRendererComponent,
        cellRendererParams: { editable }
      } : {}),
      {
        headerName: "",
        field: ClassItemColName.color,
        editable: false,
        width: 46,
        maxWidth: 46,
        minWidth: 46,
        cellRenderer: ColorPickerRendererComponent,
        cellRendererParams: { editable }
      },
      {
        headerName: this.t.instant("@\uC0C9\uC0C1@"),
        cellClass: "class-item-v2__cell",
        field: ClassItemColName.color,
        editable,
        minWidth: 80,
        flex: 2,
        onCellValueChanged: (event) => this.setTrimmedValue(event.newValue, event.node, event.column)
      },
      {
        headerName: this.t.instant("@\uCE74\uD14C\uACE0\uB9AC@"),
        field: ClassItemColName.groupName,
        editable,
        minWidth: 120,
        width: 170,
        flex: 4,
        headerClass: "class-item-v2__header",
        cellClass: "class-item-v2__cell",
        cellEditor: MaxLengthCellEditorComponent,
        onCellValueChanged: (event) => {
          this.isEdited.set(true);
          this.setRandomColor(event);
          this.correctValue(event.newValue, event.node, event.column);
        }
      },
      {
        headerName: this.t.instant("@\uD074\uB798\uC2A4_\uBA85@"),
        field: ClassItemColName.value,
        editable,
        minWidth: 130,
        width: 170,
        flex: 4,
        headerClass: "class-item-v2__header",
        cellClass: "class-item-v2__cell",
        cellEditor: MaxLengthCellEditorComponent,
        onCellValueChanged: (event) => {
          this.isEdited.set(true);
          this.setRandomColor(event);
          this.correctValue(event.newValue, event.node, event.column);
        }
      },
      {
        headerName: this.t.instant("@\uD45C\uC2DC\uD560_\uD074\uB798\uC2A4_\uBA85@"),
        field: ClassItemColName.name,
        editable,
        minWidth: 130,
        width: 170,
        flex: 4,
        headerClass: "class-item-v2__header",
        cellClass: "class-item-v2__cell",
        cellEditor: MaxLengthCellEditorComponent,
        onCellValueChanged: (event) => {
          this.isEdited.set(true);
          this.setRandomColor(event);
          this.correctValue(event.newValue, event.node, event.column);
        }
      }
    ];
    if (editable) {
      this.classItemsColDefs.push({
        headerName: "",
        field: ClassItemColName.spec,
        editable,
        minWidth: 112,
        width: 112,
        maxWidth: 112,
        cellClass: "class-item-v2__cell-button cell-content",
        cellRenderer: SpecToggleRendererComponent,
        cellEditor: SpecEditorComponent,
        cellEditorPopup: true,
        cellEditorPopupPosition: "over",
        onCellValueChanged: (event) => {
          this.isEdited.set(true);
          this.setRandomColor(event);
          this.addLastRow(event.node.rowIndex);
        }
      }, {
        headerName: "",
        field: ClassItemColName.delete,
        editable: false,
        minWidth: 30,
        width: 30,
        maxWidth: 30,
        cellClass: "no-padding cell-content",
        cellRenderer: DeleteButtonComponent,
        onCellValueChanged: (event) => {
          if (event.newValue === DeleteButtonStatus.deleted) {
            this.onDeleteRow(event.data);
          }
        }
      });
    }
  }
};
__decorate([
  GlobalCatchError
], ClassItemsDialogComponent.prototype, "attachPasteEvent$", null);
__decorate([
  GlobalCatchError
], ClassItemsDialogComponent.prototype, "attachCopyEvent$", null);
__decorate([
  GlobalCatchError
], ClassItemsDialogComponent.prototype, "onKeydownEscape", null);
__decorate([
  KeyEventFilter()
], ClassItemsDialogComponent.prototype, "onCopy", null);
__decorate([
  KeyEventFilter()
], ClassItemsDialogComponent.prototype, "onPaste", null);
__decorate([
  GlobalCatchError
], ClassItemsDialogComponent.prototype, "openExceedLengthDialog", null);
__decorate([
  GlobalCatchError
], ClassItemsDialogComponent.prototype, "showAlertDialog", null);
__decorate([
  GlobalCatchError
], ClassItemsDialogComponent.prototype, "openDeleteConfirmDialog", null);
ClassItemsDialogComponent = __decorate([
  Component({
    selector: "eimmo-common-class-items-dialog",
    template: class_items_dialog_component_default,
    standalone: true,
    imports: [
      AimDialogModule,
      AgGridModule,
      NgIf,
      AimButtonHostingDirective,
      AimButtonComponent,
      TranslateModule
    ],
    providers: [ClassItemsDialogService],
    styles: [class_items_dialog_component_default2]
  })
], ClassItemsDialogComponent);

// projects/eimmo-common/dialogs/src/confirm-dialog/confirm-dialog.service.ts
var _a22;
var ConfirmDialogService = (_a22 = class {
  constructor(dialog, t2) {
    this.dialog = dialog;
    this.t = t2;
  }
  confirm(message, positiveButtonText, negativeButtonText) {
    return this.confirmWithTitle(void 0, message, positiveButtonText, negativeButtonText);
  }
  confirmWithTitle(title, message, positiveButtonText, negativeButtonText) {
    return this.confirmWithCustom({
      title,
      message,
      positiveButtonText: positiveButtonText ?? this.t.instant("@\uC608_L@"),
      negativeButtonText: negativeButtonText ?? this.t.instant("@\uC544\uB2C8\uC624_L@")
    });
  }
  alert(message, positiveButtonText) {
    return this.alertWithTitle(void 0, message, positiveButtonText);
  }
  alertWithTitle(title, message, positiveButtonText) {
    return this.alertWithCustom({
      title,
      message,
      positiveButtonText: positiveButtonText ?? this.t.instant("@\uD655\uC778_L@")
    });
  }
  confirmWithCustom({ title, message, positiveButtonText, negativeButtonText }) {
    return defer(() => this.dialog.open(ConfirmDialogComponent, title ? makeConfirmDialogConfig(title, message, positiveButtonText, negativeButtonText) : makeOnlyTitleConfirmDialogConfig(message, positiveButtonText, negativeButtonText)).afterClosed());
  }
  alertWithCustom({ title, message, positiveButtonText }) {
    return defer(() => this.dialog.open(ConfirmDialogComponent, title ? makeAlertDialogConfig(title, message, positiveButtonText) : makeOnlyTitleAlertDialogConfig(message, positiveButtonText)).afterClosed());
  }
}, _a22.ctorParameters = () => [
  { type: AimDialogService },
  { type: TranslateService }
], _a22);
ConfirmDialogService = __decorate([
  Injectable({ providedIn: "root" })
], ConfirmDialogService);

// projects/eimmo-common/dialogs/src/copy-annotation-config-confirm-dialog/copy-annotation-config-confirm-dialog.model.ts
function makeCopyAnnotationConfigConfirmDialogConfig(duplicatedAnnotationConfigs) {
  return {
    data: duplicatedAnnotationConfigs
  };
}

// angular:jit:template:file:projects/eimmo-common/dialogs/src/copy-annotation-config-dialog/copy-annotation-config-dialog.component.html
var copy_annotation_config_dialog_component_default = `<aim-dialog-header>{{ '@\uC124\uC815\uAC12_\uBD88\uB7EC\uC624\uAE30@'|translate }}</aim-dialog-header>
<aim-dialog-content>
  <div class="copy-anno-dialog__content-head">
    <span class="copy-anno-dialog__content-desc">{{ '@\uAC19\uC740_\uB370\uC774\uD130\uC720\uD615\uC744_\uAC00\uC9C4_\uD504\uB85C\uC81D\uD2B8_\uC124\uC815\uAC12\uB9CC_\uBD88\uB7EC\uC62C_\uC218_\uC788\uC2B5\uB2C8\uB2E4@'|translate }}</span>
    <aim-input>
      <aim-icon icon="search"/>
      <input aimInputBase trimFormValue [formControl]="searchFormControl" (keyup.enter)="onSearch()">
    </aim-input>
    <span>{{ '@\uD504\uB85C\uC81D\uD2B8_\uBA85@'|translate }}</span>
  </div>
  <aim-divider/>
  <div (scroll)="onScrollCandidates($event)" class="copy-anno-dialog__contents-container">
    <span (click)="onClickAnnotationConfigCopyCandidate(candidate)" *ngFor="let candidate of candidates"
          [class.selected]="selectedCandidate?.id===candidate.id"
          appTextOverflowTooltip
          class="copy-anno-dialog__contents-row">{{ candidate.name }}</span>
    <ng-container [ngSwitch]="loadMoreState">
      <span *ngSwitchCase="LoadMoreState.loading"
            class="copy-anno-dialog__contents-row">{{ '@\uB85C\uB529\uC911@'|translate }}</span>
      <span *ngSwitchCase="LoadMoreState.empty"
            class="copy-anno-dialog__contents--empty">{{ '@\uBAA9\uB85D\uC774_\uC5C6\uC2B5\uB2C8\uB2E4@'|translate }}</span>
      <eimmo-common-error (retryClicked)="onRetryRequest()"
                          *ngSwitchCase="LoadMoreState.error"
                          [defaultMessage]="'@\uD1B5\uC2E0_\uC911_\uC624\uB958\uAC00_\uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4@'|translate"
                          [error]="error"/>
      <ng-container *ngSwitchDefault>
        <button (click)="loadItems()" *ngIf="hasNext" aim-button buttonSize="large"
                buttonTheme="outline">{{ '@\uB354\uBCF4\uAE30@'|translate }}
        </button>
      </ng-container>
    </ng-container>
  </div>
  <aim-divider/>
</aim-dialog-content>
<aim-dialog-actions class="copy-anno-dialog__action-container">
  <button (click)="onClickLoadAnnotationConfigCopyCandidate()" aim-button buttonSize="large"
          buttonTheme="outline">{{ '@\uBD88\uB7EC\uC624\uAE30_L@'|translate }}
  </button>
</aim-dialog-actions>

`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/copy-annotation-config-dialog/copy-annotation-config-dialog.component.scss
var copy_annotation_config_dialog_component_default2 = "/* projects/eimmo-common/dialogs/src/copy-annotation-config-dialog/copy-annotation-config-dialog.component.scss */\n.copy-anno-dialog__content-desc {\n  color: #999999;\n}\n.copy-anno-dialog__content-head {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  justify-content: center;\n  align-content: flex-start;\n  align-items: flex-start;\n  max-width: 100%;\n  margin-bottom: 12px;\n}\n.copy-anno-dialog__content-head > *:not(:last-child) {\n  margin-bottom: 24px;\n}\n.copy-anno-dialog__action-container {\n  padding-top: 32px;\n}\n.copy-anno-dialog__contents-container {\n  height: 180px;\n  overflow-y: auto;\n}\n.copy-anno-dialog__contents-row {\n  display: block;\n  padding: 11px 16px;\n  cursor: pointer;\n  box-sizing: border-box;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.copy-anno-dialog__contents-row:hover {\n  border-color: #545454;\n}\n.copy-anno-dialog__contents-row.selected {\n  border-color: #444444;\n  background-color: #444444;\n}\n.copy-anno-dialog__contents--empty {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: center;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n  margin-top: 40px;\n  color: #999999;\n}\n";

// projects/aimmo-components/actionable/src/actionable.component.ts
var ActionableComponent = class ActionableComponent2 {
  constructor() {
    this.destroyedSource = new Subject();
  }
  ngOnInit() {
    this.beforeHandleAction();
    forkJoin(this.actions$()).pipe(takeUntil(this.destroyedSource)).subscribe();
    this.afterHandleAction();
  }
  ngOnDestroy() {
    this.destroyedAction();
    this.destroyedSource.next();
    this.destroyedSource.complete();
  }
  beforeHandleAction() {
  }
  afterHandleAction() {
  }
  destroyedAction() {
  }
};
ActionableComponent = __decorate([
  Directive()
  // tslint:disable-next-line
], ActionableComponent);

// projects/eimmo-common/components/base/src/load-more.component.ts
var _a23;
var LoadMoreComponent = (_a23 = class extends ActionableComponent {
  constructor(loadMoreService) {
    super();
    this.loadMoreService = loadMoreService;
    this.LoadMoreState = LoadMoreState;
    this.hasNext = false;
    this.requestSource = new Subject();
  }
  loadItems() {
    this.requestSource.next(this.loadMoreParams);
  }
  onRetryRequest() {
    this.requestSource.next(this.currentParams);
  }
  actions$() {
    return [
      this.requestSource.pipe(switchMap((params) => this.requestItems(params)))
    ];
  }
  afterHandleAction() {
    super.afterHandleAction();
    this.loadItems();
  }
  beforeRequestItems(params) {
    this.loadMoreState = LoadMoreState.loading;
    this.currentParams = params;
  }
  onLoadSuccess({ items, hasMore }) {
    if (isEmpty_default(items)) {
      this.loadMoreState = this.isItemEmpty ? LoadMoreState.empty : null;
      this.hasNext = false;
    } else {
      this.loadMoreState = null;
      this.hasNext = hasMore;
      this.applyItems(items);
    }
  }
  onLoadFail(error) {
    this.loadMoreState = LoadMoreState.error;
    this.error = error;
    return throwError(() => error);
  }
  requestItems(params) {
    return defer(() => {
      this.beforeRequestItems(params);
      return this.loadMoreService.getItems(params);
    }).pipe(tap((loadMoreItems) => this.onLoadSuccess(loadMoreItems)), catchError((error) => this.onLoadFail(error)));
  }
}, _a23.ctorParameters = () => [
  { type: void 0 }
], _a23);
__decorate([
  GlobalCatchError
], LoadMoreComponent.prototype, "requestItems", null);
LoadMoreComponent = __decorate([
  Directive()
  // tslint:disable-next-line
], LoadMoreComponent);

// angular:jit:template:file:projects/eimmo-common/components/base/src/error/error.component.html
var error_component_default = '<span>{{ errorMessage }}</span>\n<button mat-button *ngIf="!hideRetry" (click)="onRetryClicked()">\uC7AC\uC2DC\uB3C4</button>\n';

// angular:jit:style:file:projects/eimmo-common/components/base/src/error/error.component.scss
var error_component_default2 = "/* projects/eimmo-common/components/base/src/error/error.component.scss */\n";

// projects/eimmo-common/utils/src/custom-error.ts
var CustomError = class extends Error {
  constructor(message = "", error = null) {
    super();
    this.message = message;
    this.error = error;
    Object.setPrototypeOf(this, new.target.prototype);
    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, this.constructor);
    }
  }
};

// projects/eimmo-common/components/base/src/error/error.component.ts
var _a24;
var ErrorComponent = (_a24 = class {
  constructor() {
    this.hideRetry = false;
    this.retryClicked = new EventEmitter();
  }
  set error(error) {
    if (error instanceof CustomError) {
      this.errorMessage = error.message ?? this.defaultMessage;
    } else {
      this.errorMessage = getErrorMessageFrom(error, this.defaultMessage);
    }
  }
  onRetryClicked() {
    this.retryClicked.emit();
  }
}, _a24.propDecorators = {
  hideRetry: [{ type: Input }],
  defaultMessage: [{ type: Input }],
  retryClicked: [{ type: Output }],
  error: [{ type: Input }]
}, _a24);
ErrorComponent = __decorate([
  Component({
    selector: "eimmo-common-error",
    template: error_component_default,
    standalone: true,
    imports: [
      NgIf,
      MatButtonModule
    ],
    styles: [error_component_default2]
  })
], ErrorComponent);

// angular:jit:template:file:projects/eimmo-common/components/base/src/api-loading-indicator/api-loading-indicator.component.html
var api_loading_indicator_component_default = '<aim-progress-bar [class.show]="showApiLoadingIndicator" [mode]="ProgressMode" class="app-loading-indicator"/>\n';

// angular:jit:style:file:projects/eimmo-common/components/base/src/api-loading-indicator/api-loading-indicator.component.scss
var api_loading_indicator_component_default2 = "/* projects/eimmo-common/components/base/src/api-loading-indicator/api-loading-indicator.component.scss */\n.app-loading-indicator {\n  position: absolute;\n  top: 0;\n  z-index: 3;\n  display: none;\n}\n.app-loading-indicator.show {\n  display: inherit;\n}\n";

// projects/aimmo-design-system/aim-progress-bar/model/src/aim-progress-bar.model.ts
var AimProgressMode = {
  determinate: "determinate",
  buffer: "buffer",
  indeterminate: "indeterminate"
};
var AimProgressColor = {
  primary: "primary",
  accent: "accent",
  warn: "warn"
};

// angular:jit:template:file:projects/aimmo-design-system/aim-progress-bar/src/aim-progress-bar.component.html
var aim_progress_bar_component_default = '<mat-progress-bar class="aimmo-progress-bar"\n                  [class.basic]="PROGRESS_MODE.determinate === mode"\n                  [class.buffer]="PROGRESS_MODE.buffer === mode"\n                  [color]="progressColor"\n                  [mode]="mode"\n                  [value]="value"\n                  [bufferValue]="bufferValue"/>\n';

// angular:jit:style:file:projects/aimmo-design-system/aim-progress-bar/src/aim-progress-bar.component.scss
var aim_progress_bar_component_default2 = "/* projects/aimmo-design-system/aim-progress-bar/src/aim-progress-bar.component.scss */\n:host {\n  display: block;\n  width: 100%;\n}\n:host ::ng-deep .mdc-linear-progress {\n  background-color: #333333;\n  border-radius: 4px;\n}\n:host ::ng-deep .mdc-linear-progress.buffer .mdc-linear-progress__buffer-bar {\n  background-color: #de6251;\n}\n:host ::ng-deep .mdc-linear-progress__buffer-bar {\n  background-color: #333333;\n  border-radius: 4px;\n}\n:host ::ng-deep .mdc-linear-progress__buffer-dots {\n  background-color: unset;\n  animation: none;\n}\n:host ::ng-deep .mdc-linear-progress__bar {\n  height: 100%;\n}\n:host ::ng-deep .mdc-linear-progress__bar-inner {\n  background-color: #5683d9;\n  border-radius: 4px;\n  border: none;\n  height: 100%;\n}\n:host.file-upload ::ng-deep .mdc-linear-progress__bar-inner {\n  background-color: #49ab65;\n}\n";

// node_modules/@angular/material/fesm2022/progress-bar.mjs
var MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken("MAT_PROGRESS_BAR_DEFAULT_OPTIONS");
var MAT_PROGRESS_BAR_LOCATION = new InjectionToken("mat-progress-bar-location", { providedIn: "root", factory: MAT_PROGRESS_BAR_LOCATION_FACTORY });
function MAT_PROGRESS_BAR_LOCATION_FACTORY() {
  const _document = inject(DOCUMENT);
  const _location = _document ? _document.location : null;
  return {
    // Note that this needs to be a function, rather than a property, because Angular
    // will only resolve it once, but we want the current path on each call.
    getPathname: () => _location ? _location.pathname + _location.search : ""
  };
}
var _MatProgressBar = class _MatProgressBar {
  constructor(_elementRef, _ngZone, _changeDetectorRef, _animationMode, defaults) {
    this._elementRef = _elementRef;
    this._ngZone = _ngZone;
    this._changeDetectorRef = _changeDetectorRef;
    this._animationMode = _animationMode;
    this._isNoopAnimation = false;
    this._defaultColor = "primary";
    this._value = 0;
    this._bufferValue = 0;
    this.animationEnd = new EventEmitter();
    this._mode = "determinate";
    this._transitionendHandler = (event) => {
      if (this.animationEnd.observers.length === 0 || !event.target || !event.target.classList.contains("mdc-linear-progress__primary-bar")) {
        return;
      }
      if (this.mode === "determinate" || this.mode === "buffer") {
        this._ngZone.run(() => this.animationEnd.next({ value: this.value }));
      }
    };
    this._isNoopAnimation = _animationMode === "NoopAnimations";
    if (defaults) {
      if (defaults.color) {
        this.color = this._defaultColor = defaults.color;
      }
      this.mode = defaults.mode || this.mode;
    }
  }
  // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.
  /** Theme palette color of the progress bar. */
  get color() {
    return this._color || this._defaultColor;
  }
  set color(value) {
    this._color = value;
  }
  /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */
  get value() {
    return this._value;
  }
  set value(v2) {
    this._value = clamp(v2 || 0);
    this._changeDetectorRef.markForCheck();
  }
  /** Buffer value of the progress bar. Defaults to zero. */
  get bufferValue() {
    return this._bufferValue || 0;
  }
  set bufferValue(v2) {
    this._bufferValue = clamp(v2 || 0);
    this._changeDetectorRef.markForCheck();
  }
  /**
   * Mode of the progress bar.
   *
   * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to
   * 'determinate'.
   * Mirrored to mode attribute.
   */
  get mode() {
    return this._mode;
  }
  set mode(value) {
    this._mode = value;
    this._changeDetectorRef.markForCheck();
  }
  ngAfterViewInit() {
    this._ngZone.runOutsideAngular(() => {
      this._elementRef.nativeElement.addEventListener("transitionend", this._transitionendHandler);
    });
  }
  ngOnDestroy() {
    this._elementRef.nativeElement.removeEventListener("transitionend", this._transitionendHandler);
  }
  /** Gets the transform style that should be applied to the primary bar. */
  _getPrimaryBarTransform() {
    return `scaleX(${this._isIndeterminate() ? 1 : this.value / 100})`;
  }
  /** Gets the `flex-basis` value that should be applied to the buffer bar. */
  _getBufferBarFlexBasis() {
    return `${this.mode === "buffer" ? this.bufferValue : 100}%`;
  }
  /** Returns whether the progress bar is indeterminate. */
  _isIndeterminate() {
    return this.mode === "indeterminate" || this.mode === "query";
  }
};
_MatProgressBar.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatProgressBar, deps: [{ token: ElementRef }, { token: NgZone }, { token: ChangeDetectorRef }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_PROGRESS_BAR_DEFAULT_OPTIONS, optional: true }], target: FactoryTarget.Component });
_MatProgressBar.\u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "17.0.0", version: "17.2.0", type: _MatProgressBar, isStandalone: true, selector: "mat-progress-bar", inputs: { color: "color", value: ["value", "value", numberAttribute], bufferValue: ["bufferValue", "bufferValue", numberAttribute], mode: "mode" }, outputs: { animationEnd: "animationEnd" }, host: { attributes: { "role": "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "tabindex": "-1" }, properties: { "attr.aria-valuenow": "_isIndeterminate() ? null : value", "attr.mode": "mode", "class": '"mat-" + color', "class._mat-animation-noopable": "_isNoopAnimation", "class.mdc-linear-progress--animation-ready": "!_isNoopAnimation", "class.mdc-linear-progress--indeterminate": "_isIndeterminate()" }, classAttribute: "mat-mdc-progress-bar mdc-linear-progress" }, exportAs: ["matProgressBar"], ngImport: core_exports, template: `<!--
  All children need to be hidden for screen readers in order to support ChromeVox.
  More context in the issue: https://github.com/angular/components/issues/22165.
-->
<div class="mdc-linear-progress__buffer" aria-hidden="true">
  <div
    class="mdc-linear-progress__buffer-bar"
    [style.flex-basis]="_getBufferBarFlexBasis()"></div>
  <!-- Remove the dots outside of buffer mode since they can cause CSP issues (see #28938) -->
  @if (mode === 'buffer') {
    <div class="mdc-linear-progress__buffer-dots"></div>
  }
</div>
<div
  class="mdc-linear-progress__bar mdc-linear-progress__primary-bar"
  aria-hidden="true"
  [style.transform]="_getPrimaryBarTransform()">
  <span class="mdc-linear-progress__bar-inner"></span>
</div>
<div class="mdc-linear-progress__bar mdc-linear-progress__secondary-bar" aria-hidden="true">
  <span class="mdc-linear-progress__bar-inner"></span>
</div>
`, styles: [`@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half))}100%{transform:translateX(var(--mdc-linear-progress-primary-full))}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full))}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-primary-full-neg))}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter-neg))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full-neg))}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}@media screen and (forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden}.mdc-linear-progress__buffer-dots{background-repeat:repeat-x;flex:auto;transform:rotate(180deg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E");animation:mdc-linear-progress-buffering 250ms infinite linear}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar{right:0;-webkit-transform-origin:center right;transform-origin:center right}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots{animation:none}.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner{animation:none}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}.mdc-linear-progress__bar-inner{border-color:var(--mdc-linear-progress-active-indicator-color)}.mdc-linear-progress__buffer-dots{background-color:var(--mdc-linear-progress-track-color)}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}}.mdc-linear-progress__buffer-bar{background-color:var(--mdc-linear-progress-track-color)}.mdc-linear-progress{height:max(var(--mdc-linear-progress-track-height), var(--mdc-linear-progress-active-indicator-height))}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress{height:4px}}.mdc-linear-progress__bar{height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__bar-inner{border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{height:var(--mdc-linear-progress-track-height)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-size:10px var(--mdc-linear-progress-track-height)}}.mdc-linear-progress__buffer{border-radius:var(--mdc-linear-progress-track-shape)}.mat-mdc-progress-bar{display:block;text-align:start;--mdc-linear-progress-primary-half: 83.67142%;--mdc-linear-progress-primary-full: 200.611057%;--mdc-linear-progress-secondary-quarter: 37.651913%;--mdc-linear-progress-secondary-half: 84.386165%;--mdc-linear-progress-secondary-full: 160.277782%;--mdc-linear-progress-primary-half-neg: -83.67142%;--mdc-linear-progress-primary-full-neg: -200.611057%;--mdc-linear-progress-secondary-quarter-neg: -37.651913%;--mdc-linear-progress-secondary-half-neg: -84.386165%;--mdc-linear-progress-secondary-full-neg: -160.277782%}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}`], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None });
var MatProgressBar = _MatProgressBar;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatProgressBar, decorators: [{
  type: Component,
  args: [{ selector: "mat-progress-bar", exportAs: "matProgressBar", host: {
    "role": "progressbar",
    "aria-valuemin": "0",
    "aria-valuemax": "100",
    // set tab index to -1 so screen readers will read the aria-label
    // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox
    "tabindex": "-1",
    "[attr.aria-valuenow]": "_isIndeterminate() ? null : value",
    "[attr.mode]": "mode",
    "class": "mat-mdc-progress-bar mdc-linear-progress",
    "[class]": '"mat-" + color',
    "[class._mat-animation-noopable]": "_isNoopAnimation",
    "[class.mdc-linear-progress--animation-ready]": "!_isNoopAnimation",
    "[class.mdc-linear-progress--indeterminate]": "_isIndeterminate()"
  }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation$1.None, standalone: true, template: `<!--
  All children need to be hidden for screen readers in order to support ChromeVox.
  More context in the issue: https://github.com/angular/components/issues/22165.
-->
<div class="mdc-linear-progress__buffer" aria-hidden="true">
  <div
    class="mdc-linear-progress__buffer-bar"
    [style.flex-basis]="_getBufferBarFlexBasis()"></div>
  <!-- Remove the dots outside of buffer mode since they can cause CSP issues (see #28938) -->
  @if (mode === 'buffer') {
    <div class="mdc-linear-progress__buffer-dots"></div>
  }
</div>
<div
  class="mdc-linear-progress__bar mdc-linear-progress__primary-bar"
  aria-hidden="true"
  [style.transform]="_getPrimaryBarTransform()">
  <span class="mdc-linear-progress__bar-inner"></span>
</div>
<div class="mdc-linear-progress__bar mdc-linear-progress__secondary-bar" aria-hidden="true">
  <span class="mdc-linear-progress__bar-inner"></span>
</div>
`, styles: [`@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half))}100%{transform:translateX(var(--mdc-linear-progress-primary-full))}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full))}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-primary-full-neg))}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter-neg))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full-neg))}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}@media screen and (forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden}.mdc-linear-progress__buffer-dots{background-repeat:repeat-x;flex:auto;transform:rotate(180deg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E");animation:mdc-linear-progress-buffering 250ms infinite linear}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar{right:0;-webkit-transform-origin:center right;transform-origin:center right}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots{animation:none}.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner{animation:none}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}.mdc-linear-progress__bar-inner{border-color:var(--mdc-linear-progress-active-indicator-color)}.mdc-linear-progress__buffer-dots{background-color:var(--mdc-linear-progress-track-color)}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}}.mdc-linear-progress__buffer-bar{background-color:var(--mdc-linear-progress-track-color)}.mdc-linear-progress{height:max(var(--mdc-linear-progress-track-height), var(--mdc-linear-progress-active-indicator-height))}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress{height:4px}}.mdc-linear-progress__bar{height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__bar-inner{border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{height:var(--mdc-linear-progress-track-height)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-size:10px var(--mdc-linear-progress-track-height)}}.mdc-linear-progress__buffer{border-radius:var(--mdc-linear-progress-track-shape)}.mat-mdc-progress-bar{display:block;text-align:start;--mdc-linear-progress-primary-half: 83.67142%;--mdc-linear-progress-primary-full: 200.611057%;--mdc-linear-progress-secondary-quarter: 37.651913%;--mdc-linear-progress-secondary-half: 84.386165%;--mdc-linear-progress-secondary-full: 160.277782%;--mdc-linear-progress-primary-half-neg: -83.67142%;--mdc-linear-progress-primary-full-neg: -200.611057%;--mdc-linear-progress-secondary-quarter-neg: -37.651913%;--mdc-linear-progress-secondary-half-neg: -84.386165%;--mdc-linear-progress-secondary-full-neg: -160.277782%}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}`] }]
}], ctorParameters: () => [{ type: ElementRef }, { type: NgZone }, { type: ChangeDetectorRef }, { type: void 0, decorators: [{
  type: Optional
}, {
  type: Inject,
  args: [ANIMATION_MODULE_TYPE]
}] }, { type: void 0, decorators: [{
  type: Optional
}, {
  type: Inject,
  args: [MAT_PROGRESS_BAR_DEFAULT_OPTIONS]
}] }], propDecorators: { color: [{
  type: Input
}], value: [{
  type: Input,
  args: [{ transform: numberAttribute }]
}], bufferValue: [{
  type: Input,
  args: [{ transform: numberAttribute }]
}], animationEnd: [{
  type: Output
}], mode: [{
  type: Input
}] } });
function clamp(v2, min = 0, max = 100) {
  return Math.max(min, Math.min(max, v2));
}
var _MatProgressBarModule = class _MatProgressBarModule {
};
_MatProgressBarModule.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatProgressBarModule, deps: [], target: FactoryTarget.NgModule });
_MatProgressBarModule.\u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.0", ngImport: core_exports, type: _MatProgressBarModule, imports: [MatProgressBar], exports: [MatProgressBar, MatCommonModule] });
_MatProgressBarModule.\u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: _MatProgressBarModule, imports: [MatCommonModule] });
var MatProgressBarModule = _MatProgressBarModule;
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: core_exports, type: MatProgressBarModule, decorators: [{
  type: NgModule,
  args: [{
    imports: [MatProgressBar],
    exports: [MatProgressBar, MatCommonModule]
  }]
}] });

// projects/aimmo-design-system/aim-progress-bar/src/aim-progress-bar.component.ts
var _a25;
var AimProgressBarComponent = (_a25 = class {
  constructor() {
    this.PROGRESS_MODE = AimProgressMode;
    this.mode = AimProgressMode.determinate;
    this.progressColor = AimProgressColor.primary;
    this.value = 0;
    this.bufferValue = 0;
    this.fileUpload = false;
  }
}, _a25.propDecorators = {
  mode: [{ type: Input }],
  progressColor: [{ type: Input }],
  value: [{ type: Input }],
  bufferValue: [{ type: Input }],
  fileUpload: [{ type: HostBinding, args: ["class.file-upload"] }, { type: Input }]
}, _a25);
AimProgressBarComponent = __decorate([
  Component({
    selector: "aim-progress-bar",
    template: aim_progress_bar_component_default,
    standalone: true,
    imports: [MatProgressBarModule],
    styles: [aim_progress_bar_component_default2]
  })
], AimProgressBarComponent);

// src/app/core/phase.ts
var Phase;
(function(Phase3) {
  Phase3["local"] = "local";
  Phase3["dev"] = "dev";
  Phase3["qa"] = "qa";
  Phase3["beta"] = "beta";
  Phase3["prod"] = "prod";
  Phase3["gtaasLocal"] = "gtaas-local";
  Phase3["gtaasAlpha"] = "gtaas-alpha";
  Phase3["gtaasFeature"] = "gtaas-feature";
  Phase3["gtaasDev"] = "gtaas-dev";
  Phase3["gtaasQA"] = "gtaas-qa";
  Phase3["gtaasBeta"] = "gtaas-beta";
  Phase3["gtaasBetaJp"] = "gtaas-beta-jp";
  Phase3["gtaasProd"] = "gtaas-prod";
  Phase3["gtaasProdJp"] = "gtaas-prod-jp";
  Phase3["gtaasLocalSaas"] = "gtaas-local-saas";
  Phase3["gtaasProdSaas"] = "gtaas-prod-saas";
  Phase3["gtaasBetaSaas"] = "gtaas-beta-saas";
  Phase3["gtaasDevSaas"] = "gtaas-dev-saas";
  Phase3["gtaasQaSaas"] = "gtaas-qa-saas";
})(Phase || (Phase = {}));

// src/app/app.route.params.ts
var RouteParamName;
(function(RouteParamName2) {
  RouteParamName2["organizationOid"] = "organizationOid";
  RouteParamName2["projectId"] = "projectId";
  RouteParamName2["memberId"] = "memberId";
  RouteParamName2["studioId"] = "studioId";
  RouteParamName2["fileId"] = "fileId";
  RouteParamName2["question"] = "question";
  RouteParamName2["userId"] = "userId";
  RouteParamName2["datasetId"] = "datasetId";
  RouteParamName2["guideId"] = "guideId";
  RouteParamName2["exportId"] = "exportId";
  RouteParamName2["inspectionResultId"] = "inspectionResultId";
  RouteParamName2["projectNoticeId"] = "projectNoticeId";
  RouteParamName2["modelId"] = "modelId";
})(RouteParamName || (RouteParamName = {}));
var QueryParamName;
(function(QueryParamName2) {
  QueryParamName2["fileId"] = "fileId";
  QueryParamName2["questionId"] = "questionId";
  QueryParamName2["instanceId"] = "instanceId";
  QueryParamName2["from"] = "from";
  QueryParamName2["path"] = "path";
  QueryParamName2["fileName"] = "fileName";
  QueryParamName2["annotationType"] = "annotationType";
  QueryParamName2["annotationTypes"] = "annotationTypes";
  QueryParamName2["annotationClasses"] = "annotationClasses";
  QueryParamName2["stageId"] = "stageId";
  QueryParamName2["userId"] = "userId";
  QueryParamName2["sceneIds"] = "sceneIds";
  QueryParamName2["isSequence"] = "isSequence";
  QueryParamName2["isSequenceDatasetType"] = "isSequenceDatasetType";
  QueryParamName2["isSegmentation"] = "isSegmentation";
  QueryParamName2["sceneId"] = "sceneId";
  QueryParamName2["annotationTrackId"] = "annotationTrackId";
  QueryParamName2["annotationGroupId"] = "annotationGroupId";
  QueryParamName2["frameNumber"] = "frameNumber";
  QueryParamName2["viewMode"] = "viewMode";
  QueryParamName2["projectResolveError"] = "projectResolveError";
  QueryParamName2["searchType"] = "searchType";
  QueryParamName2["searchName"] = "searchName";
  QueryParamName2["resend"] = "resend";
})(QueryParamName || (QueryParamName = {}));

// src/app/app.route.paths.ts
var guideViewerPath = "guide-viewer";
var studioPath = "studio";
var gtViewerPath = "gt-viewer";
var dataTransferViewerPath = "data-transfer-viewer";
var semanticViewerPath = "semantic-viewer";
var miniViewViewerPath = "mini-view-viewer";
var resourceViewerPath = "resource-viewer";
var pointCloudCompositionViewerPath = "pc-composition-viewer";
var pointCloudResourceViewerPath = "pc-resource-viewer";
var pointCloudResourceMultichannelViewerPath = "pc-resource-multichannel-viewer";
var instanceThumbnailViewerPath = "instance-thumbnail-viewer";
var metaThumbnailViewerPath = "meta-thumbnail-viewer";
var route2 = {
  login: {
    name: "\uB85C\uADF8\uC778",
    path: "login",
    fullPath: "/login"
  },
  loginTemporary: {
    name: "\uB85C\uADF8\uC778 \uC784\uC2DC for gtaas",
    path: "login-temporary",
    fullPath: "/login-temporary"
  },
  signUp: {
    name: "\uD68C\uC6D0\uAC00\uC785",
    path: "sign-up",
    fullPath: "/sign-up",
    children: {
      signUpInformation: {
        name: "\uC815\uBCF4 \uC785\uB825",
        path: "information",
        fullPath: "/sign-up/information"
      },
      signUpOptionalInformation: {
        name: "\uC120\uD0DD \uC815\uBCF4 \uC785\uB825",
        path: "optional-information",
        fullPath: "/sign-up/optional-information"
      },
      emailSend: {
        name: "\uC778\uC99D \uBA54\uC77C \uBC1C\uC1A1",
        path: "send",
        fullPath: "/sign-up/send"
      },
      emailConfirm: {
        name: "\uC778\uC99D \uBA54\uC77C \uD655\uC778",
        path: "confirm",
        fullPath: "/sign-up/confirm"
      },
      signUpGoogleCreation: {
        name: "\uAD6C\uAE00 \uACC4\uC815 \uC0DD\uC131",
        path: "google-terms",
        fullPath: "/sign-up/google-terms"
      },
      signUpComplete: {
        name: "\uD68C\uC6D0\uAC00\uC785 \uC644\uB8CC",
        path: "complete",
        fullPath: "/sign-up/complete"
      },
      selectService: {
        name: "\uC11C\uBE44\uC2A4 \uC120\uD0DD",
        path: "select-service",
        fullPath: "/sign-up/select-service"
      }
    }
  },
  signUpMemberInvitation: {
    name: "\uBA64\uBC84 \uCD08\uB300 \uAC00\uC785",
    path: "sign-up/member-invitation",
    fullPath: "/sign-up/member-invitation"
  },
  findPassword: {
    name: "\uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30",
    path: "find-password",
    fullPath: "/find-password"
  },
  resetPassword: {
    name: "\uBE44\uBC00\uBC88\uD638 \uCD08\uAE30\uD654",
    path: "reset-password",
    fullPath: "/reset-password"
  },
  memberInvitationAccept: {
    name: "\uBA64\uBC84 \uCD08\uB300 \uC218\uB77D",
    path: "member-invitation/accept",
    fullPath: "/member-invitation/accept"
  },
  memberInvitationFail: {
    name: "\uBA64\uBC84 \uCD08\uB300 \uC2E4\uD328",
    path: "member-invitation/fail",
    fullPath: "/member-invitation/fail"
  },
  newOrganization: {
    name: "Organization \uC0DD\uC131",
    path: "new-organization",
    fullPath: "/new-organization"
  },
  confirmDeleteUser: {
    name: "\uD68C\uC6D0 \uD0C8\uD1F4 \uC774\uBA54\uC77C \uD655\uC778",
    path: "user/confirm-delete",
    fullPath: "/user/confirm-delete"
  },
  studio: {
    name: "\uC2A4\uD29C\uB514\uC624",
    path: `${studioPath}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: STUDIO_PATH
  },
  studioError: {
    name: "studio \uC5D0\uB7EC",
    path: "studio-error",
    fullPath: "studio-error"
  },
  miniViewViewer: {
    name: miniViewViewerPath,
    path: miniViewViewerPath,
    fullPath: miniViewViewerPath
  },
  resourceViewer: {
    name: resourceViewerPath,
    path: `${resourceViewerPath}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: RESOURCE_VIEWER_PATH
  },
  pointCloudResourceViewer: {
    name: pointCloudResourceViewerPath,
    path: pointCloudResourceViewerPath,
    fullPath: pointCloudResourceViewerPath
  },
  pointCloudResourceMultichannelViewer: {
    name: pointCloudResourceMultichannelViewerPath,
    path: pointCloudResourceMultichannelViewerPath,
    fullPath: pointCloudResourceMultichannelViewerPath
  },
  pointCloudCompositionViewer: {
    name: pointCloudCompositionViewerPath,
    path: pointCloudCompositionViewerPath,
    fullPath: pointCloudCompositionViewerPath
  },
  semanticViewer: {
    name: semanticViewerPath,
    path: `${semanticViewerPath}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: SEMANTIC_VIEWER_PATH
  },
  instanceThumbnailViewer: {
    name: instanceThumbnailViewerPath,
    path: `${instanceThumbnailViewerPath}/:${RouteParamName.projectId}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: ITV_VIEWER_PATH
  },
  metaThumbnailViewer: {
    name: metaThumbnailViewerPath,
    path: `${metaThumbnailViewerPath}/:${RouteParamName.projectId}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: META_THUMBNAIL_VIEWER_PATH
  },
  guideViewer: {
    name: "\uAC00\uC774\uB4DC \uBDF0\uC5B4",
    path: `${guideViewerPath}/:${RouteParamName.guideId}`,
    fullPath: GUIDE_VIEWER_PATH
  },
  fileManager: {
    name: "\uD30C\uC77C\uB9E4\uB2C8\uC800",
    path: `file-manager/:${RouteParamName.projectId}/:${RouteParamName.datasetId}`,
    fullPath: FILE_MANAGER_PATH
  },
  sceneFileManager: {
    name: "\uC52C\uD30C\uC77C \uAD00\uB9AC",
    path: `scene-file-manager/:${RouteParamName.projectId}/:${RouteParamName.datasetId}`,
    fullPath: SCENE_FILE_MANAGER_PATH
  },
  gtViewer: {
    name: "\uC0B0\uCD9C\uBB3C \uBDF0\uC5B4",
    path: `${gtViewerPath}/:${RouteParamName.exportId}`,
    fullPath: GT_VIEWER_PATH
  },
  dataTransferViewer: {
    name: "\uC815\uC81C \uC804\uC1A1 \uB370\uC774\uD130 \uBDF0\uC5B4",
    path: `${dataTransferViewerPath}/:${RouteParamName.exportId}`,
    fullPath: DATA_TRANSFER_VIEWER_PATH
  },
  modelDetail: {
    name: "\uCD94\uB860 \uBAA8\uB378 \uC0C1\uC138",
    path: `:${RouteParamName.organizationOid}/model-detail/:${RouteParamName.modelId}`,
    fullPath: MODEL_DETAIL_PATH
  },
  projects: {
    name: "\uD504\uB85C\uC81D\uD2B8 \uBAA9\uB85D",
    path: "projects",
    fullPath: PROJECTS_PATH
  },
  projectCreation: {
    name: "\uD504\uB85C\uC81D\uD2B8 \uC0DD\uC131",
    path: "project-creation",
    fullPath: PROJECT_CREATION_PATH
  },
  project: {
    name: "\uD504\uB85C\uC81D\uD2B8",
    path: `projects/:${RouteParamName.projectId}`,
    fullPath: PROJECT_PATH
  },
  organization: {
    name: "Organization",
    path: "",
    fullPath: ORGANIZATION_PATH
  },
  myInfo: {
    name: "\uAC1C\uC778 \uC815\uBCF4 \uC218\uC815",
    path: "my-info",
    fullPath: "/my-info"
  },
  myInfoSaas: {
    name: "\uC5D4\uD130\uD504\uB77C\uC774\uC988 \uAC1C\uC778 \uC815\uBCF4 \uC218\uC815",
    path: "my-info-saas",
    fullPath: "/my-info-saas"
  },
  subscriptionManager: {
    name: "\uAD6C\uB3C5 \uB9E4\uB2C8\uC800",
    path: "subscription-manager",
    fullPath: "/subscription-manager"
  },
  changePassword: {
    name: "\uBE44\uBC00\uBC88\uD638 \uBCC0\uACBD",
    path: "change-password",
    fullPath: CHANGE_PASSWORD_PATH
  },
  organizationError: {
    name: "organization \uC5D0\uB7EC",
    path: "organization-error",
    fullPath: "/organization-error"
  },
  tamperingError: {
    name: "tampering \uC5D0\uB7EC",
    path: "tampering-error",
    fullPath: "/tampering-error"
  },
  projectError: {
    name: "project \uC5D0\uB7EC",
    path: "project-error",
    fullPath: PROJECT_ERROR_PATH
  },
  makeWorkspace: {
    name: "\uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uC0DD\uC131",
    path: "make-workspace",
    fullPath: "/make-workspace"
  },
  linkExpired: {
    name: "\uB9C1\uD06C \uB9CC\uB8CC",
    path: "link-expired",
    fullPath: "/link-expired"
  }
};
function STUDIO_PATH(datasetId, studioId) {
  return `/${studioPath}/${datasetId}/${studioId}`;
}
function RESOURCE_VIEWER_PATH(datasetId, studioId) {
  return `/${resourceViewerPath}/${datasetId}/${studioId}`;
}
function SEMANTIC_VIEWER_PATH(datasetId, studioId) {
  return `/${semanticViewerPath}/${datasetId}/${studioId}`;
}
function ITV_VIEWER_PATH(projectId, datasetId, studioId) {
  return `/${instanceThumbnailViewerPath}/${projectId}/${datasetId}/${studioId}`;
}
function META_THUMBNAIL_VIEWER_PATH(projectId, datasetId, studioId) {
  return `/${metaThumbnailViewerPath}/${projectId}/${datasetId}/${studioId}`;
}
function GUIDE_VIEWER_PATH(guideId) {
  return `/${guideViewerPath}/${guideId}`;
}
function FILE_MANAGER_PATH(projectId, datasetId) {
  return `/file-manager/${projectId}/${datasetId}`;
}
function SCENE_FILE_MANAGER_PATH(projectId, datasetId) {
  return `/scene-file-manager/${projectId}/${datasetId}`;
}
function GT_VIEWER_PATH(exportId) {
  return `/${gtViewerPath}/${exportId}`;
}
function DATA_TRANSFER_VIEWER_PATH(exportId) {
  return `/${dataTransferViewerPath}/${exportId}`;
}
function MODEL_DETAIL_PATH(organizationOid, modelId) {
  return `/@${organizationOid}/model-detail/${modelId}`;
}
function PROJECTS_PATH(organizationOid) {
  return `/@${organizationOid}/projects`;
}
function PROJECT_CREATION_PATH(organizationOid) {
  return `/@${organizationOid}/project-creation`;
}
function PROJECT_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}`;
}
function ORGANIZATION_PATH(organizationOid) {
  return `/@${organizationOid}`;
}
function CHANGE_PASSWORD_PATH(organizationOid) {
  return `/@${organizationOid}/change-password`;
}
function PROJECT_ERROR_PATH(organizationOid) {
  return `/@${organizationOid}/project-error`;
}

// src/app/pages/project/project.route.path.ts
var projectRoute = {
  home: {
    path: "home",
    fullPath: PROJECT_HOME_PATH
  },
  storage: {
    path: "storage",
    fullPath: PROJECT_STORAGE_PATH
  },
  dataset: {
    path: "dataset",
    fullPath: PROJECT_DATASET_PATH
  },
  practice: {
    path: "practice",
    fullPath: PROJECT_PRACTICE_PATH
  },
  qna: {
    path: "qna",
    fullPath: PROJECT_QNA_PATH
  },
  sendDataset: {
    path: "send-dataset",
    fullPath: PROJECT_SEND_DATASET_PATH
  },
  downloadList: {
    path: "download-list",
    fullPath: PROJECT_DOWNLOAD_LIST_PATH,
    children: {
      export: {
        path: "export",
        fullPath: PROJECT_DOWNLOAD_LIST_EXPORT_PATH,
        children: {
          list: {
            path: "list",
            fullPath: PROJECT_DOWNLOAD_LIST_EXPORT_LIST_PATH
          },
          add: {
            path: "add",
            fullPath: PROJECT_DOWNLOAD_LIST_EXPORT_ADD_PATH
          }
        }
      },
      dataset: {
        path: "dataset",
        fullPath: PROJECT_DOWNLOAD_LIST_DATASET_PATH
      },
      statsByClass: {
        path: "stats-by-class",
        fullPath: PROJECT_DOWNLOAD_LIST_STATS_BY_CLASS
      },
      gtContributionStats: {
        path: "gt-contribution-stats",
        fullPath: PROJECT_DOWNLOAD_LIST_GT_CONTRIBUTION_STATS
      },
      gtStatsByClass: {
        path: "gt-stats-by-class",
        fullPath: PROJECT_DOWNLOAD_LIST_GT_STATS_BY_CLASS
      }
    }
  },
  stats: {
    path: "stats",
    fullPath: PROJECT_STATS_PATH,
    overview: {
      path: "overview",
      fullPath: PROJECT_STATS_OVERVIEW_PATH
    },
    annotator: {
      path: "annotator",
      fullPath: PROJECT_STATS_ANNOTATOR_PATH
    },
    annotation: {
      path: "annotation",
      fullPath: PROJECT_STATS_ANNOTATION_PATH
    },
    ai: {
      path: "ai",
      fullPath: PROJECT_STATS_AI_PATH,
      children: {
        trend: {
          path: "trend",
          fullPath: PROJECT_STATS_AI_TREND_PATH
        },
        stage: {
          path: "stage",
          fullPath: PROJECT_STATS_AI_STAGE_PATH
        },
        instance: {
          path: "instance",
          fullPath: PROJECT_STATS_AI_INSTANCE_PATH
        }
      }
    },
    qc: {
      path: "qc",
      fullPath: PROJECT_STATS_QC_PATH,
      children: {
        dashboard: {
          path: "dashboard",
          fullPath: PROJECT_STATS_QC_DASHBOARD_PATH
        },
        setting: {
          path: "setting",
          fullPath: PROJECT_STATS_QC_SETTING_PATH
        }
      }
    },
    assigneeStatus: {
      path: "assignee-status",
      fullPath: PROJECT_STATS_ASSIGNEE_STATUS_PATH
    },
    payments: {
      path: "payments",
      fullPath: PROJECT_STATS_PAYMENTS_PATH,
      children: {
        scheduledPayments: {
          path: "scheduled",
          fullPath: PROJECT_STATS_PAYMENTS_SCHEDULED_PATH
        },
        totalPayments: {
          path: "total",
          fullPath: PROJECT_STATS_PAYMENTS_TOTAL_PATH,
          children: {
            totalPaymentMemberView: {
              path: "member-view",
              fullPath: PROJECT_STATS_PAYMENTS_TOTAL_MEMBER_VIEW_PATH
            },
            totalPaymentDateView: {
              path: "date-view",
              fullPath: PROJECT_STATS_PAYMENTS_TOTAL_DATE_VIEW_PATH
            }
          }
        },
        totalPaymentDetail: {
          path: ":payBookId",
          fullPath: PROJECT_STATS_PAYMENTS_TOTAL_DETAIL_PATH
        },
        wagePolicy: {
          path: "wage-policy",
          fullPath: PROJECT_STATS_PAYMENTS_WAGE_POLICY_PATH
        },
        excelDownload: {
          path: "excel-download",
          fullPath: PROJECT_STATS_PAYMENTS_EXEL_DOWNLOAD_PATH
        }
      }
    }
  },
  curation: {
    path: `curation/:${RouteParamName.projectId}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: PROJECT_CURATION_PATH
  },
  smartLabeling: {
    path: "smart-labeling",
    fullPath: PROJECT_SMART_LABELING_PATH
  },
  aiInspections: {
    path: "ai-inspection",
    fullPath: PROJECT_AI_INSPECTIONS_PATH,
    aiInspection: {
      path: `:${RouteParamName.inspectionResultId}`,
      fullPath: PROJECT_AI_INSPECTION_PATH
    }
  },
  projectSettings: {
    path: "project-settings",
    fullPath: PROJECT_SETTINGS_PATH,
    projectConfig: {
      path: "project-config",
      fullPath: PROJECT_CONFIG_PATH
    },
    memberConfig: {
      path: "member-config",
      fullPath: PROJECT_MEMBER_CONFIG_PATH,
      children: {
        addMemberConfig: {
          path: "member-config/add-member",
          fullPath: PROJECT_ADD_MEMBER_CONFIG_PATH
        }
      }
    },
    noticeConfig: {
      path: "notice-config",
      fullPath: PROJECT_NOTICE_CONFIG_PATH,
      children: {
        addNoticeConfig: {
          path: `notice-config/add-notice`,
          fullPath: PROJECT_ADD_NOTICE_CONFIG_PATH
        },
        editNoticeConfig: {
          path: `notice-config/edit-notice/:${RouteParamName.projectNoticeId}`,
          fullPath: PROJECT_EDIT_NOTICE_CONFIG_PATH
        }
      }
    },
    labelerSupportConfig: {
      path: "labeler-support-config",
      fullPath: PROJECT_LABELER_SUPPORT_CONFIG_PATH
    }
  },
  metaDataset: {
    path: "meta-dataset",
    fullPath: PROJECT_META_DATASET_PATH
  },
  metaCuration: {
    path: `meta-curation/:${RouteParamName.projectId}/:${RouteParamName.datasetId}/:${RouteParamName.studioId}`,
    fullPath: PROJECT_META_CURATION_PATH
  },
  metaProjectSettings: {
    path: "meta-project-settings",
    fullPath: PROJECT_META_SETTINGS_PATH
  },
  labelingSettings: {
    path: "labeling-settings",
    fullPath: PROJECT_LABELING_SETTINGS_PATH,
    labelingConfig: {
      path: "labeling-config",
      fullPath: PROJECT_LABELING_CONFIG_PATH
    },
    guides: {
      path: "guides",
      fullPath: PROJECT_GUIDES_PATH,
      children: {
        newGuide: {
          path: "guides/new",
          fullPath: PROJECT_NEW_GUIDE_PATH
        },
        guide: {
          path: `guides/:${RouteParamName.guideId}`,
          fullPath: PROJECT_GUIDE_PATH
        }
      }
    },
    toolPreference: {
      path: "tool-preference",
      fullPath: PROJECT_TOOL_PREFERENCE_PATH
    },
    rvSetting: {
      path: "rv-setting",
      fullPath: PROJECT_RV_SETTING_PATH
    },
    validatorSetting: {
      path: "validator",
      fullPath: PROJECT_VALIDATOR_SETTING_PATH
    },
    sendDatasetSetting: {
      path: "send-dataset-setting",
      fullPath: PROJECT_SEND_DATASET_SETTING_PATH
    },
    projectMerge: {
      path: "project-merge",
      fullPath: PROJECT_MERGE_PATH
    }
  },
  pay: {
    path: "pay",
    fullPath: PROJECT_PAY_PATH
  },
  tasks: {
    path: "tasks",
    fullPath: PROJECT_TASKS_PATH
  },
  taskPractice: {
    path: "task-practice",
    fullPath: PROJECT_TASK_PRACTICE_PATH
  },
  taskStats: {
    path: "task-stats",
    fullPath: PROJECT_TASK_STATS_PATH
  }
};
function PROJECT_HOME_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/home`;
}
function PROJECT_STORAGE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/storage`;
}
function PROJECT_DATASET_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/dataset`;
}
function PROJECT_CURATION_PATH(organizationOid, projectId, datasetId, studioId) {
  return `/@${organizationOid}/projects/${projectId}/curation/${projectId}/${datasetId}/${studioId}`;
}
function PROJECT_SMART_LABELING_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/smart-labeling`;
}
function PROJECT_GUIDES_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/guides`;
}
function PROJECT_NEW_GUIDE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/guides/new`;
}
function PROJECT_GUIDE_PATH(organizationOid, projectId, guideId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/guides/${guideId}`;
}
function PROJECT_QNA_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/qna`;
}
function PROJECT_PRACTICE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/practice`;
}
function PROJECT_AI_INSPECTIONS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/ai-inspection`;
}
function PROJECT_AI_INSPECTION_PATH(organizationOid, projectId, inspectionId) {
  return `/@${organizationOid}/projects/${projectId}/ai-inspection/${inspectionId}`;
}
function PROJECT_DOWNLOAD_LIST_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list`;
}
function PROJECT_DOWNLOAD_LIST_EXPORT_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/export`;
}
function PROJECT_DOWNLOAD_LIST_EXPORT_LIST_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/export/list`;
}
function PROJECT_DOWNLOAD_LIST_EXPORT_ADD_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/export/add`;
}
function PROJECT_DOWNLOAD_LIST_DATASET_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/dataset`;
}
function PROJECT_DOWNLOAD_LIST_STATS_BY_CLASS(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/stats-by-class`;
}
function PROJECT_DOWNLOAD_LIST_GT_CONTRIBUTION_STATS(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/gt-contribution-stats`;
}
function PROJECT_DOWNLOAD_LIST_GT_STATS_BY_CLASS(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/download-list/gt-stats-by-class`;
}
function PROJECT_SEND_DATASET_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/send-dataset`;
}
function PROJECT_STATS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats`;
}
function PROJECT_STATS_OVERVIEW_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/overview`;
}
function PROJECT_STATS_ANNOTATOR_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/annotator`;
}
function PROJECT_STATS_ANNOTATION_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/annotation`;
}
function PROJECT_STATS_AI_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/ai`;
}
function PROJECT_STATS_AI_TREND_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/ai/trend`;
}
function PROJECT_STATS_AI_STAGE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/ai/stage`;
}
function PROJECT_STATS_AI_INSTANCE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/ai/instance`;
}
function PROJECT_STATS_QC_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/qc`;
}
function PROJECT_STATS_QC_DASHBOARD_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/qc/dashboard`;
}
function PROJECT_STATS_QC_SETTING_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/qc/setting`;
}
function PROJECT_STATS_ASSIGNEE_STATUS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/assignee-status`;
}
function PROJECT_STATS_PAYMENTS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments`;
}
function PROJECT_STATS_PAYMENTS_SCHEDULED_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/scheduled`;
}
function PROJECT_STATS_PAYMENTS_TOTAL_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/total`;
}
function PROJECT_STATS_PAYMENTS_TOTAL_MEMBER_VIEW_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/total/member-view`;
}
function PROJECT_STATS_PAYMENTS_TOTAL_DATE_VIEW_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/total/date-view`;
}
function PROJECT_STATS_PAYMENTS_TOTAL_DETAIL_PATH(organizationOid, projectId, payBookId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/total/${payBookId}`;
}
function PROJECT_STATS_PAYMENTS_WAGE_POLICY_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/wage-policy`;
}
function PROJECT_STATS_PAYMENTS_EXEL_DOWNLOAD_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/stats/payments/excel-download`;
}
function PROJECT_TASKS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/tasks`;
}
function PROJECT_PAY_PATH(organizationOid, internalProjectId) {
  return `/@${organizationOid}/projects/${internalProjectId}/pay`;
}
function PROJECT_TASK_STATS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/task-stats`;
}
function PROJECT_TASK_PRACTICE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/task-practice`;
}
function PROJECT_SETTINGS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings`;
}
function PROJECT_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/project-config`;
}
function PROJECT_MEMBER_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/member-config`;
}
function PROJECT_ADD_MEMBER_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/member-config/add-member`;
}
function PROJECT_NOTICE_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/notice-config`;
}
function PROJECT_ADD_NOTICE_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/notice-config/add-notice`;
}
function PROJECT_EDIT_NOTICE_CONFIG_PATH(organizationOid, projectId, projectNoticeId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/notice-config/edit-notice/${projectNoticeId}`;
}
function PROJECT_LABELER_SUPPORT_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/project-settings/labeler-support-config`;
}
function PROJECT_LABELING_SETTINGS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings`;
}
function PROJECT_LABELING_CONFIG_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/labeling-config`;
}
function PROJECT_VALIDATOR_SETTING_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/validator`;
}
function PROJECT_SEND_DATASET_SETTING_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/send-dataset-setting`;
}
function PROJECT_MERGE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/project-merge`;
}
function PROJECT_TOOL_PREFERENCE_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/labeling-settings/tool-preference`;
}
function PROJECT_RV_SETTING_PATH(organizationOid, internalProjectId) {
  return `/@${organizationOid}/projects/${internalProjectId}/labeling-settings/rv-setting`;
}
function PROJECT_META_DATASET_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/meta-dataset`;
}
function PROJECT_META_CURATION_PATH(organizationOid, projectId, datasetId, studioId) {
  return `/@${organizationOid}/projects/${projectId}/meta-curation/${projectId}/${datasetId}/${studioId}`;
}
function PROJECT_META_SETTINGS_PATH(organizationOid, projectId) {
  return `/@${organizationOid}/projects/${projectId}/meta-project-settings`;
}

// projects/labelers/src/environments/environment.interface.ts
var Phase2;
(function(Phase3) {
  Phase3["local"] = "local";
  Phase3["alpha"] = "alpha";
  Phase3["feature"] = "feature";
  Phase3["dev"] = "dev";
  Phase3["qa"] = "qa";
  Phase3["beta"] = "beta";
  Phase3["prod"] = "prod";
  Phase3["betaJp"] = "beta-jp";
  Phase3["prodJp"] = "prod-jp";
})(Phase2 || (Phase2 = {}));
var AIMMO_ORGANIZATION_ID = "5f4f479f3c77d7cba20b22b2";
var LABELERS_DEV_GA_ID = "UA-112938193-5";

// projects/aimmo-renew-home/src/shared/models/breakpoints.model.ts
var DeviceType;
(function(DeviceType2) {
  DeviceType2["mobile"] = "Mobile";
  DeviceType2["tablet"] = "Tablet";
  DeviceType2["desktop"] = "Desktop";
  DeviceType2["fullSize"] = "FullSize";
})(DeviceType || (DeviceType = {}));

// projects/aimmo-i18n/src/model.ts
var Lang;
(function(Lang2) {
  Lang2["KO"] = "ko";
  Lang2["EN"] = "en";
  Lang2["VI"] = "vi";
  Lang2["JA"] = "ja";
})(Lang || (Lang = {}));
var LANGUAGE_CODES = [
  Lang.KO,
  Lang.EN,
  Lang.VI,
  Lang.JA
];
function getLanguageCode(code) {
  return LANGUAGE_CODES.find((languageCode2) => isEqual_default(code, languageCode2));
}
var SupportLanguages = {
  admin: [Lang.KO, Lang.EN],
  dassDatasetViewer: [Lang.KO, Lang.EN],
  external: LANGUAGE_CODES,
  labelers: LANGUAGE_CODES,
  labelersCsCenter: [Lang.KO, Lang.EN, Lang.VI],
  labelersInhouse: [Lang.KO, Lang.EN, Lang.VI],
  gtaas: LANGUAGE_CODES,
  aimmoCore: [Lang.KO, Lang.EN],
  aimmoCore2: [Lang.KO, Lang.EN],
  aimmoCoreAdmin: [Lang.KO, Lang.EN],
  aimmoCoreAzure: [Lang.KO, Lang.EN]
};
var I18N_GUARD_CONFIG = new InjectionToken("I18nGuardConfig");

// node_modules/ngforage/fesm2020/ngforage.mjs
var lf = __toESM(require_localforage(), 1);
var CachedItemImpl = class {
  constructor(data, expiryTime) {
    this.data = data;
    this.expires = new Date(typeof expiryTime === "number" ? expiryTime : 0);
    this.hasData = data != null;
  }
  get expired() {
    return this.expiresIn === 0;
  }
  get expiresIn() {
    return Math.max(0, this.expires.getTime() - Date.now());
  }
  toJSON() {
    return {
      data: this.data,
      expired: this.expired,
      expires: this.expires,
      expiresIn: this.expiresIn,
      hasData: this.hasData
    };
  }
  toString() {
    return JSON.stringify(this.toJSON());
  }
};
var localForage = "defineDriver" in lf ? lf : lf.default;
var Driver;
(function(Driver2) {
  Driver2[Driver2["INDEXED_DB"] = localForage.INDEXEDDB] = "INDEXED_DB";
  Driver2[Driver2["LOCAL_STORAGE"] = localForage.LOCALSTORAGE] = "LOCAL_STORAGE";
  Driver2[Driver2["WEB_SQL"] = localForage.WEBSQL] = "WEB_SQL";
})(Driver || (Driver = {}));
for (const d2 of [localForage.INDEXEDDB, localForage.LOCALSTORAGE, localForage.WEBSQL]) {
  delete Driver[d2];
}
Object.freeze(Driver);
var DEFAULT_CONFIG = new InjectionToken("Default NgForage config");
var $defaultConfig = Symbol("Default Config");
var NgForageConfig = class {
  constructor(conf) {
    this[$defaultConfig] = {
      cacheTime: 3e5,
      description: "",
      driver: [Driver.INDEXED_DB, Driver.WEB_SQL, Driver.LOCAL_STORAGE],
      name: "ngForage",
      size: 4980736,
      storeName: "ng_forage",
      version: 1
    };
    if (conf) {
      this.configure(conf);
    }
  }
  /**
   * Cache time in milliseconds
   * @default 300000
   */
  get cacheTime() {
    return this[$defaultConfig].cacheTime;
  }
  set cacheTime(t2) {
    this[$defaultConfig].cacheTime = t2;
  }
  /**
   * Get the compiled configuration
   */
  get config() {
    return {
      cacheTime: this.cacheTime,
      description: this.description,
      driver: this.driver,
      name: this.name,
      size: this.size,
      storeName: this.storeName,
      version: this.version
    };
  }
  /**
   * A description of the database, essentially for developer usage.
   * @default
   */
  get description() {
    return this[$defaultConfig].description;
  }
  set description(v2) {
    this[$defaultConfig].description = v2;
  }
  /**
   * The preferred driver(s) to use.
   */
  get driver() {
    const d2 = this[$defaultConfig].driver;
    if (!d2) {
      return [];
    } else if (Array.isArray(d2)) {
      return d2.slice();
    }
    return d2;
  }
  set driver(v2) {
    this[$defaultConfig].driver = v2;
  }
  /**
   * The name of the database. May appear during storage limit prompts. Useful to use the name of your app here.
   * In localStorage, this is used as a key prefix for all keys stored in localStorage.
   * @default ngForage
   */
  get name() {
    return this[$defaultConfig].name;
  }
  set name(v2) {
    this[$defaultConfig].name = v2;
  }
  /**
   * The size of the database in bytes. Used only in WebSQL for now.
   * @default 4980736
   */
  get size() {
    return this[$defaultConfig].size;
  }
  set size(v2) {
    this[$defaultConfig].size = v2;
  }
  /**
   * The name of the datastore.
   * In IndexedDB this is the dataStore,
   * in WebSQL this is the name of the key/value table in the database.
   * Must be alphanumeric, with underscores.
   * Any non-alphanumeric characters will be converted to underscores.
   * @default ng_forage
   */
  get storeName() {
    return this[$defaultConfig].storeName;
  }
  set storeName(v2) {
    this[$defaultConfig].storeName = v2;
  }
  /**
   * The version of your database. May be used for upgrades in the future; currently unused.
   * @default 1.0
   */
  get version() {
    return this[$defaultConfig].version;
  }
  set version(v2) {
    this[$defaultConfig].version = v2;
  }
  /**
   * Bulk-set configuration options
   * @param opts The configuration
   */
  configure(opts) {
    const resolved = __spreadValues({}, opts);
    if (Array.isArray(resolved?.driver)) {
      resolved.driver = resolved.driver.slice();
    }
    Object.assign(this[$defaultConfig], resolved);
    return this;
  }
  /**
   * Define a driver
   *
   * You’ll want to make sure you accept a callback argument and that you pass the same arguments to callbacks as the
   * default drivers do. You’ll also want to resolve or reject promises.
   * Check any of the {@link https://github.com/mozilla/localForage/tree/master/src/drivers default drivers}
   * for an idea of how to implement your own, custom driver.
   * @param spec Driver spec
   */
  defineDriver(spec) {
    return __async(this, null, function* () {
      return yield localForage.defineDriver(spec);
    });
  }
  /** @internal */
  toJSON() {
    return this.config;
  }
  toString() {
    return JSON.stringify(this.toJSON());
  }
};
NgForageConfig.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForageConfig, deps: [{ token: DEFAULT_CONFIG, optional: true }], target: FactoryTarget.Injectable });
NgForageConfig.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForageConfig, providedIn: "root" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForageConfig, decorators: [{
  type: Injectable,
  args: [{ providedIn: "root" }]
}], ctorParameters: function() {
  return [{ type: void 0, decorators: [{
    type: Optional
  }, {
    type: Inject,
    args: [DEFAULT_CONFIG]
  }] }];
} });
var stores = /* @__PURE__ */ new Map();
function getDriverString(driver) {
  if (!driver) {
    return "";
  } else if (Array.isArray(driver)) {
    return driver.slice().sort().join(",");
  } else {
    return driver;
  }
}
function getHash(cfg) {
  return [
    getDriverString(cfg.driver),
    cfg.name,
    cfg.size,
    cfg.storeName,
    cfg.version,
    cfg.description,
    cfg.cacheTime
  ].join("|");
}
var conf$$1 = Symbol("Config");
var InstanceFactory = class {
  constructor(conf) {
    this[conf$$1] = conf;
  }
  getInstance(cfg) {
    const resolvedCfg = __spreadValues(__spreadValues({}, this[conf$$1].config), cfg);
    const hash = getHash(resolvedCfg);
    const existing = stores.get(hash);
    if (existing) {
      return existing;
    }
    const nu = localForage.createInstance(resolvedCfg);
    const origDropInstance = nu.dropInstance;
    nu.dropInstance = function() {
      stores.delete(hash);
      return origDropInstance.apply(this, arguments);
    };
    stores.set(hash, nu);
    return nu;
  }
};
InstanceFactory.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: InstanceFactory, deps: [{ token: NgForageConfig }], target: FactoryTarget.Injectable });
InstanceFactory.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: InstanceFactory, providedIn: "root" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: InstanceFactory, decorators: [{
  type: Injectable,
  args: [{ providedIn: "root" }]
}], ctorParameters: function() {
  return [{ type: NgForageConfig }];
} });
var store$ = Symbol("Store");
var BaseConfigurableImpl = class {
  /** @internal */
  constructor(config, instanceFactory) {
    this.config = {};
    this.storeNeedsRecalc = true;
    this.baseConfig = config;
    this.fact = instanceFactory;
  }
  /**
   * A description of the database, essentially for developer usage.
   * @default ""
   */
  get description() {
    return this.config.description || this.baseConfig.description;
  }
  set description(v2) {
    this.config.description = v2;
    this.storeNeedsRecalc = true;
  }
  /**
   * The preferred driver(s) to use.
   * @default IndexedDB, WebSQL and localStorage
   */
  get driver() {
    return this.config.driver ?? this.baseConfig.driver;
  }
  set driver(v2) {
    this.config.driver = v2;
    this.storeNeedsRecalc = true;
  }
  /**
   * The name of the database. May appear during storage limit prompts. Useful to use the name of your app here.
   * In localStorage, this is used as a key prefix for all keys stored in localStorage.
   * @default ngForage
   */
  get name() {
    return this.config.name || this.baseConfig.name;
  }
  set name(v2) {
    this.config.name = v2;
    this.storeNeedsRecalc = true;
  }
  /**
   * The size of the database in bytes. Used only in WebSQL for now.
   * @default 4980736
   */
  get size() {
    return this.config.size ?? this.baseConfig.size;
  }
  set size(v2) {
    this.config.size = v2;
    this.storeNeedsRecalc = true;
  }
  /**
   * The name of the datastore.
   * In IndexedDB this is the dataStore,
   * in WebSQL this is the name of the key/value table in the database.
   * Must be alphanumeric, with underscores.
   * Any non-alphanumeric characters will be converted to underscores.
   * @default ng_forage
   */
  get storeName() {
    return this.config.storeName ?? this.baseConfig.storeName;
  }
  set storeName(v2) {
    this.config.storeName = v2;
    this.storeNeedsRecalc = true;
  }
  /**
   * The version of your database. May be used for upgrades in the future; currently unused.
   * @default 1.0
   */
  get version() {
    return this.config?.version ?? this.baseConfig.version;
  }
  set version(v2) {
    this.config.version = v2;
    this.storeNeedsRecalc = true;
  }
  /** @internal */
  get finalConfig() {
    return __spreadValues(__spreadValues({}, this.baseConfig.config), this.config);
  }
  /** @internal */
  get store() {
    if (this.storeNeedsRecalc || !this[store$]) {
      this[store$] = this.fact.getInstance(this.finalConfig);
      this.storeNeedsRecalc = false;
    }
    return this[store$];
  }
  /**
   * Bulk-set configuration options
   * @param opts The configuration
   */
  configure(opts) {
    opts = opts || {};
    if (Array.isArray(opts.driver)) {
      opts.driver = opts.driver.slice();
    }
    Object.assign(this.config, opts);
    this.storeNeedsRecalc = true;
    return this;
  }
  toJSON() {
    return {
      description: this.description,
      driver: this.driver,
      name: this.name,
      size: this.size,
      storeName: this.storeName,
      version: this.version
    };
  }
  toString() {
    return JSON.stringify(this.toJSON());
  }
};
BaseConfigurableImpl.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: BaseConfigurableImpl, deps: [{ token: NgForageConfig }, { token: InstanceFactory }], target: FactoryTarget.Injectable });
BaseConfigurableImpl.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: BaseConfigurableImpl });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: BaseConfigurableImpl, decorators: [{
  type: Injectable
}], ctorParameters: function() {
  return [{ type: NgForageConfig, decorators: [{
    type: Inject,
    args: [NgForageConfig]
  }] }, { type: InstanceFactory, decorators: [{
    type: Inject,
    args: [InstanceFactory]
  }] }];
} });
var NgForage = class _NgForage extends BaseConfigurableImpl {
  /**
   * Returns the name of the driver being used, or null if none can be used.
   */
  get activeDriver() {
    return this.store.driver();
  }
  /**
   * When invoked with no arguments, it drops the “store” of the current instance. When invoked with an object
   * specifying both name and storeName properties, it drops the specified “store”. When invoked with an object
   * specifying only a name property, it drops the specified “database” (and all its stores).
   */
  dropInstance(cfg) {
    return __async(this, null, function* () {
      return yield cfg ? this.store.dropInstance(cfg) : this.store.dropInstance();
    });
  }
  /**
   * Removes every key from the database, returning it to a blank slate.
   *
   * clear() will remove <b>every item in the offline store</b>. Use this method with caution.
   */
  clear() {
    return __async(this, null, function* () {
      return yield this.store.clear();
    });
  }
  /**
   * Make a clone of the instance
   * @param config Optional configuration
   */
  clone(config) {
    const inst = new _NgForage(this.baseConfig, this.fact);
    inst.configure(__spreadValues(__spreadValues({}, this.finalConfig), config));
    return inst;
  }
  /**
   * Gets an item from the storage library.
   * If the key does not exist, getItem() will return null.
   * @param key Data key
   */
  getItem(key) {
    return __async(this, null, function* () {
      return yield this.store.getItem(key);
    });
  }
  /**
   * Iterate over all value/key pairs in datastore.
   * <i>iteratee</i> is called once for each pair, with the following arguments:
   * <ol>
   *   <li>Value</li>
   *   <li>Key</li>
   *   <li>iterationNumber - one-based number</li>
   * </ol>
   * iterate() supports early exit by returning non undefined value inside iteratorCallback callback.
   * @param iteratee
   */
  iterate(iteratee) {
    return __async(this, null, function* () {
      return yield this.store.iterate(iteratee);
    });
  }
  /**
   * Get the name of a key based on its ID.
   * @param index
   */
  key(index) {
    return __async(this, null, function* () {
      return yield this.store.key(index);
    });
  }
  /**
   * Get the list of all keys in the datastore.
   */
  keys() {
    return __async(this, null, function* () {
      return yield this.store.keys();
    });
  }
  /**
   * Gets the number of keys in the offline store (i.e. its “length”).
   */
  length() {
    return __async(this, null, function* () {
      return yield this.store.length();
    });
  }
  /**
   * Even though localForage queues up all of its data API method calls,
   * ready() provides a way to determine whether the asynchronous driver initialization process has finished.
   * That’s useful in cases like when we want to know which driver localForage has settled down using.
   */
  ready() {
    return __async(this, null, function* () {
      return yield this.store.ready();
    });
  }
  /**
   * Removes the value of a key from the offline store.
   * @param key Data key
   */
  removeItem(key) {
    return __async(this, null, function* () {
      return yield this.store.removeItem(key);
    });
  }
  /**
   * Saves data to an offline store. You can store the following types of JavaScript objects:
   * <ul>
   *  <li>Array</li>
   *  <li>ArrayBuffer</li>
   *  <li>Blob</li>
   *  <li>Float32Array</li>
   *  <li>Float64Array</li>
   *  <li>Int8Array</li>
   *  <li>Int16Array</li>
   *  <li>Int32Array</li>
   *  <li>Number</li>
   *  <li>Object</li>
   *  <li>Uint8Array</li>
   *  <li>Uint8ClampedArray</li>
   *  <li>Uint16Array</li>
   *  <li>Uint32Array</li>
   *  <li>String</li>
   * </ul>
   * @param key Data key
   * @param data Data
   */
  setItem(key, data) {
    return __async(this, null, function* () {
      return yield this.store.setItem(key, data);
    });
  }
  /**
   * Check whether the given driver is supported/registered.
   * @param driver Driver name
   */
  supports(driver) {
    return this.store.supports(driver);
  }
};
NgForage.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForage, deps: null, target: FactoryTarget.Injectable });
NgForage.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForage, providedIn: "root" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForage, decorators: [{
  type: Injectable,
  args: [{ providedIn: "root" }]
}] });
function calculateCacheKeys(mainKey) {
  return {
    data: `${mainKey}_data`,
    expiry: `${mainKey}_expiry`
  };
}
var NgForageCache = class _NgForageCache extends NgForage {
  /**
   * Cache time in milliseconds
   * @default 300000
   */
  get cacheTime() {
    return this.config.cacheTime ?? this.baseConfig.cacheTime;
  }
  set cacheTime(t2) {
    this.config.cacheTime = t2;
    this.storeNeedsRecalc = true;
  }
  /** @inheritDoc */
  clone(config) {
    const inst = new _NgForageCache(this.baseConfig, this.fact);
    inst.configure(__spreadValues(__spreadValues({}, this.finalConfig), config));
    return inst;
  }
  /**
   * Retrieve data
   * @param key Data key
   */
  getCached(key) {
    return __async(this, null, function* () {
      const keys3 = calculateCacheKeys(key);
      const [data, expiry] = yield Promise.all([this.getItem(keys3.data), this.getItem(keys3.expiry)]);
      return new CachedItemImpl(data, expiry);
    });
  }
  /**
   * Remove data
   * @param key Data key
   */
  removeCached(key) {
    return __async(this, null, function* () {
      const keys3 = calculateCacheKeys(key);
      yield Promise.all([this.removeItem(keys3.data), this.removeItem(keys3.expiry)]);
    });
  }
  /**
   * Set data
   * @param key Data key
   * @param data Data to set
   * @param [cacheTime] Override cache set in {@link CacheConfigurable#cacheTime global or instance config}.
   */
  setCached(_0, _1) {
    return __async(this, arguments, function* (key, data, cacheTime = this.cacheTime) {
      const keys3 = calculateCacheKeys(key);
      const [out] = yield Promise.all([this.setItem(keys3.data, data), this.setItem(keys3.expiry, Date.now() + cacheTime)]);
      return out;
    });
  }
  /** @internal */
  toJSON() {
    return Object.assign(super.toJSON(), { cacheTime: this.cacheTime });
  }
};
NgForageCache.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForageCache, deps: null, target: FactoryTarget.Injectable });
NgForageCache.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForageCache, providedIn: "root" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: NgForageCache, decorators: [{
  type: Injectable,
  args: [{ providedIn: "root" }]
}] });
var NgForageCacheDedicated = class _NgForageCacheDedicated extends NgForageCache {
  /** @inheritDoc */
  clone(config) {
    const inst = new _NgForageCacheDedicated(this.baseConfig, this.fact);
    inst.configure(__spreadValues(__spreadValues({}, this.finalConfig), config));
    return inst;
  }
};
var NgForageDedicated = class _NgForageDedicated extends NgForage {
  /** @inheritDoc */
  clone(config) {
    const inst = new _NgForageDedicated(this.baseConfig, this.fact);
    inst.configure(__spreadValues(__spreadValues({}, this.finalConfig), config));
    return inst;
  }
};
var conf$ = Symbol("NgForageConfig");
var if$ = Symbol("InstanceFactory");
var DedicatedInstanceFactory = class {
  constructor(conf, instFact) {
    this[conf$] = conf;
    this[if$] = instFact;
  }
  createCache(config) {
    const inst = new NgForageCacheDedicated(this[conf$], this[if$]);
    if (config) {
      inst.configure(config);
    }
    return inst;
  }
  createNgForage(config) {
    const inst = new NgForageDedicated(this[conf$], this[if$]);
    if (config) {
      inst.configure(config);
    }
    return inst;
  }
};
DedicatedInstanceFactory.\u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: DedicatedInstanceFactory, deps: [{ token: NgForageConfig }, { token: InstanceFactory }], target: FactoryTarget.Injectable });
DedicatedInstanceFactory.\u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: DedicatedInstanceFactory, providedIn: "root" });
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: core_exports, type: DedicatedInstanceFactory, decorators: [{
  type: Injectable,
  args: [{ providedIn: "root" }]
}], ctorParameters: function() {
  return [{ type: NgForageConfig }, { type: InstanceFactory }];
} });

// projects/aimmo-services/ngforage/src/rx-ngforage.ts
var _a26;
var RxNgForage = (_a26 = class {
  constructor(ngf) {
    this.ngf = ngf;
  }
  // 구현체 정의
  getItem(key, defaultValue) {
    return defer(() => this.ngf.getItem(key)).pipe(map((item) => item === null ? defaultValue : item));
  }
  setItem(key, data) {
    return defer(() => this.ngf.setItem(key, data));
  }
  removeItem(key) {
    return defer(() => this.ngf.removeItem(key));
  }
  keys() {
    return defer(() => this.ngf.keys());
  }
  hasItem(key) {
    return this.getItem(key).pipe(map((item) => !!item));
  }
}, _a26.ctorParameters = () => [
  { type: NgForage }
], _a26);
RxNgForage = __decorate([
  Injectable({ providedIn: "root" })
], RxNgForage);

// projects/aimmo-services/ngforage/src/rx-ngforage-ssr.ts
var _a27;
var RxNgForageSSR = (_a27 = class extends RxNgForage {
  constructor() {
    super(null);
  }
  // 구현체 정의
  getItem(key, defaultValue) {
    return of(null);
  }
  hasItem(key) {
    return of(false);
  }
  keys() {
    return of([]);
  }
  removeItem(key) {
    return of(null);
  }
  setItem(key, data) {
    return of(null);
  }
}, _a27.ctorParameters = () => [], _a27);
RxNgForageSSR = __decorate([
  Injectable({ providedIn: "root" })
], RxNgForageSSR);

// projects/aimmo-services/ngforage/src/rx-ngforage-cache.ts
var _a28;
var RxNgForageCache = (_a28 = class {
  constructor(ngfc) {
    this.ngfc = ngfc;
  }
  getCached(key) {
    return defer(() => this.ngfc.getCached(key));
  }
  setCached(key, data, cacheTime) {
    return defer(() => this.ngfc.setCached(key, data, cacheTime));
  }
  removeCached(key) {
    return defer(() => this.ngfc.removeCached(key));
  }
}, _a28.ctorParameters = () => [
  { type: NgForageCache }
], _a28);
RxNgForageCache = __decorate([
  Injectable({
    providedIn: "root"
  })
], RxNgForageCache);

// projects/aimmo-i18n/src/i18n-guard.service.ts
var LANGUAGE_QUERY_PARAM = "lang";
var DEFAULT_LANGUAGE = Lang.EN;
var _a29;
var I18nGuard = (_a29 = class {
  constructor(config, translate, rxNgForage) {
    this.config = config;
    this.translate = translate;
    this.rxNgForage = rxNgForage;
    this.initialized = false;
    this.translate.addLangs(this.config.supportLanguages);
    this.translate.setDefaultLang(DEFAULT_LANGUAGE);
  }
  canActivate(route3, state2) {
    return defer(() => {
      if (route3.queryParamMap.has(LANGUAGE_QUERY_PARAM)) {
        const lang = route3.queryParamMap.get(LANGUAGE_QUERY_PARAM);
        const languageCode2 = getLanguageCode(lang);
        if (languageCode2 && this.config.supportLanguages.includes(languageCode2)) {
          this.initialized = true;
          return this.setLanguage(lang);
        }
      }
      return this.initialSetLanguage();
    }).pipe(map(() => true));
  }
  setLanguage(lang) {
    return defer(() => {
      const languageCode2 = getLanguageCode(lang);
      if (languageCode2 && this.config.supportLanguages.includes(languageCode2)) {
        return this.translate.use(lang).pipe(switchMap(() => this.rxNgForage.setItem(this.config.savedLanguageKey, lang)), catchError(() => of(void 0)));
      }
      return of(void 0);
    });
  }
  initialSetLanguage() {
    return defer(() => {
      if (this.initialized) {
        return of(true);
      }
      this.initialized = true;
      return this.rxNgForage.getItem(this.config.savedLanguageKey).pipe(switchMap((savedLang) => {
        if (savedLang) {
          const languageCode2 = getLanguageCode(savedLang);
          if (languageCode2 && this.config.supportLanguages.includes(languageCode2)) {
            return this.translate.use(savedLang);
          }
        }
        let browserLang = this.translate.getBrowserLang();
        if (!this.config.supportLanguages.includes(browserLang)) {
          browserLang = DEFAULT_LANGUAGE;
        }
        return this.translate.use(browserLang);
      }));
    });
  }
}, _a29.ctorParameters = () => [
  { type: void 0, decorators: [{ type: Inject, args: [I18N_GUARD_CONFIG] }] },
  { type: TranslateService },
  { type: RxNgForage }
], _a29);
I18nGuard = __decorate([
  Injectable({
    providedIn: "root"
  })
], I18nGuard);

// projects/aimmo-renew-home/src/environments/environment.interface.ts
var Pages;
(function(Pages2) {
  Pages2["solutions"] = "solutions";
  Pages2["usecase"] = "usecase";
  Pages2["company"] = "company";
  Pages2["pricing"] = "pricing";
  Pages2["career"] = "career";
})(Pages || (Pages = {}));
var AimmoPaths;
(function(AimmoPaths2) {
  AimmoPaths2["en"] = "/";
  AimmoPaths2["ko"] = "/ko";
  AimmoPaths2["enterprise"] = "/enterprise";
  AimmoPaths2["admin"] = "/admin";
  AimmoPaths2["adaas"] = "/adaas";
})(AimmoPaths || (AimmoPaths = {}));
var BREAK_POINTS = {
  "(max-width: 779px)": DeviceType.mobile,
  "(min-width: 780px) and (max-width: 1023px)": DeviceType.tablet,
  "(min-width: 1024px) and (max-width: 1439px)": DeviceType.desktop,
  "(min-width: 1440px)": DeviceType.fullSize
};
var SUPPORT_LANGUAGES = [Lang.KO, Lang.EN];
var DEFAULT_LANGUAGE2 = Lang.EN;
var CONTACT_US_HREF_EN = "https://contact.aimmo.ai?v=2";
var CONTACT_US_HREF_KO = "https://contactkr.aimmo.ai?v=2";
var TALK_TO_SALES_HREF_EN = "https://contact.aimmo.ai?v=2";
var TALK_TO_SALES_HREF_KO = "https://contactkr.aimmo.ai?v=2";
var JOIN_US_HREF_EN = "https://contact.aimmo.ai?v=2";
var JOIN_US_HREF_KO = "https://aimmo.wehire.kr/";
var DEFAULT_TITLE = "AI Data Company";
var SITE_NAME = "AIMMO";
var SITE_URL = "https://aimmo.ai/en";
var SITE_IMAGE = "https://static-aimmo-home.web.app/aimmo_og_image.png";
var OG_TITLE = "AIMMO | AI Data Company";
var SITE_DESC = "Enabling a data-powered tomorrow, AI Data company AIMMO";
var RESOURCE_URL_BASE = "https://static-aimmo-home.web.app";
var RESOURCE_CUSTOMERS_URL = `${RESOURCE_URL_BASE}/customers`;
var RESOURCE_CORE_URL = `${RESOURCE_URL_BASE}/core`;
var RESOURCE_MAIN_SOLUTIONS_URL = `${RESOURCE_URL_BASE}/solutions`;
var RESOURCE_DAAS_URL = `${RESOURCE_URL_BASE}/solutions/daas`;
var RESOURCE_STUDIO_URL = `${RESOURCE_URL_BASE}/solutions/studio`;
var RESOURCE_USE_CASE_URL = `${RESOURCE_URL_BASE}/usecase`;
var RESOURCE_CAREER_URL = `${RESOURCE_URL_BASE}/career`;
var RESOURCE_DATA_VOUCHER_URL = `${RESOURCE_URL_BASE}/data-voucher`;
var StudioFiles = {
  features: {
    dashboard: "studio-realtime-dashboard.png",
    feedback: "studio-visual-feedback.png",
    linkShare: "studio-link-share.png",
    analysis: "studio-accuracy-analysis.png",
    monitoring: "studio-worker-monitoring.png",
    communication: "studio-realtime-communication.png"
  },
  smartLabeling: {
    [Lang.KO]: {
      poster: "studio-smart-labeling.jpg",
      video: "studio-smart-labeling.mp4"
    },
    [Lang.EN]: {
      poster: "studio-smart-labeling-en.png",
      video: "studio-smart-labeling-en.mp4"
    }
  }
};
var META_TAGS = [
  { name: "apple-mobile-web-app-capable", content: "yes" },
  {
    name: "keywords",
    content: "AI, artificial intelligence, machine learning, ai software, ai companies, lidar, autonomous driving, autonomous cars, autonomous vehicles, labelling, data labeling, data annotation"
  },
  { name: "description", content: SITE_DESC },
  { property: "og:type", content: "website" },
  { property: "og:site_name", content: SITE_NAME },
  { property: "og:title", content: OG_TITLE },
  { property: "og:description", content: SITE_DESC },
  { property: "og:image", content: SITE_IMAGE },
  { property: "og:url", content: SITE_URL },
  { name: "format-detection", content: "telephone=no, address=no, email=no" },
  { name: "viewport", content: "width=device-width, initial-scale=1" },
  { charset: "utf-8" },
  { name: "twitter:card", content: "summary_large_image" },
  { name: "twitter:site", content: SITE_NAME },
  { name: "twitter:title", content: SITE_NAME + " | " + DEFAULT_TITLE },
  { name: "twitter:description", content: SITE_DESC },
  { property: "twitter:image", content: SITE_IMAGE },
  { name: "naver-site-verification", content: "db564f77aa05fe4d399cfe79310721555e28255d" }
];
var ContactUsDestination = {
  [Lang.EN]: CONTACT_US_HREF_EN,
  [Lang.KO]: CONTACT_US_HREF_KO
};
var TalkToSalesDestination = {
  [Lang.EN]: TALK_TO_SALES_HREF_EN,
  [Lang.KO]: TALK_TO_SALES_HREF_KO
};
var JoinUsDestination = {
  [Lang.EN]: JOIN_US_HREF_EN,
  [Lang.KO]: JOIN_US_HREF_KO
};

// projects/falcon-common/check-browser/src/check-browser.model.ts
var Browser;
(function(Browser2) {
  Browser2["chrome"] = "Chrome";
  Browser2["chromeWebView"] = "Chrome WebView";
  Browser2["chromium"] = "Chromium";
  Browser2["webKit"] = "WebKit";
  Browser2["opera"] = "Opera";
  Browser2["safari"] = "Safari";
  Browser2["firefox"] = "Firefox";
  Browser2["ie"] = "IE";
  Browser2["edge"] = "Edge";
  Browser2["androidBrowser"] = "Android Browser";
  Browser2["mobileSafari"] = "Mobile Safari";
})(Browser || (Browser = {}));

// projects/falcon-common/check-browser/src/check-browser.ts
var import_ua_parser_js = __toESM(require_ua_parser());
var DEFAULT_SUPPORTS = [
  { name: Browser.chrome, minVersion: "75" },
  { name: Browser.chromeWebView, minVersion: "75" },
  { name: Browser.chromium, minVersion: "75" },
  { name: Browser.webKit, minVersion: "500" },
  { name: Browser.safari, minVersion: "11" },
  { name: Browser.firefox, minVersion: "72" },
  { name: Browser.edge, minVersion: "75" },
  { name: Browser.opera, minVersion: "62" },
  { name: Browser.androidBrowser, minVersion: "70" },
  { name: Browser.mobileSafari, minVersion: "11.0" }
];

// src/environments/interface/environment.interface.ts
var LATEST_BROWSER_VERSIONS = {
  [Browser.chrome]: 85,
  [Browser.chromeWebView]: 85,
  [Browser.chromium]: 85,
  [Browser.safari]: 14,
  [Browser.firefox]: 79,
  [Browser.edge]: 85,
  [Browser.opera]: 71,
  [Browser.androidBrowser]: 85,
  [Browser.mobileSafari]: 14
};
var SENTRY_DSN = "https://10d66829378c49c58b66391a93430f37@sentry.io/1874408";
var DEV_KAKAO_KEY = "";
var DEV_NAVER_KEY = "WKW5hkKrru04UQKG7n78";
var DEV_CHANNEL_TALK_KEY = "d611d1b2-7a3e-42b2-8805-973db9de4b10";
var MIMMO_GOOGLE_CLIENT_ID = "1042250792898-kutn32nmmkr72oun2mlnj3os5u7bremo.apps.googleusercontent.com";
var DEV_GTAAS_API_URL = "https://dev2-in-house-eimmo-api.bluewhale.team";
var FIREBASE_CONFIG = {
  apiKey: "AIzaSyBCrmD7Y_6ncXoSeyAquA6yG-ZYSF5kofQ",
  authDomain: "eimmo-web-dev.firebaseapp.com",
  databaseURL: "https://eimmo-web-dev.firebaseio.com",
  projectId: "eimmo-web-dev",
  storageBucket: "eimmo-web-dev.appspot.com"
};

// node_modules/zone.js/fesm2015/zone-error.js
Zone.__load_patch("Error", (global2, Zone2, api) => {
  const zoneJsInternalStackFramesSymbol = api.symbol("zoneJsInternalStackFrames");
  const NativeError = global2[api.symbol("Error")] = global2["Error"];
  const zoneJsInternalStackFrames = {};
  let zoneAwareFrame1;
  let zoneAwareFrame2;
  let zoneAwareFrame1WithoutNew;
  let zoneAwareFrame2WithoutNew;
  let zoneAwareFrame3WithoutNew;
  global2["Error"] = ZoneAwareError;
  const stackRewrite = "stackRewrite";
  const zoneJsInternalStackFramesPolicy = global2["__Zone_Error_BlacklistedStackFrames_policy"] || global2["__Zone_Error_ZoneJsInternalStackFrames_policy"] || "default";
  function buildZoneFrameNames(zoneFrame) {
    let zoneFrameName = { zoneName: zoneFrame.zone.name };
    let result = zoneFrameName;
    while (zoneFrame.parent) {
      zoneFrame = zoneFrame.parent;
      const parentZoneFrameName = { zoneName: zoneFrame.zone.name };
      zoneFrameName.parent = parentZoneFrameName;
      zoneFrameName = parentZoneFrameName;
    }
    return result;
  }
  function buildZoneAwareStackFrames(originalStack, zoneFrame, isZoneFrame = true) {
    let frames = originalStack.split("\n");
    let i2 = 0;
    while (!(frames[i2] === zoneAwareFrame1 || frames[i2] === zoneAwareFrame2 || frames[i2] === zoneAwareFrame1WithoutNew || frames[i2] === zoneAwareFrame2WithoutNew || frames[i2] === zoneAwareFrame3WithoutNew) && i2 < frames.length) {
      i2++;
    }
    for (; i2 < frames.length && zoneFrame; i2++) {
      let frame = frames[i2];
      if (frame.trim()) {
        switch (zoneJsInternalStackFrames[frame]) {
          case 0:
            frames.splice(i2, 1);
            i2--;
            break;
          case 1:
            if (zoneFrame.parent) {
              zoneFrame = zoneFrame.parent;
            } else {
              zoneFrame = null;
            }
            frames.splice(i2, 1);
            i2--;
            break;
          default:
            frames[i2] += isZoneFrame ? ` [${zoneFrame.zone.name}]` : ` [${zoneFrame.zoneName}]`;
        }
      }
    }
    return frames.join("\n");
  }
  function ZoneAwareError() {
    let error = NativeError.apply(this, arguments);
    const originalStack = error["originalStack"] = error.stack;
    if (ZoneAwareError[stackRewrite] && originalStack) {
      let zoneFrame = api.currentZoneFrame();
      if (zoneJsInternalStackFramesPolicy === "lazy") {
        error[api.symbol("zoneFrameNames")] = buildZoneFrameNames(zoneFrame);
      } else if (zoneJsInternalStackFramesPolicy === "default") {
        try {
          error.stack = error.zoneAwareStack = buildZoneAwareStackFrames(originalStack, zoneFrame);
        } catch (e2) {
        }
      }
    }
    if (this instanceof NativeError && this.constructor != NativeError) {
      Object.keys(error).concat("stack", "message").forEach((key) => {
        const value = error[key];
        if (value !== void 0) {
          try {
            this[key] = value;
          } catch (e2) {
          }
        }
      });
      return this;
    }
    return error;
  }
  ZoneAwareError.prototype = NativeError.prototype;
  ZoneAwareError[zoneJsInternalStackFramesSymbol] = zoneJsInternalStackFrames;
  ZoneAwareError[stackRewrite] = false;
  const zoneAwareStackSymbol = api.symbol("zoneAwareStack");
  if (zoneJsInternalStackFramesPolicy === "lazy") {
    Object.defineProperty(ZoneAwareError.prototype, "zoneAwareStack", {
      configurable: true,
      enumerable: true,
      get: function() {
        if (!this[zoneAwareStackSymbol]) {
          this[zoneAwareStackSymbol] = buildZoneAwareStackFrames(this.originalStack, this[api.symbol("zoneFrameNames")], false);
        }
        return this[zoneAwareStackSymbol];
      },
      set: function(newStack) {
        this.originalStack = newStack;
        this[zoneAwareStackSymbol] = buildZoneAwareStackFrames(this.originalStack, this[api.symbol("zoneFrameNames")], false);
      }
    });
  }
  const specialPropertyNames = ["stackTraceLimit", "captureStackTrace", "prepareStackTrace"];
  const nativeErrorProperties = Object.keys(NativeError);
  if (nativeErrorProperties) {
    nativeErrorProperties.forEach((prop) => {
      if (specialPropertyNames.filter((sp) => sp === prop).length === 0) {
        Object.defineProperty(ZoneAwareError, prop, {
          get: function() {
            return NativeError[prop];
          },
          set: function(value) {
            NativeError[prop] = value;
          }
        });
      }
    });
  }
  if (NativeError.hasOwnProperty("stackTraceLimit")) {
    NativeError.stackTraceLimit = Math.max(NativeError.stackTraceLimit, 15);
    Object.defineProperty(ZoneAwareError, "stackTraceLimit", {
      get: function() {
        return NativeError.stackTraceLimit;
      },
      set: function(value) {
        return NativeError.stackTraceLimit = value;
      }
    });
  }
  if (NativeError.hasOwnProperty("captureStackTrace")) {
    Object.defineProperty(ZoneAwareError, "captureStackTrace", {
      // add named function here because we need to remove this
      // stack frame when prepareStackTrace below
      value: function zoneCaptureStackTrace(targetObject, constructorOpt) {
        NativeError.captureStackTrace(targetObject, constructorOpt);
      }
    });
  }
  const ZONE_CAPTURESTACKTRACE = "zoneCaptureStackTrace";
  Object.defineProperty(ZoneAwareError, "prepareStackTrace", {
    get: function() {
      return NativeError.prepareStackTrace;
    },
    set: function(value) {
      if (!value || typeof value !== "function") {
        return NativeError.prepareStackTrace = value;
      }
      return NativeError.prepareStackTrace = function(error, structuredStackTrace) {
        if (structuredStackTrace) {
          for (let i2 = 0; i2 < structuredStackTrace.length; i2++) {
            const st2 = structuredStackTrace[i2];
            if (st2.getFunctionName() === ZONE_CAPTURESTACKTRACE) {
              structuredStackTrace.splice(i2, 1);
              break;
            }
          }
        }
        return value.call(this, error, structuredStackTrace);
      };
    }
  });
  if (zoneJsInternalStackFramesPolicy === "disable") {
    return;
  }
  let detectZone = Zone2.current.fork({
    name: "detect",
    onHandleError: function(parentZD, current, target, error) {
      if (error.originalStack && Error === ZoneAwareError) {
        let frames = error.originalStack.split(/\n/);
        let runFrame = false, runGuardedFrame = false, runTaskFrame = false;
        while (frames.length) {
          let frame = frames.shift();
          if (/:\d+:\d+/.test(frame) || frame === "ZoneAwareError") {
            let fnName = frame.split("(")[0].split("@")[0];
            let frameType = 1;
            if (fnName.indexOf("ZoneAwareError") !== -1) {
              if (fnName.indexOf("new ZoneAwareError") !== -1) {
                zoneAwareFrame1 = frame;
                zoneAwareFrame2 = frame.replace("new ZoneAwareError", "new Error.ZoneAwareError");
              } else {
                zoneAwareFrame1WithoutNew = frame;
                zoneAwareFrame2WithoutNew = frame.replace("Error.", "");
                if (frame.indexOf("Error.ZoneAwareError") === -1) {
                  zoneAwareFrame3WithoutNew = frame.replace("ZoneAwareError", "Error.ZoneAwareError");
                }
              }
              zoneJsInternalStackFrames[zoneAwareFrame2] = 0;
            }
            if (fnName.indexOf("runGuarded") !== -1) {
              runGuardedFrame = true;
            } else if (fnName.indexOf("runTask") !== -1) {
              runTaskFrame = true;
            } else if (fnName.indexOf("run") !== -1) {
              runFrame = true;
            } else {
              frameType = 0;
            }
            zoneJsInternalStackFrames[frame] = frameType;
            if (runFrame && runGuardedFrame && runTaskFrame) {
              ZoneAwareError[stackRewrite] = true;
              break;
            }
          }
        }
      }
      return false;
    }
  });
  const childDetectZone = detectZone.fork({
    name: "child",
    onScheduleTask: function(delegate, curr, target, task) {
      return delegate.scheduleTask(target, task);
    },
    onInvokeTask: function(delegate, curr, target, task, applyThis, applyArgs) {
      return delegate.invokeTask(target, task, applyThis, applyArgs);
    },
    onCancelTask: function(delegate, curr, target, task) {
      return delegate.cancelTask(target, task);
    },
    onInvoke: function(delegate, curr, target, callback, applyThis, applyArgs, source) {
      return delegate.invoke(target, callback, applyThis, applyArgs, source);
    }
  });
  const originalStackTraceLimit = Error.stackTraceLimit;
  Error.stackTraceLimit = 100;
  childDetectZone.run(() => {
    childDetectZone.runGuarded(() => {
      const fakeTransitionTo = () => {
      };
      childDetectZone.scheduleEventTask(zoneJsInternalStackFramesSymbol, () => {
        childDetectZone.scheduleMacroTask(zoneJsInternalStackFramesSymbol, () => {
          childDetectZone.scheduleMicroTask(zoneJsInternalStackFramesSymbol, () => {
            throw new Error();
          }, void 0, (t2) => {
            t2._transitionTo = fakeTransitionTo;
            t2.invoke();
          });
          childDetectZone.scheduleMicroTask(zoneJsInternalStackFramesSymbol, () => {
            throw Error();
          }, void 0, (t2) => {
            t2._transitionTo = fakeTransitionTo;
            t2.invoke();
          });
        }, void 0, (t2) => {
          t2._transitionTo = fakeTransitionTo;
          t2.invoke();
        }, () => {
        });
      }, void 0, (t2) => {
        t2._transitionTo = fakeTransitionTo;
        t2.invoke();
      }, () => {
      });
    });
  });
  Error.stackTraceLimit = originalStackTraceLimit;
});

// src/environments/environment.ts
var environment = {
  ngforageName: NgForageName.gtaasEimmoDev,
  logger: true,
  production: false,
  phase: Phase.gtaasLocal,
  sentry: {
    dsn: SENTRY_DSN,
    environment: Phase.gtaasLocal,
    release: ""
  },
  kakaoKey: DEV_KAKAO_KEY,
  naverKey: DEV_NAVER_KEY,
  googleClientId: MIMMO_GOOGLE_CLIENT_ID,
  channelTalkPluginKey: DEV_CHANNEL_TALK_KEY,
  apiUrl: DEV_GTAAS_API_URL,
  firebase: FIREBASE_CONFIG,
  ga: {
    trackingId: LABELERS_DEV_GA_ID,
    trackPageViews: true,
    debug: true
  },
  gtm: null,
  latestBrowserVersions: LATEST_BROWSER_VERSIONS
};

// src/app/core/constant.ts
var isExternalReal = [Phase.prod, Phase.beta].includes(environment.phase);
var isRealPhase = [
  Phase.prod,
  Phase.gtaasProd,
  Phase.gtaasProdJp,
  Phase.gtaasProdSaas
].includes(environment.phase);
var isSaasInGtaas = [
  Phase.gtaasProdSaas,
  Phase.gtaasBetaSaas,
  Phase.gtaasQaSaas,
  Phase.gtaasDevSaas,
  Phase.gtaasLocalSaas
].includes(environment.phase);
var isProductionPhaseInGtaas = [
  Phase.gtaasProd,
  Phase.gtaasBeta,
  Phase.gtaasProdSaas,
  Phase.gtaasBetaSaas,
  Phase.gtaasProdJp,
  Phase.gtaasBetaJp
].includes(environment.phase);
var isDevQaPhase = [
  Phase.gtaasLocalSaas,
  Phase.gtaasDevSaas,
  Phase.gtaasQaSaas,
  Phase.gtaasLocal,
  Phase.gtaasAlpha,
  Phase.gtaasDev,
  Phase.gtaasQA,
  Phase.gtaasFeature
].includes(environment.phase);
var isDevPhase = [
  Phase.gtaasLocalSaas,
  Phase.gtaasDevSaas,
  Phase.gtaasLocal,
  Phase.gtaasDev,
  Phase.gtaasFeature
].includes(environment.phase);
var DISABLED_FUNCTION_FOR_POLYLINE_POINT = false;
var isJpPhase = [
  Phase.gtaasProdJp,
  Phase.gtaasBetaJp
].includes(environment.phase);

// projects/eimmo-common/services/src/dataset-quota.service.ts
var DatasetQuotaService = class DatasetQuotaService2 {
  // todo: OBT용으로 오픈될 툴만 필터링
  getFilteredDatasetQuotas(datasetQuotas) {
    return datasetQuotas.filter((datasetQuota) => {
      return isImageDatasetQuota(datasetQuota) || isPointCloudDatasetQuota(datasetQuota) || isTextDatasetQuota(datasetQuota) || isVideoDatasetQuota(datasetQuota) || isLotteQaDatasetQuota(datasetQuota) || isSegmentationDatasetQuota(datasetQuota) || isObjectTrackingDatasetQuota(datasetQuota);
    });
  }
  getAnnotationTypeQuotaFrom(datasetQuota) {
    const annotationTypeQuotas = [];
    if (isImageDatasetQuota(datasetQuota) || isObjectTrackingDatasetQuota(datasetQuota)) {
      annotationTypeQuotas.push({ type: AnnotationType.bbox, status: datasetQuota.annotations.bbox });
      annotationTypeQuotas.push({ type: AnnotationType.bitmap, status: datasetQuota.annotations.bitmap });
      annotationTypeQuotas.push({ type: AnnotationType.keypoint, status: datasetQuota.annotations.landmark });
      annotationTypeQuotas.push({ type: AnnotationType.keypointOD, status: datasetQuota.annotations.landmarkHdOd });
      annotationTypeQuotas.push({ type: AnnotationType.obbox, status: datasetQuota.annotations.obbox });
      annotationTypeQuotas.push({ type: AnnotationType.obboxV2, status: datasetQuota.annotations.obboxV2 });
      annotationTypeQuotas.push({ type: AnnotationType.polySeg, status: datasetQuota.annotations.polySeg });
      annotationTypeQuotas.push({ type: AnnotationType.polygon, status: datasetQuota.annotations.polygon });
      annotationTypeQuotas.push({ type: AnnotationType.polyline, status: datasetQuota.annotations.polyline });
      annotationTypeQuotas.push({ type: AnnotationType.polylinePoint, status: datasetQuota.annotations.polylinePoint });
      annotationTypeQuotas.push({ type: AnnotationType.point, status: datasetQuota.annotations.point });
      annotationTypeQuotas.push({ type: AnnotationType.cuboid2d, status: datasetQuota.annotations.cuboid });
      annotationTypeQuotas.push({ type: AnnotationType.flatCuboid, status: datasetQuota.annotations.cuboidPlain });
      annotationTypeQuotas.push({ type: AnnotationType.classification, status: datasetQuota.annotations.resource });
      annotationTypeQuotas.push({
        type: AnnotationType.multiClassification,
        status: datasetQuota.annotations.multiClassification
      });
    } else if (isPointCloudDatasetQuota(datasetQuota)) {
      annotationTypeQuotas.push({ type: AnnotationType.polygon3d, status: datasetQuota.annotations.polygon3d });
      annotationTypeQuotas.push({ type: AnnotationType.cuboid, status: datasetQuota.annotations.cuboid });
      annotationTypeQuotas.push({ type: AnnotationType.lasso, status: datasetQuota.annotations.lasso });
      if (DISABLED_FUNCTION_FOR_POLYLINE_POINT) {
        annotationTypeQuotas.push({
          type: AnnotationType.polylinePoint3d,
          status: datasetQuota.annotations.polylinePoint3d
        });
        annotationTypeQuotas.push({
          type: AnnotationType.point3d,
          status: datasetQuota.annotations.point3d
        });
      }
      annotationTypeQuotas.push({ type: AnnotationType.classification, status: datasetQuota.annotations.resource });
    } else if (isVideoDatasetQuota(datasetQuota)) {
      const videoDatasetQuota = datasetQuota;
      annotationTypeQuotas.push({ type: AnnotationType.frameRange, status: videoDatasetQuota.annotations.frameRange });
      annotationTypeQuotas.push({
        type: AnnotationType.classification,
        status: videoDatasetQuota.annotations.resource
      });
    } else if (isDicomDatasetQuota(datasetQuota)) {
      const dicomDatasetQuota = datasetQuota;
      annotationTypeQuotas.push({
        type: AnnotationType.classification,
        status: dicomDatasetQuota.annotations.resource
      });
    } else if (isTextDatasetQuota(datasetQuota)) {
      const textDatasetQuota = datasetQuota;
      annotationTypeQuotas.push({ type: AnnotationType.entity, status: textDatasetQuota.annotations.entity });
      annotationTypeQuotas.push({ type: AnnotationType.classification, status: textDatasetQuota.annotations.resource });
    } else if (isLotteQaDatasetQuota(datasetQuota)) {
      const lotteQaDatasetQuota = datasetQuota;
      annotationTypeQuotas.push({
        type: AnnotationType.lotteQaRow,
        status: lotteQaDatasetQuota.annotations.lotteQaRow
      });
      annotationTypeQuotas.push({
        type: AnnotationType.classification,
        status: lotteQaDatasetQuota.annotations.resource
      });
    } else if (isSegmentationDatasetQuota(datasetQuota)) {
      const segmentationDatasetQuota = datasetQuota;
      annotationTypeQuotas.push({
        type: AnnotationType.segmentationMask,
        status: segmentationDatasetQuota.annotations.segmentationMask
      });
      annotationTypeQuotas.push({
        type: AnnotationType.classification,
        status: segmentationDatasetQuota.annotations.resource
      });
    }
    return annotationTypeQuotas.filter(({ status }) => !isNil_default(status) && status !== QuotaOptionStatus.hidden);
  }
  getAnnotationConfigQuotasFrom(datasetQuota, annotationConfigs) {
    const annotationTypeQuota = this.getAnnotationTypeQuotaFrom(datasetQuota);
    const obboxV1 = { type: AnnotationType.obbox, status: QuotaOptionStatus.enabled };
    const hasObboxV1 = annotationConfigs?.find(({ annotationType }) => annotationType === obboxV1.type)?.isActive;
    if (hasObboxV1) {
      const obboxV2 = AnnotationType.obboxV2;
      const obboxV2Idx = annotationTypeQuota.findIndex(({ type: type2 }) => type2 === obboxV2);
      annotationTypeQuota.splice(obboxV2Idx, 0, obboxV1);
    }
    return annotationTypeQuota.map(({ type: type2, status }) => {
      const annotationConfig = annotationConfigs?.find(({ annotationType }) => annotationType === type2);
      if (isNil_default(annotationConfig)) {
        return { annotationType: type2, classItems: [], commonAttributes: [], isActive: false, status };
      } else {
        return Object.assign(annotationConfig, { status });
      }
    });
  }
};
DatasetQuotaService = __decorate([
  Injectable({
    providedIn: "root"
  })
], DatasetQuotaService);

// projects/eimmo-common/services/src/indicator.service.ts
var TEN_SECOND_MIL_SEC = 1e4;
var IndicatorService = class IndicatorService2 {
  constructor() {
    this.loadingChangedSource = new BehaviorSubject(false);
    this.loadingTimeoutSource = new Subject();
    this.destroyedSource = new Subject();
  }
  get loadingChangedEvent$() {
    return this.loadingChangedSource.asObservable();
  }
  init() {
    this.loadingTimeoutSource.pipe(switchMap(() => this.loadingTimeout()), takeUntil(this.destroyedSource)).subscribe();
  }
  destroy() {
    this.destroyedSource.next();
  }
  setLoading(loading) {
    this.loadingChangedSource.next(loading);
    if (loading) {
      this.loadingTimeoutSource.next();
    }
  }
  loadingTimeout() {
    return timer(TEN_SECOND_MIL_SEC).pipe(tap(() => this.setLoading(false)));
  }
};
IndicatorService = __decorate([
  Injectable({
    providedIn: "root"
  })
], IndicatorService);

// projects/eimmo-common/components/base/src/api-loading-indicator/api-loading-indicator.component.ts
var _a30;
var ApiLoadingIndicatorComponent = (_a30 = class {
  constructor(indicatorService, zone) {
    this.indicatorService = indicatorService;
    this.zone = zone;
    this.ProgressMode = AimProgressMode.indeterminate;
    this.showApiLoadingIndicator = false;
    this.destroyRef = inject(DestroyRef);
  }
  get apiLoadingAction$() {
    return this.indicatorService.loadingChangedEvent$.pipe(debounceTime(0), distinctUntilChanged(), tap((loading) => this.zone.run(() => this.showApiLoadingIndicator = loading)));
  }
  ngOnInit() {
    this.indicatorService.init();
    this.apiLoadingAction$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  ngOnDestroy() {
    this.indicatorService.destroy();
  }
}, _a30.ctorParameters = () => [
  { type: IndicatorService },
  { type: NgZone }
], _a30);
ApiLoadingIndicatorComponent = __decorate([
  Component({
    selector: "eimmo-common-api-loading-indicator",
    template: api_loading_indicator_component_default,
    standalone: true,
    imports: [AimProgressBarComponent],
    styles: [api_loading_indicator_component_default2]
  })
], ApiLoadingIndicatorComponent);

// projects/labelers-common/models/src/project.model.ts
var ProjectType;
(function(ProjectType2) {
  ProjectType2["label"] = "label";
  ProjectType2["labelV2"] = "label_v2";
  ProjectType2["collect"] = "collect";
  ProjectType2["recruit"] = "recruit";
  ProjectType2["labelEducate"] = "label_educate";
  ProjectType2["payment"] = "payment";
  ProjectType2["refine"] = "refine";
  ProjectType2["motherProject"] = "mother_project";
})(ProjectType || (ProjectType = {}));
var ProjectTypeForSaas;
(function(ProjectTypeForSaas2) {
  ProjectTypeForSaas2["label"] = "label";
  ProjectTypeForSaas2["refine"] = "refine";
})(ProjectTypeForSaas || (ProjectTypeForSaas = {}));
var ParticipateType;
(function(ParticipateType2) {
  ParticipateType2["invite"] = "invite";
  ParticipateType2["anyone"] = "anyone";
})(ParticipateType || (ParticipateType = {}));
var META_MENU_ALLOWED_TYPES = [ProjectType.refine, ProjectType.label];

// projects/labelers-common/models/src/http-status.model.ts
var HttpStatus;
(function(HttpStatus2) {
  HttpStatus2[HttpStatus2["T_200_OK"] = 200] = "T_200_OK";
  HttpStatus2[HttpStatus2["T_204_NO_CONTENT"] = 204] = "T_204_NO_CONTENT";
  HttpStatus2[HttpStatus2["T_400_BAD_REQUEST"] = 400] = "T_400_BAD_REQUEST";
  HttpStatus2[HttpStatus2["T_401_UNAUTHORIZED"] = 401] = "T_401_UNAUTHORIZED";
  HttpStatus2[HttpStatus2["T_403_FORBIDDEN"] = 403] = "T_403_FORBIDDEN";
  HttpStatus2[HttpStatus2["T_404_NOT_FOUND"] = 404] = "T_404_NOT_FOUND";
  HttpStatus2[HttpStatus2["T_406_NOT_ACCEPTABLE"] = 406] = "T_406_NOT_ACCEPTABLE";
  HttpStatus2[HttpStatus2["T_409_CONFLICT"] = 409] = "T_409_CONFLICT";
  HttpStatus2[HttpStatus2["T_412_PRECONDITION_FAILED"] = 412] = "T_412_PRECONDITION_FAILED";
  HttpStatus2[HttpStatus2["T_415_NOT_SUPPORT_FORMAT"] = 415] = "T_415_NOT_SUPPORT_FORMAT";
  HttpStatus2[HttpStatus2["T_422_UNPROCESSABLE_ENTITY"] = 422] = "T_422_UNPROCESSABLE_ENTITY";
  HttpStatus2[HttpStatus2["T_423_LOCKED"] = 423] = "T_423_LOCKED";
  HttpStatus2[HttpStatus2["T_428_PRECONDITION_REQUIRED"] = 428] = "T_428_PRECONDITION_REQUIRED";
  HttpStatus2[HttpStatus2["T_449_RETRY_LATER"] = 449] = "T_449_RETRY_LATER";
  HttpStatus2[HttpStatus2["T_461_TOKEN_EXPIRED"] = 461] = "T_461_TOKEN_EXPIRED";
  HttpStatus2[HttpStatus2["T_462"] = 462] = "T_462";
  HttpStatus2[HttpStatus2["T_463"] = 463] = "T_463";
  HttpStatus2[HttpStatus2["T_500"] = 500] = "T_500";
  HttpStatus2[HttpStatus2["T_0_UNKNOWN_ERROR"] = 0] = "T_0_UNKNOWN_ERROR";
})(HttpStatus || (HttpStatus = {}));

// projects/eimmo-common/api/src/payment-v2/payment-v2-api.service.ts
var _a31;
var PaymentV2ApiService = (_a31 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  getIncentives(params) {
    return this.httpClient.get("/payments/incentives", { params });
  }
  downloadIncentivesExcel(params) {
    return this.httpClient.get("/payments/incentives", {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getManualParticipantPayStubs(params) {
    return this.httpClient.get("/payments/manual-pay-stubs", { params });
  }
  downloadManualParticipantPayStubsExcel(params) {
    return this.httpClient.get("/payments/manual-pay-stubs", {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getPayStubDelayedHistories(payStubId) {
    return this.httpClient.get(`/payments/participant-pay-stubs/${payStubId}/delay-histories`);
  }
  getPayStubSummary(payStubId) {
    return this.httpClient.get(`/payments/participant-pay-stubs/${payStubId}/summary`);
  }
  getPayStubStatement(payStubId) {
    return this.httpClient.get(`/payments/participant-pay-stubs/${payStubId}/statements`);
  }
  getProjectsBudgets(params) {
    return this.httpClient.get("/payments/projects-budget", { params });
  }
  downloadProjectsBudgetExcel(params) {
    return this.httpClient.get("/payments/projects-budget", {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getPayBooks(params) {
    return this.httpClient.get("/payments/pay-books", { params });
  }
  downloadPayBooksExcel(params) {
    return this.httpClient.get("/payments/pay-books", {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getPayBookTargetProjects(payBookId) {
    return this.httpClient.get(`/payments/pay-books/${payBookId}/projects`);
  }
  getPayBookSummary(payBookId) {
    return this.httpClient.get(`/payments/pay-books/${payBookId}/summary`);
  }
  getPayBookParticipantPayStubs(payBookId, params) {
    return this.httpClient.get(`/payments/pay-books/${payBookId}/participant-pay-stubs`, { params });
  }
  downloadPayBookParticipantPayStubsExcel(payBookId, params) {
    return this.httpClient.get(`/payments/pay-books/${payBookId}/participant-pay-stubs`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getGroupByUserPayBookColumns(params) {
    return this.httpClient.get("/payments/group-by-user/pay-books", { params });
  }
  getGroupByUserParticipantPayStubs(params) {
    return this.httpClient.get("/payments/group-by-user/participant-pay-stubs", { params });
  }
  downloadGroupByUserParticipantPayStubsExcel(params) {
    return this.httpClient.get("/payments/group-by-user/participant-pay-stubs", {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getParticipantPayStubGroup(params) {
    return this.httpClient.get("/payments/participant-pay-stub-groups", { params });
  }
  getParticipantAllPayStubGroup(params) {
    return this.httpClient.get("/payments/participant-all-pay-stub-groups", { params });
  }
  getScheduledPayBook() {
    return this.httpClient.get("/payments/scheduled-pay-book");
  }
  getNextScheduledPayBook(payBookId) {
    return this.httpClient.get(`/payments/pay-books/${payBookId}/next-scheduled-pay-book`);
  }
}, _a31.ctorParameters = () => [
  { type: HttpClient }
], _a31);
PaymentV2ApiService = __decorate([
  Injectable({
    providedIn: "root"
  })
], PaymentV2ApiService);

// projects/eimmo-common/api/src/payment/payment-api.service.ts
var _a32;
var PaymentApiService = (_a32 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  getPayments(params) {
    return this.httpClient.get("/admin-api/payments", { params });
  }
  getStageParticipantPayStubs(payDate, params) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/stage-participant-pay-stubs`, { params });
  }
  downloadStageParticipantPayStubsExcel(payDate, params) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/stage-participant-pay-stubs`, {
      observe: ObserveType.response,
      params,
      responseType: "blob"
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getStagePaymentProjectSummaries(payDate, params) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/summaries-by-project`, {
      params
    });
  }
  getTotalWage(payDate) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/total-wage`);
  }
  getPayDateIncludedProjects(payDate) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/included/projects`);
  }
  getPayDateIncludedUsers(payDate) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/included/users`);
  }
  getStageParticipantPayStubDetail(payDate, stubId) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/stage-participant-pay-stubs/${stubId}`);
  }
  addIncentive(payDate, stubId, payload) {
    return this.httpClient.post(`/admin-api/payments/${payDate}/stage-participant-pay-stubs/${stubId}/incentive`, payload);
  }
  changeIncentive(payDate, stubId, payload) {
    return this.httpClient.put(`/admin-api/payments/${payDate}/stage-participant-pay-stubs/${stubId}/incentive`, payload);
  }
  deleteIncentive(payDate, stubId) {
    return this.httpClient.delete(`/admin-api/payments/${payDate}/stage-participant-pay-stubs/${stubId}/incentive`);
  }
  getUserPayStubs(payDate, params) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/user-pay-stubs`, { params });
  }
  downloadUserPayStubsExcel(payDate, params) {
    return this.httpClient.get(`/admin-api/payments/${payDate}/user-pay-stubs`, {
      observe: ObserveType.response,
      params,
      responseType: "blob"
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  downloadTransferExcel(payDate) {
    const params = new HttpParams().append("format", FileFormat.xlsx);
    return this.httpClient.get(`/admin-api/payments/${payDate}/transfer-stub`, {
      observe: ObserveType.response,
      params,
      responseType: "blob"
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  uploadTransferExcel(payDate, files) {
    const formData = new FormData();
    formData.append("file", files[0]);
    return this.httpClient.post(`/admin-api/payments/${payDate}/transfer-stub`, formData);
  }
  makePaid(payDate, payload) {
    return this.httpClient.post(`/admin-api/payments/${payDate}/user-pay-stubs/make-paid`, payload);
  }
  makeUnPaid(payDate, payload) {
    return this.httpClient.post(`/admin-api/payments/${payDate}/user-pay-stubs/make-unpaid`, payload);
  }
}, _a32.ctorParameters = () => [
  { type: HttpClient }
], _a32);
PaymentApiService = __decorate([
  Injectable({
    providedIn: "root"
  })
], PaymentApiService);

// projects/eimmo-common/api/src/project-payment-v2/project-payment-v2-api.service.ts
var _a33;
var ProjectPaymentV2ApiService = (_a33 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  getProjectPayBookPayStubs(projectId, payBookId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books/${payBookId}/pay-stubs`, { params });
  }
  downloadProjectPayBookPayStubsExcel(projectId, payBookId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books/${payBookId}/pay-stubs`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getProjectPayBookSummary(projectId, payBookId) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books/${payBookId}/summary`);
  }
  getProjectPayBooks(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books`, { params });
  }
  downloadProjectGtContributionStatsExcel(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/gt-contribution-stats`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  downloadProjectGtContributionStatsExcelByClass(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/gt-stats-by-class`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  downloadProjectPayBooksExcel(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getProjectPayBookColumns(projectId) {
    return this.httpClient.get(`/projects/${projectId}/payments/group-by-user/pay-books`);
  }
  getProjectGroupByUserParticipantPayStubs(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/group-by-user/participant-pay-stubs`, { params });
  }
  downloadProjectGroupByUserParticipantPayStubsExcel(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/payments/group-by-user/participant-pay-stubs`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob,
      params
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  downloadIncentiveUploadFormExcel(projectId, payBokId) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books/${payBokId}/incentives/upload-form`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob
    }).pipe(map((response) => ({ filename: "\uC778\uC13C\uD2F0\uBE0C_\uC5C5\uB85C\uB4DC_\uC591\uC2DD", fileBlob: response.body })));
  }
  getIncentiveUploadPreview(projectId, payBokId, files) {
    const formData = new FormData();
    formData.append("file", files[0]);
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBokId}/incentives/preview`, formData);
  }
  uploadIncentiveExcel(projectId, payBookId, files) {
    const formData = new FormData();
    formData.append("file", files[0]);
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBookId}/incentives/upload`, formData);
  }
  downloadManualPayStubsUploadFormExcel(projectId, payBookId) {
    return this.httpClient.get(`/projects/${projectId}/payments/pay-books/${payBookId}/manual-pay-stubs/upload-form`, {
      observe: ObserveType.response,
      responseType: ResponseType.blob
    }).pipe(map((response) => ({ filename: getFileNameFromHttpResponse(response), fileBlob: response.body })));
  }
  getManualPayStubsUploadPreview(projectId, payBookId, files) {
    const formData = new FormData();
    formData.append("file", files[0]);
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBookId}/manual-pay-stubs/preview`, formData);
  }
  uploadManualPayStubsExcel(projectId, payBookId, files) {
    const formData = new FormData();
    formData.append("file", files[0]);
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBookId}/manual-pay-stubs`, formData);
  }
  setPayStubsIncentive(projectId, payBokId, payload) {
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBokId}/incentives`, payload);
  }
  deletePayStubsIncentive(projectId, payBokId, payload) {
    const httpOptions = {
      headers: new HttpHeaders({ "Content-Type": "application/json" }),
      body: payload
    };
    return this.httpClient.delete(`/projects/${projectId}/payments/pay-books/${payBokId}/incentives`, httpOptions);
  }
  deleteManualPayStubs(projectId, payBookId, payload) {
    const httpOptions = {
      headers: new HttpHeaders({ "Content-Type": "application/json" }),
      body: payload
    };
    return this.httpClient.delete(`/projects/${projectId}/payments/pay-books/${payBookId}/manual-pay-stubs`, httpOptions);
  }
  delayProjectPayBooks(projectId, payBookId) {
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBookId}/delay`, {});
  }
  finalizeProjectPayment(projectId) {
    return this.httpClient.post(`/projects/${projectId}/payments/finalize`, {});
  }
  getProjectScheduledPayBook(projectId) {
    return this.httpClient.get(`/projects/${projectId}/payments/scheduled-pay-book`);
  }
  finishAdminAction(projectId, payBookId) {
    return this.httpClient.post(`/projects/${projectId}/payments/pay-books/${payBookId}/finished-admin-action`, {});
  }
  updateProjectPayStubResult(projectId, payBookId, result) {
    return this.httpClient.put(`/projects/${projectId}/payments/pay-books/${payBookId}/result`, { result });
  }
}, _a33.ctorParameters = () => [
  { type: HttpClient }
], _a33);
ProjectPaymentV2ApiService = __decorate([
  Injectable({
    providedIn: "root"
  })
], ProjectPaymentV2ApiService);

// projects/eimmo-common/api/src/project-notice/project-notice-api.service.ts
var _a34;
var ProjectNoticeApiService = (_a34 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  getProjectNotices(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/notices`, { params });
  }
  createProjectNotice(projectId, payload) {
    return this.httpClient.post(`/projects/${projectId}/notices`, payload);
  }
  getProjectNotice(projectId, projectNoticeId) {
    return this.httpClient.get(`/projects/${projectId}/notices/${projectNoticeId}`);
  }
  editProjectNotice(projectId, projectNoticeId, payload) {
    return this.httpClient.put(`/projects/${projectId}/notices/${projectNoticeId}`, payload);
  }
  deleteProjectNotice(projectId, projectNoticeId) {
    return this.httpClient.delete(`/projects/${projectId}/notices/${projectNoticeId}`);
  }
}, _a34.ctorParameters = () => [
  { type: HttpClient }
], _a34);
ProjectNoticeApiService = __decorate([
  Injectable({
    providedIn: "root"
  })
], ProjectNoticeApiService);

// projects/eimmo-common/api/src/projects/projects-api.service.ts
var _a35;
var ProjectsApiService = (_a35 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  getProjects(params) {
    return this.httpClient.get(`/projects`, { params });
  }
  getProjectsForMember(params) {
    return this.httpClient.get(`/projects/participated`, { params });
  }
  getProject(projectId) {
    return this.httpClient.get(`/projects/${projectId}`);
  }
  getProjectProgressSummary(projectId) {
    return this.httpClient.get(`/projects/${projectId}/stage-file-count-summary`);
  }
  editExpiredProject(projectId, payload) {
    return this.httpClient.patch(`/projects/${projectId}`, payload);
  }
  getClientCompanyName(params) {
    return this.httpClient.get("/projects/company-names", { params });
  }
  deleteProject(projectId) {
    return this.httpClient.delete(`/projects/${projectId}`);
  }
  finishProject(projectId) {
    return this.httpClient.patch(`/projects/${projectId}/finish`, {});
  }
  getMergeStatus(requestId) {
    return this.httpClient.get(`/async-requests/${requestId}/progress`);
  }
  getMergeStatusErrorReason(requestId) {
    return this.httpClient.get(`/async-requests/${requestId}/error-reason`);
  }
  getMergedProjectResultData(projectId, requestId) {
    return this.httpClient.get(`/projects/${projectId}/merge/${requestId}/result`);
  }
  cancelProjectMerge(projectId, requestId) {
    return this.httpClient.post(`/projects/${projectId}/merge/${requestId}/cancel`, {});
  }
  getParticipatingProjects(params) {
    return this.httpClient.get(`/projects/${params.userId}/participating-projects`, { params });
  }
  createProject(payload) {
    return this.httpClient.post(`/projects`, payload);
  }
  mergeProject(projectId, payload) {
    return this.httpClient.post(`/projects/${projectId}/merge`, payload);
  }
  getMergeProjectRequestId(projectId) {
    return this.httpClient.post(`/projects/${projectId}/merge/in-progress`, {});
  }
  getMergeableProjects(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/merge-targets`, { params });
  }
  // TODO rex 병합 여부 확인 api 연결 예정 https://app.asana.com/0/0/1205007971382162/f
  getIsMergedProject(projectId) {
    return this.httpClient.get(`/projects/${projectId}/is-merged`);
  }
  getLastTrackId(projectId) {
    return this.httpClient.get(`/projects/${projectId}/last-track-id`, {});
  }
  getMergeHistory(projectId) {
    return this.httpClient.get(`/projects/${projectId}/merge/histories`);
  }
  deleteMergeHistory(projectId, historyId) {
    return this.httpClient.delete(`/projects/${projectId}/merge/histories/${historyId}`);
  }
  getCandidateConditionProjects(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/anyone-participate-policy/candidate-condition-projects`, { params });
  }
  getParticipateTarget(projectId, params = {}) {
    return this.httpClient.get(`/projects/${projectId}/participate-target`, { params });
  }
  editParticipatePolicy(projectId, payload) {
    return this.httpClient.put(`/projects/${projectId}/participate-target`, payload);
  }
  exposeParticipateTarget(projectId, params = {}) {
    return this.httpClient.post(`/projects/${projectId}/participate-target/expose`, {}, { params });
  }
  unExposeParticipateTarget(projectId, params = {}) {
    return this.httpClient.post(`/projects/${projectId}/participate-target/unexpose`, {}, { params });
  }
  updatePeriod(projectId, params) {
    return this.httpClient.put(`/projects/${projectId}/period`, params);
  }
  finishAnyoneParticipate(projectId, params = {}) {
    return this.httpClient.post(`/projects/${projectId}/participate-target/finish-anyone-participate`, {}, { params });
  }
  fetchLoadMoreAnnotationConfigCopyCandidates(params) {
    return this.httpClient.get("/projects/config-copy-candidates", { params }).pipe(map(({ hasNext, items }) => ({ hasMore: hasNext, items })));
  }
  fetchContractCodes(params) {
    return this.httpClient.get("/projects/contract-codes", { params });
  }
  getQuestionSubscriberCandidates(projectId, params) {
    return this.httpClient.get(`/projects/${projectId}/question-email-subscriber-candidates-v2`, { params });
  }
  getQuestionSubscribers(projectId) {
    return this.httpClient.get(`/projects/${projectId}/question-email-subscribers`);
  }
  saveQuestionSubscribers(projectId, payload) {
    return this.httpClient.put(`/projects/${projectId}/question-email-subscribers`, payload);
  }
  getBudget(projectId) {
    return this.httpClient.get(`/projects/${projectId}/budget`);
  }
  updateBudget(projectId, payload) {
    return this.httpClient.put(`/projects/${projectId}/budget`, payload);
  }
  fetchLoadMoreProjectsForPaymentSearch(params) {
    return this.httpClient.get("/projects/for-payment-search", { params });
  }
  getProjectWorkingStats(params) {
    return this.httpClient.get("/projects/working-stats", { params });
  }
  getProjectFinishedStats(params) {
    return this.httpClient.get("/projects/finished-stats", { params });
  }
  getProjectStatDetail(projectId) {
    return this.httpClient.get(`/projects/${projectId}/stat`);
  }
  getProgressAggregatedAt() {
    return this.httpClient.get(`/projects/progress-aggregated-at`);
  }
  deleteProjectResource(projectId) {
    return this.httpClient.delete(`/projects/${projectId}/resource`).pipe(map(({ id }) => id));
  }
}, _a35.ctorParameters = () => [
  { type: HttpClient }
], _a35);
ProjectsApiService = __decorate([
  Injectable({
    providedIn: "root"
  })
], ProjectsApiService);

// projects/eimmo-common/api/src/member/member-api.service.ts
var _a36;
var MemberApiService = (_a36 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  getMyRole() {
    return this.httpClient.get(`/organizations/${AIMMO_ORGANIZATION_ID}/members/me`);
  }
}, _a36.ctorParameters = () => [
  { type: HttpClient }
], _a36);
MemberApiService = __decorate([
  Injectable({
    providedIn: "root"
  })
], MemberApiService);

// projects/eimmo-common/api/src/user/user-api.service.ts
var _a37;
var UserApiService = (_a37 = class {
  constructor(httpClient) {
    this.httpClient = httpClient;
  }
  me() {
    return this.httpClient.get("/users/me");
  }
}, _a37.ctorParameters = () => [
  { type: HttpClient }
], _a37);
UserApiService = __decorate([
  Injectable({ providedIn: "root" })
], UserApiService);

// src/app/core/services/copy-annotation-config.service.ts
var _a38;
var CopyAnnotationConfigService = (_a38 = class {
  constructor(projectApiService) {
    this.projectApiService = projectApiService;
  }
  fetchLoadMoreAnnotationConfigCopyCandidates(params) {
    return this.projectApiService.fetchLoadMoreAnnotationConfigCopyCandidates(params);
  }
}, _a38.ctorParameters = () => [
  { type: ProjectsApiService }
], _a38);
CopyAnnotationConfigService = __decorate([
  Injectable({ providedIn: "root" })
], CopyAnnotationConfigService);

// angular:jit:template:file:projects/eimmo-common/dialogs/src/copy-annotation-config-confirm-dialog/copy-annotation-config-confirm-dialog.component.html
var copy_annotation_config_confirm_dialog_component_default = `<aim-dialog-header>{{ '@\uC124\uC815\uAC12_\uBD88\uB7EC\uC624\uAE30@' | translate }}</aim-dialog-header>
<aim-dialog-content>
  <span
      class="copy-anno-dialog-confirm__content-title">{{ '@\uACB9\uCE58\uB294_\uD074\uB798\uC2A4_\uBC0F_\uC18D\uC131\uC774_\uC788\uC2B5\uB2C8\uB2E4_\uB300\uCCB4\uD558\uC5EC_\uC801\uC6A9\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C@' | translate }}</span>
  <div class="copy-anno-dialog-confirm__content-container">
    <div class="copy-anno-dialog-confirm__item-container">
      <span class="copy-anno-dialog-confirm__inner-title">{{ '@\uD074\uB798\uC2A4@' | translate }}</span>
      <aim-divider/>
      <div class="copy-anno-dialog-confirm__inner-wrapper">
        <aim-scroll>
          <ng-container *ngFor="let classItemSectionItem of classItemSectionItems">
          <span appTextOverflowTooltip
                class="copy-anno-dialog-confirm__type-text">{{ classItemSectionItem.annotationType }}</span>
            <div *ngFor="let classItem of classItemSectionItem.items" class="copy-anno-dialog-confirm__item">
              <aim-tag-badge [color]="classItem.color" category="class"
                             class="copy-anno-dialog-confirm__type-class"/>
              <span appTextOverflowTooltip>{{ classItem.name }}</span>
            </div>
          </ng-container>
        </aim-scroll>
      </div>
      <aim-divider/>
    </div>
    <div class="copy-anno-dialog-confirm__item-container">
      <span class="copy-anno-dialog-confirm__inner-title">{{ '@\uC18D\uC131@' | translate }}</span>
      <aim-divider/>
      <div class="copy-anno-dialog-confirm__inner-wrapper">
        <aim-scroll>
          <ng-container *ngFor="let attributeSectionItem of attributeSectionItems">
            <span appTextOverflowTooltip
                  class="copy-anno-dialog-confirm__type-text">{{ attributeSectionItem.annotationType }}</span>
            <ng-container *ngFor="let attributeSectionItemGroup of attributeSectionItem.items">
              <div appTextOverflowTooltip
                   class="copy-anno-dialog-confirm__item copy-anno-dialog-confirm__item-name">
                <strong>{{ attributeSectionItemGroup.name }}</strong></div>
              <div *ngFor="let attribute of attributeSectionItemGroup.attributes" appTextOverflowTooltip
                   class="copy-anno-dialog-confirm__item copy-anno-dialog-confirm__item-attr">{{ attribute }}
              </div>
            </ng-container>
          </ng-container>
        </aim-scroll>
      </div>
      <aim-divider/>
    </div>
  </div>
</aim-dialog-content>
<aim-dialog-actions class="copy-anno-dialog-confirm__action-container">
  <button [aim-dialog-close]="true" [buttonSize]="ButtonSize.large" [buttonTheme]="ButtonTheme.outline"
          aim-button>{{ '@\uBD88\uB7EC\uC624\uAE30_L@' | translate }}
  </button>
</aim-dialog-actions>
`;

// angular:jit:style:file:projects/eimmo-common/dialogs/src/copy-annotation-config-confirm-dialog/copy-annotation-config-confirm-dialog.component.scss
var copy_annotation_config_confirm_dialog_component_default2 = "/* projects/eimmo-common/dialogs/src/copy-annotation-config-confirm-dialog/copy-annotation-config-confirm-dialog.component.scss */\n.copy-anno-dialog-confirm__content-title {\n  display: block;\n  color: #999999;\n  margin-bottom: 24px;\n}\n.copy-anno-dialog-confirm__content-container {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: row;\n  justify-content: space-between;\n  align-content: center;\n  align-items: center;\n  max-height: 100%;\n}\n.copy-anno-dialog-confirm__content-container > *:not(:last-child) {\n  margin-right: 16px;\n}\n.copy-anno-dialog-confirm__type-text {\n  font-family:\n    Pretendard,\n    Silka,\n    sans-serif;\n  font-weight: 400;\n  font-size: 12px;\n  line-height: 14px;\n  color: #999999;\n  display: block;\n  padding: 9px 16px;\n}\n.copy-anno-dialog-confirm__type-class {\n  margin-right: 8px;\n}\n.copy-anno-dialog-confirm__item {\n  padding: 11px 16px;\n}\n.copy-anno-dialog-confirm__item-container {\n  width: 100%;\n}\n.copy-anno-dialog-confirm__item-name {\n  padding-left: 24px;\n}\n.copy-anno-dialog-confirm__item-attr {\n  padding-left: 32px;\n}\n.copy-anno-dialog-confirm__inner-wrapper {\n  height: 180px;\n}\n.copy-anno-dialog-confirm__inner-title {\n  display: block;\n  margin-bottom: 12px;\n}\n.copy-anno-dialog-confirm__action-container {\n  padding-top: 32px;\n}\n";

// projects/eimmo-common/dialogs/src/copy-annotation-config-confirm-dialog/copy-annotation-config-confirm-dialog.service.ts
var _a39;
var CopyAnnotationConfigConfirmDialogService = (_a39 = class {
  constructor(duplicatedAnnotationConfigs, translateService) {
    this.duplicatedAnnotationConfigs = duplicatedAnnotationConfigs;
    this.translateService = translateService;
  }
  getSectionItems() {
    const classItemSectionItems = [];
    const attributeSectionItems = [];
    this.duplicatedAnnotationConfigs.forEach(({ annotationType, classItems, commonAttributes }) => {
      if (!isEmpty_default(classItems)) {
        classItemSectionItems.push({
          annotationType,
          items: classItems.map(({ color, name, value }) => ({ color, name: name || value }))
        });
      }
      const hasDuplicatedCommonAttributes = !isEmpty_default(commonAttributes);
      const hasDuplicatedClassAttributes = classItems.some(({ attributes }) => !isEmpty_default(attributes));
      if (hasDuplicatedCommonAttributes || hasDuplicatedClassAttributes) {
        const groups = [];
        if (hasDuplicatedCommonAttributes) {
          groups.push({
            name: this.translateService.instant("@\uACF5\uD1B5_\uC18D\uC131@"),
            attributes: commonAttributes.map(({ name, key }) => name || key)
          });
        }
        if (hasDuplicatedClassAttributes) {
          classItems.forEach(({ name: classItemName, value, attributes }) => {
            if (!isNil_default(attributes) && !isEmpty_default(attributes)) {
              groups.push({
                name: classItemName || value,
                attributes: attributes.map(({ name: attributeName, key }) => attributeName || key)
              });
            }
          });
        }
        attributeSectionItems.push({ annotationType, items: groups });
      }
    });
    return { classItemSectionItems, attributeSectionItems };
  }
}, _a39.ctorParameters = () => [
  { type: Array, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] },
  { type: TranslateService }
], _a39);
CopyAnnotationConfigConfirmDialogService = __decorate([
  Injectable()
], CopyAnnotationConfigConfirmDialogService);

// projects/eimmo-common/dialogs/src/copy-annotation-config-confirm-dialog/copy-annotation-config-confirm-dialog.component.ts
var _a40;
var CopyAnnotationConfigConfirmDialogComponent = (_a40 = class {
  constructor(service) {
    this.service = service;
    this.ButtonTheme = ButtonTheme;
    this.ButtonSize = ButtonSize;
  }
  ngOnInit() {
    this.initializeSectionItems(this.service.getSectionItems());
  }
  initializeSectionItems({ classItemSectionItems, attributeSectionItems }) {
    this.classItemSectionItems = classItemSectionItems;
    this.attributeSectionItems = attributeSectionItems;
  }
}, _a40.ctorParameters = () => [
  { type: CopyAnnotationConfigConfirmDialogService }
], _a40);
CopyAnnotationConfigConfirmDialogComponent = __decorate([
  Component({
    selector: "eimmo-common-copy-annotation-config-confirm-dialog",
    template: copy_annotation_config_confirm_dialog_component_default,
    providers: [CopyAnnotationConfigConfirmDialogService],
    standalone: true,
    imports: [
      AimDialogModule,
      AimDividerComponent,
      AimScrollComponent,
      NgForOf,
      TextOverflowTooltipDirective,
      AimTagBadgeComponent,
      AimButtonHostingDirective,
      AimButtonComponent,
      TranslateModule
    ],
    styles: [copy_annotation_config_confirm_dialog_component_default2]
  })
], CopyAnnotationConfigConfirmDialogComponent);

// projects/eimmo-common/dialogs/src/copy-annotation-config-dialog/copy-annotation-config-dialog.service.ts
var _a41;
var CopyAnnotationConfigDialogService = (_a41 = class {
  constructor(aimDialog, data, copyAnnotationConfigService, translateService) {
    this.aimDialog = aimDialog;
    this.data = data;
    this.copyAnnotationConfigService = copyAnnotationConfigService;
    this.translateService = translateService;
  }
  get originAnnotationConfigs() {
    return this.data.annotationConfigs;
  }
  get projectNotSelectedMessage() {
    return this.translateService.instant("@\uD504\uB85C\uC81D\uD2B8\uB97C_\uC120\uD0DD\uD574\uC8FC\uC138\uC694_M@");
  }
  getItems(params) {
    return this.copyAnnotationConfigService.fetchLoadMoreAnnotationConfigCopyCandidates(params);
  }
  showAlertDialog(message) {
    return this.aimDialog.open(ConfirmDialogComponent, makeOnlyTitleAlertDialogConfig(message, this.translateService.instant("@\uD655\uC778_L@"))).afterClosed();
  }
  getLoadMoreParams(lastProjectId, name) {
    const params = {
      size: ANNOTATION_CONFIG_PAGE_SIZE,
      organizationId: this.data.organizationId,
      datasetType: this.data.datasetType
    };
    if (this.data.projectType === ProjectType.refine) {
      params.projectType = ProjectType.refine;
    }
    if (!isEmpty_default(lastProjectId)) {
      params.lastProjectId = lastProjectId;
    }
    if (!isEmpty_default(name)) {
      params.name = name;
    }
    return params;
  }
  showCopyAnnotationConfigConfirmDialog(duplicatedAnnotationConfigs) {
    return this.aimDialog.open(CopyAnnotationConfigConfirmDialogComponent, __spreadProps(__spreadValues({}, makeCopyAnnotationConfigConfirmDialogConfig(duplicatedAnnotationConfigs)), { width: "544px" })).afterClosed().pipe(filterTruthy());
  }
}, _a41.ctorParameters = () => [
  { type: AimDialogService },
  { type: void 0, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] },
  { type: CopyAnnotationConfigService },
  { type: TranslateService }
], _a41);
CopyAnnotationConfigDialogService = __decorate([
  Injectable()
], CopyAnnotationConfigDialogService);

// projects/eimmo-common/dialogs/src/copy-annotation-config-dialog/copy-annotation-config-dialog.component.ts
var _a42;
var CopyAnnotationConfigDialogComponent = (_a42 = class extends LoadMoreComponent {
  constructor(formBuilder, dialogRef, service) {
    super(service);
    this.formBuilder = formBuilder;
    this.dialogRef = dialogRef;
    this.service = service;
    this.errorAlertSource = new Subject();
    this.scrollCandidatesSource = new Subject();
    this.copyAnnotationConfigConfirmSource = new Subject();
  }
  get isItemEmpty() {
    return isNil_default(this.candidates) || isEmpty_default(this.candidates);
  }
  get loadMoreParams() {
    return this.service.getLoadMoreParams(this.lastProjectId ?? void 0, this.searchFormControl.value);
  }
  get errorAlertAction$() {
    return this.errorAlertSource.pipe(exhaustMap((message) => this.service.showAlertDialog(message)));
  }
  get scrollCandidatesAction$() {
    return this.scrollCandidatesSource.pipe(sampleTime(100), filter(({ clientHeight, scrollHeight, scrollTop: scrollTop2 }) => clientHeight + scrollTop2 >= scrollHeight - 80), tap(() => this.loadItems()));
  }
  get copyAnnotationConfigConfirmAction$() {
    return this.copyAnnotationConfigConfirmSource.pipe(switchMap(({ duplicatedAnnotationConfigs, newAnnotationConfigs }) => {
      return this.service.showCopyAnnotationConfigConfirmDialog(duplicatedAnnotationConfigs).pipe(tap(() => this.dialogRef.close(newAnnotationConfigs)));
    }));
  }
  onScrollCandidates(event) {
    if (this.hasNext) {
      const { clientHeight, scrollHeight, scrollTop: scrollTop2 } = event.target;
      this.scrollCandidatesSource.next({ clientHeight, scrollHeight, scrollTop: scrollTop2 });
    }
  }
  onSearch() {
    this.lastProjectId = null;
    this.candidates = null;
    this.loadItems();
  }
  onClickAnnotationConfigCopyCandidate(candidate) {
    this.selectedCandidate = candidate;
  }
  onClickLoadAnnotationConfigCopyCandidate() {
    if (isNil_default(this.selectedCandidate)) {
      this.errorAlertSource.next(this.service.projectNotSelectedMessage);
    } else {
      this.selectCopiedAnnotationConfigs(this.service.originAnnotationConfigs, this.selectedCandidate.annotationConfigs);
    }
  }
  actions$() {
    return [
      ...super.actions$(),
      this.errorAlertAction$,
      this.scrollCandidatesAction$,
      this.copyAnnotationConfigConfirmAction$
    ];
  }
  beforeHandleAction() {
    super.beforeHandleAction();
    this.initializeForm();
  }
  applyItems(items) {
    isNil_default(this.candidates) || isEmpty_default(this.candidates) ? this.candidates = items : this.candidates.push(...items);
    this.lastProjectId = this.candidates[this.candidates.length - 1].id;
  }
  initializeForm() {
    this.searchFormControl = this.formBuilder.control(null);
  }
  selectCopiedAnnotationConfigs(originAnnotationConfigs, copiedAnnotationConfigs) {
    const duplicatedAnnotationConfigs = [];
    const newAnnotationConfigs = originAnnotationConfigs.map((originAnnotationConfig) => {
      const targetCopiedAnnotationConfig = copiedAnnotationConfigs?.find((copiedAnnotationConfig) => {
        return isEqual_default(copiedAnnotationConfig.annotationType, originAnnotationConfig.annotationType);
      });
      if (isNil_default(targetCopiedAnnotationConfig)) {
        return originAnnotationConfig;
      } else {
        const originClassItems = originAnnotationConfig.classItems;
        const newClassItems = cloneDeep_default(originClassItems);
        const duplicatedClassItems = [];
        targetCopiedAnnotationConfig.classItems.forEach((copiedClassItem) => {
          const duplicatedOriginClassItemIndex = originClassItems.findIndex((originClassItem) => {
            return isEqual_default(copiedClassItem.value, originClassItem.value);
          });
          if (duplicatedOriginClassItemIndex === -1) {
            newClassItems.push(copiedClassItem);
          } else {
            const originClassItem = originClassItems[duplicatedOriginClassItemIndex];
            const originClassAttributes = originClassItem?.attributes ?? [];
            const newClassAttributes = cloneDeep_default(originClassAttributes);
            const duplicatedClassAttributes = [];
            copiedClassItem?.attributes?.forEach((copiedClassAttribute) => {
              const duplicatedOriginClassAttributeIndex = originClassAttributes.findIndex((originClassAttribute) => {
                return isEqual_default(copiedClassAttribute.key, originClassAttribute.key);
              });
              if (duplicatedOriginClassAttributeIndex === -1) {
                newClassAttributes.push(copiedClassAttribute);
              } else {
                duplicatedClassAttributes.push(originClassAttributes[duplicatedOriginClassAttributeIndex]);
                newClassAttributes[duplicatedOriginClassAttributeIndex] = copiedClassAttribute;
              }
            });
            originClassItem.attributes = duplicatedClassAttributes;
            duplicatedClassItems.push(originClassItem);
            copiedClassItem.attributes = newClassAttributes;
            newClassItems[duplicatedOriginClassItemIndex] = copiedClassItem;
          }
        });
        const originCommonAttributes = originAnnotationConfig.commonAttributes;
        const newCommonAttributes = cloneDeep_default(originCommonAttributes);
        const duplicatedCommonAttributes = [];
        targetCopiedAnnotationConfig.commonAttributes.forEach((copiedCommonAttribute) => {
          const duplicatedOriginCommonAttributeIndex = originCommonAttributes.findIndex((originCommonAttribute) => {
            return isEqual_default(copiedCommonAttribute.key, originCommonAttribute.key);
          });
          if (duplicatedOriginCommonAttributeIndex === -1) {
            newCommonAttributes.push(copiedCommonAttribute);
          } else {
            duplicatedCommonAttributes.push(originCommonAttributes[duplicatedOriginCommonAttributeIndex]);
            newCommonAttributes[duplicatedOriginCommonAttributeIndex] = copiedCommonAttribute;
          }
        });
        if (!isEmpty_default(duplicatedClassItems) || !isEmpty_default(duplicatedCommonAttributes)) {
          duplicatedAnnotationConfigs.push({
            annotationType: originAnnotationConfig.annotationType,
            classItems: duplicatedClassItems,
            commonAttributes: duplicatedCommonAttributes,
            isActive: false
          });
        }
        return {
          annotationType: originAnnotationConfig.annotationType,
          classItems: newClassItems,
          commonAttributes: newCommonAttributes,
          isActive: !isEmpty_default(newClassItems)
        };
      }
    });
    if (isEmpty_default(duplicatedAnnotationConfigs)) {
      this.dialogRef.close(newAnnotationConfigs);
    } else {
      this.copyAnnotationConfigConfirmSource.next({ newAnnotationConfigs, duplicatedAnnotationConfigs });
    }
  }
}, _a42.ctorParameters = () => [
  { type: UntypedFormBuilder },
  { type: MatDialogRef },
  { type: CopyAnnotationConfigDialogService }
], _a42);
CopyAnnotationConfigDialogComponent = __decorate([
  Component({
    selector: "eimmo-common-copy-annotation-config-dialog",
    template: copy_annotation_config_dialog_component_default,
    providers: [CopyAnnotationConfigDialogService],
    standalone: true,
    imports: [
      AimDialogModule,
      TrimFormValueDirective,
      FormsModule,
      ReactiveFormsModule,
      AimDividerComponent,
      NgForOf,
      TextOverflowTooltipDirective,
      NgSwitch,
      NgSwitchCase,
      ErrorComponent,
      NgSwitchDefault,
      NgIf,
      AimButtonHostingDirective,
      AimButtonComponent,
      TranslateModule,
      AimInputBaseDirective,
      AimInputComponent,
      AimIconComponent
    ],
    styles: [copy_annotation_config_dialog_component_default2]
  })
], CopyAnnotationConfigDialogComponent);

// projects/eimmo-common/dialogs/src/copy-annotation-config-dialog/copy-annotation-config-dialog.model.ts
var ANNOTATION_CONFIG_PAGE_SIZE = 10;

// angular:jit:template:file:projects/eimmo-common/dialogs/src/aim-confirm/aim-confirm.component.html
var aim_confirm_component_default = '<aim-dialog-header *ngIf="title">\n  <span [innerHTML]="title"></span>\n</aim-dialog-header>\n<aim-dialog-content *ngIf="message"\n                    class="aim-confirm__content">\n  <span [innerHTML]="message | newline"></span>\n</aim-dialog-content>\n<aim-dialog-actions>\n  <aim-button-group>\n    <aim-checkbox-v2 *ngIf="checkboxText"\n                     [(ngModel)]="canNotMoreCheck">{{checkboxText}}</aim-checkbox-v2>\n    <button aim-button *ngIf="negativeButtonText"\n            [buttonTheme]="ButtonTheme.ghost"\n            [buttonSize]="ButtonSize.medium"\n            [aim-dialog-close]="false">{{negativeButtonText}}</button>\n    <button aim-button [buttonTheme]="ButtonTheme.outline"\n            [buttonSize]="ButtonSize.medium"\n            [aim-dialog-close]="true">{{positiveButtonText}}</button>\n  </aim-button-group>\n</aim-dialog-actions>\n';

// angular:jit:style:file:projects/eimmo-common/dialogs/src/aim-confirm/aim-confirm.component.scss
var aim_confirm_component_default2 = "/* projects/eimmo-common/dialogs/src/aim-confirm/aim-confirm.component.scss */\n:host {\n  display: block;\n  min-width: 256px;\n  max-width: 640px;\n}\n.aim-confirm__content {\n  margin: 24px 0 32px;\n}\n";

// projects/aimmo-pipes/newline/src/newline.pipe.ts
var _a43;
var NewlinePipe = (_a43 = class {
  constructor(domSanitizer) {
    this.domSanitizer = domSanitizer;
  }
  transform(value = "", stripTag = true) {
    value = stripTag ? value.replace(/<[a-zA-Z\/][^>]*>/g, "") : value;
    return this.domSanitizer.bypassSecurityTrustHtml(value.replace(/\n/g, "<br>"));
  }
}, _a43.ctorParameters = () => [
  { type: DomSanitizer }
], _a43);
NewlinePipe = __decorate([
  Pipe({
    name: "newline",
    standalone: true
  })
], NewlinePipe);

// projects/eimmo-common/dialogs/src/aim-confirm/aim-confirm.model.ts
var AimConfirmDialogRole = {
  alert: "alert",
  confirm: "confirm",
  alertWithCheckbox: "alert-with-checkbox"
};

// projects/eimmo-common/dialogs/src/aim-confirm/aim-confirm.component.ts
var _a44;
var AimConfirmComponent = (_a44 = class {
  constructor(data, dialogRef) {
    this.data = data;
    this.dialogRef = dialogRef;
    this.ButtonTheme = ButtonTheme;
    this.ButtonSize = ButtonSize;
    this.title = "";
    this.message = "";
    this.positiveButtonText = "";
    this.negativeButtonText = "";
    this.checkboxText = "";
    this.canNotMoreCheck = false;
    this.destroyRef = inject(DestroyRef);
  }
  get beforeClosedAction$() {
    return this.dialogRef.beforeClosed().pipe(filter(() => this.data.role === AimConfirmDialogRole.alertWithCheckbox), tap(() => this.dialogRef.close(this.canNotMoreCheck)));
  }
  ngOnInit() {
    this.initializeParams();
    forkJoin([
      this.beforeClosedAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  initializeParams() {
    this.title = this.data.title;
    this.message = this.data.message;
    switch (this.data.role) {
      case AimConfirmDialogRole.alert:
        this.positiveButtonText = this.data.positiveButtonText ?? "";
        break;
      case AimConfirmDialogRole.confirm:
        this.positiveButtonText = this.data.positiveButtonText ?? "";
        this.negativeButtonText = this.data.negativeButtonText ?? "";
        break;
      case AimConfirmDialogRole.alertWithCheckbox:
        this.positiveButtonText = this.data.positiveButtonText ?? "";
        this.checkboxText = this.data.checkboxText ?? "";
        break;
    }
  }
}, _a44.ctorParameters = () => [
  { type: void 0, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] },
  { type: MatDialogRef }
], _a44);
AimConfirmComponent = __decorate([
  Component({
    selector: "aim-confirm",
    template: aim_confirm_component_default,
    standalone: true,
    imports: [
      NgIf,
      AimDialogModule,
      AimButtonGroupComponent,
      AimCheckboxV2Component,
      FormsModule,
      AimButtonHostingDirective,
      AimButtonComponent,
      NewlinePipe
    ],
    styles: [aim_confirm_component_default2]
  })
], AimConfirmComponent);

// angular:jit:template:file:projects/smart-curation-viewer/src/app/datasets/dataset-delete-dialog/dataset-delete-dialog.component.html
var dataset_delete_dialog_component_default = '<aim-dialog-header>Delete Dataset</aim-dialog-header>\n<aim-dialog-content>\n  If you delete a Dataset, it cannot be reversed.<br>\n  Are you sure you want to delete the Dataset?\n</aim-dialog-content>\n<aim-dialog-actions>\n  <aim-button-group class="actions-container">\n    <button aim-button class="button" [buttonTheme]="ButtonTheme.ghost" [mat-dialog-close]="false">Cancel</button>\n    <button aim-button class="button red" [buttonTheme]="ButtonTheme.outline" [mat-dialog-close]="true">Delete</button>\n  </aim-button-group>\n</aim-dialog-actions>\n';

// angular:jit:style:file:projects/smart-curation-viewer/src/app/datasets/dataset-delete-dialog/dataset-delete-dialog.component.scss
var dataset_delete_dialog_component_default2 = "/* projects/smart-curation-viewer/src/app/datasets/dataset-delete-dialog/dataset-delete-dialog.component.scss */\n:host {\n  height: fit-content;\n  --aim-dialog-content-display: content;\n}\n.button {\n  width: 100px;\n}\n.button.red {\n  color: #de6251;\n  border-color: #de6251;\n}\n";

// projects/smart-curation-viewer/src/app/datasets/dataset-delete-dialog/dataset-delete-dialog.component.ts
var DatasetDeleteDialogComponent = class DatasetDeleteDialogComponent2 {
  constructor() {
    this.ButtonTheme = ButtonTheme;
  }
};
DatasetDeleteDialogComponent = __decorate([
  Component({
    standalone: true,
    selector: "app-dataset-delete-dialog",
    template: dataset_delete_dialog_component_default,
    imports: [
      AimDialogModule,
      AimButtonComponent,
      AimButtonGroupComponent
    ],
    styles: [dataset_delete_dialog_component_default2]
  })
], DatasetDeleteDialogComponent);

// projects/smart-curation-viewer/src/app/datasets/datasets.model.ts
var DatasetStatus;
(function(DatasetStatus2) {
  DatasetStatus2["completed"] = "Completed";
  DatasetStatus2["processing"] = "Processing";
  DatasetStatus2["failed"] = "Failed";
})(DatasetStatus || (DatasetStatus = {}));

// projects/smart-curation-viewer/src/app/datasets/dataset-card/dataset-card.component.ts
var _a45;
var DatasetCardComponent = (_a45 = class {
  constructor() {
    this.router = inject(Router);
    this.routeToDatasetSource = new Subject();
    this.downloadDatasetSource = new Subject();
    this.deleteDatasetSource = new Subject();
    this.destroyRef = inject(DestroyRef);
    this.dialog = inject(AimDialogService);
    this.download = new EventEmitter();
    this.delete = new EventEmitter();
  }
  get inValid() {
    return this.dataset.status !== DatasetStatus.completed;
  }
  get routeToDatasetAction$() {
    return this.routeToDatasetSource.pipe(switchMap((datasetId) => this.routeToDataset(datasetId)));
  }
  get downloadDatasetAction$() {
    return this.downloadDatasetSource.pipe(exhaustMap(() => this.openDownloadConfirmDialog()), tap(() => this.download.emit(this.dataset)));
  }
  get deleteDatasetAction$() {
    return this.deleteDatasetSource.pipe(exhaustMap(() => this.openDeleteConfirmDialog()), filter((result) => result), tap(() => this.delete.emit(this.dataset.datasetId)));
  }
  onClickCard() {
    if (!this.inValid) {
      this.routeToDatasetSource.next(this.dataset.datasetId);
    }
  }
  ngOnInit() {
    forkJoin([
      this.routeToDatasetAction$,
      this.downloadDatasetAction$,
      this.deleteDatasetAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
  }
  onClickCardMenu(event) {
    event.stopPropagation();
  }
  onDownloadDataset(datasetId) {
    this.downloadDatasetSource.next(datasetId);
  }
  onDeleteDataset(datasetId) {
    this.deleteDatasetSource.next(datasetId);
  }
  routeToDataset(datasetId) {
    return defer(() => this.router.navigate([route.dataset.fullPath(datasetId)]));
  }
  openDownloadConfirmDialog() {
    return this.dialog.open(ConfirmDialogComponent, __spreadValues({}, makeConfirmDialogConfig("Download Dataset", "Are you sure you want to download the json file locally?", "Download", "Cancel"))).afterClosed().pipe(filter((confirm) => !!confirm));
  }
  openDeleteConfirmDialog() {
    return this.dialog.open(DatasetDeleteDialogComponent, makeAimDialogConfig({})).afterClosed();
  }
}, _a45.propDecorators = {
  dataset: [{ type: Input, args: [{ required: true }] }],
  download: [{ type: Output }],
  delete: [{ type: Output }],
  inValid: [{ type: HostBinding, args: ["class.inValid"] }],
  onClickCard: [{ type: HostListener, args: ["click"] }]
}, _a45);
__decorate([
  GlobalCatchError
], DatasetCardComponent.prototype, "openDeleteConfirmDialog", null);
DatasetCardComponent = __decorate([
  Component({
    standalone: true,
    selector: "app-dataset-card",
    template: dataset_card_component_default,
    imports: [
      CommonModule,
      AimMenuComponent,
      AimIconComponent,
      AimIconButtonComponent,
      AimMenuTriggerDirective,
      AimDividerComponent,
      AimTagChipComponent,
      AimMenuItemComponent,
      AimTooltipModule
    ],
    styles: [dataset_card_component_default2]
  })
], DatasetCardComponent);

// projects/smart-curation-viewer/src/app/datasets/datasets.component.ts
var DatasetFilterType;
(function(DatasetFilterType2) {
  DatasetFilterType2["all"] = "All";
  DatasetFilterType2["completed"] = "Completed";
  DatasetFilterType2["processing"] = "Processing";
  DatasetFilterType2["failed"] = "Failed";
})(DatasetFilterType || (DatasetFilterType = {}));
var ONE_MINUTE = 6e4;
var CLUSTER_ALL = 5;
var _a46;
var DatasetsComponent = (_a46 = class {
  constructor(apiService, storeService) {
    this.apiService = apiService;
    this.storeService = storeService;
    this.datasetTypeControl = new FormControl(DatasetFilterType.all);
    this.searchControl = new FormControl("");
    this.DatasetFilterType = DatasetFilterType;
    this.filteredDatasets = signal([]);
    this.summaryUpdatedAt = /* @__PURE__ */ new Date();
    this.datasets = signal([]);
    this.destroyRef = inject(DestroyRef);
    this.toast = inject(AimToast);
    this.deleteSource = new Subject();
    this.fetchDatasetsSource = new Subject();
    this.downloadJSONSource = new Subject();
    this.pollingDatasetsSource = new BehaviorSubject(false);
    this.statusFilter = signal(null);
  }
  get searchAction$() {
    return this.searchControl.valueChanges.pipe(tap(() => this.setFilteredDatasets()));
  }
  get deleteAction$() {
    return this.deleteSource.pipe(exhaustMap((datasetId) => this.apiService.deleteDataset(datasetId)), tap(() => {
      this.toast.openPositive("Deletion of dataset completed.");
      this.fetchDatasetsSource.next();
    }), catchError((err) => {
      this.toast.openNegative("Failed to download the dataset. Please try again or contact the AIMMO team");
      return throwError(() => err);
    }));
  }
  get fetchDatasetsAction$() {
    return this.fetchDatasetsSource.pipe(switchMap(() => this.fetchDatasets()));
  }
  get downloadJSONAction$() {
    return this.downloadJSONSource.pipe(exhaustMap((dataset) => this.downloadJSON(dataset)), tap(() => this.toast.openPositive("Download of dataset completed.")));
  }
  get pollingDatasetsAction$() {
    return this.pollingDatasetsSource.pipe(switchMap((polling) => this.pollingDatasets(polling)));
  }
  downloadJSON(dataset) {
    return this.apiService.downloadJSON({ datasetId: dataset.datasetId, cluster: CLUSTER_ALL }).pipe(tap(({ filename, fileBlob }) => {
      console.log(filename);
      saveToFileFromBlob(fileBlob, decodeURIWithNormalizeFilename(filename, `${dataset.datasetName}.json`));
    }));
  }
  ngOnInit() {
    forkJoin([
      this.pollingDatasetsAction$,
      this.fetchDatasetsAction$,
      this.deleteAction$,
      this.downloadJSONAction$,
      this.searchAction$
    ]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();
    this.storeService.dataset.set(null);
    this.pollingDatasetsSource.next(true);
  }
  onDatasetTypeFilterChanged($event) {
    this.statusFilter.set($event.value === DatasetFilterType.all ? null : $event.value);
    this.setFilteredDatasets();
  }
  onDownloadDataset(dataset) {
    this.downloadJSONSource.next(dataset);
  }
  onDeleteDataset(id) {
    this.deleteSource.next(id);
  }
  onRefreshDatasets() {
    this.fetchDatasetsSource.next();
  }
  setFilteredDatasets() {
    if (this.statusFilter() === null && this.searchControl.value.trim() === "") {
      this.filteredDatasets.set(this.datasets());
      return;
    }
    this.filteredDatasets.set(this.datasets().filter((dataset) => {
      const matchesStatus = this.statusFilter() === null || dataset.status === this.statusFilter();
      const matchesValue = dataset.datasetName.toLowerCase().includes(this.searchControl.value.toLowerCase());
      return matchesStatus && matchesValue;
    }));
  }
  pollingDatasets(polling) {
    return defer(() => polling ? timer(10, ONE_MINUTE) : NEVER).pipe(tap(() => this.fetchDatasetsSource.next()));
  }
  fetchDatasets() {
    return this.apiService.fetchDatasets().pipe(tap(({ items }) => {
      this.summaryUpdatedAt = /* @__PURE__ */ new Date();
      this.datasets.set(items);
      this.filteredDatasets.set(items);
      this.setFilteredDatasets();
    }));
  }
}, _a46.ctorParameters = () => [
  { type: SmartCurationViewerApiService },
  { type: SmartCurationViewerStoreService }
], _a46);
__decorate([
  GlobalCatchError
], DatasetsComponent.prototype, "downloadJSON", null);
__decorate([
  GlobalCatchError
], DatasetsComponent.prototype, "pollingDatasets", null);
DatasetsComponent = __decorate([
  Component({
    standalone: true,
    selector: "app-datasets",
    template: datasets_component_default,
    imports: [
      CommonModule,
      ReactiveFormsModule,
      AimSelectModule,
      AimTagBadgeNotiComponent,
      AimIconComponent,
      AimInputComponent,
      AimInputBaseDirective,
      DatasetCardComponent,
      AimIconButtonComponent
    ],
    styles: [datasets_component_default2]
  })
], DatasetsComponent);
export {
  DatasetsComponent
};
/*! Bundled license information:

localforage/dist/localforage.js:
  (*!
      localForage -- Offline Storage, Improved
      Version 1.10.0
      https://localforage.github.io/localForage
      (c) 2013-2017 Mozilla, Apache License 2.0
  *)

overlayscrollbars/overlayscrollbars.mjs:
  (*!
   * OverlayScrollbars
   * Version: 2.0.3
   *
   * Copyright (c) Rene Haas | KingSora.
   * https://github.com/KingSora
   *
   * Released under the MIT license.
   *)

@ag-grid-community/core/dist/esm/es5/utils/generic.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/columnKeyCreator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/object.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/function.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/context/context.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/eventService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/modules/moduleNames.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/modules/moduleRegistry.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/column.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/providedColumnGroup.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/defaultColumnTypes.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/array.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/event.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/context/beanStub.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/columnFactory.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/colDefUtil.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/eventKeys.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/events.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/propertyKeys.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/componentUtil.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/fuzzyMatch.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridOptionsValidator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/columnGroup.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/groupInstanceIdCreator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/autoGroupColService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/string.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/map.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/columnModel.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/columnUtils.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/displayedGroupCreator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/agStackComponentsRegistry.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/aria.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/browser.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/number.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/date.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/dom.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/icon.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/constants/keyCode.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/keyboard.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/mouse.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/rowNode.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/set.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/utils.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/numberSequence.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/promise.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/timer.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/index.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/customTooltipFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cssClassManager.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/component.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/componentAnnotations.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/floating/provided/readOnlyFloatingFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateCompWrapper.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/optionsFactory.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/filterLocaleText.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/managedFocusFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/providedFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agAbstractLabel.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agAbstractField.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agPickerField.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agList.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agSelect.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agAbstractInputField.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/simpleFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/scalarFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/floating/provided/simpleFloatingFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateFloatingFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/date/defaultDateComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/number/numberFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/text/textFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/floating/provided/textInputFloatingFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/number/numberFloatingFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/provided/text/textFloatingFilter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/touchListener.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/sortIndicatorComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/popupComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/largeTextCellEditor.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/selectCellEditor.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/textCellEditor.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/animateShowChangeCellRenderer.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/animateSlideCellRenderer.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/rowNode.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/checkboxSelectionComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/dragAndDrop/dragAndDropService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/row/rowDragComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/groupCellRendererCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/groupCellRenderer.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/loadingCellRenderer.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/overlays/loadingOverlayComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/overlays/noRowsOverlayComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/tooltipComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/framework/userComponentRegistry.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/framework/componentTypes.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/floating/floatingFilterMapper.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/framework/userComponentFactory.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/iExcelCreator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/dragAndDrop/dragService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/iRowNode.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/filter/filterManager.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/abstractCell/abstractHeaderCellComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/floatingFilter/headerFilterCellComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/styling/layoutFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyScrollFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/autoScrollService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowDragFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/IRangeService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellRangeFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellPositionFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellCustomStyleFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/tooltipFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/beans.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellMouseListenerFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellKeyboardListenerFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/dndSourceComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/row/rowCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerEventsFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/viewportSizeFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setPinnedLeftWidthFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setPinnedRightWidthFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setHeightFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/dragListenerFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/centerWidthFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/scrollVisibleService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/mouseEventService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/navigationService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/popupEditorWrapper.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/cell/cellComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/row/rowComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/bodyDropPivotTarget.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/moveColumnFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/bodyDropTarget.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/cssClassApplier.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerCellComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupCellComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/row/headerRowComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/abstractCell/abstractHeaderCellCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/iClientSideRowModel.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridApi.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/features/setLeftFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/hoverFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/floatingFilter/headerFilterCellCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/resizeFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agCheckbox.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/selectAllFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerCellCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/groupResizeFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/groupWidthFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupCellCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/row/headerRowCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/rowContainer/headerRowContainerCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/rowContainer/headerRowContainerComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/common/headerNavigationService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/gridHeaderCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/gridHeaderComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/common/horizontalResizeService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/standardMenu.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/layout/tabbedLayout.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/misc/simpleHttpRequest.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/misc/resizeObserverService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/misc/animationFrameService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/features/positionableFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/autoWidthCalculator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/features/stickyRowFeature.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/rowRenderer.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/valueFormatterService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/pinnedRowModel/pinnedRowModel.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/serverSideTransaction.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/utils/changedPath.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rowNodeCache/rowNodeBlock.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rowNodeCache/rowNodeBlockLoader.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/pagination/paginationProxy.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/styling/stylingService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agRadioButton.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agToggleButton.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agInputTextField.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agInputTextArea.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agInputNumberField.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agInputRange.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agSlider.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agGroupComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/tabGuardCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/tabGuardComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agMenuList.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agMenuPanel.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agMenuItemComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agPanel.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/agDialog.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/focusService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/popupService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/widgets/virtualList.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/vanillaFrameworkOverrides.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/cellNavigationService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/alignedGridsService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/selectionService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/columnApi.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/valueService/valueService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/valueService/expressionService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/templateService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/logger.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridComp/gridCtrl.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridComp/gridComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/sortController.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/columnHoverService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/columnAnimationService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/pagination/paginationAutoPageSizeService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/valueService/valueCache.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/valueService/changeDetectionService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/framework/agComponentUtils.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/framework/componentMetadataProvider.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/environment.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/rowContainerHeightService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rowNodes/selectableService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/pagination/paginationComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/overlays/overlayWrapperComponent.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/rowPosition.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/cellPosition.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/undoRedo/undoRedoStack.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/undoRedo/undoRedoService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/headerRendering/common/headerPosition.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/columns/columnDefFactory.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rendering/row/rowCssClassCalculator.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/rowNodes/rowNodeSorter.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/ctrlsService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/ctrlsFactory.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/abstractFakeScrollComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/fakeHScrollComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/pinnedWidthService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/entities/rowNodeEventThrottle.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridOptionsService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/localeService.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/gridBodyComp/fakeVScrollComp.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/grid.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/components/framework/frameworkComponentWrapper.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/iChartOptions.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/iAgChartOptions.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/interfaces/iSparklineCellRendererParams.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

@ag-grid-community/core/dist/esm/es5/main.js:
  (**
   * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
   * @version v29.0.0
   * @link https://www.ag-grid.com/
   * @license MIT
   *)

zone.js/fesm2015/zone-error.js:
  (**
   * @license Angular v<unknown>
   * (c) 2010-2022 Google LLC. https://angular.io/
   * License: MIT
   *)
*/
